Cómo reducir una ImageCollection

Para combinar imágenes en un ImageCollection, usa imageCollection.reduce(). Esto combinará todas las imágenes de la recopilación en una sola imagen que represente, por ejemplo, la desviación mínima, máxima, media o estándar de las imágenes. (consulta la sección Reducers para obtener más información sobre los reductores). Por ejemplo, para crear una imagen de valor medio a partir de una recopilación, haz lo siguiente:

// Load a Landsat 8 collection for a single path-row.
var collection = ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
    .filter(ee.Filter.eq('WRS_PATH', 44))
    .filter(ee.Filter.eq('WRS_ROW', 34))
    .filterDate('2014-01-01', '2015-01-01');

// Compute a median image and display.
var median = collection.median();
Map.setCenter(-122.3578, 37.7726, 12);
Map.addLayer(median, {bands: ['B4', 'B3', 'B2'], max: 0.3}, 'Median');

Consulta la página Entorno de Python para obtener información sobre la API de Python y el uso de geemap para el desarrollo interactivo.

import ee
import geemap.core as geemap
# Load a Landsat 8 collection for a single path-row.
collection = (
    ee.ImageCollection('LANDSAT/LC08/C02/T1_TOA')
    .filter(ee.Filter.eq('WRS_PATH', 44))
    .filter(ee.Filter.eq('WRS_ROW', 34))
    .filterDate('2014-01-01', '2015-01-01')
)

# Compute a median image and display.
median = collection.median()
m = geemap.Map()
m.set_center(-122.3578, 37.7726, 12)
m.add_layer(median, {'bands': ['B4', 'B3', 'B2'], 'max': 0.3}, 'Median')
m

En cada ubicación de la imagen de salida, en cada banda, el valor del píxel es la mediana de todos los píxeles sin enmascarar en las imágenes de entrada (las imágenes de la colección). En el ejemplo anterior, median() es un método de conveniencia para la siguiente llamada:

// Reduce the collection with a median reducer.
var median = collection.reduce(ee.Reducer.median());

// Display the median image.
Map.addLayer(median,
             {bands: ['B4_median', 'B3_median', 'B2_median'], max: 0.3},
             'Also median');

Consulta la página Entorno de Python para obtener información sobre la API de Python y el uso de geemap para el desarrollo interactivo.

import ee
import geemap.core as geemap
# Reduce the collection with a median reducer.
median = collection.reduce(ee.Reducer.median())

# Display the median image.
m.add_layer(
    median,
    {'bands': ['B4_median', 'B3_median', 'B2_median'], 'max': 0.3},
    'Also median',
)
m

Ten en cuenta que los nombres de las bandas difieren como resultado de usar reduce() en lugar del método de conveniencia. Específicamente, los nombres del reductor se agregaron a los nombres de las bandas.

También es posible realizar reducciones más complejas con reduce(). Por ejemplo, para calcular la tendencia lineal a largo plazo de una colección, usa uno de los reductores de regresión lineal. El siguiente código calcula la tendencia lineal del índice de vegetación mejorado (EVI) de MODIS:

// This function adds a band representing the image timestamp.
var addTime = function(image) {
  return image.addBands(image.metadata('system:time_start')
    // Convert milliseconds from epoch to years to aid in
    // interpretation of the following trend calculation.
    .divide(1000 * 60 * 60 * 24 * 365));
};

// Load a MODIS collection, filter to several years of 16 day mosaics,
// and map the time band function over it.
var collection = ee.ImageCollection('MODIS/006/MYD13A1')
  .filterDate('2004-01-01', '2010-10-31')
  .map(addTime);

// Select the bands to model with the independent variable first.
var trend = collection.select(['system:time_start', 'EVI'])
  // Compute the linear trend over time.
  .reduce(ee.Reducer.linearFit());

// Display the trend with increasing slopes in green, decreasing in red.
Map.setCenter(-96.943, 39.436, 5);
Map.addLayer(
    trend,
    {min: 0, max: [-100, 100, 10000], bands: ['scale', 'scale', 'offset']},
    'EVI trend');

Consulta la página Entorno de Python para obtener información sobre la API de Python y el uso de geemap para el desarrollo interactivo.

import ee
import geemap.core as geemap
# This function adds a band representing the image timestamp.
def add_time(image):
  return image.addBands(
      image.metadata('system:time_start')
      # Convert milliseconds from epoch to years to aid in
      # interpretation of the following trend calculation.
      .divide(1000 * 60 * 60 * 24 * 365)
  )


# Load a MODIS collection, filter to several years of 16 day mosaics,
# and map the time band function over it.
collection = (
    ee.ImageCollection('MODIS/006/MYD13A1')
    .filterDate('2004-01-01', '2010-10-31')
    .map(add_time)
)

# Select the bands to model with the independent variable first.
trend = collection.select(['system:time_start', 'EVI']).reduce(
    # Compute the linear trend over time.
    ee.Reducer.linearFit()
)

# Display the trend with increasing slopes in green, decreasing in red.
m.set_center(-96.943, 39.436, 5)
m = geemap.Map()
m.add_layer(
    trend,
    {
        'min': 0,
        'max': [-100, 100, 10000],
        'bands': ['scale', 'scale', 'offset'],
    },
    'EVI trend',
)
m

Ten en cuenta que el resultado de la reducción en este ejemplo es una imagen de dos bandas con una banda para la pendiente de una regresión lineal (scale) y una banda para el intercepto (offset). Explora la documentación de la API para ver una lista de los reductores disponibles para reducir un ImageCollection a un solo Image.

Los compuestos no tienen proyección.

Las imágenes compuestas que se crean reduciendo una colección de imágenes pueden producir píxeles en cualquier proyección solicitada y, por lo tanto, no tienen una proyección de salida fija. En cambio, los compuestos tienen la proyección predeterminada de WGS-84 con píxeles de resolución de 1 grado. Los compuestos con la proyección predeterminada se calcularán en cualquier proyección de salida que se solicite. Una solicitud se produce cuando se muestra el compuesto en el editor de código (obtén información sobre cómo el editor de código establece la escala y la proyección) o cuando se especifica de forma explícita una proyección o escala, como en una agregación, como ReduceRegion o Export.