Aussetzung der Ausführung

Im Dokument Client und Server im Vergleich wird beschrieben, wie Objekte, auf die in Ihrem Script verwiesen wird, entweder client- oder serverseitig sein können. Das vollständige Script enthält nicht nur die Objekte, die Sie verwenden möchten, sondern auch eine Reihe von Anweisungen, die Earth Engine angeben, was mit ihnen zu tun ist. In diesem Dokument wird beschrieben, wie diese Anweisungen zur Verarbeitung an Google gesendet und die Ergebnisse zur Anzeige an den Client zurückgesendet werden.

Wenn Sie ein Script in Earth Engine schreiben (entweder JavaScript oder Python), wird dieser Code NICHT direkt auf den Earth Engine-Servern von Google ausgeführt. Stattdessen codiert die Clientbibliothek das Script in eine Reihe von JSON-Objekten, sendet die Objekte an Google und wartet auf eine Antwort. Jedes Objekt stellt eine Reihe von Vorgängen dar, die für eine bestimmte Ausgabe erforderlich sind, z. B. ein Bild, das im Client angezeigt werden soll. Betrachten wir den folgenden Code:

Code-Editor (JavaScript)

var image = ee.Image('CGIAR/SRTM90_V4');
var operation = image.add(10);
print(operation.toString());
print(operation);

Python einrichten

Auf der Seite Python-Umgebung finden Sie Informationen zur Python API und zur Verwendung von geemap für die interaktive Entwicklung.

import ee
import geemap.core as geemap

Colab (Python)

image = ee.Image('CGIAR/SRTM90_V4')
operation = image.add(10)
print(operation)
print(operation.getInfo())

Die erste Ausgabeanweisung gibt die JSON-Struktur aus, mit der die Clientbibliothek dieses Bild dem Server bei Google beschreibt:

ee.Image({
  "type": "Invocation",
  "arguments": {
    "image1": {
      "type": "Invocation",
      "arguments": {
        "id": "CGIAR/SRTM90_V4"
      },
      "functionName": "Image.load"
    },
    "image2": {
      "type": "Invocation",
      "arguments": {
        "value": 10
      },
      "functionName": "Image.constant"
    }
  },
  "functionName": "Image.add"
})
    

Die zweite Print-Anweisung sendet die Anfrage an Google und gibt die POST-Antwort der Google-Server aus. Wenn Sie die Antwort in voller JSON-Glorie sehen möchten, klicken Sie rechts in der Konsole neben dem gedruckten Objekt auf den Link JSON:

{
  "type": "Image",
  "bands": [
    {
      "id": "elevation",
      "data_type": {
        "type": "PixelType",
        "precision": "int",
        "min": -32758,
        "max": 32777
      },
      "crs": "EPSG:4326",
      "crs_transform": [
        0.0008333333535119891,
        0,
        -180,
        0,
        -0.0008333333535119891,
        60
      ]
    }
  ]
}
    

Es wird nichts an Google gesendet, bis eine entsprechende Anfrage vorliegt. In diesem Beispiel wird durch das Drucken des Ergebnisses eines getInfo()-Aufrufs auf ein Serverobjekt eine Anfrage ausgelöst. Es erfolgt keine Verarbeitung auf dem Server, bis dieses Ergebnis ausdrücklich angefordert wird. Hinweis: print() im JavaScript-Code-Editor ist eine spezielle clientseitige Funktion, die einen asynchronen getInfo()-Aufruf umschließt. In Python wird sie direkt aufgerufen.

Ein weiteres Beispiel für eine Anfrage ist die Anzeige im Code-Editor oder im geemap-Kartenelement. Wenn diese Anfrage an Google gesendet wird, werden nur die Kacheln zurückgegeben, die zum Anzeigen des Ergebnisses im Code-Editor oder im geemap-Kartenelement erforderlich sind. Insbesondere die Position der Karte und die Zoomstufe bestimmen, welche Daten verarbeitet und in Bilder umgewandelt werden, die auf der Karte angezeigt werden können. Wenn Sie schwenken oder zoomen, werden andere Kacheln verzögert berechnet. Dieses On-Demand-System ermöglicht eine Parallelisierung und effiziente Verarbeitung. Das bedeutet aber auch, dass das auf der Karte angezeigte Bild je nach Zoomstufe und Standort der Kartengrenzen aus unterschiedlichen Eingaben erstellt wird. Weitere Informationen dazu, wie Eingaben für eine Berechnung aus der Anfrage ermittelt werden, finden Sie im Dokument Skalierung.