Dans Earth Engine, un Feature
est défini comme un élément géographique GeoJSON. Plus précisément, un Feature
est un objet avec une propriété geometry
stockant un objet Geometry
(ou NULL) et une propriété properties
stockant un dictionnaire d'autres propriétés.
Créer des objets Feature
Pour créer un Feature
, fournissez au constructeur un Geometry
et (facultatif) un dictionnaire d'autres propriétés. Exemple :
Éditeur de code (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'})
Comme pour un Geometry
, un Feature
peut être imprimé ou ajouté à la carte pour l'inspection et la visualisation:
Éditeur de code (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
n'a pas besoin d'un Geometry
et peut simplement encapsuler un dictionnaire de propriétés. Exemple :
Éditeur de code (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)
Dans cet exemple, notez que le dictionnaire fourni à Feature
contient une valeur calculée. Créer des éléments géographiques de cette manière est utile pour exporter des calculs de longue durée avec un résultat Dictionary
(par exemple, image.reduceRegion()
). Pour en savoir plus, consultez les guides FeatureCollections et Importer des données de table ou Exporter.
Chaque Feature
possède un Geometry
principal stocké dans la propriété geometry
. D'autres géométries peuvent être stockées dans d'autres propriétés.
Les méthodes Geometry
telles que l'intersection et le tampon existent également sur Feature
pour obtenir facilement le Geometry
principal, appliquer l'opération et définir le résultat comme nouveau Geometry
principal.
Le résultat conservera toutes les autres propriétés de l'Feature
sur laquelle la méthode est appelée. Il existe également des méthodes permettant d'obtenir et de définir les propriétés non géométriques de Feature
. Exemple :
Éditeur de code (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)
Dans l'exemple précédent, notez que les propriétés peuvent être définies à l'aide d'une paire clé-valeur ou d'un dictionnaire. Notez également que feature.set()
écrase les propriétés existantes.