reduceRegion
Para conferir as estatísticas dos valores de pixel em uma região de um ee.Image
, use
image.reduceRegion()
.
Isso reduz todos os pixels nas regiões a uma
estatística ou outra representação compacta dos dados de pixel na região (por exemplo,
histograma). A região é representada como um Geometry
, que pode ser um
polígono contendo muitos pixels ou um único ponto. Nesse caso, haverá
apenas um pixel na região. Em ambos os casos, conforme ilustrado na Figura 1, a saída
é uma estatística derivada dos pixels na região.

ee.Reducer
aplicado a uma imagem
e a uma região.Para conferir um exemplo de como conferir estatísticas de pixels em uma região de uma imagem usando
reduceRegion()
, considere encontrar os valores espectrais médios
de um composto Landsat de cinco anos dentro dos limites da floresta de coníferas da Sierra Nevada (ilustrado na Figura 2):
// Load input imagery: Landsat 7 5-year composite. var image = ee.Image('LANDSAT/LE7_TOA_5YEAR/2008_2012'); // Load an input region: Sierra Nevada. var region = ee.Feature(ee.FeatureCollection('EPA/Ecoregions/2013/L3') .filter(ee.Filter.eq('us_l3name', 'Sierra Nevada')) .first()); // Reduce the region. The region parameter is the Feature geometry. var meanDictionary = image.reduceRegion({ reducer: ee.Reducer.mean(), geometry: region.geometry(), scale: 30, maxPixels: 1e9 }); // The result is a Dictionary. Print it. print(meanDictionary);
Para forçar a computação, basta imprimir o resultado, que o editor de código vai
mostrar como um Dictionary
no console. A saída será semelhante a esta:
B1: 25.406029716816853 B2: 23.971497014238988 B3: 22.91059593763103 B4: 54.83164133293403 B5: 38.07655472573677 B6_VCID_2: 198.93216428012906 B7: 24.063261634961563

Neste exemplo, a redução é especificada fornecendo o reducer
(ee.Reducer.mean()
), o geometry
(region.geometry()
),
o scale
(30 metros) e o maxPixels
para o número máximo de
pixels a serem inseridos no redutor. Uma escala precisa ser sempre especificada em
chamadas reduceRegion()
. Isso ocorre porque, em fluxos de processamento complexos, que podem envolver dados de diferentes fontes com escalas diferentes, a escala da saída não é determinada de forma inequívoca pelas entradas. Nesse caso, a escala padrão
é 1 grau, o que geralmente produz resultados insatisfatórios. Consulte esta
página para mais informações sobre como o Earth Engine lida com a escala.
Há duas maneiras de definir a escala: especifique o parâmetro scale
ou uma transformação CRS e CRS. Consulte o glossário para
mais informações sobre CRS e transformações CRS. Por exemplo, a
redução de meanDictionary
(acima) é equivalente a:
// As an alternative to specifying scale, specify a CRS and a CRS transform. // Make this array by constructing a 4326 projection at 30 meters, // then copying the bounds of the composite, from composite.projection(). var affine = [0.00026949458523585647, 0, -180, 0, -0.00026949458523585647, 86.0000269494563]; // Perform the reduction, print the result. print(image.reduceRegion({ reducer: ee.Reducer.mean(), geometry: region.geometry(), crs: 'EPSG:4326', crsTransform: affine, maxPixels: 1e9 }));
Em geral, especificar a escala é suficiente e resulta em um código mais legível. O Earth Engine determina quais pixels serão inseridos no redutor primeiro rasterizando a região. Se uma escala for especificada sem um CRS, a região será rasterizada na projeção nativa da imagem, dimensionada para a resolução especificada. Se um CRS e uma escala forem especificados, a região será rasterizada com base neles.
Pixels na região
Os pixels são determinados para estar na região (e ponderados) de acordo com as seguintes regras, aplicadas na escala e projeção especificadas:
- Redutor não ponderado (por exemplo,
ee.Reducer.count()
ouee.Reducer.mean().unweighted()
): os pixels são incluídos se o centroid deles estiver na região e a máscara da imagem não for zero. - Redutor ponderado (por exemplo,
ee.Reducer.mean()
): pixels são incluídos se pelo menos (aproximadamente) 0,5% do pixel estiver na região e a máscara da imagem não for zero. O peso deles é o mínimo da máscara da imagem e a (aproximação) fração do pixel coberto pela região.
O parâmetro maxPixels
é necessário para que a computação seja bem-sucedida. Se esse
parâmetro for deixado de fora do exemplo, um erro será retornado, semelhante a este:
Há várias opções para contornar esses erros: aumentar maxPixels
,
como no exemplo, aumentar o scale
ou definir bestEffort
como
"true", que calcula automaticamente uma nova escala (maior) para que maxPixels
não seja excedido. Se você não especificar maxPixels
, o valor padrão será usado.