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ą w pełni zintegrowane z Dyskiem Google, dzięki czemu łatwo je skonfigurujesz, uzyskasz do nich dostęp i je udostępnisz. Jeśli nie znasz Google Colab ani notatników Jupyter, poświęć trochę czasu na zapoznanie się z witryną powitalną Colab.
W następnych sekcjach opisano wdrażanie Earth Engine w Google Colab oraz wizualizację map i wykresów za pomocą zewnętrznych pakietów Pythona.
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.
- Nowe > Więcej > Colaboratory
- Kliknij prawym przyciskiem myszy folder i w menu kontekstowym wybierz Więcej > Colaboratory.
Interfejs Colab
Otwórz witrynę Colab i utwórz nowy plik.
- Plik > Nowy > Nowy notatnik Pythona 3
- Jeśli wcześniej korzystałeś(-aś) z Colab, po przejściu do połączonej powyżej witryny zobaczysz Eksploratora plików, w którym możesz utworzyć nowy plik za pomocą menu w dolnej części okna.
Istniejący notatnik
Istniejące pliki notatek (.ipynb) można otwierać na Dysku Google i w interfejsie Colab.
Dysk Google
Notatki 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 „Colab Notebooks”, 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 pliku „.ipynb”. Otwórz pliki, klikając je dwukrotnie i wybierając Otwórz za pomocą > Colaboratory z przycisku znajdującego się u góry wyświetlonej strony lub klikając plik prawym przyciskiem myszy i wybierając Otwórz za pomocą > Colaboratory z menu kontekstowego pliku.
Interfejs Colab
Otwieranie notatników w interfejsie Colab umożliwia dostęp do istniejących plików z Dysku Google, GitHuba 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 otwórz plik .ipynb, który chcesz otworzyć. Do eksploratora plików można też uzyskać dostęp z interfejsu Colab, wybierając Plik > Otwórz notatnik lub używając kombinacji klawiszy Ctrl + O.
Importowanie interfejsu API i uzyskiwanie danych logowania
W tej sekcji dowiesz się, jak zaimportować interfejs Python API Earth Engine i uwierzytelnić dostęp. Te treści są też dostępne jako notebook Colab:
Interfejs API Earth Engine jest domyślnie uwzględniony w Google Colaboratory, więc wymaga tylko zaimportowania i uwierzytelniania. Te kroki należy wykonać w przypadku każdej nowej sesji Colab lub jeśli ponownie uruchomisz ją w rdzeniu Colab lub jeśli wirtualna maszyna Colab zostanie ponownie wykorzystana z powodu braku aktywności.
Importowanie interfejsu API
Aby zaimportować interfejs API do sesji, uruchom komórkę z poniższym kodem.
import ee
Uwierzytelnianie i inicjowanie
Uruchom funkcję ee.Authenticate
, aby uwierzytelnić dostęp do serwerów Earth Engine, i funkcję ee.Initialize
, aby zainicjować tę usługę. Dodaj komórkę z kodem, wpisz podane niżej wiersze, zmodyfikuj 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 Twojego 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 Everest. Pamiętaj, że przed użyciem interfejsu API musisz go zainicjować. Uruchom w nowej komórce poniższy skrypt Pythona.
# 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 na mapie
Obiekty ee.Image
mogą być wyświetlane w komórkach wyjściowych w notatniku. W tych 2 przykładach pokazano wyświetlanie obrazu statycznego i interaktywnej mapy.
Obraz statyczny
Moduł IPython.display
zawiera funkcję Image
, która może wyświetlać wyniki adresu URL reprezentującego obraz wygenerowany z wywołania funkcji Earth Engine getThumbUrl
. Ten skrypt wyświetli miniaturę globalnego modelu rzeźby terenu.
# 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
można wykorzystać do wyświetlania obiektów ee.Image
na interaktywnej mapie Leaflet. Folium nie ma domyślnej metody obsługiwania płytek z Earth Engine, dlatego przed użyciem należy zdefiniować taką metodę i dodać ją do modułu folium.Map
.
Ten skrypt pokazuje przykład dodawania metody obsługiwania płytek Earth Engine i jej używania 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 nanosić za pomocą pakietów do wizualizacji danych, takich jak matplotlib
. Ten 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()