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.