Google Earth Engine: Javascript-API vs. Python-API

Sep 22 2020

Google Earth Engine wird anscheinend am häufigsten über die Python-API oder die Javascript-API im Browser verwendet. Beim Versuch, mich für einen zu entscheiden, bin ich auf diesen Vergleich aus einer Präsentation von Tyler Erickson gestoßen :

Während einige Unterschiede klar sind (z. B. viel mehr Plotoptionen in Python), sind andere für mich abstrakter.


Fragen:

  1. Was sind in der Praxis die Vorteile einer "Reihe von Aufrufen an Earth Engine" in der Python-API?
  2. Gibt es andere Unterschiede, die hier nicht aufgeführt sind, möglicherweise in Bezug auf die Effizienz beim Exportieren von Daten oder die Geschwindigkeit der Berechnungen?

Antworten

3 TylerErickson Sep 22 2020 at 16:46

Beachten Sie für zusätzlichen Kontext auf der Folie, auf die in der Frage verwiesen wird, dass der Vergleich mit dem Earth Engine- Code-Editor (einer Web-IDE für die Entwicklung mit der Earth Engine-JavaScript-API) mit der Earth Engine-Python-API verglichen wird . Die Folie stammt aus einer Präsentation, die vor über 3 Jahren erstellt wurde. Sowohl die JavaScript- als auch die Python- API wurden geändert, und der Code-Editor verfügt über zusätzliche Funktionen, z. B. die Möglichkeit, Code mithilfe von Skriptmodulen zwischen Code-Editor-Skripten auszutauschen .

Zu Frage 1:

Zur Verdeutlichung können eine Reihe von Anforderungen entweder über die JavaScript- oder Python- Clientbibliotheken sowie über den Code-Editor gestellt werden. Wenn Sie jedoch direkt mit der Python- (oder JavaScript-) Clientbibliothek arbeiten, erhalten Sie mehr Flexibilität hinsichtlich der Möglichkeiten, die Sie mit den Ergebnissen nutzen können. Beispielsweise können Sie Earth Engine-Aufrufe mit Anforderungen an andere Dienste verschachteln und Bibliotheken verwenden, die derzeit von der Code Editor-Entwicklungsumgebung nicht unterstützt werden.

Die Möglichkeit, eine Reihe von Anrufen auszuführen, erleichtert die folgenden Beispiele:

  • Sensitivitätsanalysen. Sie können Daten erhalten, während Sie einen (oder mehrere) Parameter variieren, sodass Sie eine Sensitivitätsanalyse durchführen können . Wie wirkt sich der sich ändernde scaleParameter beispielsweise auf die Ergebnisse von ee.Image.reduceRegion aus ?
  • Reihe von Ausgängen. Sie können eine Reihe von Ausgabebildern, Karten oder Tabellen erstellen. Sie können beispielsweise für jede Wasserscheide in einem Land ein wolkenfreies Bild erstellen.
  • Jupyter-Notizbücher. Sie können Workflows / Tutorials entwickeln, die Zwischenergebnisse anzeigen. Siehe beispielsweise das Jupyter / Colab-Notizbuch, das in diesem Lernprogramm verlinkt ist .

Zu Frage 2:

  • Es gibt sicherlich andere Unterschiede, die über die auf der Folie angezeigte einfache Liste hinausgehen, wie z. B. einige Unterschiede in der Syntax . Ein weiterer Grund ist, dass Entwickler mit dem Earth Engine-Code-Editor problemlos gehostete Anwendungen ( Earth Engine-Apps ) veröffentlichen können, für deren Verwendung mit der Python-API erheblich mehr Arbeit erforderlich wäre.
  • Sowohl die JavaScript- als auch die Python-API verwenden eine REST-API auf niedrigerer Ebene für Berechnungen, die auf den Earth Engine-Backend-Servern durchgeführt werden. Daher bietet die Verwendung einer übereinander keine Rechen- oder Exportleistungsvorteile.