[Einführung] Künstliche Satellitendatenanalyse mit Python (Google Colab-Umgebung)

Einführung - Was sind Satellitendaten?

Zieldaten

――In diesem Artikel wird die Verwendung des Satellitendatensatzes am Beispiel von ** Nachtlichtdaten ** vorgestellt. image.png Image and Data processing by NOAA's National Geophysical Data Center. DMSP data collected by the US Air Force Weather Agency.

Was ist NightTime Lights?

――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.

Datenübersicht

Nutzungsbild

Grundlegende Bedienung in Python

--Verwenden Sie die folgende Bibliothek (in diesem Artikel werden nur die minimal erforderlichen Funktionen vorgestellt). --Ladendaten: Rasterio

Analyseumgebung

Arbeitsablauf

―― 1. Datenerfassung ―― 2. Daten lesen ―― 3. Extraktion des erforderlichen Bereichs ―― 4. Datenvisualisierung / -analyse - Visualisieren / vergleichen Sie Nachtlichtdaten für jedes Land-

1. Datenerfassung

-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 image.png ―― 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.

#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/')

2. Daten lesen

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 ** image.png

―― 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.

3. Extraktion der benötigten Fläche

#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) image.png

4. Datenvisualisierung / -analyse

#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 image.png

1992 Chinesische Nachtlichtdaten image.png

1992 Thai Nachtlichtdaten image.png

1992 kambodschanische Nachtlichtdaten image.png

―― 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.

Ergänzung

――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.

Schließlich

――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

[Einführung] Künstliche Satellitendatenanalyse mit Python (Google Colab-Umgebung)
Datenanalyse mit Python-Pandas
[Technisches Buch] Einführung in die Datenanalyse mit Python -1 Kapitel Einführung-
Erstellen einer Google-Tabelle mit der Python / Google Data-API
Datenanalyse Python
[Umgebungskonstruktion] Abhängigkeitsanalyse mit CaboCha mit Python 2.7
Datenanalyse mit Python 2
Datenanalyse mit xarray
Datenanalyse Übersicht Python
Datenbereinigung mit Python
Python-Datenanalysevorlage
Datenanalyse mit Python
[Python] [Word] [python-docx] Einfache Analyse von Diff-Daten mit Python
Lesehinweis: Einführung in die Datenanalyse mit Python
Einfache Möglichkeit, mit Google Colab mit Python zu kratzen
Aufbau einer Datenanalyseumgebung mit Python (IPython Notebook + Pandas)
[Python] Abrufen von Insight-Daten mithilfe der Google My Business-API
Kostenlose künstliche Satellitenbildanalyse mit Google Earth Engine und Google Colab-Satellitenbildanalyse (Einführung) -
Mein Python-Datenanalyse-Container
Visualisieren Sie die Pflanzenaktivität aus dem Weltraum mithilfe von Satellitendaten und Python
Python für die Datenanalyse Kapitel 4
Aufblasen von Textdaten durch erneute Übersetzung mithilfe der Google-Übersetzung in Python
20200329_Einführung in die Datenanalyse mit Python 2nd Edition Personal Summary
Meine Python-Datenanalyseumgebung
Erstellen Sie eine Python-Datenanalyseumgebung auf einem Mac (El Capitan).
Lernnotizen zur Python-Datenanalyse
Python für die Datenanalyse Kapitel 2
[Python] Einführung in die Diagrammerstellung mit Corona-Virendaten [Für Anfänger]
Spielen Sie mit der YouTube Data API v3 mit dem Google API Python Client
Python für die Datenanalyse Kapitel 3
Einführung in die Datenanalyse mit Python P32-P43 [ch02 3.US Babynamen 1880-2010]
Einführung in die Datenanalyse mit Python P17-P26 [ch02 1.usa.gov Daten von bit.ly]
Erstellen Sie ein USB-Boot-Ubuntu mit einer Python-Umgebung für die Datenanalyse
Erste Satellitendatenanalyse von Tellus
Datenerfassung mit Python Googlemap API
Python: Zeitreihenanalyse: Vorverarbeitung von Zeitreihendaten
[Python3] Google übersetzt Google Übersetzung ohne Verwendung von API
Verwenden von Cloud-Speicher aus Python3 (Einführung)
Vorverarbeitungsvorlage für die Datenanalyse (Python)
Empfehlung zur Datenanalyse mit MessagePack
Datenanalyse beginnend mit Python (Datenvisualisierung 1)
Einführung in die Bildanalyse opencv python
Datenanalyse beginnend mit Python (Datenvisualisierung 2)
Python3.6-Umgebungskonstruktion (unter Verwendung der Win-Umgebung Anaconda)
Ich habe versucht, fMRI-Daten mit Python zu analysieren (Einführung in die Dekodierung von Gehirninformationen)
Python-Entwicklungsumgebung für macOS mit venv 2016
Python-Visualisierungstool für die Datenanalyse
Einführung in die diskrete Ereignissimulation mit Python # 1
[Einführung in Python3, Tag 17] Kapitel 8 Datenziele (8.1-8.2.5)
Verwenden von venv in der Windows + Docker-Umgebung [Python]
[Anfänger] Leicht verständliches Python-Web-Scraping mit Google Colaboratory
[Einführung in Python3, Tag 17] Kapitel 8 Datenziele (8.3-8.3.6.1)
[Python] Erstellen Sie eine Stapelumgebung mit AWS-CDK
Holen Sie sich Google Fit API-Daten in Python
Versuchen Sie, Python mit Google Cloud-Funktionen zu verwenden
Empfehlungs-Tutorial mit Assoziationsanalyse (Python-Implementierung)
[Einführung in Python3 Tag 19] Kapitel 8 Datenziele (8.4-8.5)
Holen Sie sich Youtube-Daten in Python mithilfe der Youtube-Daten-API
[Einführung in Python3 Tag 18] Kapitel 8 Datenziele (8.3.6.2 bis 8.3.6.3)
[Python] Erste Datenanalyse / maschinelles Lernen (Kaggle)
Erstellen einer Datenanalyseanwendung mit Streamlit