Einführung
――In den letzten Jahren nimmt die Zahl der Fälle zu, in denen künstliche Satellitendaten in Gesellschaft und Wirtschaft verwendet werden.
- Künstliche Satelliten beobachten den Zustand der Erde vom Weltraum aus mit verschiedenen Sensoren und werden als ** offene Daten ** freigegeben.
――Satellitendaten sind Big Data und weisen eine hohe Affinität zu den neuesten Technologien für maschinelles Lernen und KI auf. Die erforderlichen Verarbeitungsressourcen (Speicher) sind jedoch in der Regel enorm und befinden sich in einer persönlichen PC-Umgebung. Die Hürde ist hoch zu benutzen
――Mit der Nutzung der von Google bereitgestellten Cloud-Ressourcen ** können Einzelpersonen jedoch auch kostenlos eine Satellitendatenanalyse ** durchführen.
- In diesem Artikel werden Methoden zur Analyse von Satellitendaten mit ** Google Earth Engine (GEE) ** und ** Google Colaboratory (Colab) ** vorgestellt.
――In der [Anwendung], die zu einem späteren Zeitpunkt veröffentlicht wird, möchte ich den Umgang mit typischen Daten (Bodenoberflächentemperatur, Vegetationsindex, Schneedeckenindex) einführen, die aus Satellitendaten abgerufen werden können.
――In der Satellitendatenanalyse können Sie verschiedene globale Umgebungsbedingungen erfassen, indem Sie verschiedene Sensoren kombinieren. ** Ich werde den Inhalt dieses Artikels als Einführung verwenden, um Sie bei der Analyse von Daten zu bekannten Umgebungsbedingungen zu unterstützen **. Ich finde es interessant
Funktionen dieses Artikels
- Normalerweise analysiert GEE beim Surfen JavaScript.
――Jedoch ** möchte ich mit Python analysieren, das über zahlreiche Bibliotheken für maschinelles Lernen und statistische Analysen verfügt **, sodass ** nur die Mindestverarbeitung (Extraktion und Speicherung von Satellitenbildern) mit der Python-API von GEE durchgeführt wird ** und * * Ich werde Ihnen zeigen, wie Sie mit der normalen Python-Bibliothek (numpy oder matplotlib) visualisieren und analysieren können **
―― Außerdem möchte ich eine große Menge von Satellitenbilddaten analysieren, ohne von den Ressourcen des lokalen PCs abhängig zu sein. Daher werde ich eine Methode einführen, um den Vorgang nur in der ** Cloud-Umgebung von Google Colab + Google Drive ** (natürlich) abzuschließen. , Wenn Sie das Speicherziel lokal angeben, können Sie dieselbe Analyse in der lokalen Umgebung durchführen.)
Bild der ordnungsgemäßen Nutzung von Diensten ~ Führen Sie eine Satellitenbildanalyse nur mit Cloud-Diensten durch, die Google-Dienste verwenden ~
Übersicht über Google Earth Engine (GEE)
- Google veröffentlicht den Dienst im Dezember 2010
- Sie können eine Analyse auf dem GEE-Server durchführen, ohne das künstliche Satellitenbild auf Ihren eigenen PC herunterzuladen.
- Bei der normalen Satellitendatenanalyse müssen verschiedene Datenformate unterstützt und die Daten vorverarbeitet werden. Auf GEE werden jedoch verschiedene Satellitendaten vorbereitet, und nur die erforderlichen Daten können geladen und verwendet werden.
- Kann kostenlos für Forschungs-, Bildungs- und nichtkommerzielle Zwecke verwendet werden (kostenpflichtige Pläne sind ebenfalls erhältlich)
-Hinweis) Es handelt sich um einen von Google Earth getrennten Dienst, mit dem Sie den Globus durchsuchen können.
Übersicht über Google Colaboratory (Colab)
- Ein Dienst, mit dem Sie Python über einen Browser schreiben und ausführen können, ohne eine Umgebung zu erstellen
--GPU kann auch kostenlos verwendet werden
- Es gibt viele leicht verständliche Artikel über die Gliederung und Verwendung von Google Colab. Lesen Sie sie daher bitte.
- Google Colab eingeführt
- Zusammenfassung der Verwendung von Google Colab
[Verwendung] Satellitenbildanalyse auf GEE & Colab
Kontoerstellung
- Melden Sie sich auf der offiziellen Seite von Google Earth Engine an (Google-Konto erforderlich)
- Nach der Anmeldung können Sie auf den Datenkatalog zugreifen, eine Liste der auf GEE verfügbaren Satellitendaten.
Verwenden von GEE in einer Python-Umgebung (Google Colab)
1. Authentifizieren Sie GEE von Google Colab mithilfe der Python-API
#Importieren Sie die Python-API von Earth Engine
import ee
#GEE-Zertifizierung / Initialisierung
ee.Authenticate()
ee.Initialize()
- Wenn Sie die GEE-Authentifizierung ausführen, wird die für die Authentifizierung erforderliche URL angezeigt.
- Wenn Sie auf die URL zugreifen und Ihr Google-Konto angeben, wird der Bestätigungscode angezeigt.
- Kopieren Sie den Autorisierungscode in das Feld Google Colab
2. Laden Sie die GEE-Satellitendaten
--Wählen Sie den ** Satellitennamen ** aus, den Sie aus dem Datenkatalog laden möchten
- Wählen Sie hier DMSP-OLS, das Nachtlichtdaten sammelt.
- Informationen zum Nachtlicht finden Sie unter Vergangener Artikel "Was sind Nachtlichtdaten?"
--Wählen Sie den ** Bandnamen ** aus, von dem Sie Daten laden möchten
- Künstliche Satelliten erfassen normalerweise Daten in mehreren Bändern (Sensoren mit unterschiedlichen Wellenlängen). Geben Sie daher den Bandnamen an, der Ihrem Zweck entspricht.
--Wählen Sie hier 'avg_vis', das ist der Hauptteil der Nachtlichtdaten.
- 'avg_vis' ist ein Sensor, der die Intensität des Nachtlichts mit einem ganzzahligen Wert von 0 bis 63 ausdrückt.
- Geben Sie den ** Zeitraum ** an, für den Sie Daten laden möchten
- Normalerweise handelt es sich bei Satelliten um Zeitreihendaten, die weiterhin rekursiv beobachtet werden (die Beobachtungsfrequenz variiert je nach Satellit).
--Wählen Sie den Zeitraum der Daten aus, die Sie dort erfassen möchten
- Geben Sie den ** Bereich ** an, in den Sie Daten laden möchten
- Da der künstliche Satellit die gesamte Erde beobachtet, geben Sie die gewünschte Fläche an.
――Hier verwenden wir die Methode zum Extrahieren von Daten als Rechteck unter Verwendung von Längen- und Breitengraden.
- Mit ee.Geometry.Rectangle angeben ([xMin, yMin, xMax, yMax])
--xMin = (unterer linker Längengrad), yMin = (unterer linker Breitengrad), xMax = (oberer rechter Längengrad), yMax = (oberer rechter Breitengrad)
#Geben Sie den Namen des Satelliten an
satellite = 'NOAA/DMSP-OLS/NIGHTTIME_LIGHTS'
#Geben Sie den Bandnamen an
band = 'avg_vis'
#Geben Sie den Zeitraum an
from_date='2010-01-01'
to_date='2012-12-31'
##Bereich angeben(Geben Sie den Breiten- / Längengrad für das Gebiet Japan an)
geometry = ee.Geometry.Rectangle([128.60, 29.97, 148.43, 46.12])
#Laden Sie Daten von GEE unter bestimmten Bedingungen
dataset = ee.ImageCollection(satellite).filter(
ee.Filter.date(from_date, to_date)).filter(
ee.Filter.geometry(geometry)).select(band)
―― Da es sich bei diesem Satellitenprodukt um einen jährlichen Datensatz handelt, liegen Daten für drei Jahre von 2010 bis 2012 vor.
――Die Messfrequenz ist je nach Satellit unterschiedlich, und es ist zu beachten, dass eine große Datenmenge geladen wird, wenn für Satelliten mit feiner Zeitauflösung (z. B. Satelliten, die alle 12 Tage beobachtet werden) ein langer Zeitraum angegeben wird.
- Die Anzahl der Zieldaten kann mit dem folgenden Befehl bestätigt werden
#Bestätigung der Anzahl der Zieldaten
print(dataset.size().getInfo())
3. Speichern von Satellitenbilddaten
- Speichern Sie die angegebenen Satellitendaten in Google Drive
- Sie können jedes Bild speichern, indem Sie es in das Listenformat konvertieren.
- Durch die Verwendung von ee.batch.Export.image.toDrive werden die Daten im angegebenen Ordner in MyDrive von Google Drive gespeichert.
- Sie können beim Herunterladen des Bildes auch die Bildauflösung mit Skalierung festlegen.
##In Listenformat konvertieren
data_list = dataset.toList(dataset.size().getInfo())
#Holen Sie sich das 0. Bild (2010 Bild)
image = ee.Image(data_list.get(0))
#Auf Gdrive speichern
task = ee.batch.Export.image.toDrive(**{
'image': image,#Bezeichnung der Zieldaten
'description': 'sample_dataloading_NTL',#Geben Sie den Dateinamen an
'folder':'GEE_download',# Google Drive(MyDrive)Ordnernamen
'scale': 1000,#Festlegen der Auflösung
'region': geometry.getInfo()['coordinates']#Zielbereich oben angegeben
})
#Ausführung der Verarbeitung
task.start()
- Wenn Sie den obigen Befehl ausführen, wird eine Datei mit dem Namen sample_dataloading_NTL in Google Drive> Mein Laufwerk> GEE_download gespeichert.
- Abhängig von der Größe der zu ladenden Daten dauert es einige Zeit, und Sie können den Fortschritt mit task.active () überprüfen.
Wenn task.active () = True ist, wird GEE verarbeitet. Warten Sie also bis False
#Überprüfen Sie den Datenverarbeitungsstatus (True zeigt an, dass die Verarbeitung ausgeführt wird).
task.active()
4. Bestätigung des gespeicherten Satellitenbildes
--Daten werden im TIF-Format gespeichert
#Paketinstallation&importieren
!pip install rasterio
import numpy as np
import matplotlib.pyplot as plt
import rasterio
#Daten lesen
with rasterio.open('/content/drive/My Drive/GEE_download/sample_dataloading_NTL.tif') as src:
arr = src.read()
#Holen Sie sich Daten im Numpy-Format-> (1, 1847, 2208)Holen Sie sich in eine Reihe von
print(arr.shape)
#Visualisierung
plt.imshow(arr[0])
"2010 DMSP-OLS Nachtlichtdaten"
―― Da arr im Numpy-Format vorliegt, können Sie Statistiken von Satellitendaten berechnen, Daten für das nächste Jahr erfassen, in Zeitreihen vergleichen und die Analyse frei durchführen.
- Mit der in Past Article eingeführten Vektordatei und Geopandas können Sie die Daten auch nach Land oder Präfektur aushöhlen und visualisieren. Es ist auch möglich, Änderungen zu berechnen
Funktionalisierung einer Reihe von Prozessen
- Schließlich wird die obige Reihe von Prozessen zu einer Funktion gemacht.
――Nächstes Mal möchte ich diese Funktion verwenden, um Analysen mit verschiedenen Indikatoren (Bodenoberflächentemperatur, Vegetationsindex, Schneedeckenindex usw.) durchzuführen, die mit künstlichen Satelliten beobachtet wurden.
#Importieren Sie die Python-API von Earth Engine
import ee
#GEE-Zertifizierung / Initialisierung
ee.Authenticate()
ee.Initialize()
#GEE-Daten laden
def load_data(snippet, from_date, to_date, geometry, band):
#Daten gemäß Parameterbedingungen extrahieren
dataset = ee.ImageCollection(snippet).filter(
ee.Filter.date(from_date, to_date)).filter(
ee.Filter.geometry(geometry)).select(band)
#In Listentyp konvertieren
data_list = dataset.toList(dataset.size().getInfo())
#Geben Sie die Anzahl der Zieldaten und die Datenliste aus
return dataset.size().getInfo(), data_list
#Speichern Sie Satellitenbilder in Google Drive
def save_on_gdrive(image, geometry, dir_name, file_name, scale):
task = ee.batch.Export.image.toDrive(**{
'image': image,#Zu ladende Satelliteninformationen
'description': file_name,#Dateiname zum Speichern
'folder':dir_name,#Speichern Sie den Namen des Zielordners
'scale': scale,#Auflösung
'region': geometry.getInfo()['coordinates'],#Zielgebiet
'crs': 'EPSG:4326'
})
# Run exporting
task.start()
print('Done.')
##Parameter angeben
#Bestimmen Sie einen Satelliten
snippet = 'NOAA/DMSP-OLS/NIGHTTIME_LIGHTS'
#Geben Sie den Bandnamen an
band = 'avg_vis'
#Geben Sie den Zeitraum an
from_date='2010-01-01'
to_date='2012-12-31'
#Bereich angeben(Geben Sie den Breiten- / Längengrad für das Gebiet Japan an)
geometry = ee.Geometry.Rectangle([128.60, 29.97, 148.43, 46.12])
#Ordnername zum Speichern
dir_name = 'GEE_download'
#Dateiname
file_name = 'file_name'
#Auflösung
scale = 1000
##Ausführung der Verarbeitung----------------------------------------------
num_data, data_list = load_data(snippet=snippet, from_date=from_date, to_date=to_date, geometry=geometry, band=band)
print('#Datasets; ', num_data)
##Alle speichern (Dateiname verwendet Satelliten-ID)
for i in range(data_list.size().getInfo()):
image = ee.Image(data_list.get(i))
save_on_gdrive(image, geometry, dir_name, image.getInfo()['id'].replace('/', '_'), scale)
schließlich
――In diesem Artikel haben wir die Methode der Satellitenbildanalyse mit verschiedenen Google-Diensten (GEE, Colab und Drive) vorgestellt.
――Bei der Verwendung von GEE ist es attraktiv, verschiedene im Datenkatalog aufgeführte Satellitendatensätze mit demselben Befehl verwenden zu können (normalerweise sind bei Verwendung von Satellitendatensätzen unterschiedliche Formate und Komplexitäten für jede Betriebseinrichtung attraktiv. Eine Vorverarbeitung ist erforderlich, aber mithilfe von GEE können sich Analysten auf Analyse und Nutzung konzentrieren.)
- Durch die Verwendung von Goole Colab werden in diesem Artikel auch keine grundlegenden Visualisierungen und Analysen vorgestellt. Sie können jedoch problemlos auf maschinelles Lernen mit Satellitendaten als Eingabe erweitern, indem Sie zur GPU-Umgebung wechseln. tun können
- GEEs Datenkatalog enthält viele Datensätze, daher bin ich an einer globalen Umgebungsanalyse mit diesem Artikel als Ausgangspunkt interessiert. Ich hoffe du kannst es bringen