Hinweis:Die REST API enthält neue und erweiterte Funktionen, die möglicherweise nicht für alle Nutzer geeignet sind. Wenn Sie Earth Engine noch nicht kennen, empfehlen wir Ihnen, mit dem JavaScript-Leitfaden zu beginnen.
Im Schnellstart zur Earth Engine REST API wird gezeigt, wie Sie auf Pixelblöcke aus einem Earth Engine-Asset zugreifen. Im Beispiel für die Berechnung von Pixeln wird gezeigt, wie eine Berechnung auf die Pixel angewendet wird, bevor das Ergebnis abgerufen wird. In diesem Beispiel wird gezeigt, wie Sie den Mittelwert der Pixel in jedem Bild eines ImageCollection
in jedem Feature eines FeatureCollection
abrufen. Konkret handelt es sich um eine POST
-Anfrage an den Endpunkt computeFeatures
.
Hinweis
Folgen Sie dieser Anleitung, um:
- Earth Engine beantragen
- Google Cloud-Projekt erstellen
- Earth Engine API für das Projekt aktivieren
- Dienstkonto erstellen
- Dienstkonto auf Projektebene die Berechtigung zum Ausführen von Earth Engine-Berechnungen erteilen
Hinweis: Für diese Anleitung benötigen Sie ein Dienstkonto, das für den Earth Engine-Zugriff registriert ist. Folgen Sie dieser Anleitung, um ein Dienstkonto zu registrieren, bevor Sie fortfahren.
Bei Google Cloud authentifizieren
Zuerst müssen Sie sich anmelden, damit Sie authentifizierte Anfragen an Google Cloud stellen können. Sie legen das Projekt gleichzeitig fest. Folgen Sie der Anleitung in der Ausgabe, um die Anmeldung abzuschließen.
# INSERT YOUR PROJECT HERE
PROJECT = 'your-project'
!gcloud auth login --project {PROJECT}
Private Schlüsseldatei für Ihr Dienstkonto abrufen
Sie sollten bereits ein Dienstkonto registriert haben, um Earth Engine nutzen zu können. Falls nicht, folgen Sie dieser Anleitung. Kopieren Sie die E-Mail-Adresse Ihres Dienstkontos in die folgende Zelle. Das Dienstkonto muss bereits für die Verwendung von Earth Engine registriert sein. In der folgenden Zelle wird die gsutil
-Befehlszeile verwendet, um eine Schlüsseldatei für das Dienstkonto zu generieren. Die Schlüsseldatei wird auf der Notebook-VM erstellt.
# INSERT YOUR SERVICE ACCOUNT HERE
SERVICE_ACCOUNT='your-service-account@your-project.iam.gserviceaccount.com'
KEY = 'key.json'
!gcloud iam service-accounts keys create {KEY} --iam-account {SERVICE_ACCOUNT}
AuthorizedSession
starten und Anmeldedaten testen
Testen Sie den privaten Schlüssel, indem Sie damit Anmeldedaten abrufen. Verwenden Sie die Anmeldedaten, um eine autorisierte Sitzung zum Senden von HTTP-Anfragen zu erstellen. Senden Sie über die Sitzung eine GET
-Anfrage, um zu prüfen, ob die Anmeldedaten funktionieren.
from google.auth.transport.requests import AuthorizedSession
from google.oauth2 import service_account
credentials = service_account.Credentials.from_service_account_file(KEY)
scoped_credentials = credentials.with_scopes(
['https://www.googleapis.com/auth/cloud-platform'])
session = AuthorizedSession(scoped_credentials)
url = 'https://earthengine.googleapis.com/v1beta/projects/earthengine-public/assets/LANDSAT'
response = session.get(url)
from pprint import pprint
import json
pprint(json.loads(response.content))
Berechnung serialisieren
Bevor Sie eine Anfrage zum Berechnen von etwas senden können, muss die Berechnung in das Earth Engine-Ausdrucksdiagrammformat gebracht werden. Im Folgenden wird gezeigt, wie Sie den Ausdrucksgraphen abrufen.
Bei Earth Engine authentifizieren
Rufen Sie die auf Earth Engine beschränkten Anmeldedaten vom Dienstkonto ab. Verwenden Sie sie, um Earth Engine zu initialisieren.
import ee
# Get some new credentials since the other ones are cloud scope.
ee_creds = ee.ServiceAccountCredentials(SERVICE_ACCOUNT, KEY)
ee.Initialize(ee_creds)
Berechnung definieren
Mit der Client API können Sie einen einfachen Rechenvorgang prototypisieren. Das Ergebnis der Berechnung ist ein FeatureCollection
.
Um zu prüfen, ob die Berechnung ohne Fehler ausgeführt werden kann, rufen Sie einen Wert aus dem ersten Feature
ab (der durchschnittliche NDVI im Polygon).
# A collection of polygons.
states = ee.FeatureCollection('TIGER/2018/States')
maine = states.filter(ee.Filter.eq('NAME', 'Maine'))
# Imagery: NDVI vegetation index from MODIS.
band = 'NDVI'
images = ee.ImageCollection('MODIS/006/MOD13Q1').select(band)
image = images.first()
computation = image.reduceRegions(
collection=maine,
reducer=ee.Reducer.mean().setOutputs([band]),
scale=image.projection().nominalScale()
)
# Print the value to test.
print(computation.first().get(band).getInfo())
Ausdrucksbaum serialisieren
Dadurch wird ein Objekt erstellt, das den Earth Engine-Ausdrucksgraphen darstellt (genauer gesagt ein Expression
). Im Allgemeinen sollten Sie diese mit einer der Client-APIs erstellen.
# Serialize the computation.
serialized = ee.serializer.encode(computation)
Anfrage senden
Stellen Sie eine POST
-Anfrage an den Endpunkt computeFeatures
. Die Anfrage enthält Expression
, die serialisierte Berechnung.
import json
url = 'https://earthengine.googleapis.com/v1beta/projects/{}/table:computeFeatures'
response = session.post(
url = url.format(PROJECT),
data = json.dumps({'expression': serialized})
)
import json
pprint(json.loads(response.content))
Die Antwort enthält das resultierende FeatureCollection
als GeoJSON, das von anderen Apps oder Prozessen verwendet werden kann.