Python-Unterstützung
Die Earth Engine Python-Clientbibliothek ist mit von Google Cloud unterstützten Python-Versionen kompatibel. Der Support wird jährlich gemäß dem Python-Veröffentlichungszeitplan (PEP 602; Status der Python-Versionen) aktualisiert. Die Verwendung nicht unterstützter Python-Versionen kann zu Authentifizierungsfehlern, unerwartetem Verhalten oder Fehlschlägen bei bestimmten Vorgängen führen.
Installationsoptionen
Wenn Sie Google Colab verwenden, wurde die neueste Version der Earth Engine Python-Clientbibliothek bereits über pip installiert. Im folgenden Notebook können Sie erste Schritte mit Earth Engine und Colab unternehmen:
Wenn Sie Colab nicht verwenden, können Sie die Earth Engine-Clientbibliothek manuell mit conda (empfohlen) oder pip auf Ihrem System installieren und aktualisieren:
Paketimport
Das Python-API-Paket heißt ee
. Er muss für jede neue Python-Sitzung und jedes neue Python-Script importiert und initialisiert werden:
import ee
Authentifizierung und Initialisierung
Bevor Sie die Earth Engine Python-Clientbibliothek verwenden können, müssen Sie sich authentifizieren und die resultierenden Anmeldedaten verwenden, um den Python-Client zu initialisieren. Ausführen:
ee.Authenticate()
Dadurch wird der beste Authentifizierungsmodus für Ihre Umgebung ausgewählt und Sie werden aufgefordert, den Zugriff für Ihre Scripts zu bestätigen. Zur Initialisierung müssen Sie ein Projekt angeben, dessen Inhaber Sie sind oder für das Sie Berechtigungen haben. Dieses Projekt wird für die Ausführung aller Earth Engine-Vorgänge verwendet:
ee.Initialize(project='my-project')
Weitere Informationen zur Fehlerbehebung und zu Authentifizierungsmodi und Cloud-Projekten finden Sie im Authentifizierungsleitfaden.
Hallo Welt!
Hier ist ein kurzes Script, mit dem Sie testen können, ob Sie alle Voraussetzungen für die Arbeit mit der Earth Engine erfüllen.
import ee ee.Authenticate() ee.Initialize(project='my-project') print(ee.String('Hello from the Earth Engine servers!').getInfo())
Syntax
Sowohl die Python- als auch die JavaScript-API greifen auf dieselben serverseitigen Funktionen zu. Clientseitige Ausdrücke (Weitere Informationen zu Client und Server) können jedoch aufgrund von Unterschieden in der Sprachsyntax variieren. In der folgenden Tabelle sind die häufigsten Syntaxunterschiede zwischen der Python API und der JavaScript API aufgeführt.
Attribut | JavaScript | Python |
---|---|---|
Funktionsdefinition |
function myFun(arg) { return arg; } var myFun = function(arg) { return arg; }; |
def my_fun(arg): return arg |
Zuordnung anonymer Funktionen |
var foo = col.map(function(arg) { return arg; }); |
foo = col.map(lambda arg: arg) |
Variablendefinition |
var myVar = 'var'; |
my_var = 'var' |
Logische Operatoren |
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) |
Mehrzeilige Methodenkette |
var foo = my.really() .reallyLong() .methodChain(); |
foo = (my.really() .reallyLong() .methodChain()) |
Wörterbuchschlüssel |
var dic = {'key': value}; var dic = {key: value}; |
dic = {'key': value} |
Zugriff auf Wörterbuchobjekte |
var value = dic.key; var value = dic['key']; |
value = dic['key'] |
Definition von Funktionsargumenten |
// 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) |
Boolesch |
var t = true; var f = false; |
t = True f = False |
Nullwerte |
var na = null; |
na = None |
Kommentar |
// |
# |
Datumsobjekte
Mit dem Modul
datetime
können Sie clientseitige Datumsobjekte definieren und bearbeiten. Fügen Sie das Modul in Ihr Script ein:
import datetime
ee.Date
in ein clientseitiges Datum konvertieren:
ee_date = ee.Date('2020-01-01') py_date = datetime.datetime.utcfromtimestamp(ee_date.getInfo()['value']/1000.0)
Clientseitiges Datum in ee.Date:
konvertieren
py_date = datetime.datetime.utcnow() ee_date = ee.Date(py_date)
Daten exportieren
Für den Export von Daten mit der Python API ist das Modul ee.batch
erforderlich, das eine Schnittstelle zu den Funktionen Export
bietet. Übergeben Sie Parameterargumente wie bei der JavaScript API, wobei Sie die Unterschiede beachten, die in der Syntaxtabelle oben aufgeführt sind. Exportaufgaben müssen gestartet werden, indem die Methode start()
für eine definierte Aufgabe aufgerufen wird. Rufen Sie den Status einer Aufgabe ab, indem Sie die Methode status()
darauf aufrufen. Das folgende Beispiel zeigt den Export eines ee.Image
-Objekts.
So erstellen Sie eine Exportaufgabe:
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')
So starten Sie eine Exportaufgabe:
task.start()
So prüfen Sie den Status der Exportaufgabe:
task.status()
Das Ergebnis von task.status()
ist ein Wörterbuch mit Informationen wie dem Status der Aufgabe und ihrer 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' }
Sie können den Fortschritt der Aufgabe über das Feld state
verfolgen. Auf der Seite „Verarbeitungsumgebungen“ finden Sie eine
Liste der state
-Werte und weitere Informationen zum Aufgabenlebenszyklus.
Objekte drucken
Wenn Sie ein Earth Engine-Objekt in Python drucken, wird die serialisierte Anfrage für das Objekt ausgegeben, nicht das Objekt selbst. Weitere Informationen finden Sie auf der Seite Client und Server.
Rufen Sie getInfo()
für Earth Engine-Objekte auf, um das gewünschte Objekt vom Server an den Client zu senden:
# 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())
getInfo()
ist ein synchroner Vorgang. Das bedeutet, dass die Ausführung von Ausdrücken nach dem getInfo()
-Aufruf blockiert wird, bis das Ergebnis an den Client zurückgegeben wird.
Außerdem können Anfragen mit vielen Daten oder teuren Berechnungen zu einem Fehler und/oder zu einem Absturz führen. Im Allgemeinen empfiehlt es sich, die Ergebnisse zu exportieren und sie nach Abschluss der Analyse in ein neues Script zur weiteren Analyse zu importieren.
UI-Objekte
Das Earth Engine-ui
-Modul ist nur über den Code-Editor der JavaScript API verfügbar. Bibliotheken von Drittanbietern für UI-Elemente in Python verwenden Bibliotheken wie geemap, Folium und ipyleaflet ermöglichen die interaktive Kartendarstellung. Diagramme können unter anderem mit Matplotlib, Altair oder seaborn erstellt werden. Beispiele für die Verwendung von geemap und Matplotlib finden Sie im
Notebook zur Einrichtung von Earth Engine in Colab.
Python im Entwicklerhandbuch
Python-Code ist im gesamten Earth Engine-Entwicklerhandbuch enthalten. Falls verfügbar, können Sie Codebeispiele aufrufen, indem Sie oben in den Codeblöcken auf den Tab „Colab (Python)“ klicken.
Anleitungsseiten können auch Schaltflächen oben enthalten, mit denen die Seite als Colab-Notebook ausgeführt oder auf GitHub angezeigt werden kann. Die Python-Codebeispiele sind für die Ausführung mit Google Colab vorgesehen. Die interaktive Karten- und Objektsuche wird von der geemap
-Bibliothek verwaltet. Sowohl die Earth Engine Python-Clientbibliothek als auch geemap
sind in Colab vorinstalliert.
Earth Engine-Einrichtung
Zum Ausführen von Python-Code müssen Sie die Earth Engine-Bibliothek importieren, authentifizieren und initialisieren. Die folgenden Befehle werden in den Beispielen verwendet. Alternativen finden Sie auf der Seite Authentifizierung und Initialisierung.
import ee ee.Authenticate() ee.Initialize(project='my-project')
Interaktive explorative Datenanalyse mit geemap
Die geemap
-Bibliothek wird zum Darstellen von Kartenkacheln und zum Drucken detaillierter Darstellungen von Earth Engine-Objekten verwendet.
Die Bibliothek hängt für diese Funktionen jeweils von ipyleaflet
und eerepr
ab.
Die geemap
-Bibliothek und ihre Abhängigkeiten sind in Google Colab vorinstalliert. Sie müssen sie in jede Sitzung importieren.
import geemap.core as geemap
Geografische Earth Engine-Datenklassen wie ee.Image
und ee.FeatureCollection
können mit dem geemap.Map
-Objekt angezeigt werden.
Definieren Sie zuerst das Kartenobjekt. Fügen Sie dann Ebenen hinzu oder ändern Sie den Darstellungsbereich.
# 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)