Mit featureCollection.reduceColumns()
können Sie die Eigenschaften von Elementen in einem FeatureCollection
reduzieren. Betrachten Sie das folgende Beispiel:
Code-Editor (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'] ) )
Die Eingaben werden gemäß dem angegebenen weight
-Attribut gewichtet. Das Ergebnis ist daher:
mean: 2.333333333333333
Ein komplexeres Beispiel ist eine FeatureCollection
von US-Volkszählungsblöcken mit Volkszählungsdaten als Attributen. Die interessierenden Variablen sind die Gesamtbevölkerung und die Gesamtzahl der Wohneinheiten. Sie können die Summen ermitteln, indem Sie reduceColumns()
ein Summen-Reducer-Argument übergeben und das Ergebnis ausgeben:
Code-Editor (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)
Die Ausgabe ist eine Dictionary
, die die aggregierte Property gemäß dem angegebenen Reducer darstellt:
sum: [85579,36245]
Im obigen Beispiel wird der Filter notNull()
verwendet, um nur Features mit nicht nullwertigen Einträgen für ausgewählte Properties in der reduzierten Sammlung zu berücksichtigen.
Es empfiehlt sich, nach Nulleinträgen zu suchen, um unerwartete fehlende Daten zu erkennen und Fehler zu vermeiden, die durch Berechnungen mit Nullwerten entstehen.
Im Gegensatz zu imageCollection.reduce()
, bei dem Reducer automatisch für jedes Band wiederholt werden, müssen Reducer in einer FeatureCollection
explizit mit repeat()
wiederholt werden. Insbesondere wird der Reduzierer m-mal für m Eingaben wiederholt. Wenn der Reducer nicht wiederholt wird, kann der folgende Fehler auftreten: