[PYTHON] Analyse d'images satellites artificielles par Google Earth Engine et Google Colab-Analyse d'images satellite à partir de gratuitement (Introduction) -

introduction

―― Ces dernières années, le nombre de cas où des données satellitaires artificielles sont utilisées dans la société et les entreprises est en augmentation.

Caractéristiques de cet article

Image de la bonne utilisation des services ~ Effectuer une analyse d'images satellite en utilisant uniquement les services cloud à l'aide des services Google ~

image.png

Présentation de Google Earth Engine (GEE)

--Google lance le service en décembre 2010

Présentation de Google Colaboratory (Colab)

[Utilisation] Analyse d'images satellite sur GEE et Colab

Préparation de compte

  1. Inscrivez-vous sur la page officielle de Google Earth Engine (compte Google requis)
  2. Une fois inscrit, vous pourrez accéder au catalogue de données, qui est une liste de données satellite disponibles sur GEE.

Utilisation de GEE dans un environnement Python (Google Colab)

1. Authentifiez GEE à partir de Google Colab à l'aide de l'API Python

#Importer l'API Earth Engine Python
import ee
#Certification / initialisation GEE
ee.Authenticate()
ee.Initialize()

--Lorsque vous exécutez l'authentification GEE, l'URL requise pour l'authentification s'affiche. --Lorsque vous accédez à l'URL et spécifiez votre compte Google, le code de vérification s'affiche.

2. Charger les données satellite GEE

--Sélectionnez le ** nom du satellite ** que vous souhaitez charger à partir du catalogue de données

#Spécifiez le nom du satellite
satellite = 'NOAA/DMSP-OLS/NIGHTTIME_LIGHTS'
#Spécifiez le nom du groupe
band = 'avg_vis'
#Précisez la période
from_date='2010-01-01'
to_date='2012-12-31'
##Spécifiez la zone(Spécifiez la latitude / longitude pour la région du Japon)
geometry = ee.Geometry.Rectangle([128.60, 29.97, 148.43, 46.12])

#Charger des données depuis GEE dans des conditions spécifiées
dataset = ee.ImageCollection(satellite).filter(
    ee.Filter.date(from_date, to_date)).filter(
    ee.Filter.geometry(geometry)).select(band)

――Comme ce produit satellite est un ensemble de données annuelles, il existe des données pour trois ans de 2010 à 2012. ――La fréquence de mesure diffère selon le satellite, et il est nécessaire de noter qu'une grande quantité de données sera chargée si une longue période est spécifiée pour les satellites à résolution temporelle fine (par exemple les satellites observés tous les 12 jours). --Le nombre de données cibles peut être confirmé avec la commande suivante

#Confirmation du nombre de données cibles
print(dataset.size().getInfo())

3. Sauvegarde des données d'image satellite

--Enregistrer les données satellite spécifiées sur Google Drive

##Convertir au format liste
data_list = dataset.toList(dataset.size().getInfo())
#Obtenez la 0ème image (image 2010)
image = ee.Image(data_list.get(0))

#Enregistrer sur Gdrive
task = ee.batch.Export.image.toDrive(**{
    'image': image,#Désignation des données cibles
    'description': 'sample_dataloading_NTL',#Spécifiez le nom du fichier
    'folder':'GEE_download',# Google Drive(MyDrive)Nom de dossier
    'scale': 1000,#Spécifier la résolution
    'region': geometry.getInfo()['coordinates']#Zone cible spécifiée ci-dessus
})

#Exécution du traitement
task.start()

--Lorsque vous exécutez la commande ci-dessus, un fichier appelé sample_dataloading_NTL est enregistré dans Google Drive> My Drive> GEE_download.

#Vérifier l'état du traitement des données (True indique que le traitement est en cours)
task.active()

4. Confirmation de l'image satellite enregistrée

#Installation du package&importer
!pip install rasterio
import numpy as np
import matplotlib.pyplot as plt
import rasterio

#Lire les données
with rasterio.open('/content/drive/My Drive/GEE_download/sample_dataloading_NTL.tif') as src:
    arr = src.read()

#Obtenez des données au format numpy-> (1, 1847, 2208)Entrez dans un éventail de
print(arr.shape)

#Visualisation
plt.imshow(arr[0])

"Données de la veilleuse DMSP-OLS 2010" image.png

―― Puisque arr est au format numpy, vous pouvez calculer la valeur statistique des données satellitaires, acquérir les données de l'année suivante et les comparer en séries chronologiques et effectuer des analyses librement.

Fonctionnalisation d'une série de processus

--Enfin, la série de processus ci-dessus est transformée en fonction. ―― La prochaine fois, j'aimerais utiliser cette fonction pour effectuer des analyses à l'aide de divers indicateurs (température de surface du sol, indice de végétation, indice de couverture de neige, etc.) observés à l'aide de satellites artificiels.


#Importer l'API Earth Engine Python
import ee

#Certification / initialisation GEE
ee.Authenticate()
ee.Initialize()

#Chargement de données GEE
def load_data(snippet, from_date, to_date, geometry, band):
    #Extraire les données selon les conditions des paramètres
    dataset = ee.ImageCollection(snippet).filter(
    ee.Filter.date(from_date, to_date)).filter(
    ee.Filter.geometry(geometry)).select(band)
    #Convertir en type de liste
    data_list = dataset.toList(dataset.size().getInfo())
    #Sortie du nombre de données cibles et de la liste de données
    return dataset.size().getInfo(), data_list

#Enregistrer les images satellite sur Google Drive
def save_on_gdrive(image, geometry, dir_name, file_name, scale):
    task = ee.batch.Export.image.toDrive(**{
        'image': image,#Informations satellite à charger
        'description': file_name,#Nom de fichier à enregistrer
        'folder':dir_name,#Enregistrer le nom du dossier de destination
        'scale': scale,#résolution
        'region': geometry.getInfo()['coordinates'],#Zone cible
        'crs': 'EPSG:4326'
    })
    # Run exporting
    task.start()
    print('Done.')

##Spécification des paramètres
#Désigner un satellite
snippet = 'NOAA/DMSP-OLS/NIGHTTIME_LIGHTS'
#Spécifiez le nom du groupe
band = 'avg_vis'
#Précisez la période
from_date='2010-01-01'
to_date='2012-12-31'
#Spécifiez la zone(Spécifiez la latitude / longitude pour la région du Japon)
geometry = ee.Geometry.Rectangle([128.60, 29.97, 148.43, 46.12])
#Nom du dossier à enregistrer
dir_name = 'GEE_download'
#nom de fichier
file_name = 'file_name'
#résolution
scale = 1000

##Exécution du traitement----------------------------------------------
num_data, data_list = load_data(snippet=snippet, from_date=from_date, to_date=to_date, geometry=geometry, band=band)
print('#Datasets; ', num_data)

##Enregistrer tout (le nom du fichier utilise l'ID satellite)
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)

à la fin

――Dans cet article, nous avons présenté la méthode d'analyse d'images satellite à l'aide de divers services Google (GEE, Colab et Drive). ――En utilisant GEE, il est intéressant de pouvoir utiliser divers ensembles de données satellitaires répertoriés dans le catalogue de données avec la même commande (généralement, lors de l'utilisation d'ensembles de données satellites, différents formats et complexité pour chaque établissement d'exploitation sont attractifs. Un prétraitement est nécessaire, mais en utilisant GEE, les analystes peuvent se concentrer sur l'analyse et l'utilisation.)

Recommended Posts

Analyse d'images satellites artificielles par Google Earth Engine et Google Colab-Analyse d'images satellite à partir de gratuitement (Introduction) -
[Suite] Analyse d'images satellite artificielles par Google Earth Engine et Google Colab-Analyse d'images satellite à partir de gratuitement (pratique) -
[Introduction] Analyse de données satellitaires artificielles à l'aide de Python (environnement Google Colab)
Analyse d'images par apprentissage profond à partir de Kaggle et Keras