Estadísticas de las columnas de FeatureCollection

Para reducir las propiedades de los componentes en un FeatureCollection, usa featureCollection.reduceColumns(). Considera el siguiente ejemplo de juguete:

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

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
# 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']
    )
)

Ten en cuenta que las entradas se ponderan según la propiedad weight especificada. Por lo tanto, el resultado es el siguiente:

mean: 2.333333333333333
    

Como ejemplo más complejo, considera un FeatureCollection de bloques del censo de EE.UU. con datos del censo como atributos. Las variables de interés son la población total y la cantidad total de unidades de vivienda. Para obtener sus sumas, proporciona un argumento de reductor de suma a reduceColumns() y, luego, imprime el resultado:

// 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);

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 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)

El resultado es un Dictionary que representa la propiedad agregada según el reductor especificado:

sum: [85579,36245]
    

Ten en cuenta que el ejemplo anterior usa el filtro notNull() para incluir solo atributos con entradas no nulas para las propiedades seleccionadas en la colección que se reduce. Es recomendable verificar si hay entradas nulas para detectar datos faltantes inesperados y evitar errores que se produzcan a partir de cálculos que incluyan valores nulos.

Además, ten en cuenta que, a diferencia de imageCollection.reduce(), en el que los reductores se repiten automáticamente para cada banda, los reductores en un FeatureCollection deben repetirse de forma explícita con repeat(). Específicamente, repite el reducer m veces para las entradas m. Es posible que se genere el siguiente error como resultado de no repetir el reductor: