Google Earth Engine: Javascript API vs. Python API

Sep 22 2020

Wydaje się, że Google Earth Engine jest najczęściej używany za pośrednictwem interfejsu API języka Python lub interfejsu API JavaScript w przeglądarce. Próbując zdecydować się na jedną, natknąłem się na takie porównanie z prezentacji Tylera Ericksona :

Chociaż niektóre różnice są wyraźne (np. O wiele więcej opcji kreślenia w Pythonie), inne są dla mnie bardziej abstrakcyjne.


Pytania:

  1. Z praktycznego punktu widzenia, jakie są zalety możliwości wykonania „serii wywołań do Earth Engine” w interfejsie API języka Python?
  2. Czy istnieją inne różnice, których tutaj nie wymieniono, być może w odniesieniu do wydajności podczas eksportowania danych lub szybkości obliczeń?

Odpowiedzi

3 TylerErickson Sep 22 2020 at 16:46

Aby uzyskać dodatkowy kontekst na slajdzie, do którego odnosi się pytanie, zwróć uwagę, że jest ono porównane przy użyciu Earth Engine Code Editor (internetowego środowiska IDE do programowania z wykorzystaniem interfejsu API języka JavaScript Earth Engine) z wykorzystaniem interfejsu Earth Engine Python API. Slajd pochodzi z prezentacji wykonanej ponad 3 lata temu, a zarówno API JavaScript, jak i Python uległy zmianie, a Edytor kodu zyskał dodatkowe funkcje, takie jak możliwość udostępniania kodu między skryptami Edytora kodu przy użyciu modułów skryptów .

Pytanie nr 1:

Aby wyjaśnić, można wykonać serię żądań przy użyciu bibliotek klienta JavaScript lub Python , a także z poziomu edytora kodu. Jednak praca bezpośrednio z biblioteką klienta języka Python (lub JavaScript) zapewnia większą elastyczność pod względem tego, co można zrobić z wynikami. Na przykład można przeplatać wywołania Earth Engine żądaniami do innych usług i korzystać z bibliotek, które nie są obecnie obsługiwane przez środowisko programistyczne Edytora kodu.

Możliwość wykonania serii połączeń ułatwia następujące przykłady:

  • Analizy wrażliwości. Możesz uzyskać dane, zmieniając jeden (lub więcej) parametrów, co pozwala na wykonanie analizy wrażliwości . Na przykład, jak zmieniający się scaleparametr wpływa na wyniki uzyskane z ee.Image.reduceRegion ?
  • Seria wyjść. Możesz utworzyć serię wyjściowych obrazów, map lub tabel. Na przykład możesz wygenerować obraz bez chmury dla każdego zlewni w kraju.
  • Notebooki Jupyter. Możesz opracować przepływy pracy / samouczki, które wyświetlają pośrednie wyniki. Na przykład zobacz notatnik Jupyter / Colab, do którego prowadzi łącze z tego samouczka .

W przypadku pytania nr 2:

  • Z pewnością istnieją inne różnice poza prostą listą pokazaną na slajdzie, na przykład pewne różnice w składni . Innym jest to, że Earth Engine Code Editor umożliwia programistom łatwe publikowanie hostowanych aplikacji ( Earth Engine Apps ), co wymagałoby znacznie więcej pracy, aby zrobić to samo za pomocą interfejsu API Pythona.
  • Zarówno interfejsy API JavaScript, jak i Python wykorzystują interfejs API REST niższego poziomu do obliczeń wykonywanych na serwerach zaplecza Earth Engine, więc używanie jednego nad drugim nie przynosi korzyści w zakresie wydajności obliczeniowej ani eksportowej.