Installation de Python

Compatibilité avec Python

La bibliothèque cliente Python Earth Engine est compatible avec les versions Python compatibles avec Google Cloud. La prise en charge est mise à jour chaque année conformément au calendrier de publication des versions ponctuelles de Python (PEP 602, État des versions de Python). L'utilisation de versions Python non compatibles peut entraîner des échecs d'authentification, un comportement inattendu ou l'échec de certaines opérations.

Options d'installation

Si vous utilisez Google Colab, la dernière version de la bibliothèque cliente Python Earth Engine a déjà été installée (via pip). Essayez le notebook suivant pour commencer à utiliser Earth Engine et Colab:

Si vous n'utilisez pas Colab, vous pouvez installer et mettre à jour manuellement la bibliothèque cliente Earth Engine sur votre système à l'aide de conda (recommandé) ou de pip:


Installez l'API dans un environnement Python arbitraire à l'aide de pip. Depuis un terminal ou une invite de commande:

pip install earthengine-api

Une fois l'API installée, vous pouvez l'importer, l'authentifier et l'initialiser comme décrit sur cette page.

Mettez à jour l'API:

pip install earthengine-api --upgrade

Importation de packages

Le package d'API Python s'appelle ee. Il doit être importé et initialisé pour chaque nouvelle session et script Python:

import ee

Authentification et initialisation

Avant d'utiliser la bibliothèque cliente Python Earth Engine, vous devez vous authentifier et utiliser les identifiants obtenus pour initialiser le client Python. Exécutez la commande suivante :

ee.Authenticate()

Le meilleur mode d'authentification pour votre environnement sera sélectionné, et vous serez invité à confirmer l'accès pour vos scripts. Pour l'initialiser, vous devez fournir un projet dont vous êtes le propriétaire ou dont vous disposez des autorisations d'utilisation. Ce projet sera utilisé pour exécuter toutes les opérations Earth Engine:

ee.Initialize(project='my-project')

Consultez le guide d'authentification pour résoudre les problèmes et en savoir plus sur les modes d'authentification et les projets Cloud.

Bonjour tout le monde !

Voici un court script pour vérifier que vous êtes prêt à utiliser Earth Engine.

import ee
ee.Authenticate()
ee.Initialize(project='my-project')
print(ee.String('Hello from the Earth Engine servers!').getInfo())

Syntaxe

Les API Python et JavaScript accèdent à la même fonctionnalité côté serveur, mais les expressions côté client (en savoir plus sur le client par rapport au serveur) peuvent varier en raison des différences de syntaxe entre les langages. Le tableau suivant inclut une liste des différences de syntaxe courantes que vous rencontrerez lorsque vous utiliserez l'API Python par rapport à l'API JavaScript.

Différences de syntaxe courantes entre JavaScript et Python
Propriété JavaScript Python
Définition de la fonction
function myFun(arg) {
  return arg;
}

var myFun = function(arg) {
  return arg;
};
def my_fun(arg):
  return arg
Mappage de fonctions anonymes
var foo = col.map(function(arg) {
  return arg;
});
foo = col.map(lambda arg: arg)
Définition de la variable
var myVar = 'var';
my_var = 'var'
Opérateurs logiques
var match = such.and(that);
var match = such.or(that);
var match = such.not(that);
match = such.And(that)
match = such.Or(that)
match = such.Not(that)
Chaîne de méthode multiligne
var foo = my.really()
              .reallyLong()
              .methodChain();
foo = (my.really()
       .reallyLong()
       .methodChain())
Clés du dictionnaire
var dic = {'key': value};
var dic = {key: value};
dic = {'key': value}
Accès aux objets de dictionnaire
var value = dic.key;
var value = dic['key'];
value = dic['key']
Définition des arguments de fonction
// Positional arguments.
var foo = fun(argX, argY, argZ);
// Keyword arguments object.
var foo = fun({y: argY});
# Positional arguments.
foo = fun(arg_x, arg_y, arg_z)
# Keyword arguments dictionary.
foo = fun(**{'y': arg_y})
# Keyword arguments.
foo = fun(x=arg_x, z=arg_z)
Booléen
var t = true;
var f = false;
t = True
f = False
Valeurs Null
var na = null;
na = None
Commentaire
//
#

Objets Date

Définissez et manipulez des objets de date côté client avec le module datetime. Incluez le module dans votre script:

import datetime

Convertir ee.Date en date côté client:

ee_date = ee.Date('2020-01-01')
py_date = datetime.datetime.utcfromtimestamp(ee_date.getInfo()['value']/1000.0)

Convertir la date côté client en ee.Date:

py_date = datetime.datetime.utcnow()
ee_date = ee.Date(py_date)

Exportation de données

L'exportation de données avec l'API Python nécessite l'utilisation du module ee.batch, qui fournit une interface aux fonctions Export. Transmettez les arguments de paramètre comme vous le feriez avec l'API JavaScript, en tenant compte des différences indiquées dans le tableau de syntaxe ci-dessus. Les tâches d'exportation doivent être démarrées en appelant la méthode start() sur une tâche définie. Interrogez l'état d'une tâche en appelant la méthode status(). L'exemple suivant montre comment exporter un objet ee.Image.

