1

I'm trying to generate a chart of my NDWI values, but I'm getting this error:

Error generating chart: No features contain non-null values of "system:time_start".

This is my code, I will really appreciate if someone could help me... In addition, I would like to generate a histogram of my mosaic image, does someone know how can I do this?

Thanks a lot!

/************************** MASCARAR NUVENS **************************/
function maskS2clouds(image) {
  var qa = image.select('QA60');
// Bits 10 and 11 are clouds and cirrus, respectively.
  var cloudBitMask = 1 << 10;
  var cirrusBitMask = 1 << 11;
// Both flags should be set to zero, indicating clear conditions.
  var mask = qa.bitwiseAnd(cloudBitMask).eq(0).and(
             qa.bitwiseAnd(cirrusBitMask).eq(0));
// Return the masked and scaled data, without the QA bands.
  return image.updateMask(mask)/*.divide(10000)*/
      .select("B.*")
      .copyProperties(image, ["system:time_start"]);
}

/**************************** INTERVALO DE DATAS *********************************/
 var set_verao = ee.DateRange('2019-09-01','2019-09-30');
 var mar_inverno = ee.DateRange('2019-03-01','2019-03-31');



/****************************** INDICES DE AGUA ***********************************/
var water_indexes = function (s2_verao){
  var ndwi = s2_verao.normalizedDifference(['B3','B8']).rename('NDWI');
  var mndwi = s2_verao.normalizedDifference(['B3','B12']).rename('MNDWI');
  
  return s2_verao.addBands(ndwi).addBands(mndwi);
};

var water_indexes = function (s2_inverno){
  var ndwi = s2_inverno.normalizedDifference(['B3','B8']).rename('NDWI');
  var mndwi = s2_inverno.normalizedDifference(['B3','B12']).rename('MNDWI');
  
  return s2_inverno.addBands(ndwi).addBands(mndwi);
};


/************************** FILTRAR COLECAO **************************************/
// Colecao Sentinel 2
var s2_verao = ee.ImageCollection("COPERNICUS/S2_SR")
           .filterDate(set_verao) //Filtrar por data
           .filterMetadata('CLOUDY_PIXEL_PERCENTAGE','less_than',17) //Filtrar por cobertura de nuvem
           .map(maskS2clouds)
           .filterBounds(geometry); // Filtrar pela area de interesse

var s2_inverno = ee.ImageCollection("COPERNICUS/S2_SR")
           .filterDate(mar_inverno) //Filtrar por data
           .filterMetadata('CLOUDY_PIXEL_PERCENTAGE','less_than',50) //Filtrar por cobertura de nuvem
           .map(maskS2clouds)
           .filterBounds(geometry); // Filtrar pela area de interesse


// Apresentar no console
print(s2_verao); //Mostra quais sao as imagens
print(s2_verao.size()); //Mostra q quantidade de imagens

print(s2_inverno); //Mostra quais sao as imagens
print(s2_inverno.size()); //Mostra q quantidade de imagens




// Data das primeira e ultima imagem utilizada
var range = s2_verao.reduceColumns(ee.Reducer.minMax(), ["system:time_start"]);
print('Date range Verao: ', ee.Date(range.get('min')), ee.Date(range.get('max')));

var range = s2_inverno.reduceColumns(ee.Reducer.minMax(), ["system:time_start"]);
print('Date range Inverno: ', ee.Date(range.get('min')), ee.Date(range.get('max')));




// Ordenar atraves das propriedades de nuvens a imagem que tenha a menor quantidade
var s2_set_menos_nuvem = ee.Image(s2_verao.sort('CLOUDY_PIXEL_PERCENTAGE').first());
print('Least cloudy image Verao: ', s2_verao);

var s2_mar_menos_nuvem = ee.Image(s2_inverno.sort('CLOUDY_PIXEL_PERCENTAGE').first());
print('Least cloudy image Inverno: ', s2_inverno);




// Faz o mosaico da colecao, adc os indices de agua e recorta pela area de estudo
var s2_verao_mos = s2_verao.map(water_indexes).mosaic().clip(geometry);
print('Mosaico e recorte pela area de estudo - VERAO',s2_verao_mos);

var s2_inverno_mos = s2_inverno.map(water_indexes).mosaic().clip(geometry);
print('Mosaico e recorte pela area de estudo - INVERNO',s2_inverno_mos);



// Parametros de visualizacao NDWI
var vis_ndwi_verao = {bands:'NDWI', min:-1, max:1, palette:['white','blue']};
var vis_ndwi_inverno = {bands:'NDWI', min:-1, max:1, palette:['white','red']};

// Parametros de visualizacao MNDWI
//var vis_mndwi = {bands:'MNDWI',min:0, max:1, palette:['white','red']};

// Mascara NDWI
var mask_ndwi_verao = s2_verao_mos.select('NDWI').selfMask();
var mask_ndwi_inverno = s2_inverno_mos.select('NDWI').selfMask();

// Adiciona os layers
Map.addLayer(s2_verao_mos,{min:0, max:3000, bands:['B8','B4','B3']},'Verao Set 2019', false);
Map.addLayer(s2_inverno_mos,{min:0, max:3000, bands:['B8','B4','B3'],},'Inverno Mar 2019');
Map.addLayer(s2_verao_mos,vis_ndwi_verao,'NDWI - VERAO - SET - 2019',false);
Map.addLayer(s2_inverno_mos,vis_ndwi_inverno,'NDWI - INVERNO - MAR - 2019',false);
Map.addLayer(mask_ndwi_verao,{palette: 'blue'},' MASCARA NDWI - VERAO - SET - 2019',false);
Map.addLayer(mask_ndwi_inverno,{palette: 'red'},' MASCARA NDWI - INVERNO - MAR - 2019',false);
Map.centerObject(geometry,10);
Map.setOptions('SATELLITE');

/***************************** MEDIA E DESVIO PADRAO NDWI *************************/

var mean_s2_verao = s2_verao_mos.select('NDWI').reduceRegion({
  reducer:ee.Reducer.mean(),
  geometry:geometry,
  scale:10,
  maxPixels:1e9
});
print('Media NDWI VERAO: ', mean_s2_verao);

var mean_s2_inverno = s2_inverno_mos.select('NDWI').reduceRegion({
  reducer:ee.Reducer.mean(),
  geometry:geometry,
  scale:10,
  maxPixels:1e9
});
print('Media NDWI INVERNO: ', mean_s2_inverno);


var minmax_mask_verao = mask_ndwi_verao.select('NDWI').reduceRegion({
  reducer:ee.Reducer.minMax(),
  geometry:geometry,
  scale:10,
  maxPixels:1e9
});
print('Min Max NDWI VERAO: ', minmax_mask_verao);

var minmax_mask_inverno = mask_ndwi_inverno.select('NDWI').reduceRegion({
  reducer:ee.Reducer.minMax(),
  geometry:geometry,
  scale:10,
  maxPixels:1e9
});
print('Min Max NDWI INVERNO: ', minmax_mask_inverno);




/***************************** CALCULAR A AREA NDWI *******************************/
var s2_verao_area = mask_ndwi_verao.select('NDWI').selfMask()
                            .multiply(ee.Image.pixelArea()).divide(1000*1000).rename('Area')
                            .reduceRegion({reducer:ee.Reducer.sum(),
                                          geometry: geometry,
                                          scale:10,
                                          maxPixels:1e9
                                          });

print('Area NDWI VERAO Km2: ', s2_verao_area.get('Area'));

var s2_inverno_area = mask_ndwi_inverno.select('NDWI').selfMask()
                            .multiply(ee.Image.pixelArea()).divide(1000*1000).rename('Area')
                            .reduceRegion({reducer:ee.Reducer.sum(),
                                          geometry: geometry,
                                          scale:10,
                                          maxPixels:1e9
                                          });

print('Area NDWI INVERNO Km2:', s2_inverno_area.get('Area'));




// Display a time-series chart
var chart = ui.Chart.image.series({
  imageCollection: s2_verao_mos.select('NDWI'),
  region: geometry,
  reducer: ee.Reducer.mean(),
  scale: 20})
print(chart);
Emobe
  • 660
  • 11
  • 32

0 Answers0