Edytor kodu Earth Engine

Edytor kodu Earth Engine (EE) na stronie code.earthengine.google.com to internetowe środowisko IDE do obsługi interfejsu Earth Engine JavaScript API. Funkcje Edytora kodu zostały zaprojektowane tak, aby przyspieszyć i ułatwić tworzenie złożonych procesów geoprzestrzennych. Edytor kodu zawiera te elementy (Rysunek 1):

  • Edytor kodu JavaScript
  • Wyświetlanie mapy do wizualizacji zbiorów danych geoprzestrzennych
  • Dokumentacja referencyjna interfejsu API (karta Dokumenty)
  • Menedżer skryptów oparty na Git (karta Skrypty)
  • Dane wyjściowe konsoli (karta „Konsola”)
  • Menedżer zadań (karta Zadania) do obsługi długotrwałych zapytań
  • Interaktywne zapytanie o mapę (karta Inspektor)
  • wyszukiwanie w archiwum danych lub zapisanych skryptach;
  • Narzędzia do rysowania geometrii

Elementy edytora kodu

Rysunek 1. Diagram elementów edytora kodu Earth Engine na stronie code.earthengine.google.com

Edytor kodu zawiera wiele funkcji, które ułatwiają korzystanie z interfejsu Earth Engine API. Przykładowe skrypty możesz wyświetlać lub zapisywać na karcie Skrypty. Wysyłaj zapytania dotyczące obiektów umieszczonych na mapie za pomocą karty Inspekcja. Wyświetlanie i przedstawianie wyników liczbowych w postaci wykresów za pomocą interfejsu Google Visualization API. Udostępnij unikalny adres URL skryptu współpracownikom i znajomym, korzystając z przycisku Uzyskaj link. Skrypty tworzone w Edytorze kodu są wysyłane do Google w celu przetworzenia, a wygenerowane przez nie kafelki mapy lub wiadomości są wysyłane z powrotem na kartę Mapa lub Konsola. Do uruchomienia edytora kodu potrzebujesz przeglądarki internetowej (najlepiej Google Chrome) i połączenia z internetem. W następnych sekcjach opisujemy elementy edytora kodu Earth Engine.

Edytor JavaScriptu

Edytor JavaScript:

  • Formatowanie i wyróżnianie kodu podczas pisania
  • Podkreśl kod z problemami, oferuj poprawki i inne wskazówki dotyczące prawidłowej składni
  • Autouzupełnianie par cudzysłowów, nawiasów i nawiasów klamrowych
  • wyświetlać sugestie uzupełniania kodu w przypadku funkcji Earth Engine;

Nad edytorem kodu znajdują się przyciski uruchamiania skryptu, zapisywania skryptu, resetowania mapy wyjściowej i konsoli oraz uzyskiwania linku do skryptu. Po naciśnięciu przycisku Uzyskaj link na pasku adresu przeglądarki pojawi się unikalny link. Ten link reprezentuje kod w edytorze w momencie naciśnięcia przycisku.

Dokumentacja interfejsu API (karta Dokumenty)

Po lewej stronie edytora kodu znajduje się karta Dokumenty, która zawiera kompletną dokumentację interfejsu JavaScript API. Dokumentację można wyszukiwać i przeglądać na karcie Dokumenty.

Menedżer skryptów (karta Skrypty)

Karta Skrypty znajduje się obok Dokumentów interfejsu API w panelu po lewej stronie edytora kodu. Menedżer skryptów przechowuje skrypty prywatne, udostępnione i przykładowe w repozytoriach Git hostowanych przez Google. Repozytoria są uporządkowane według poziomu dostępu, a Twoje prywatne skrypty są przechowywane w Twoim repozytorium w folderze Właściciel: users/username/default. Ty (i tylko Ty) masz dostęp do repozytoriów w folderze Właściciel, chyba że udostępnisz je komuś innemu. Repozytoria w folderze Writer to repozytoria, do których właściciel przyznał Ci uprawnienia do zapisu. W folderze Writer możesz dodawać nowe skrypty, modyfikować istniejące skrypty oraz zmieniać uprawnienia do repozytoriów (nie możesz usunąć właściciela). Repozytoria w folderze Czytelnik to te, do których właściciel przyznał Ci dostęp tylko do odczytu. Folder Przykłady to specjalne repozytorium zarządzane przez Google, które zawiera przykłady kodu. Folder Archiwum zawiera starsze repozytoria, do których masz dostęp, ale które nie zostały jeszcze przeniesione przez ich właściciela ze starszej wersji Menedżera skryptów. Przeszukaj skrypty, korzystając z paska filtrów u góry karty Skrypty.

Menedżer skryptów

Rysunek 2. Menedżer skryptów

Kliknij przycisk , aby utworzyć nowe repozytorium w folderze Właściciel lub utworzyć foldery i pliki w repozytorium. Nazwy skryptów możesz zmieniać, klikając ikonę , a aby je usunąć, kliknij ikonę . Możesz przenosić skrypty i porządkować je w folderach za pomocą funkcji przeciągania i upuszczania (Rysunek 2). Jeśli przeciągniesz skrypt do innego repozytorium, zostanie on skopiowany.

Wszystkie skrypty i repozytoria zachowują pełną historię wersji. Kliknij ikonę obok skryptu lub repozytorium, aby porównać go z wersją starszą lub przywrócić do niej. Aby usunąć repozytorium, kliknij ikonę . Aby skonfigurować dostęp do repozytorium, kliknij ikonę obok jego nazwy. Pamiętaj, że jeśli udostępniasz repozytorium, osoba, której je udostępniasz, musi zaakceptować repozytorium, klikając link wyświetlony w oknie ustawień. Poprzednio zaakceptowane repozytoria można ukryć, klikając ikonę  obok nazwy repozytorium w Menedżerze skryptów.

Do repozytoriów można uzyskać dostęp za pomocą Git, dzięki czemu można zarządzać skryptami poza Edytorem kodu lub zsynchronizować je z zewnętrznym systemem, takim jak GitHub. (więcej informacji o Git znajdziesz w tym samouczku). Kliknij ikonę  obok nazwy repozytorium, aby wyświetlić instrukcje klonowania repozytorium. Pamiętaj, że możesz przeglądać repozytoria, do których masz dostęp, na stronie earthengine.googlesource.com. W przypadku niektórych operacji Git może być konieczne utworzenie danych logowania. Aby to zrobić, kliknij link „Generuj hasło” u góry strony earthengine.googlesource.com.

Moduły skryptów

Warto pisać modułowy kod, który można wielokrotnie wykorzystywać w różnych skryptach bez konieczności częstego kopiowania i wklejania. Aby umożliwić tworzenie modułowe, Earth Engine umożliwia udostępnianie kodu między skryptami. Załóżmy, że masz napisaną funkcję, która wykonuje przydatny zestaw operacji. Zamiast kopiować kod funkcji do nowego skryptu, łatwiej jest wczytać funkcję bezpośrednio w nowym skrypcie. Aby udostępnić funkcję lub obiekt innym skryptom, dodaj je do specjalnego obiektu o nazwie exports. Aby użyć kodu w innym skrypcie, użyj funkcji require, aby załadować dane wyeksportowane z innego skryptu. Załóżmy na przykład, że definiujesz w pliku o nazwie FooModule.js znajdującym się w folderze o nazwie Modules następujący moduł:

/**
 * The Foo module is a demonstration of script modules.
 * It contains a foo function that returns a greeting string.
 * It also contains a bar object representing the current date.
 * @module Modules/FooModule
 */

/**
 * Returns a greeting string.
 * @param {ee.String} arg The name to which the greeting should be addressed
 * @return {ee.String} The complete greeting.
 */
exports.foo = function(arg) {
  return 'Hello, ' + arg + '!  And a good day to you!';
};

/**
 * An ee.Date object containing the time at which the object was created.
 */
exports.bar = ee.Date(Date.now());

Zwróć uwagę na użycie słowa kluczowego exports w postaci exports.objectToExport. Możesz użyć tego modułu w innym skrypcie, używając funkcji require. Na przykład:

var Foo = require('users/username/default:Modules/FooModule.js');

print(Foo.doc);

print(Foo.foo('world'));

print('Time now:', Foo.bar);

Funkcja require oczekuje ciągu, który opisuje ścieżkę bezwzględną do lokalizacji modułu. Argument require() ma postać 'pathToRepository:pathToModuleScript'. Możesz wczytywać tylko moduły z repozytoriów, których jesteś właścicielem lub do których masz dostęp tylko do odczytu. Jeśli chcesz, aby inni mogli korzystać z Twojego modułu, repozytorium musi zostać udostępnione innym użytkownikom, którym chcesz przyznać dostęp. Możesz udokumentować swój moduł, aby pomóc innym zrozumieć, jak go używać. Zalecamy użycie stylu JSDoctagiem @module.

Parametru adresu URL ?scriptPath={repo}:{script} możesz użyć, aby udostępnić odwołanie do pliku w repozytorium, np. https://code.earthengine.google.com/?scriptPath=users/username/utils:utils. Po otwarciu adresu URL plik, do którego się odwołuje, i jego repozytorium zostaną dodane do katalogu Reader lub Writer na karcie Skrypty, w zależności od poziomu uprawnień do udostępnionego repozytorium.

Menedżer zasobów (karta Zasoby)

Menedżer komponentów znajduje się w panelu po lewej stronie na karcie Zasoby. Aby przesyłać własne komponenty z obrazem do Earth Engine i nimi zarządzać, użyj menedżera komponentów (patrz rys. 3). Więcej informacji znajdziesz na stronie Menedżera zasobów.

Menedżer zasobów

Rysunek 3. Menedżer komponentów.

Skrypty edytora kodu można udostępniać za pomocą zakodowanego adresu URL. W następnych sekcjach opisano różne sposoby generowania adresu URL skryptu, dostępne opcje i metody zarządzania adresami URL skryptów.

Przycisk „Uzyskaj link” u góry Edytora kodu (ryc. 4) umożliwia generowanie adresów URL skryptów i ustawianie opcji ich działania. Poniżej znajdziesz różnice między adresami URL migawek i zapisanych skryptów.

Jej

Rysunek 4. Przycisk „Uzyskaj link”.

Kod w Edytorze można udostępniać za pomocą zakodowanego adresu URL migawki, który jest tworzony po kliknięciu przycisku „Uzyskaj link” u góry Edytora kodu. Gdy adres URL odwiedzi osoba z kontem Earth Engine, przeglądarka przejdzie do Edytora kodu i odtworzy środowisko w takim stanie, w jakim było w momencie utworzenia linku, w tym kod, importy, warstwy mapy i pozycję mapy. Kliknięcie przycisku „Pobierz link” spowoduje automatyczne skopiowanie linku do skryptu do schowka. Dodatkowo pojawi się okno z opcjami umożliwiającymi kontrolowanie wykonania udostępnionego skryptu oraz przyciskami do kopiowania i otwierania wygenerowanego linku. Opcje kontroli obejmują zapobieganie automatycznemu uruchamianiu skryptu i ukrywanie panelu kodu, gdy ktoś otworzy udostępniony link. Przeciągane okno dialogowe można zamknąć, naciskając klawisz „Esc” lub klikając w inne miejsce na stronie.

Zapisane skrypty mają opcję udostępniania linku, który zawsze wczytuje najnowszą zapisaną wersję. Jest on dostępny tylko dla Ciebie i innych osób, które mają dostęp do repozytorium zawierającego skrypt. Aby skorzystać z tej funkcji, załaduj zapisany skrypt na karcie Menedżer skryptów, kliknij strzałkę w dół po prawej stronie przycisku „Uzyskaj link” i wybierz „Kopiuj ścieżkę skryptu”. Pojawi się okno z adresem URL skryptu do udostępnienia. Pamiętaj, że adres URL skryptu został też ustawiony na pasku adresu przeglądarki. Więcej informacji o udostępnianiu repozytorium innym osobom znajdziesz w sekcji menedżera skryptów.

W menu po prawej stronie przycisku „Uzyskaj link” znajduje się opcja „Zarządzaj linkami”. Po kliknięciu tej opcji otwiera się nowa karta przeglądarki z interfejsem, za pomocą którego możesz przywołać, usunąć i pobrać wcześniej wygenerowane linki skryptu. Po wybraniu skryptu i kliknięciu przycisku pobierania do systemu zostanie pobrany skompresowany folder („code_editor_links.zip”) zawierający plik .txt z reprezentacją każdego wybranego skryptu.

Moduł ui.url umożliwia programową manipulację identyfikatorem fragmentu adresu URL skryptu za pomocą metod getset. Oznacza to, że skrypty w Edytorze kodu i aplikacje Earth Engine mogą odczytywać i przechowywać wartości w adresie URL strony. Zwróć uwagę na koniec tych 2 adresów URL. Pierwszy z nich ustawia zmienną debug na wartość false, a drugi – na true. Otwórz oba linki i zauważ, że w pierwszym pole debugowania w konsoli jest puste, a w drugim – zaznaczone. Zmiana ta wpływa na działanie obu skryptów.

https://code.earthengine.google.com/5695887aad76979388a723a85339fbf2#debug=false;
https://code.earthengine.google.com/5695887aad76979388a723a85339fbf2#debug=true;

Za pomocą tej funkcji możesz ustawić powiększenie i wyśrodkowanie mapy, a także inne zachowania, które warto dostosować podczas wysyłania linków do konkretnych osób lub grup.

Narzędzie wyszukiwania

Aby znaleźć zbiory danych, których możesz używać w swoich skryptach, możesz użyć narzędzia do wyszukiwania archiwum danych. Narzędzie wyszukiwania to pole tekstowe u góry Edytora kodu, w którym widnieje napis „Wyszukaj miejsca i zbiory danych…”. Wpisz nazwę produktu danych, czujnika lub innego słowa kluczowego na pasku wyszukiwania i kliknij przycisk , aby wyświetlić listę pasujących miejsc, rasterów i zbiorów danych w postaci tabel. Kliknij dowolny wynik w formie obrazu rastrowego lub tabeli, aby wyświetlić opis tego zbioru danych w archiwum. Aby zaimportować zbiór danych bezpośrednio do skryptu, kliknij link import lub przycisk w opisie zbioru danych.

Importy

Wyniki importowania zbiorów danych do skryptu są uporządkowane w sekcji importów u góry skryptu i są ukryte, dopóki czegoś nie zaimportujesz. Po utworzeniu kilku importów powinieneś zobaczyć coś podobnego do rysunku 5. Aby skopiować importy do innego skryptu lub przekonwertować je na JavaScript, kliknij ikonę  obok nagłówka Importy i skopiuj wygenerowany kod do skryptu. Możesz usunąć import, klikając ikonę .

Sekcja importowania w edytorze kodu

Rysunek 5. Sekcja importów u góry Edytora kodu.

Mapa

Obiekt Map w interfejsie API odnosi się do wyświetlania mapy w Edytorze kodu. Na przykład Map.getBounds() zwróci region geograficzny widoczny w Edytorze kodu. Aby zobaczyć inne opcje dostosowywania wyświetlacza, sprawdź funkcje Map w interfejsie API.

Menedżer warstw

Za pomocą menedżera warstw w prawym górnym rogu mapy możesz dostosować wyświetlanie warstw dodanych do mapy. Możesz na przykład włączać i wyłączać widoczność warstwy lub regulować jej przezroczystość za pomocą suwaka. Aby dostosować parametry wizualizacji poszczególnych warstw, kliknij ikonę . Pojawi się narzędzie do wizualizacji (Rysunek 6), które umożliwia interaktywne konfigurowanie parametrów wyświetlania warstw. Kliknij przycisk po prawej stronie narzędzia (które domyślnie wykonuje rozciąganie Niestandardowe do podanych zakresów minimalnego i maksymalnego), aby rozciągnąć wyświetlanie do wartości procentylowych lub odchyleń standardowych wartości obrazu w oknie wyświetlania. Statystyki są obliczane na podstawie wszystkich pikseli w oknie mapy przy bieżącym poziomie powiększenia. Użyj suwaków, aby dostosować współczynnik gamma lub przezroczystość. Kliknij przycisk opcji Paleta i określ paletę niestandardową, dodając kolory (), usuwając kolory () lub wpisując ręcznie listę ciągów szesnastkowych oddzielonych przecinkami (). Kliknij Zastosuj, aby zastosować parametry wizualizacji do bieżącego wyświetlania. Kliknij Importuj, aby załadować obiekt parametrów wizualizacji jako nową zmienną w sekcji importów skryptu.

Narzędzie do wizualizacji warstw.

Rysunek 6. Narzędzie do wizualizacji warstw.

Karta Inspektor

Karta Inspekcja obok Menedżera zadań umożliwia interaktywne wysyłanie zapytań do mapy. Gdy aktywujesz kartę Wyświetlacz, kursor zmieni się w krzyżyk, który po kliknięciu mapy wyświetli pod kursorem wartości lokalizacji i warstwy. Na przykład rysunek 7 przedstawia wyniki kliknięcia na mapie na karcie Inspektor. Wyświetlana jest lokalizacja kursora i poziom powiększenia, a także wartości pikseli i lista obiektów na mapie. Lista obiektów jest interaktywna. Aby wyświetlić więcej informacji, rozwiń obiekty na karcie Inspekcja.

Karta Inspektor

Rysunek 7. Karta Inspektor zawiera informacje o lokalizacji kursora i wartościach warstwy pod kursorem.

Karta Konsola

Gdy print() coś ze skryptu, np. tekst, obiekty lub wykresy, wynik zostanie wyświetlony w Konsoli. Konsola jest interaktywna, więc możesz rozwinąć wydrukowane obiekty, aby uzyskać więcej informacji o nich.

Karta Zadania

Zadania Earth Engine to operacje, które mogą trwać znacznie dłużej niż standardowy limit czasu żądania interfejsu API. Te długotrwałe zadania to jedyny mechanizm tworzenia trwałych artefaktów w Earth Engine i powiązanych systemach (Google Cloud Storage, Dysk Google itp.). Dzielą się na 2 kategorie: ImportExport.

Zadania importowania można używać do przesyłania obrazów lub tabel do Earth Engine z różnych typów plików (.csv, .tif itp.). Zadania eksportu można używać do wykonywania i zapisywania wyników z systemu obliczeniowego EE (patrz przewodnik po eksportowaniu danych).

W przypadku eksportów każde wywołanie funkcji Export w Edytorze kodu spowoduje wypełnienie wpisu w sekcji Nieprzesłane zadania na karcie Lista zadań. Aby przesłać zadanie eksportowania na serwer, kliknij przycisk Uruchom obok zadania. Pojawi się okno konfiguracji, w którym możesz określić różne parametry zadania. Jeśli zadanie jest w pełni określone w momencie jego tworzenia (czyli wywołanie funkcji Export zawiera wszystkie niezbędne parametry), przytrzymaj klawisz ctrl lub , gdy klikasz Uruchom, aby przesłać zadanie bez wyświetlania okna dialogowego.

W przypadku importowania przesyłanie plików odbywa się lokalnie, zanim zadanie zostanie przesłane do serwera. Zadania importu w fazie przesyłania będą wyświetlać postępy w sekcji Nieprzesłane zadania i automatycznie przesyłać się na serwer po zakończeniu przesyłania pliku.

Nieprzesłane zadania są widoczne tylko na stronie, na której zostały utworzone, i znikają, gdy strona zostanie zamknięta. Gdy zadanie zostanie przesłane na serwer, kliknięcie jego wiersza w interfejsie spowoduje wyświetlenie dodatkowych informacji i opcji dotyczących jego stanu, w tym opcji prośby o anulowanie.

Aby wyświetlać i anulować wiele zadań w widoku pełnej strony (także na klientach mobilnych), użyj strony Zadania w Cloud Console.

