To apply the same operation to every Feature
in a
FeatureCollection
, use featureCollection.map()
. For example,
to add another area attribute to every feature in a watersheds
FeatureCollection
, use:
Code Editor (JavaScript)
// Load watersheds from a data table. var sheds = ee.FeatureCollection('USGS/WBD/2017/HUC06'); // This function computes the feature's geometry area and adds it as a property. var addArea = function(feature) { return feature.set({areaHa: feature.geometry().area().divide(100 * 100)}); }; // Map the area getting function over the FeatureCollection. var areaAdded = sheds.map(addArea); // Print the first feature from the collection with the added property. print('First feature:', areaAdded.first());
In the previous example, note that a new property is set based on a computation with the feature’s geometry. Properties can also be set using a computation involving existing properties.
An entirely new FeatureCollection
can be generated with map()
.
The following example converts the watersheds to centroids:
Code Editor (JavaScript)
// This function creates a new feature from the centroid of the geometry. var getCentroid = function(feature) { // Keep this list of properties. var keepProperties = ['name', 'huc6', 'tnmid', 'areasqkm']; // Get the centroid of the feature's geometry. var centroid = feature.geometry().centroid(); // Return a new Feature, copying properties from the old Feature. return ee.Feature(centroid).copyProperties(feature, keepProperties); }; // Map the centroid getting function over the features. var centroids = sheds.map(getCentroid); // Display the results. Map.addLayer(centroids, {color: 'FF0000'}, 'centroids');
Note that only a subset of properties is propagated to the features in the new collection.