Statistiques des colonnes FeatureCollection

Pour réduire les propriétés des éléments géographiques dans un FeatureCollection, utilisez featureCollection.reduceColumns(). Prenons l'exemple suivant:

Éditeur de code (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']
}));

Configuration de Python

Consultez la page Environnement Python pour en savoir plus sur l'API Python et l'utilisation de geemap pour le développement interactif.

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

Notez que les entrées sont pondérées en fonction de la propriété weight spécifiée. Le résultat est donc le suivant:

mean: 2.333333333333333
    

Prenons un exemple plus complexe : un FeatureCollection de blocs de recensement des États-Unis avec des données de recensement comme attributs. Les variables d'intérêt sont la population totale et le nombre total de logements. Vous pouvez obtenir leur somme en fournissant un argument de réducteur de somme à reduceColumns() et en imprimant le résultat:

Éditeur de code (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);

Configuration de Python

Consultez la page Environnement Python pour en savoir plus sur l'API Python et l'utilisation de geemap pour le développement interactif.

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)

La sortie est un Dictionary représentant la propriété agrégée en fonction du réducteur spécifié:

sum: [85579,36245]
    

Notez que l'exemple ci-dessus utilise le filtre notNull() pour n'inclure que les éléments avec des entrées non nulles pour les propriétés sélectionnées de la collection réduite. Il est recommandé de vérifier les entrées nulles pour détecter les données manquantes inattendues et éviter les erreurs résultant de calculs incluant des valeurs nulles.

Notez également que, contrairement à imageCollection.reduce(), dans lequel les réducteurs sont automatiquement répétés pour chaque bande, les réducteurs sur un FeatureCollection doivent être explicitement répétés à l'aide de repeat(). Plus précisément, répétez le réducteur m fois pour m entrées. L'erreur suivante peut être générée si vous ne répétez pas le réducteur: