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.
- Les satellites artificiels observent l'état de la Terre depuis l'espace avec divers capteurs, et ils sont libérés sous forme de ** données ouvertes **.
――Les données par satellite sont des mégadonnées et ont une forte affinité avec les technologies récentes d'apprentissage automatique et d'IA, mais les ressources de traitement requises (mémoire de stockage) ont tendance à être énormes et dans un environnement de PC personnel. L'obstacle est élevé à utiliser
Cependant, en utilisant les ressources cloud fournies par Google, ** les particuliers peuvent également effectuer gratuitement des analyses de données satellitaires **.
Dans cet article, nous présenterons des méthodes d'analyse de données satellitaires utilisant ** Google Earth Engine (GEE) ** et ** Google Colaboratory (Colab) **.
――Dans l '[Application] qui sera publiée ultérieurement, je voudrais présenter le traitement des données typiques (température de surface du sol, indice de végétation, indice de couverture de neige) qui peuvent être obtenues à partir des données satellitaires.
―― Dans l'analyse des données satellitaires, vous pouvez capturer diverses conditions environnementales mondiales en combinant divers capteurs, donc ** J'utiliserai le contenu de cet article comme une introduction pour vous aider à analyser les données sur des conditions environnementales familières **. Je pense que c'est intéressant
Caractéristiques de cet article
- Habituellement, GEE analyse à l'aide de JavaScript lors de la navigation.
――Cependant, ** je souhaite analyser avec Python, qui possède d'abondantes bibliothèques pour l'apprentissage automatique et l'analyse statistique **, donc ** seul le traitement minimum (extraction et stockage d'images satellite) est effectué avec l'API Python de GEE **, et * * Je vais vous montrer comment visualiser et analyser avec la bibliothèque python normale (numpy ou matplotlib) **
De plus, je souhaite analyser une grande quantité de données d'image satellite sans dépendre des ressources du PC local, je vais donc vous présenter une méthode pour terminer le processus uniquement dans l'environnement ** cloud de Google Colab + Google Drive ** (bien sûr). , Si vous spécifiez la destination d'enregistrement localement, vous pouvez effectuer la même analyse dans l'environnement local.)
Image de la bonne utilisation des services ~ Effectuer une analyse d'images satellite en utilisant uniquement les services cloud à l'aide des services Google ~
Présentation de Google Earth Engine (GEE)
--Google lance le service en décembre 2010
- Vous pouvez effectuer une analyse sur le serveur GEE sans télécharger l'image satellite artificielle sur votre ordinateur personnel.
- Dans l'analyse normale des données satellitaires, il est nécessaire de prendre en charge différents formats de données et de prétraiter les données, mais diverses données satellites sont préparées sur GEE, et seules les données nécessaires peuvent être chargées et utilisées.
--Peut être utilisé gratuitement à des fins de recherche, d'éducation et à des fins non commerciales (des plans payants sont également disponibles)
-Remarque) Il s'agit d'un service distinct de Google Earth où vous pouvez parcourir le globe.
Présentation de Google Colaboratory (Colab)
- Un service qui vous permet d'écrire et d'exécuter Python à partir d'un navigateur sans créer d'environnement
--GPU peut également être utilisé gratuitement
- Il existe de nombreux articles faciles à comprendre sur les grandes lignes et l'utilisation de Google Colab, veuillez donc les consulter.
- Présentation de Google Colab
- Résumé de l'utilisation de Google Colab
[Utilisation] Analyse d'images satellite sur GEE et Colab
Préparation de compte
- Inscrivez-vous sur la page officielle de Google Earth Engine (compte Google requis)
- 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.
- Copiez le code d'autorisation dans la boîte Google Colab
2. Charger les données satellite GEE
--Sélectionnez le ** nom du satellite ** que vous souhaitez charger à partir du catalogue de données
- Ici, sélectionnez DMSP-OLS, qui collecte les données de lumière nocturne.
- Pour la veilleuse, reportez-vous à article précédent "Que sont les données de veilleuse?"
--Sélectionnez le ** nom du groupe ** à partir duquel vous souhaitez charger les données
- Habituellement, les satellites artificiels acquièrent des données dans plusieurs bandes (capteurs avec différentes longueurs d'onde), alors spécifiez le nom de bande qui convient à votre objectif.
- Ici, sélectionnez «avg_vis», qui est le corps principal des données de veilleuse.
- 'avg_vis' est un capteur qui exprime l'intensité de la veilleuse avec une valeur entière de 0 à 63.
--Spécifiez la ** période ** pour laquelle vous souhaitez charger des données
- Habituellement, les satellites sont des données chronologiques qui continuent d'être observées de manière récursive (la fréquence d'observation varie en fonction du satellite).
--Sélectionnez la période de données que vous souhaitez y acquérir
--Spécifiez la ** zone ** où vous souhaitez charger les données
- Puisque le satellite artificiel observe la Terre entière, spécifiez la zone requise.
Ici, nous adoptons la méthode d'extraction des données sous forme de rectangle utilisant la latitude et la longitude.
--Spécifier avec ee.Geometry.Rectangle ([xMin, yMin, xMax, yMax])
--xMin = (longitude inférieure gauche), yMin = (latitude inférieure gauche), xMax = (longitude supérieure droite), yMax = (latitude supérieure droite)
#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
- Vous pouvez enregistrer n'importe quelle image en la convertissant au format de liste.
- En utilisant ee.batch.Export.image.toDrive, les données sont enregistrées dans le dossier spécifié dans MyDrive de Google Drive.
- Vous pouvez également spécifier la résolution de l'image avec l'échelle lors du téléchargement de l'image.
##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.
- Cela prend du temps en fonction de la taille des données à charger, et vous pouvez vérifier la progression avec task.active ().
Si task.active () = True, GEE est en train de traiter, alors attendez jusqu'à False
#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"
―― 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.
- De plus, en utilisant le fichier vectoriel et les géopandas introduits dans Article précédent, vous pouvez évider et visualiser les données par pays ou préfecture. Il est également possible de calculer les changements
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.)
- De plus, en utilisant Goole Colab, la visualisation et l'analyse de base ne sont pas présentées dans cet article, mais vous pouvez facilement passer à la formation au machine learning en utilisant les données satellites en entrée en passant à l'environnement GPU. peut faire
- Le catalogue de données de GEE contient de nombreux ensembles de données, je m'intéresse donc à l'analyse de l'environnement mondial avec cet article comme point de départ. J'espère que vous pouvez l'apporter