Estatísticas das colunas FeatureCollection

Para reduzir as propriedades dos elementos em um FeatureCollection, use featureCollection.reduceColumns(). Considere o exemplo de brinquedo a seguir:

Editor de código (JavaScript)

// Make a toy FeatureCollection.
var aFeatureCollection = ee.FeatureCollection([
  ee.Feature(null, {foo: 1, weight: 1}),
  ee.Feature(null, {foo: 2, weight: 2}),
  ee.Feature(null, {foo: 3, weight: 3}),
]);

// Compute a weighted mean and display it.
print(aFeatureCollection.reduceColumns({
  reducer: ee.Reducer.mean(),
  selectors: ['foo'],
  weightSelectors: ['weight']
}));

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)

# Make a toy FeatureCollection.
a_feature_collection = ee.FeatureCollection([
    ee.Feature(None, {'foo': 1, 'weight': 1}),
    ee.Feature(None, {'foo': 2, 'weight': 2}),
    ee.Feature(None, {'foo': 3, 'weight': 3}),
])

# Compute a weighted mean and display it.
display(
    a_feature_collection.reduceColumns(
        reducer=ee.Reducer.mean(), selectors=['foo'], weightSelectors=['weight']
    )
)

As entradas são ponderadas de acordo com a propriedade weight especificada. O resultado é o seguinte:

mean: 2.333333333333333
    

Como um exemplo mais complexo, considere um FeatureCollection de blocos de censo dos EUA com dados de censo como atributos. As variáveis de interesse são a população total e o total de unidades habitacionais. Você pode receber as somas fornecendo um argumento de redutor de soma para reduceColumns() e imprimindo o resultado:

Editor de código (JavaScript)

// Load US census data as a FeatureCollection.
var census = ee.FeatureCollection('TIGER/2010/Blocks');

// Filter the collection to include only Benton County, OR.
var benton = census.filter(
  ee.Filter.and(
    ee.Filter.eq('statefp10', '41'),
    ee.Filter.eq('countyfp10', '003')
  )
);

// Display Benton County census blocks.
Map.setCenter(-123.27, 44.57, 13);
Map.addLayer(benton);

// Compute sums of the specified properties.
var properties = ['pop10', 'housing10'];
var sums = benton
    .filter(ee.Filter.notNull(properties))
    .reduceColumns({
      reducer: ee.Reducer.sum().repeat(2),
      selectors: properties
    });

// Print the resultant Dictionary.
print(sums);

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 US census data as a FeatureCollection.
census = ee.FeatureCollection('TIGER/2010/Blocks')

# Filter the collection to include only Benton County, OR.
benton = census.filter(
    ee.Filter.And(
        ee.Filter.eq('statefp10', '41'), ee.Filter.eq('countyfp10', '003')
    )
)

# Display Benton County census blocks.
m = geemap.Map()
m.set_center(-123.27, 44.57, 13)
m.add_layer(benton)
display(m)

# Compute sums of the specified properties.
properties = ['pop10', 'housing10']
sums = benton.filter(ee.Filter.notNull(properties)).reduceColumns(
    reducer=ee.Reducer.sum().repeat(2), selectors=properties
)

# Print the resultant Dictionary.
display(sums)

A saída é um Dictionary que representa a propriedade agregada de acordo com o redutor especificado:

sum: [85579,36245]
    

O exemplo acima usa o filtro notNull() para incluir apenas recursos com entradas não nulas para propriedades selecionadas na coleção reduzida. É uma boa prática verificar se há entradas nulas para detectar dados ausentes inesperados e evitar erros resultantes de cálculos que incluem valores nulos.

Além disso, ao contrário de imageCollection.reduce(), em que os redutores são repetidos automaticamente para cada faixa, os redutores em um FeatureCollection precisam ser repetidos explicitamente usando repeat(). Especificamente, repita o redutor m vezes para entradas m. O seguinte erro pode ser gerado como resultado da não repetição do redutor: