Google Earth Engine: Javascript-API vs. Python-API
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:
- Was sind in der Praxis die Vorteile einer "Reihe von Aufrufen an Earth Engine" in der Python-API?
- 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
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.