Python-Installation

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:


Installieren Sie die API mit pip in einer beliebigen Python-Umgebung. Über ein Terminal oder eine Eingabeaufforderung:

pip install earthengine-api

Nach der Installation können Sie die Earth Engine API wie hier beschrieben importieren, authentifizieren und initialisieren.

Aktualisieren Sie die API:

pip install earthengine-api --upgrade

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.

Gängige Syntaxunterschiede zwischen JavaScript und Python
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())
Hinweis: 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)