Un Feature en Earth Engine se define como un componente GeoJSON. Específicamente,
un Feature es un objeto con una propiedad geometry que almacena un
objeto Geometry (o nulo) y una propiedad properties que almacena un
diccionario de otras propiedades.
Cómo crear objetos Feature
Para crear un Feature, proporciona al constructor un Geometry y, de manera opcional, un diccionario de otras propiedades. Por ejemplo:
Editor de código (JavaScript)
// Create an ee.Geometry. var polygon = ee.Geometry.Polygon([ [[-35, -10], [35, -10], [35, 10], [-35, 10], [-35, -10]] ]); // Create a Feature from the Geometry. var polyFeature = ee.Feature(polygon, {foo: 42, bar: 'tart'});
import ee import geemap.core as geemap
Colab (Python)
# Create an ee.Geometry. polygon = ee.Geometry.Polygon( [[[-35, -10], [35, -10], [35, 10], [-35, 10], [-35, -10]]] ) # Create a Feature from the Geometry. poly_feature = ee.Feature(polygon, {'foo': 42, 'bar': 'tart'})
Al igual que con un Geometry, se puede imprimir un Feature o agregarlo al mapa para su inspección y visualización:
Editor de código (JavaScript)
print(polyFeature); Map.addLayer(polyFeature, {}, 'feature');
import ee import geemap.core as geemap
Colab (Python)
display(poly_feature) m = geemap.Map() m.add_layer(poly_feature, {}, 'feature') display(m)
Un Feature no necesita tener un Geometry y puede unir un diccionario de propiedades. Por ejemplo:
Editor de código (JavaScript)
// Create a dictionary of properties, some of which may be computed values. var dict = {foo: ee.Number(8).add(88), bar: 'nihao'}; // Create a null geometry feature with the dictionary of properties. var nowhereFeature = ee.Feature(null, dict);
import ee import geemap.core as geemap
Colab (Python)
# Create a dictionary of properties, some of which may be computed values. dic = {'foo': ee.Number(8).add(88), 'bar': 'nihao'} # Create a null geometry feature with the dictionary of properties. nowhere_feature = ee.Feature(None, dic)
En este ejemplo, ten en cuenta que el diccionario proporcionado a Feature contiene un valor calculado. Crear componentes de esta manera es útil para exportar cálculos de larga duración con un resultado Dictionary (p.ej., image.reduceRegion()). Consulta las guías FeatureCollections y Importing Table Data o Exporting para obtener más información.
Cada Feature tiene un Geometry principal almacenado en la
propiedad geometry. Las geometrías adicionales se pueden almacenar en otras propiedades.
Los métodos Geometry, como intersección y búfer, también existen en Feature como una comodidad para obtener el Geometry principal, aplicar la operación y establecer el resultado como el nuevo Geometry principal.
El resultado retendrá todas las demás propiedades de Feature a las que se llama. También hay métodos para obtener y configurar las propiedades no geométricas de Feature. Por ejemplo:
Editor de código (JavaScript)
// Make a feature and set some properties. var feature = ee.Feature(ee.Geometry.Point([-122.22599, 37.17605])) .set('genus', 'Sequoia').set('species', 'sempervirens'); // Get a property from the feature. var species = feature.get('species'); print(species); // Set a new property. feature = feature.set('presence', 1); // Overwrite the old properties with a new dictionary. var newDict = {genus: 'Brachyramphus', species: 'marmoratus'}; var feature = feature.set(newDict); // Check the result. print(feature);
import ee import geemap.core as geemap
Colab (Python)
# Make a feature and set some properties. feature = ( ee.Feature(ee.Geometry.Point([-122.22599, 37.17605])) .set('genus', 'Sequoia') .set('species', 'sempervirens') ) # Get a property from the feature. species = feature.get('species') display(species) # Set a new property. feature = feature.set('presence', 1) # Overwrite the old properties with a new dictionary. new_dic = {'genus': 'Brachyramphus', 'species': 'marmoratus'} feature = feature.set(new_dic) # Check the result. display(feature)
En el ejemplo anterior, ten en cuenta que las propiedades se pueden establecer con un par clave-valor o con un diccionario. También ten en cuenta que feature.set() reemplaza las propiedades existentes.