Wenn Sie ein geologisches Projekt/eine geologische Anwendung erstellen oder entwickeln wollen oder wenn Sie in Ihr Projekt die Möglichkeit der Datenkartierung einbeziehen wollen, dann ist eine mögliche Lösung die Verwendung von Google Earth Engine, einer leistungsstarken und flexiblen Cloud-basierten API, mit der Sie große Mengen an Satellitenbildern bequem von der Google Cloud aus verarbeiten können. In diesem Blogbeitrag werden wir „geemap“ verwenden, eine der besten und neuesten Bibliotheken für Python, um mit den Funktionen von Google Earth Engine in Python zu interagieren.
What is geemap?
geemap ist ein Python-Paket, mit dem Sie Google Earth Engine (GEE) interaktiv nutzen können. Mit GEE kann man auf Satellitenbilder, Gelände und Geodatensätze zugreifen, z. B. auf die Masse der Bäume in verschiedenen Gebieten der Welt oder darauf, wie sich die Vegetation im Laufe der Zeit verändert. geemap basiert auf Python und kann daher mit anderen Bibliotheken und Tutorials verwendet werden, die über diese wunderbare Sprache verfügbar sind.
Voraussetzungen
Miniconda: In diesem Tutorial werden wir miniconda verwenden, ein kostenloses minimales Installationsprogramm für conda. Es ist eine kleine Bootstrap-Version von Anaconda, die nur conda, Python und einige wenige andere nützliche Pakete enthält. Wenn Sie dem Tutorial folgen wollen, gehen Sie auf den angegebenen Link, laden Sie miniconda herunter und installieren Sie es, danach sollten Sie ein conda Terminal geöffnet haben.
https://docs.conda.io/en/latest/miniconda.html
Geemap-Installation: Führen Sie die folgenden Schritte durch, um Geemap zu installieren
Zunächst erstellen wir eine conda-Umgebung und aktivieren sie.
conda create -n gee python
conda activate gee
Installieren wir nun eine Geokarte
conda install mamba -c conda-forge
mamba install geemap -c conda-forge
Das war’s. geemap ist installiert
Jupyter-Notebook: Wir benötigen auch ein Jupyter-Notebook, das Ihre Produktivität in der Notebook-Umgebung verbessern kann. Um das Jupiter-Notebook zu installieren, verwenden Sie den folgenden Befehl
mamba install jupyter_contrib_nbextensions -c conda-forge
Und um jupyter notebook zu starten, führen Sie folgenden Befehl aus
jupyter notebook
Or
python -m notebook
Code
Einfaches Beispiel:
Starten Sie zunächst Ihr Jupyter-Notebook und erstellen Sie eine neue Python-Datei. Dann beginnen wir mit unserer Interaktion mit der Google Earth Engine.
# importing the geemap library
import ee
import geemap
# creating an interactive map (you can change the value to specify where should map start and how zoomed in the map will be)
Map = geemap.Map(center=(20, 80), zoom=4)
Map
Hinweis: Wenn Sie geemap zum ersten Mal verwenden, werden Sie aufgefordert, sich bei Ihrem Google-Konto anzumelden, um auf die API der Google Earth Engine zuzugreifen. Sie müssen sich nur anmelden, dann erscheint auf dem nächsten Bildschirm ein API-Schlüssel – fügen Sie diesen API-Schlüssel in das Feld ein, und Sie können loslegen.
Ausgabe:
Wie Sie in der Ausgabe sehen können, haben wir eine vollständig interaktive Karte. Auf der linken Seite der Karte können Sie viele Werkzeuge sehen, wie z.B. vergrößern, verkleinern, Formen zeichnen, einen Marker zeichnen usw. Sie können selbst ausprobieren, was all diese Werkzeuge bewirken
Ändern des Kartentyps
Es gibt viele Aspekte einer Karte, die wir im Auge behalten müssen, besonders wichtig ist die Art der Karte, die wir gerade betrachten. Wir können den aktuellen Kartentyp ganz einfach mit dem folgenden Befehl ändern
Map.add_basemap('SATELLITE')
Ausgabe:
Sie können in der Ausgabe sehen, dass der Kartentyp jetzt Satellitenansicht ist. Sie können auch aus einer Vielzahl von Kartentypen wählen – probieren Sie die anderen aus und sehen Sie, was passiert!
Map.add_basemap('SATELLITE')
Map.add_basemap('ROADMAP')
Map.add_basemap('HYBRID')
Map.add_basemap('TERRAIN')
Map.add_basemap('OpenStreetMap')
Wenn Sie mehrere Arten von Basiskarten wünschen, verwenden Sie den folgenden Befehl
m = geemap.Map()
m.basemap_demo()
m
Ausgabe
Sie können im Dropdown-Menü der Basiskarte wählen
Um alle Basiskarten in Ihrem Terminal abzurufen, verwenden Sie den folgenden Befehl
basemaps = geemap.basemaps.keys()
for basemap in basemaps:
print(basemap)
Inspektionswerkzeug für Earth Engine
import geemap# adding google earth engine data layer
# here we are adding google Earth Engine dataset
dem = ee.Image('USGS/SRTMGL1_003')
landcover = ee.Image("ESA/GLOBCOVER_L4_200901_200912_V2_3").select('landcover')
landsat7 = ee.Image('LE7_TOA_5YEAR/1999_2003').select(['B1', 'B2', 'B3', 'B4', 'B5', 'B7'])
states = ee.FeatureCollection("TIGER/2018/States")
# Set visualization parameters.
vis_params = {
'min': 0,
'max': 4000,
'palette': ['006633', 'E5FFCC', '662A00', 'D8D8D8', 'F5F5F5']}
# Add Earth Engine layers to Map
Map.addLayer(dem, vis_params, 'SRTM DEM', True, 0.5)
Map.addLayer(landcover, {}, 'Land cover')
Map.addLayer(landsat7, {'bands': ['B4', 'B3', 'B2'], 'min': 20, 'max': 200, 'gamma': 2.0}, 'Landsat 7')
Map.addLayer(states, {}, "US States")
Map
Ausgabe
In der Ausgabe können Sie auch bestimmte Ebenen ausblenden. Gehen Sie einfach in die obere rechte Ecke und entfernen Sie das Häkchen bei den Ebenen, die Sie nicht benötigen!
Jetzt können wir das Inspektorwerkzeug verwenden, um die Werte der einzelnen Ebenen zu ermitteln. Gehen Sie zunächst zu den Einstellungen und klicken Sie auf das Symbol „Inspektorwerkzeug“. Klicken Sie dann auf eine beliebige Stelle auf der Karte, für die Sie die Werte abrufen möchten, und es werden grundlegende Informationen dazu angezeigt, wie z. B. die Höhe und die Bodenbedeckung. Dieses Tool eignet sich hervorragend, um schnell auf Informationen zuzugreifen, ohne Zeilen von Code schreiben zu müssen!
Erstellen einer Karte mit geteiltem Fenster:
Die Funktion des geteilten Fensters ist sehr nützlich, da Sie auf diese Weise die Unterschiede zwischen zwei Karten nebeneinander darstellen können.
import geemap#creating an interactive map
Map = geemap.Map()
# here creating a slit map using split_map method
# change the map type in the left_layer and right_layer to change the map type showing in both sides
Map.split_map(left_layer='NLCD 2019 CONUS Land Cover', right_layer='SATELLITE')
Map
Ausgabe
Verwendung integrierter Suchwerkzeuge zum Abrufen verschiedener Daten
Die interaktive Karte verfügt bereits über ein integriertes Suchwerkzeug, mit dem Sie verfügbare Daten suchen und als Ebene hinzufügen können. Um diese Funktion zu nutzen, gehen Sie wie folgt vor
- Drücken Sie auf das Symbol oben links in der Ecke
- Gehen Sie zur Registerkarte Daten
- Durchsuchen Sie die Daten (Wenn Sie alle Datensätze sehen möchten, gehen Sie auf den folgenden Link https://developers.google.com/earth-engine/datasets/catalog)
- Wählen Sie die Daten aus, die Sie auf der Karte anzeigen möchten
- Klicken Sie auf „Importieren“, und der Code wird automatisch in den folgenden Abschnitt geschrieben
- Führen Sie den Code aus und das war’s.
# creating a simple interactive map
import geemap
import os
Map = geemap.Map(toolbar_ctrl=True, layer_ctrl=True)
Map
# this is the auto generated code when we imported the data
dataset_hlh = ee.ImageCollection('JRC/GHSL/P2016/POP_GPW_GLOBE_V1')
Map.addLayer(dataset_hlh, {}, "JRC/GHSL/P2016/POP_GPW_GLOBE_V1")
Ausgabe
Karte als HTML-Datei exportieren
Es ist sehr nützlich, diese Art von interaktiver Karte mit anderen Personen zu teilen oder sie auf Ihrem Projekt oder Ihrer Website zu zeigen, und wir tun dies, indem wir die Karte als HTML-Datei exportieren. Schauen wir uns an, wie das geht.
- Gehen Sie auf das Einstellungssymbol in der oberen rechten Ecke.
- Drücken Sie auf das Kamerasymbol
- Hier sehen Sie drei Registerkarten: HTML, PNG und jpg. Klicken Sie auf HTML.
- Wählen Sie dann den Speicherort aus, fügen Sie den Namen der HTML-Datei hinzu und drücken Sie auf OK.
- Es ist vollbracht!
Letzte Worte
In diesem Blogbeitrag haben wir geemap vorgestellt, ein Python-Paket, mit dem Sie Google Earth Engine (GEE) interaktiv nutzen können. Wir haben auch ein grundlegendes Beispiel für die Verwendung einer Geemap gegeben. Wir hoffen, dass Ihnen dieser Blog-Beitrag gefallen hat! Wenn Sie Fragen oder Kommentare haben, lassen Sie es uns bitte wissen!
Dein Kommentar wartet auf die Überprüfung durch einen Moderator.
I believe you have remarked some very interesting details, appreciate it for the post.