Mapping over a FeatureCollection

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

Python setup

See the Python Environment page for information on the Python API and using geemap for interactive development.

 import 
  
 ee 
 import 
  
 geemap.core 
  
 as 
  
 geemap 

Colab (Python)

 # Load watersheds from a data table. 
 sheds 
 = 
 ee 
 . 
 FeatureCollection 
 ( 
 'USGS/WBD/2017/HUC06' 
 ) 
 # Map an area calculation function over the FeatureCollection. 
 area_added 
 = 
 sheds 
 . 
 map 
 ( 
 lambda 
 feature 
 : 
 feature 
 . 
 set 
 ( 
 { 
 'areaHa' 
 : 
 feature 
 . 
 geometry 
 () 
 . 
 area 
 () 
 . 
 divide 
 ( 
 100 
 * 
 100 
 )} 
 ) 
 ) 
 # Print the first feature from the collection with the added property. 
 display 
 ( 
 'First feature:' 
 , 
 area_added 
 . 
 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' 
 ); 

Python setup

See the Python Environment page for information on the Python API and using geemap for interactive development.

 import 
  
 ee 
 import 
  
 geemap.core 
  
 as 
  
 geemap 

Colab (Python)

 # This function creates a new feature from the centroid of the geometry. 
 def 
  
 get_centroid 
 ( 
 feature 
 ): 
 # Keep this list of properties. 
 keep_properties 
 = 
 [ 
 'name' 
 , 
 'huc6' 
 , 
 'tnmid' 
 , 
 'areasqkm' 
 ] 
 # Get the centroid of the feature's geometry. 
 centroid 
 = 
 feature 
 . 
 geometry 
 () 
 . 
 centroid 
 () 
 # Return a new Feature, copying properties from the old Feature. 
 return 
 ee 
 . 
 Feature 
 ( 
 centroid 
 ) 
 . 
 copyProperties 
 ( 
 feature 
 , 
 keep_properties 
 ) 
 # Map the centroid getting function over the features. 
 centroids 
 = 
 sheds 
 . 
 map 
 ( 
 get_centroid 
 ) 
 # Display the results. 
 m 
 = 
 geemap 
 . 
 Map 
 () 
 m 
 . 
 set_center 
 ( 
 - 
 96.25 
 , 
 40 
 , 
 4 
 ) 
 m 
 . 
 add_layer 
 ( 
 centroids 
 , 
 { 
 'color' 
 : 
 'FF0000' 
 }, 
 'centroids' 
 ) 
 m 

Note that only a subset of properties is propagated to the features in the new collection.

Design a Mobile Site
View Site in Mobile | Classic
Share by: