1 votos

Reducción de los datos MODIS promediados mensualmente a lo largo de varios ROI

Quiero crear promedios mensuales para el producto MODIS Land Surface Temperature (LST) para varios ROIs. Puedo crear una colección de imágenes que contenga los datos MODIS promediados mensualmente, pero no he averiguado cómo reducir estos datos para los ROI.

Aquí está la primera parte, con la ayuda de aquí y aquí :

var modis = ee.ImageCollection('MODIS/006/MOD11A2');
var months = ee.List.sequence(1, 12);

Map.centerObject(areas, 7);
Map.addLayer(areas, {}, 'ROI');

// First I divide the data into monthly averages
var byMonth = ee.ImageCollection.fromImages(
      months.map(function (m) {
        return modis.filter(ee.Filter.calendarRange(m, m, 'month'))
                    .select(0).mean() // selecting band 1: LST_Day_1km
                    .set('month', m); 
}));
print('byMonth:', byMonth);

var check = ee.Image(byMonth.first());
Map.addLayer(check, {}, 'check');

Luego viene la siguiente parte, en la que intento usar .reduceRegions() para reducir sobre múltiples regiones (mis "áreas" de FeatureCollection). La idea es hacer un bucle/mapa a través de los 12 meses, reduciendo los datos mensuales de "byMonth" a un valor para cada ROI. Desafortunadamente no funciona.

var reduced = months.map(function(mm) { 
  return byMonth.reduceRegions({
  collection: areas, // a featureCollection containing multiple polygons
  reducer: ee.Reducer.mean(),
  scale: 30,
  maxPixels: 1e9
}).filter(ee.Filter.eq('month', mm));
});
print(reduced);

2voto

Jeyanth Kumar Puntos 142

Tenías un montón de bichos ahí. Esto debería servir:

var modis = ee.ImageCollection('MODIS/006/MOD11A2');
var months = ee.List.sequence(1, 12);

Map.centerObject(areas, 7);
Map.addLayer(areas, {}, 'ROI');

// First I divide the data into monthly averages
var byMonth = ee.ImageCollection.fromImages(
      months.map(function (m) {
        return modis.filter(ee.Filter.calendarRange(m, m, 'month'))
                    .select(0).mean() // selecting band 1: LST_Day_1km
                    .set('month', m); 
}));
print('byMonth:', byMonth);

var check = ee.Image(byMonth.first());
Map.addLayer(check, {}, 'check');

var reduced = months.map(function(mm) { 
  return ee.Image(byMonth
      .filter(ee.Filter.eq('month', mm))
      .first())
      .reduceRegions({
        collection: areas, // a featureCollection containing multiple polygons
        reducer: ee.Reducer.mean(),
        scale: 1000,
      });
});
print(reduced.get(0));

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X