Reduções de ImageCollection

Considere o exemplo de necessidade de calcular a mediana de uma série temporal de imagens representada por um ImageCollection. Para reduzir um ImageCollection, use imageCollection.reduce(). Isso reduz a coleção de imagens a uma imagem individual, conforme ilustrado na Figura 1. Especificamente, a saída é calculada por pixel, de modo que cada pixel na saída é composto pelo valor mediano de todas as imagens da coleção naquele local. Para receber outras estatísticas, como média, soma, variância, percentil arbitrário etc., o redutor apropriado precisa ser selecionado e aplicado. Consulte a guia Documentos no Editor de código para conferir uma lista de todos os redutores disponíveis no momento. Para estatísticas básicas, como mínimo, máximo, média etc., ImageCollection tem métodos de atalho, como min(), max(), mean() etc. Eles funcionam exatamente da mesma maneira que a chamada reduce(), exceto que os nomes das bandas resultantes não terão o nome do redutor anexado.

diagrama imageCollection.reduce
Figura 1. Ilustração de um ee.Reducer aplicado a uma ImageCollection.

Para um exemplo de redução de um ImageCollection, considere uma coleção de imagens do Landsat 5, filtrada por caminho e linha. O código a seguir usa reduce() para reduzir a coleção a um Image. Aqui, um redutor de mediana é usado apenas para fins ilustrativos:

Editor de código (JavaScript)

// Load an image collection, filtered so it's not too much data.
var collection = ee.ImageCollection('LANDSAT/LT05/C02/T1')
  .filterDate('2008-01-01', '2008-12-31')
  .filter(ee.Filter.eq('WRS_PATH', 44))
  .filter(ee.Filter.eq('WRS_ROW', 34));

// Compute the median in each band, each pixel.
// Band names are B1_median, B2_median, etc.
var median = collection.reduce(ee.Reducer.median());

// The output is an Image.  Add it to the map.
var vis_param = {bands: ['B4_median', 'B3_median', 'B2_median'], gamma: 1.6};
Map.setCenter(-122.3355, 37.7924, 9);
Map.addLayer(median, vis_param);

Configuração do Python

Consulte a página Ambiente Python para informações sobre a API Python e o uso de geemap para desenvolvimento interativo.

import ee
import geemap.core as geemap

Colab (Python)

# Load an image collection, filtered so it's not too much data.
collection = (
    ee.ImageCollection('LANDSAT/LT05/C02/T1')
    .filterDate('2008-01-01', '2008-12-31')
    .filter(ee.Filter.eq('WRS_PATH', 44))
    .filter(ee.Filter.eq('WRS_ROW', 34))
)

# Compute the median in each band, each pixel.
# Band names are B1_median, B2_median, etc.
median = collection.reduce(ee.Reducer.median())

# The output is an Image.  Add it to the map.
vis_param = {'bands': ['B4_median', 'B3_median', 'B2_median'], 'gamma': 1.6}
m = geemap.Map()
m.set_center(-122.3355, 37.7924, 9)
m.add_layer(median, vis_param)
m

Isso retorna uma Image de várias bandas, em que cada pixel é a mediana de todos os pixels desmascarados na ImageCollection nesse local. Especificamente, o redutor foi repetido para cada banda das imagens de entrada, o que significa que a mediana é calculada de forma independente em cada banda. Os nomes das bandas têm o nome do redutor anexado: 'B1_median', 'B2_median' etc. A saída deve ser semelhante à Figura 2.

Para mais informações sobre como reduzir coleções de imagens, consulte a seção de redução dos documentos do ImageCollection. Em particular, observe que as imagens produzidas pela redução de um ImageCollection não têm projeção. Isso significa que você precisa definir explicitamente a escala em todas as computações que envolvem a saída de imagens computadas por uma redução de ImageCollection.

Saída ImageCollection.reduce
Figura 2. Um composto de falsa cor da mediana das cenas do Landsat 5 em 2008.