Para aplicar la misma operación a cada Feature
en un FeatureCollection
, usa featureCollection.map()
. Por ejemplo, para agregar otro atributo de área a cada componente de un FeatureCollection
de cuencas hidrográficas, usa lo siguiente:
// 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());
import ee import geemap.core as geemap
# 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())
En el ejemplo anterior, observa que se establece una propiedad nueva en función de un cálculo con la geometría de la función. Las propiedades también se pueden establecer mediante un cálculo que involucre propiedades existentes.
Se puede generar un FeatureCollection
completamente nuevo con map()
.
En el siguiente ejemplo, se convierten las cuencas hidrográficas en centroides:
// 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');
import ee import geemap.core as geemap
# 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
Ten en cuenta que solo se propaga un subconjunto de propiedades a las funciones de la colección nueva.