Créez une tâche d'exportation:

task = ee.batch.Export.image.toDrive(image=my_image,  # an ee.Image object.
                                     region=my_geometry,  # an ee.Geometry object.
                                     description='mock_export',
                                     folder='gdrive_folder',
                                     fileNamePrefix='mock_export',
                                     scale=1000,
                                     crs='EPSG:4326')

Lancer une tâche d'exportation:

task.start()

Vérifiez l'état de la tâche d'exportation:

task.status()

Le résultat de task.status() est un dictionnaire contenant des informations telles que l'état de la tâche et son ID.

{
  'state': 'READY',
  'description': 'my_export_task',
  'creation_timestamp_ms': 1647567508236,
  'update_timestamp_ms': 1647567508236,
  'start_timestamp_ms': 0,
  'task_type': 'EXPORT_IMAGE',
  'id': '56TVJIZABUMTD5CJ5YHTMYK4',
  'name': 'projects/earthengine-legacy/operations/56TVJIZABUMTX5CJ5HHTMYK4'
}

Vous pouvez surveiller la progression des tâches à l'aide du champ state. Consultez la page "Environnements de traitement" pour obtenir une liste des valeurs state et plus d'informations sur le cycle de vie des tâches.

Imprimer des objets

L'impression d'un objet Earth Engine en Python imprime la requête sérialisée pour l'objet, et non l'objet lui-même. Consultez la page Client par rapport au serveur pour comprendre pourquoi.

Appelez getInfo() sur les objets Earth Engine pour obtenir l'objet souhaité du serveur au client:

# Load a Landsat image.
img = ee.Image('LANDSAT/LT05/C02/T1_L2/LT05_034033_20000913')

# Print image object WITHOUT call to getInfo(); prints serialized request instructions.
print(img)

# Print image object WITH call to getInfo(); prints image metadata.
print(img.getInfo())
Notez que getInfo() est une opération synchrone, ce qui signifie que l'exécution des expressions après l'appel getInfo() est bloquée jusqu'à ce que le résultat soit renvoyé au client. De plus, les requêtes de nombreuses données ou de calculs coûteux peuvent renvoyer une erreur et/ou se bloquer. En général, il est recommandé d'exporter vos résultats, puis de les importer dans un nouveau script pour une analyse plus approfondie.

Objets d'interface utilisateur

Le module ui Earth Engine n'est disponible que via l'éditeur de code de l'API JavaScript. Utilisez des bibliothèques tierces pour les éléments d'interface utilisateur en Python. Des bibliothèques telles que geemap, Folium et ipyleaflet permettent d'afficher des cartes interactives, tandis que les graphiques peuvent être créés avec Matplotlib, Altair ou seaborn, pour n'en citer que quelques-unes. Consultez les exemples dans le notebook de configuration d'Earth Engine dans Colab pour utiliser geemap et Matplotlib.

Python dans le guide du développeur

Le code Python est inclus dans l'ensemble du guide du développeur Earth Engine. Le cas échéant, vous pouvez afficher des exemples de code en cliquant sur l'onglet "Colab (Python)" en haut des blocs de code. Les pages de guide peuvent également inclure des boutons en haut pour exécuter la page en tant que notebook Colab ou l'afficher sur GitHub. Les exemples de code Python sont destinés à être exécutés à l'aide de Google Colab. La carte interactive et l'exploration des objets sont gérées par la bibliothèque geemap. La bibliothèque cliente Python Earth Engine et geemap sont préinstallées dans Colab.

Configuration d'Earth Engine

Pour exécuter du code Python, vous devez importer la bibliothèque Earth Engine, vous authentifier et l'initialiser. Les commandes suivantes sont utilisées dans des exemples (consultez la page Authentification et initialisation pour connaître les alternatives).

import ee
ee.Authenticate()
ee.Initialize(project='my-project')

Exploration interactive avec geemap

La bibliothèque geemap permet d'afficher des tuiles de carte et d'imprimer des représentations riches d'objets Earth Engine. La bibliothèque dépend respectivement de ipyleaflet et de eerepr pour ces fonctionnalités. La bibliothèque geemap et ses dépendances sont préinstallées dans Google Colab. Importez-la dans chaque session.

import geemap.core as geemap

Les classes de données géographiques Earth Engine, telles que ee.Image et ee.FeatureCollection, peuvent être affichées à l'aide de l'objet geemap.Map. Commencez par définir l'objet carte. Ajoutez ensuite des calques ou modifiez sa fenêtre d'affichage.

# Initialize a map object.
m = geemap.Map()

# Define an example image.
img = ee.Image.random()

# Add the image to the map.
m.add_layer(img, None, 'Random image')

# Display the map (you can call the object directly if it is the final line).
display(m)