Die Earth Engine Python API kann in einem Google Colaboratory-Notebook bereitgestellt werden. Colab-Notebooks sind Jupyter-Notebooks, die in der Cloud ausgeführt werden und eng in Google Drive eingebunden sind. Dadurch lassen sie sich einfach einrichten, aufrufen und teilen. Wenn Sie mit Google Colab oder Jupyter-Notebooks nicht vertraut sind, sollten Sie sich die Colab-Willkommensseite ansehen.
In den folgenden Abschnitten wird beschrieben, wie Sie Earth Engine in Google Colab bereitstellen und Karten und Diagramme mit Python-Drittanbieterpaketen visualisieren.
Colab-Notebook öffnen
Notebooks können entweder über Google Drive oder über die Colaboratory-Oberfläche geöffnet werden.
Neues Notebook
Google Drive
Öffnen Sie Google Drive und erstellen Sie eine neue Datei.
- Neu > Mehr > Colaboratory
- Klicken Sie mit der rechten Maustaste in einen Ordner und wählen Sie im Kontextmenü Mehr > Colaboratory aus.
Colab-Benutzeroberfläche
Rufen Sie die Colab-Website auf und erstellen Sie eine neue Datei.
- Datei > Neu > Neues Python 3-Notebook
- Wenn Sie bereits mit Colab interagiert haben, wird auf der oben verlinkten Website ein Datei-Explorer angezeigt, in dem Sie über das Drop-down-Menü unten im Fenster eine neue Datei erstellen können.
Vorhandenes Notebook
Vorhandene Notebook-Dateien (.ipynb) können über Google Drive und die Colab-Benutzeroberfläche geöffnet werden.
Google Drive
Colab-Notebooks können sich in verschiedenen Ordnern in Google Drive befinden, je nachdem, wo die Notebook-Dateien erstellt wurden. In Google Drive erstellte Notebooks befinden sich in dem Ordner, in dem sie erstellt oder in den sie verschoben wurden. Notebooks, die über die Colab-Benutzeroberfläche erstellt werden, werden standardmäßig in einem Ordner namens „Colab Notebooks“ gespeichert. Dieser Ordner wird automatisch zu „Meine Ablage“ in Google Drive hinzugefügt, wenn Sie mit Colab arbeiten.
Colab-Dateien sind am gelben „CO“-Symbol und der Dateiendung „.ipynb“ zu erkennen. Öffnen Sie Dateien, indem Sie entweder darauf doppelklicken und oben auf der angezeigten Seite auf Öffnen mit > Colaboratory klicken oder mit der rechten Maustaste auf eine Datei klicken und im Kontextmenü der Datei Öffnen mit > Colaboratory auswählen.
Colab-Benutzeroberfläche
Wenn Sie Notebooks über die Colab-Benutzeroberfläche öffnen, können Sie auf vorhandene Dateien aus Google Drive, GitHub und lokaler Hardware zugreifen. Wenn Sie die Colab-Benutzeroberfläche nach der ersten Verwendung aufrufen, wird ein Dateiexplorer-Modal angezeigt. Wählen Sie oben im Dateiexplorer auf den Tabs eine Quelle aus und rufen Sie die .ipynb-Datei auf, die Sie öffnen möchten. Sie können auch über die Colab-Benutzeroberfläche auf den Datei-Explorer zugreifen, indem Sie Datei > Notebook öffnen auswählen oder die Tastenkombination Strg + O verwenden.
API importieren und Anmeldedaten abrufen
In diesem Abschnitt wird gezeigt, wie Sie die Earth Engine Python API importieren und den Zugriff authentifizieren. Dieser Inhalt ist auch als Colab-Notebook verfügbar:
Die Earth Engine API ist standardmäßig in Google Colaboratory enthalten. Sie muss also nur importiert und authentifiziert werden. Diese Schritte müssen für jede neue Colab-Sitzung ausgeführt werden. Das gilt auch, wenn Sie Ihren Colab-Kernel neu starten oder Ihre virtuelle Colab-Maschine aufgrund von Inaktivität recycelt wird.
API importieren
Führen Sie die folgende Zelle aus, um die API in Ihre Sitzung zu importieren.
import ee
Authentifizieren und initialisieren
Führen Sie die Funktion ee.Authenticate aus, um Ihren Zugriff auf Earth Engine-Server zu authentifizieren, und ee.Initialize, um sie zu initialisieren. Fügen Sie eine Codezelle hinzu, geben Sie die folgenden Zeilen ein, bearbeiten Sie das Projekt und führen Sie die Zelle aus.
# Trigger the authentication flow. ee.Authenticate() # Initialize the library. ee.Initialize(project='my-project')
Sie werden aufgefordert, den Zugriff auf Ihr Earth Engine-Konto zu autorisieren. Folgen Sie der Anleitung, die auf der Zelle aufgedruckt ist, um diesen Schritt auszuführen.
API testen
Testen Sie die API, indem Sie die Höhe des Mount Everest ausgeben lassen. Bevor Sie die API verwenden können, müssen Sie sie initialisieren. Führen Sie das folgende Python-Skript in einer neuen Zelle aus.
# 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)
Kartenvisualisierung
ee.Image-Objekte können in Notebook-Ausgabezellen angezeigt werden. In den folgenden beiden Beispielen wird gezeigt, wie ein statisches Bild und eine interaktive Karte angezeigt werden.
Statisches Bild
Das Modul IPython.display enthält die Funktion Image, mit der die Ergebnisse einer URL angezeigt werden können, die ein Bild darstellt, das durch einen Aufruf der Earth Engine-Funktion getThumbUrl generiert wurde. Mit dem folgenden Script wird eine Miniaturansicht eines globalen Höhenmodells angezeigt.
# 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']}))
Interaktive Karte
Mit dem Paket folium können ee.Image-Objekte auf einer interaktiven Leaflet-Karte dargestellt werden. Folium hat keine Standardmethode für die Verarbeitung von Kacheln aus Earth Engine. Daher muss eine Methode definiert und dem folium.Map-Modul hinzugefügt werden, bevor sie verwendet werden kann.
Das folgende Skript zeigt ein Beispiel für das Hinzufügen einer Methode zum Verarbeiten von Earth Engine-Kacheln und zum Anzeigen eines Höhenmodells auf einer Leaflet-Karte.
# 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)
Diagrammvisualisierung
Einige Earth Engine-Funktionen erzeugen tabellarische Daten, die mit Datenvisualisierungspaketen wie matplotlib dargestellt werden können. Im folgenden Beispiel werden tabellarische Daten aus Earth Engine als Streudiagramm dargestellt. Weitere Informationen finden Sie unter Diagramme in Colaboratory erstellen.
# 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()
In Google Colab ausführen
Quelle auf GitHub ansehen