(Aktualisieren) Die Methode zum Erstellen eines zusammengesetzten Bildes wurde aktualisiert.
Bisher haben wir die Erfassung von Satellitenbildern der europäischen Sentinel-Serie für künstliche Satelliten mit Google Earth Engine und deren Analysemethode eingeführt. Dieses Mal werden wir die Erfassungs- und Analysemethode von Satellitenbildern von Sentinel-2 vorstellen, einem optischen Beobachtungssatelliten, der allen in der Sentinel-Serie bekannt ist. Schauen wir uns diesmal den Waldbrand an der Westküste der Vereinigten Staaten an, über den in den Nachrichten aus Übersee berichtet wurde.
Dies ist ein Satellitenbild einer Waldbrandstelle in der Nähe von Portland an der Westküste der Vereinigten Staaten (aufgenommen am 9. September 2020).
Auf Nachrichtenseiten in Übersee wird wie folgt berichtet. Diese Seite hat eine Geschichte von Waldbränden, und Sie können herausfinden, wo der Brand aufgetreten ist. Fire Maps: Glass and Zogg Wildfire Tracker
In Bezug auf die Situation der Site können die folgenden Sites real und gequetscht sein. Die New York Times hat viele interessante Artikel, die ich jeden Tag lese. Historic Wild Fires Range in Western States
Hier stellen wir Ihnen ein Beispiel vor, wie Sie das beobachtete Bild von Sentinel-2 mit Google Earth Engine erfassen und die Bilddaten in ein Farbbild konvertieren. Der im Artikel eingeführte Code befindet sich auch auf Github. Wenn Sie ihn also selbst ausprobieren möchten, verwenden Sie ihn bitte. ** Google Colaboratory wird verwendet **, sodass Sie es unabhängig vom PC verwenden können, solange Sie über eine Netzwerkumgebung verfügen **.
Zuvor habe ich mithilfe der API von Sentinel ein Bild aufgenommen, das Anfang 2020 von einem künstlichen Satelliten eines australischen Waldbrands aufgenommen wurde, und eine GIF-Animation davon erstellt.
Ich habe Zeitrafferaufnahmen von Satellitenbildern australischer Waldbrände gemacht.
Hier wurde das 100 km² große Standardbild von Sentinel-2 unter Verwendung der API aufgenommen, und der interessierende Teil wurde ausgeschnitten und die Verarbeitung der Farbzusammensetzung durchgeführt. Zu diesem Zeitpunkt ist die Szene je nach Abbildungszeitpunkt unterschiedlich, sodass das Bild einige Kerben aufweist. Selbst wenn es sich um unterschiedliche Szenen handelt, können Sie sich ein Bild des gesamten Interessensgebiets machen, indem Sie jede einzelne Szene erfassen und zusammenführen. Die Verarbeitung mehrerer großer Bilder ist jedoch angesichts der Erfassungszeit nicht sehr effizient. Daher werden wir dieses Mal das im interessierenden Bereich ausgeschnittene Bild von der Google Earth Engine (im Folgenden als GEE bezeichnet) erfassen und ein zusammengesetztes Farbbild erstellen. Die Sentinel-Serie ist eine Erdbeobachtungsserie, die von der Europäischen Weltraumorganisation entwickelt und betrieben wird und bereits von 1 bis 5 gestartet und betrieben wurde. Dieses Mal werden wir die Bildverarbeitung aus der Erfassung von Satellitenbildern von Sentinel-2 einführen, die sowohl optische Beobachtungsbilder als auch Digitalkamerabilder erfassen.
Sentinel-2 ©ESA 2000-2018.
Einzelheiten zum Beobachtungsplan und zu den Beobachtungsbildern von Sentinel-2 finden Sie unter So erhalten Sie kostenlos die neuesten Satellitenbilder. .
Sentinel-2 nimmt Bilder mit 12 verschiedenen Wellenlängen auf.
(Credit: European Space Agency)
Ein allgemeines Satellitenbild (True Color) kann erstellt werden, indem die Bänder 4, 3 und 2 auf R, G und B eingestellt werden.
Dieses Mal konzentrieren wir uns auf Waldbrände und versuchen, die Brände mithilfe von Beobachtungsbildern von Infrarotwellenlängen zu visualisieren. Dieses Mal verweise ich auf die folgenden Artikel.
In diesem Artikel werfen wir einen Blick auf die Waldbrandszene mit Bildern der langwelligen Bänder 12 und 11, die feuerempfindlich sind, und 8A, die empfindlich auf Wald reagieren.
Weitere Informationen zum Erfassen von Satellitenbildern mit GEE finden Sie im folgenden Artikel. Künstliche Satellitenbildanalyse durch Google Earth Engine und kostenlose Google Colab-Satellitenbildanalyse (Einführung) -
Weitere Informationen zur Analysemethode von Satellitenbildern von GEE finden Sie im folgenden Artikel.
Ich habe den Nutzungsstatus des Parkplatzes anhand von Satellitenbildern überprüft.
Obwohl es einige Überschneidungen gibt, werden wir die Erfassung von Satellitenbildern und deren Verarbeitung einführen.
import ee
import numpy as np
import matplotlib.pyplot as plt
ee.Authenticate()
ee.Initialize()
Führen Sie dies zunächst aus, um die GEE-Verbindung zu authentifizieren. Wenn Sie es ausführen, wird der Link zurückgegeben. Klicken Sie darauf, um den Authentifizierungsvorgang durchzuführen, kopieren Sie den Zugangscode und geben Sie ihn ein.
Authentifizieren Sie anschließend die Verbindung zu Google Drive. Auch hier entspricht der Ablauf der GEE-Zertifizierung.
from google.colab import drive
drive.mount('/content/drive')
Als nächstes führen wir Arbeiten wie das Betrachten des erfassten Satellitenbilds und das Installieren der für die Digitalisierung und Analyse erforderlichen Module durch.
#Paketinstallation&importieren
!pip install rasterio
import numpy as np
import matplotlib.pyplot as plt
import rasterio
import json
import os
import glob
import time
from datetime import datetime
from dateutil.parser import parse
Häufig verwendete Module sind bereits in Google Colaboratory installiert, sodass keine zusätzlichen Arbeiten erforderlich sind. Dieses Mal verwenden wir jedoch Geotiff, ein Bild mit hinzugefügten Karteninformationen, das für die Bildverarbeitung erforderlich ist ** Rasterio Installieren **.
Installieren Sie als Nächstes ein Modul namens ** folium **, um den festgelegten Zielbereich auf der Karte zu überprüfen.
!pip install folium
import folium
Nachdem die Umgebung bereit ist, nehmen Sie das Satellitenbild von GEE auf.
Um Satellitenbilder von GEE zu erfassen, müssen Sie die Breiten- / Längengrade des Zielgebiets eingeben, an dem Sie interessiert sind. Auch dieses Mal erhalten wir es über die folgende Website, die erstellt wurde, um den ** Breiten- und Längengrad ** des interessierenden Gebiets einfach zu überprüfen und zu ermitteln.
#Erfassung von Polygoninformationen des interessierenden Bereichs.
from IPython.display import HTML
HTML(r'<iframe width="1000" height="580" src="https://gispolygon.herokuapp.com/" frameborder="0"></iframe>')
Wenn Sie dies ausführen, wird der folgende Bildschirm angezeigt.
Wählen Sie nach dem Erweitern des interessierenden Bereichs das quadratische Polygon aus dem Symbol links aus, um das Polygon des interessierenden Bereichs anzuzeigen. Klicken Sie anschließend auf ** Features anzeigen **, um die geografischen Informationen des Polygons im rechten Fenster anzuzeigen. Klicken Sie dann unten auf ** Kopieren **, um diese geografischen Informationen zu kopieren. Dieses Mal werden wir Satellitenbilder des östlichen Gebiets von Portland in Oregon, USA, aufnehmen.
Fügen Sie dann die kopierten Karteninformationen unten ein und geben Sie sie ein.
A = {"type":"FeatureCollection","features":[{"properties":{"note":"","distance":"210025.76 m","drawtype":"rectangle","area":"520197.34 ha"},"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[-122.60860204696657,44.80966973731369],[-122.60860204696657,45.400920907537866],[-121.60266637802125,45.400920907537866],[-121.60266637802125,44.80966973731369],[-122.60860204696657,44.80966973731369]]]}}]}
Diese geografischen Informationen werden im Eingabeformat für GEE und zur Anzeige in Folium verarbeitet.
#Legen Sie einen beliebigen Dateinamen fest, der in Zukunft verwendet werden soll. Zum Beispiel der Name des Gebiets.
object_name = 'Portland'
with open(str(object_name) +'_2.geojson', 'w') as f:
json.dump(A, f)
json_file = open(str(object_name) +'_2.geojson')
json_object = json.load(json_file)
#Nur die Breiten- / Längengradinformationen des interessierenden Gebiets werden aus json extrahiert.
AREA = json_object["features"][0]["geometry"]['coordinates'][0]
Lassen Sie uns nun den eingestellten Bereich von Interesse überprüfen.
m = folium.Map([(AREA[0][1]+AREA[len(AREA)-2][1])/2,(AREA[0][0]+AREA[len(AREA)-3][0])/2], zoom_start=9)
folium.GeoJson(str(object_name) +'_2.geojson').add_to(m)
m
Ausgabe
Viele Satellitenbilder und viele bereits analysierte Informationen werden in GEE eingestellt. Weitere Informationen finden Sie unter Datenkatalog. Sentinel-1 und 2 sind wie folgt.
Sentinel-2 MSI: MultiSpectral Instrument, Level-1C
Auf dieser Seite können Sie die Daten des ** Sentinel-2-Beobachtungsbilds vom 23. Juni 2015 ** verwenden.
Holen Sie sich jetzt das Bild von Sentinel-2 von GEE und speichern Sie es im Google-Labor.
Bereiten Sie zunächst das Format der in GEE einzustellenden geografischen Informationen vor.
region=ee.Geometry.Polygon(AREA)
Stellen Sie als Nächstes die Parameter der zu erfassenden Informationen ein. Dieses Mal werden der Zeitraum des erfassten Bildes und das Speicherziel des erfassten Bildes angegeben. Dieses Mal haben wir bestätigt, dass wir das Gebiet am 9. September beobachtet haben, also haben wir den Zeitraum festgelegt, um nur dieses Bild aufzunehmen.
#Geben Sie den Zeitraum an
from_date='2020-09-08'
to_date='2020-09-10'
#Ordnername zum Speichern
dir_name_s2 = 'GEE_Sentinel2_' + object_name
Lassen Sie uns nun die Bildbedingungen für Sentinel-2 festlegen.
def ImageExport(image,description,folder,region,scale):
task = ee.batch.Export.image.toDrive(image=image,description=description,folder=folder,region=region,scale=scale)
task.start()
Sentinel2 = ee.ImageCollection('COPERNICUS/S2').filterBounds(region).filterDate(parse(from_date),parse(to_date)).filterMetadata('CLOUDY_PIXEL_PERCENTAGE','less_than', 80).select(['B12','B11','B8A'])
imageList_s2 = Sentinel2.toList(300)
Hier setzen wir die Farbverbundbilder von ** B12 **, ** B11 ** und ** B8A ** ein, die für die Farbzusammensetzung unter den Beobachtungsbildern von Sentinel-2 verwendet werden. Obwohl es möglich ist, den Wolkenanteil im Bild von Sentinel-2 zu filtern, ist er auf 80% eingestellt, was höher als üblich ist, um zu vermeiden, dass Rauch aus Feuer als Wolken falsch erkannt wird. Unter den obigen Bedingungen für die Satellitenbildaufnahme wird nun das Bild des interessierenden Bereichs von Sentinel-2 aufgenommen.
for i in range(imageList_s2.size().getInfo()):
image = ee.Image(imageList_s2.get(i))
ImageExport(image.reproject(crs='EPSG:4326',scale=10),image.get('system:index').getInfo(),dir_name_s2,region['coordinates'][0],10)
Zeigen Sie das aufgenommene Satellitenbild an und bestätigen Sie es. Satellitenbilder werden in dem Verzeichnis (Ordner) gespeichert, das auf meinem Laufwerk von Google Drive festgelegt ist. Rufen Sie es an und zeigen Sie es an.
#Visualisierung in chronologischer Reihenfolge
s2_path = '/content/drive/My Drive/' + dir_name_s2 + '/'
files =os.listdir(s2_path)
files.sort()
plt.figure(figsize=(25, 25))
j=0
v = len(files)//5 +1
for i in range(len(files)):
#Erfassen und visualisieren Sie Bilder Szene für Szene
with rasterio.open(s2_path + files[i]) as src:
arr = src.read()
j+=1#Verschieben und platzieren Sie die Plotposition des Bildes
plt.subplot(v,5,j)
arrayImg = np.asarray(arr).transpose(1,2,0).astype(np.float16)/10000
plt.imshow(arrayImg)
plt.title(files[i][0:8])#Datum vom Dateinamen abrufen
plt.tight_layout()
Wir haben vier Bilder der Gegend aufgenommen. Der Grund, warum es in vier Teile unterteilt ist, besteht darin, dass Sentinel-2 registriert wird, indem das Bild in ein Quadrat von 100 km unterteilt wird. Dieser interessierende Bereich enthält die vier Teilbilder. Durch die Synthese des ersten und des zweiten Bildes wird der interessierende Bereich abgedeckt. Erstellen Sie daher ein ** zusammengesetztes Bild ** dieser beiden Bilder. Überprüfen Sie zunächst jedes Bild.
#Überprüfen Sie das Bild
s2_path = '/content/drive/My Drive/' + dir_name_s2 + '/'
files =os.listdir(s2_path)
files.sort()
#Daten lesen
n = 0
with rasterio.open(s2_path + files[n]) as src:
arr = src.read()
print(files[n][0:8])
#Visualisierung
arrayImg0 = np.asarray(arr).transpose(1,2,0).astype(np.float16)/10000
plt.imshow(arrayImg0)
#Überprüfen Sie das Bild
s2_path = '/content/drive/My Drive/' + dir_name_s2 + '/'
files =os.listdir(s2_path)
files.sort()
#Daten lesen
n = 1
with rasterio.open(s2_path + files[n]) as src:
arr = src.read()
print(files[n][0:8])
#Visualisierung
arrayImg1 = np.asarray(arr).transpose(1,2,0).astype(np.float16)/10000
plt.imshow(arrayImg1)
Kombinieren Sie als Nächstes diese beiden Bilder. ** (Update) ** Ich denke, es gibt mehrere Möglichkeiten, Bilder zu kombinieren, aber zuvor habe ich numpy verwendet, um sie zu kombinieren, aber ich werde sie mit dem Befehl rasterio merge kombinieren, den Sie in den Kommentaren empfohlen haben.
import rasterio.merge
dest, out_transform = rasterio.merge.merge([s2_path + files[0], s2_path + files[1]])
Das zusammengesetzte Bild wird aufgrund der Reihenfolge der RGB-Kanäle Vertikal und Horizontal durch die Transponierungsfunktion konvertiert.
image = dest/10000
img_transformed = image.transpose((1, 2, 0))
img_transformed.shape
Ausgabe
(6596, 11199, 3)
Geben Sie das Bild aus.
plt.imshow(img_transformed)
Sie können es gut synthetisieren. (Vor dem Update befand sich an der Verbindungsstelle ein schwarzer Teil.) Speichern Sie nun dieses zusammengesetzte Bild als JPEG.
import cv2
new_image = ((img_transformed - img_transformed.min()) * (1/(img_transformed.max() - img_transformed.min()) * 255)).astype('uint8')
im_rgb = cv2.cvtColor(new_image, cv2.COLOR_BGR2RGB)
cv2.imwrite(str(object_name) +'.jpg', im_rgb )
img = Image.open(str(object_name) +'.jpg')
plt.figure(figsize=(15, 20))
plt.imshow(img)
plt.show()
Als nächstes werde ich das Datum der Bildgebung des künstlichen Satelliten und die Gutschrift des Bildes auf dieses Bild setzen.
Als nächstes werden das Aufnahmedatum und das Guthaben des Satellitenbildes in diesem Bild beschrieben. Die hier verwendete Schriftart ist diejenige, die im Internet kostenlos für die Öffentlichkeit zugänglich ist. Dies ist auch dein Favorit.
#Laden Sie Schriftdateien herunter und konfigurieren Sie sie
!wget https://osdn.net/dl/mplus-fonts/mplus-TESTFLIGHT-063a.tar.xz
!xz -dc mplus-TESTFLIGHT-*.tar.xz | tar xf -
fontfile = "./mplus-TESTFLIGHT-063a/mplus-1c-bold.ttf"
Schreiben Sie nun die Zeichen auf das Bild.
date = files[n][0:8]
img = Image.open(str(object_name) +'.jpg')
img = img.convert('RGB')
x = int(img.size[0]/1.3) #Einstellen der Datumsbeschreibungsposition
y = int(img.size[1]/20) #Einstellen der Datumsbeschreibungsposition
fs = int(img.size[0]/70) #Einstellen der Schriftgröße für das Datum
obj_draw = ImageDraw.Draw(img)
obj_font = ImageFont.truetype(fontfile, fs)
obj_draw.text((x, y), 'Observation Date: '+str(date), fill=(255, 255, 255), font=obj_font)
obj_draw.text((img.size[0]/1.6, img.size[1]-y*0.1 - img.size[1]/30 ), 'Contains modified Copernicus Sentinel data (2020)', fill=(255, 255, 255), font=obj_font)
img = img.resize((int(img.size[0] / 2) , int(img.size[1] / 2)))
img.save(str(object_name) +'.jpg')
plt.figure(figsize=(15, 20))
plt.imshow(img)
plt.show()
Jetzt haben Sie die notwendigen Informationen auf dem Bild. Ändern Sie den obigen Code, um die Position, Größe, Farbe usw. der Zeichen nach Ihren Wünschen anzupassen. Die erstellte Bilddatei kann auf Ihren PC heruntergeladen werden, indem Sie mit der rechten Maustaste auf den Namen der Zieldatei in der Dateiliste links klicken und ** Herunterladen ** auswählen.
Mit der von Google bereitgestellten ** Google Earth Engine ** haben wir als Analysebeispiel eingeführt, wie Satellitenbilder von ** Sentinel-2 ** erfasst und Bilder von ** Waldbränden ** an der Westküste der USA verarbeitet werden. .. Waldbrände dauern immer noch an und es wurden große Schäden gemeldet. Ich bete, dass die Aktivitäten der Feuerwehr fruchtbar werden und dass sie bald zu ihrem normalen Leben zurückkehren. Wenn Sie Kommentare oder Fragen haben, können Sie diese gerne kommentieren. Ich bin glücklich.
So erhalten Sie kostenlos die neuesten Satellitenbilder. Ich habe versucht, das Beobachtungsbild des künstlichen Satelliten (Sentinel-2) mithilfe der API automatisch zu erfassen. Erstellen Sie eine geschätzte Verbreitungskarte von Autos aus künstlichen Satellitenbildern von PyTorch. Ich habe den Nutzungsstatus des Parkplatzes anhand von Satellitenbildern überprüft. Ich habe Zeitrafferaufnahmen von Satellitenbildern australischer Waldbrände gemacht.
[Fortsetzung] Künstliche Satellitenbildanalyse von Google Earth Engine und Google Colab-Satellitenbildanalyse ab kostenlos (Übung) - Künstliche Satellitenbildanalyse durch Google Earth Engine und kostenlose Google Colab-Satellitenbildanalyse (Einführung) - [6. Lokale GEE-Ausführung durch Python](https://sites.google.com/site/mizuochipublic/%E5%AE%9F%E8%B7%B5%E3%82%B3%E3%83%B3 % E3% 83% 86% E3% 83% B3% E3% 83% 84-Fernerkundungs-Tutorials / Google Earth-Engine% E5% 85% A5% E9% 96% 80/6-Python% E3% 81 % AB% E3% 82% 88% E3% 82% 8B% E3% 83% AD% E3% 83% BC% E3% 82% AB% E3% 83% AB% E3% 81% 8B% E3% 82% 89 % E3% 81% AEgee% E5% AE% 9F% E8% A1% 8C)
Kihon der Satellitendaten - Verständnis, Typ, Frequenz, Auflösung, Anwendungsfall ~ Kannst du Leute vom künstlichen Satelliten sehen? ~ Per Satellit, Bodenauflösung / Ortszeitübersicht ~
Sentinel-2 MSI: MultiSpectral Instrument, Level-1C
Recommended Posts