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'] }));
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);
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: