Interfejs Earth Engine Python API można wdrożyć w notatniku Google Colaboratory. Notatniki Colab to notatniki Jupyter, które działają w chmurze i są ściśle zintegrowane z Dyskiem Google, dzięki czemu można je łatwo konfigurować, otwierać i udostępniać. Jeśli nie znasz Google Colab ani notatników Jupyter, poświęć trochę czasu na zapoznanie się z witryną powitalną Colab.
W sekcjach poniżej opisujemy wdrażanie Earth Engine w Google Colab oraz wizualizowanie map i wykresów za pomocą pakietów Python innych firm.
Otwieranie notatnika Colab
Notatniki można otwierać na Dysku Google lub w interfejsie Colaboratory.
Nowy notatnik
Dysk Google
Otwórz Dysk Google i utwórz nowy plik.
- Nowy > Więcej > Colaboratory
- Kliknij prawym przyciskiem myszy folder i z menu kontekstowego wybierz Więcej > Colaboratory.
Interfejs Colab
Otwórz witrynę Colab i utwórz nowy plik.
- Plik > Nowy > Nowy notatnik w Pythonie 3
- Jeśli wcześniej korzystałeś(-aś) z Colab, po otwarciu powyższej strony zobaczysz eksplorator plików, w którym możesz utworzyć nowy plik, korzystając z menu u dołu okna.
Istniejący notatnik
Istniejące pliki notatników (.ipynb) można otwierać z Dysku Google i interfejsu Colab.
Dysk Google
Notatniki Colab mogą znajdować się w różnych folderach na Dysku Google w zależności od tego, gdzie zostały utworzone. Notatniki utworzone na Dysku Google będą znajdować się w folderze, w którym zostały utworzone lub do którego zostały przeniesione. Notatniki utworzone w interfejsie Colab będą domyślnie zapisywane w folderze „Notatniki Colab”, który jest automatycznie dodawany do folderu „Mój Dysk” na Dysku Google, gdy zaczniesz korzystać z Colab.
Pliki Colab można rozpoznać po żółtym symbolu „CO” i rozszerzeniu „.ipynb”. Otwórz pliki, klikając je dwukrotnie i wybierając Otwórz za pomocą > Colaboratory na przycisku u góry strony lub klikając plik prawym przyciskiem myszy i wybierając Otwórz za pomocą > Colaboratory w menu kontekstowym pliku.
Interfejs Colab
Otwieranie notatników z interfejsu Colab umożliwia dostęp do istniejących plików z Dysku Google, GitHub i lokalnego sprzętu. Po pierwszym użyciu interfejsu Colab pojawi się okno eksploratora plików. Na kartach u góry eksploratora plików wybierz źródło i przejdź do pliku .ipynb, który chcesz otworzyć. Eksplorator plików jest też dostępny w interfejsie Colab. Aby go otworzyć, kliknij Plik > Otwórz notatnik lub użyj skrótu klawiszowego Ctrl+O.
Importowanie interfejsu API i pobieranie danych logowania
W tej sekcji pokazujemy, jak zaimportować interfejs Earth Engine Python API i uwierzytelnić dostęp. Te treści są też dostępne jako notatnik Colab:
Interfejs Earth Engine API jest domyślnie dostępny w Google Colaboratory, więc wymaga tylko importowania i uwierzytelniania. Te kroki należy wykonać w przypadku każdej nowej sesji Colab, ponownego uruchomienia jądra Colab lub gdy wirtualna maszyna Colab zostanie poddana recyklingowi z powodu braku aktywności.
Importowanie interfejsu API
Uruchom następną komórkę, aby zaimportować interfejs API do sesji.
import ee
Uwierzytelnianie i inicjowanie
Uruchom funkcję ee.Authenticate, aby uwierzytelnić dostęp do serwerów Earth Engine, i funkcję ee.Initialize, aby ją zainicjować. Dodaj komórkę z kodem, wpisz te wiersze, zmień projekt i uruchom komórkę.
# Trigger the authentication flow. ee.Authenticate() # Initialize the library. ee.Initialize(project='my-project')
Pojawi się prośba o autoryzację dostępu do konta Earth Engine. Aby wykonać ten krok, postępuj zgodnie z instrukcjami wydrukowanymi na komórce.
Testowanie interfejsu API
Przetestuj interfejs API, drukując wysokość Mount Everestu. Pamiętaj, że przed użyciem interfejsu API musisz go zainicjować. Uruchom ten skrypt w nowej komórce.
# Print the elevation of Mount Everest. dem = ee.Image('USGS/SRTMGL1_003') xy = ee.Geometry.Point([86.9250, 27.9881]) elev = dem.sample(xy, 30).first().get('elevation').getInfo() print('Mount Everest elevation (m):', elev)
Wizualizacja mapy
Obiekty ee.Image można wyświetlać w komórkach wyjściowych notatnika. Poniższe 2 przykłady pokazują wyświetlanie statycznego obrazu i interaktywnej mapy.
Obraz statyczny
Moduł IPython.display zawiera funkcję Image, która może wyświetlać wyniki adresu URL reprezentującego obraz wygenerowany na podstawie wywołania funkcji Earth Engine getThumbUrl. Poniższy skrypt wyświetli miniaturę globalnego modelu wysokościowego.
# Import libraries. import ee from IPython.display import Image # Trigger the authentication flow. ee.Authenticate() # Initialize the library. ee.Initialize(project='my-project') # Import a DEM and display a thumbnail of it. dem = ee.Image('USGS/SRTMGL1_003') Image(url=dem.updateMask(dem.gt(0)) .getThumbUrl({'min': 0, 'max': 4000, 'dimensions': 512, 'palette': ['006633', 'E5FFCC', '662A00', 'D8D8D8', 'F5F5F5']}))
Interaktywna mapa
Pakiet folium umożliwia wyświetlanie obiektów ee.Image na interaktywnej mapie Leaflet. Biblioteka Folium nie ma domyślnej metody obsługi kafelków z Earth Engine, więc przed użyciem należy zdefiniować i dodać metodę do modułu folium.Map.
Poniższy skrypt zawiera przykład dodawania metody obsługi kafelków Earth Engine i używania jej do wyświetlania modelu wysokości na mapie Leaflet.
# Import libraries. import ee import folium # Trigger the authentication flow. ee.Authenticate() # Initialize the library. ee.Initialize(project='my-project') # Define a method for displaying Earth Engine image tiles to folium map. def add_ee_layer(self, ee_image_object, vis_params, name): map_id_dict = ee.Image(ee_image_object).getMapId(vis_params) folium.raster_layers.TileLayer( tiles = map_id_dict['tile_fetcher'].url_format, attr = "Map Data © Google Earth Engine", name = name, overlay = True, control = True ).add_to(self) # Add EE drawing method to folium. folium.Map.add_ee_layer = add_ee_layer # Fetch an elevation model. dem = ee.Image('USGS/SRTMGL1_003') # Set visualization parameters. vis_params = { 'min': 0, 'max': 4000, 'palette': ['006633', 'E5FFCC', '662A00', 'D8D8D8', 'F5F5F5']} # Create a folium map object. my_map = folium.Map(location=[20, 0], zoom_start=3) # Add the elevation model to the map object. my_map.add_ee_layer(dem.updateMask(dem.gt(0)), vis_params, 'DEM') # Add a layer control panel to the map. my_map.add_child(folium.LayerControl()) # Display the map. display(my_map)
Wizualizacja wykresu
Niektóre funkcje Earth Engine generują dane tabelaryczne, które można przedstawiać graficznie za pomocą pakietów do wizualizacji danych, takich jak matplotlib. Poniższy przykład pokazuje wyświetlanie danych tabelarycznych z Earth Engine w postaci wykresu punktowego. Więcej informacji znajdziesz w artykule Tworzenie wykresów w Colaboratory.
# Import libraries. import ee import matplotlib.pyplot as plt # Trigger the authentication flow. ee.Authenticate() # Initialize the Earth Engine module. ee.Initialize(project='my-project') # Fetch a Landsat TOA image. img = ee.Image('LANDSAT/LT05/C02/T1_TOA/LT05_034033_20000913') # Select Red and NIR bands, scale them, and sample 500 points. samp_fc = img.select(['B3','B4']).sample(scale=30, numPixels=500) # Arrange the sample as a list of lists. samp_dict = samp_fc.reduceColumns(ee.Reducer.toList().repeat(2), ['B3', 'B4']) samp_list = ee.List(samp_dict.get('list')) # Save server-side ee.List as a client-side Python list. samp_data = samp_list.getInfo() # Display a scatter plot of Red-NIR sample pairs using matplotlib. plt.scatter(samp_data[0], samp_data[1], alpha=0.2) plt.xlabel('Red', fontsize=12) plt.ylabel('NIR', fontsize=12) plt.show()
Uruchom w Google Colab
Wyświetl źródło w GitHubie