Narzędzie do profilowania

Profilator wyświetla informacje o zasobach (czasie procesora i pamięci) zużytych przez konkretne algorytmy i inne części obliczeń. Pomoże to zdiagnozować, dlaczego skrypt działa wolno lub nie działa z powodu ograniczeń pamięci. Aby użyć profilowania, kliknij opcję Uruchom z profilowaniem w menu przycisku Uruchom. Aby użyć skrótu, przytrzymaj klawisz Alt (lub Option na Macu) i kliknij Uruchom lub naciśnij Ctrl + Alt + Enter. Spowoduje to wyświetlenie karty Profiler po prawej stronie edytora kodu. Podczas wykonywania skryptu na karcie Profilator pojawi się tabela z wykorzystaniem zasobów przez skrypt. Kliknięcie przycisku Uruchom (bez profilowania) spowoduje zniknięcie karty Profilowanie i wyłączenie profilowania.

Aby wyświetlić zestawienie danych wyjściowych profilatora, otwórz stronę Przegląd obliczeń.

Narzędzia do geometrii

Możesz też zaimportować geometrie do skryptu, rysując je na ekranie. Aby tworzyć geometrie, użyj narzędzi do rysowania geometrii w lewym górnym rogu mapy (ryc. 8). Aby rysować punkty, użyj ikony znacznika miejsca , do rysowania linii użyj ikony linii , do rysowania wielokątów użyj ikony wielokąta , a do rysowania prostokątów użyj ikony prostokąta . (Pamiętaj, że prostokąty to geometrie planarne, więc nie można ich umieszczać na warstwie z geometrią geodezyjną, taką jak linie czy wielokąty).

Użycie dowolnego narzędzia do rysowania spowoduje automatyczne utworzenie nowego warstwy geometrii i dodanie importu dla tej warstwy do sekcji Importy. Aby dodać geometrie do nowego poziomu, na mapie najedź kursorem na pozycję Importy geometrii i kliknij link +nowy poziom. Możesz też przełączać widoczność geometrii w sekcji Importy geometrii. Pamiętaj, że rysowane geometrie są domyślnie geodezyjne, z wyjątkiem prostokątów, które są tylko płaskie. Aby przekształcić je w geometryczne płaskie, użyj konstruktora geometrii. Więcej informacji o geometriach w Earth Engine znajdziesz na stronie Geometria.

Rysunek 8. Narzędzia do rysowania geometrii znajdują się w lewym górnym rogu mapy.

Aby skonfigurować sposób importowania geometrii do skryptu, kliknij ikonę obok warstwy w sekcji Importy geometrii na mapie lub w sekcji Importy w edytorze kodu. Narzędzie ustawień warstwy geometrii pojawi się w oknie dialogowym, które powinno wyglądać podobnie do rysunku 9. Pamiętaj, że możesz importować narysowane kształty jako geometrie, cechy lub kolekcje cech. Ustawienia importu geometrii umożliwiają też zmianę koloru, w którym wyświetlany jest dany poziom, dodanie właściwości do poziomu (jeśli jest on importowany jako Feature lub FeatureCollection) oraz zmianę jego nazwy.

Narzędzie konfiguracji geometrii

Rysunek 9. Narzędzie do konfiguracji geometrii.

Aby zapobiec edytowaniu geometrii na warstwie, możesz ją zablokować, naciskając ikonę obok niej. Spowoduje to zablokowanie dodawania, usuwania i edytowania geometrii na tym poziomie. Aby ponownie odblokować warstwę, naciśnij ikonę .

Dlaczego

W prawym górnym rogu Edytora kodu kliknij przycisk , aby wyświetlić linki do tego poradnika dla deweloperów, innych forów pomocy, oprowadzania po Edytorze kodu oraz listy skrótów klawiszowych, które ułatwiają kodowanie, uruchamianie kodu i wyświetlanie danych na Mapie. Kliknij przycisk , aby zgłosić błąd, poprosić o nową funkcję, zaproponować zbiór danych lub przesłać opinię, gdy nie potrzebujesz odpowiedzi.