Instalacja Pythona – notatnik Colab

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()