――In diesem Artikel wird die Verwendung des Satellitendatensatzes am Beispiel von ** Nachtlichtdaten ** vorgestellt. Image and Data processing by NOAA's National Geophysical Data Center. DMSP data collected by the US Air Force Weather Agency.
――Eine der von künstlichen Satelliten beobachteten Daten sind Nachtlichtdaten. ―― Einfach ausgedrückt, es sind die Daten, die nachts die Lichtmenge in der Stadt erfassen.
--Verwenden Sie die folgende Bibliothek (in diesem Artikel werden nur die minimal erforderlichen Funktionen vorgestellt). --Ladendaten: Rasterio
―― 1. Datenerfassung ―― 2. Daten lesen ―― 3. Extraktion des erforderlichen Bereichs ―― 4. Datenvisualisierung / -analyse - Visualisieren / vergleichen Sie Nachtlichtdaten für jedes Land-
-Kann von [DMSP-OLS-Daten-Download] heruntergeladen werden (https://ngdc.noaa.gov/eog/dmsp/downloadV4composites.html) --Klicken Sie auf den aktiven Link, um den Download zu starten ―― Wie im Hinweis angegeben, beträgt die komprimierte Datei zum Zeitpunkt des Downloads ** 300 MB **, beim Dekomprimieren jedoch 3 GB ** pro Datei. Arbeiten Sie also auf einem allgemeinen Notebook-PC. Etwas hart ――Daher wird in Google Colab eine Reihe von Verarbeitungen vom Herunterladen von Daten bis zur Dekomprimierung durchgeführt.
(Wenn Sie einen High-Spec-PC haben, können Sie ihn mit einem Klick herunterladen und entpacken ...)
Installieren Sie zunächst die erforderlichen Bibliotheken in Google Colab.
#Installation der erforderlichen Bibliotheken
!pip install sh
! pip install rasterio
!pip install geopandas
import os
from sh import wget, gunzip, mv
import tarfile
#Verzeichnis zur Datenspeicherung'data'Erstellen
if not os.path.exists('data'):
os.mkdir('data')
--Verwenden Sie den Befehl wget, um die komprimierten Daten herunterzuladen
#Erstellen Sie eine URL zum Herunterladen
target_data = 'F101992'
url = f'https://ngdc.noaa.gov/eog/data/web_data/v4composites/{target_data}.v4.tar'
#Daten herunterladen
wget(url)
#Dekomprimierung der komprimierten Datei (nur zutreffende Datei extrahieren)
with tarfile.open(f'/content/{target_data}.v4.tar') as tar:
# stable_lights.avg_vis.tif.Holen Sie sich den Dateinamen gz
file = [tarinfo for tarinfo in tar.getmembers() if tarinfo.name.endswith("web.stable_lights.avg_vis.tif.gz")]
#Entpacken Sie die Zieldatei (.gz)
tar.extractall(path='/content/', members=[file[0]])
#Entpacken Sie die Zieldatei (Entpacken)
gunzip(f'/content/{target_data}.v4b_web.stable_lights.avg_vis.tif.gz')
#Zieldatei verschieben
mv(f'/content/{target_data}.v4b_web.stable_lights.avg_vis.tif', '/content/data/')
import rasterio
import numpy as np
import matplotlib.pyplot as plt
with rasterio.open('/content/data/F101992.v4b_web.stable_lights.avg_vis.tif') as src:
data = src.read()#Lesen Sie im Numpy-Format
#Überprüfen Sie die Größe der Daten
data.shape
#Datenvisualisierung
plt.imshow(data[0])
plt.colorbar()
** Globale Nachtlichtdaten für 1992 **
―― Da es sich hier jedoch im heruntergeladenen Zustand (globale Daten) befindet, müssen die Daten in der Einheit, die Sie analysieren möchten, ausgeschnitten werden.
#Vektordatei herunterladen
wget('https://datahub.io/core/geo-countries/r/countries.geojson')
--Laden Sie als nächstes die erhaltene Geojson-Datei
import geopandas as gpd
#Geojson-Datei lesen
countries = gpd.read_file('/content/countries.geojson')
#Überprüfen Sie den Inhalt
countries.head()
#Grenzdatenvisualisierung
countries.plot()
#Extraktion japanischer Grenzen (normale Pandas.Datenrahmenbetrieb)
countries.query('ADMIN == "Japan"')
import rasterio.mask
with rasterio.open('/content/data/F101992.v4b_web.stable_lights.avg_vis.tif') as src:
out_image, out_transform = rasterio.mask.mask(src, countries.query('ADMIN == "Japan"').geometry, crop=True)
** Japans Nachtlichtdaten von 1992 ** (Es ist ersichtlich, dass die Lichtmenge in der Metropolregion groß ist)
#Funktionalisieren Sie eine Reihe von Prozessen
def load_ntl(target_data, area):
#Nur herunterladen, wenn keine Daten vorhanden sind
if not os.path.exists(f'/content/data/{target_data}.v4b_web.stable_lights.avg_vis.tif'):
url = f'https://ngdc.noaa.gov/eog/data/web_data/v4composites/{target_data}.v4.tar'
#Daten herunterladen
wget(url)
#Dekomprimierung der komprimierten Datei (nur zutreffende Datei extrahieren)
with tarfile.open(f'/content/{target_data}.v4.tar') as tar:
# stable_lights.avg_vis.tif.Holen Sie sich den Dateinamen gz
file = [tarinfo for tarinfo in tar.getmembers() if tarinfo.name.endswith("web.stable_lights.avg_vis.tif.gz")]
#Entpacken Sie die Zieldatei (.gz)
tar.extractall(path='/content/', members=[file[0]])
#Entpacken Sie die Zieldatei (Entpacken)
gunzip(f'/content/{target_data}.v4b_web.stable_lights.avg_vis.tif.gz')
#Zieldatei verschieben
mv(f'/content/{target_data}.v4b_web.stable_lights.avg_vis.tif', '/content/data/')
#Extrahieren Sie die Daten des entsprechenden Bereichs aus der TIF-Datei
with rasterio.open(f'/content/data/{target_data}.v4b_web.stable_lights.avg_vis.tif') as src:
out_image, out_transform = rasterio.mask.mask(src, countries.query(f'ADMIN == "{area}"').geometry, crop=True)
return out_image
#Funktion zur Visualisierung
def show(data):
plt.figure(figsize=(15, 5))
plt.subplot(121)
plt.imshow(data[0])
plt.subplot(122)
plt.hist(data.reshape(-1), bins=np.arange(1, 63, 1))
#Verwendungsbeispiel (Daten aus Japan 1992 erworben)
japan_1992 = load_ntl(target_data='F101992', area='Japan')
-Ich werde versuchen, das Nachtlicht verschiedener Länder zu visualisieren. (Sie können die Daten Ihres Lieblingslandes / -jahres überprüfen, indem Sie die Variablen target_data und area ändern.)
#Erhaltene Daten für Japan, China, Thailand und Kambodscha
japan_1992 = load_ntl(target_data='F101992', area='Japan')
china_1992 = load_ntl(target_data='F101992', area='China')
thailand_1992 = load_ntl(target_data='F101992', area='Thailand')
cambodia_1992 = load_ntl(target_data='F101992', area='Cambodia')
#Visualisierung
show(japan_1992)
show(china_1992)
show(thailand_1992)
show(cambodia_1992 )
1992 japanische Nachtlichtdaten
1992 Chinesische Nachtlichtdaten
1992 Thai Nachtlichtdaten
1992 kambodschanische Nachtlichtdaten
―― Auf diese Weise ist Japan ab 1992 im Allgemeinen hell, China hat eine große Landfläche, daher gibt es große Unterschiede zwischen den Städten, Thailand ist hell mit Autobahnen und lokalen Städten, die sich auf Bangkok konzentrieren, und Kambodscha ist eine andere als die Hauptstadt. Sie können die Tendenz jedes Landes wie Dunkelheit sehen. ――Hier werde ich nur die oben genannten Muster analysieren, aber ich denke, es wäre interessant, andere Altersgruppen und Länder zu vergleichen. ――Das Forschungsgebiet verwendet die Summe von NTL (Night Time Light) (Gesamtmenge des Nachtlichts für jedes Gebiet) als Index, und es wird eine vergleichende Analyse mit dem BIP und dem Energieverbrauchsindex durchgeführt.
――Wir haben die Nachtlichtdaten bisher eingeführt, aber auch bei den Nachtlichtdaten wurden einige Probleme gemeldet. ―― Da beispielsweise der Sensortyp für jede feste Einrichtung unterschiedlich ist (F10, F12 usw. im Header des Datennamens), treten geringfügig unterschiedliche Sensorverzerrungen auf. Daher ist bei der Analyse der Lichtmenge in einem langfristigen Trend eine Vorbehandlung erforderlich, um diese Verzerrungen zu beseitigen (viele Forschungsarbeiten wurden in der Behandlung namens Kalibrierung veröffentlicht). ―― Darüber hinaus drücken diese Daten die Menge des Nachtlichts als ganzzahligen Wert von 0 bis 63 aus. Obwohl es einfach zu handhaben ist, tritt das Sättigungsphänomen (Sättigung) an Punkten auf, an denen die Lichtmenge ziemlich groß ist und die Lichtmenge korrekt gemessen werden kann. Es hat auch die Eigenschaft, nicht anwesend zu sein.
――In diesem Artikel haben wir den Umgang mit Satellitendatensätzen in der Google Colab-Umgebung vorgestellt. ――Dieses Mal haben wir den Nachtlichtdatensatz eingeführt, aber verschiedene Satellitendatensätze sind als offene Daten für die Öffentlichkeit zugänglich, und Sie können sie grundsätzlich genauso behandeln wie diesmal.
Recommended Posts