Jusqu'à présent, nous avons acquis des images d'observation du hub Copernicus, qui est le hub des images satellites Sentinel, et analysé les images.
Comment obtenir gratuitement les dernières images satellite. J'ai essayé d'acquérir automatiquement l'image d'observation du satellite artificiel (Sentinel-2) en utilisant l'API.
J'ai fait une comparaison des images observées avec les images passées et l'animation Gif de la série chronologique, mais les images passées qui peuvent être acquises par l'API concernent l'année écoulée, et si vous voulez voir les tendances à plus long terme, gérez Copernicus séparément. J'ai dû contacter quelqu'un pour le préparer. Je me demandais si ce serait bien parce que je pourrais obtenir les dernières images d'observation, mais une connaissance m'a demandé «Je veux connaître les tendances à long terme» et je pensais travailler manuellement. À ce moment-là, lorsque j'ai pris connaissance de l'article suivant, j'ai appris que Google Earth Engine pouvait être utilisé pour ** acquérir et analyser en ligne des images d'observation passées du satellite Sentinel **. Je vous remercie.
Je connaissais Google Earth Engine (ci-après, GEE), mais je l'ai évité car il ne peut être utilisé que dans l'environnement GEE et le langage n'est pas Python. Cependant, ce n'est pas pratique car il peut être utilisé avec Google colaboratory de l'article ci-dessus, et vous n'avez pas à le traiter après avoir acquis l'image d'observation de Sentinel comme auparavant! J'ai trouvé que c'était relativement facile, je vais donc le présenter.
Voici un exemple d'analyse: ** Tendances de l'utilisation des parkings à Tokyo Disneyland **.
Je vais l'introduire dans cet article en incluant l'explication de ce graphique. De plus, le code introduit dans l'article est placé sur Github, donc si vous voulez l'essayer vous-même, veuillez l'utiliser. ** Google colaboratory est utilisé **, vous pouvez donc l'utiliser quel que soit le PC tant que vous disposez d'un environnement réseau **.
Pour la méthode d'estimation de l'état d'utilisation du parking à partir de l'image satellite, par exemple, l'article suivant peut être utile.
De cela, on peut voir que l'image d'observation du satellite SAR, qui est le satellite du capteur d'ondes radio, est également utilisée dans l'image satellite. Autrement dit, l'image d'observation optique nécessite une image haute résolution de ** 50 cm ou moins ** afin de confirmer le véhicule, et ** la zone cible doit être claire et claire sans nuages **. On dit que le taux de couverture nuageuse dans la région asiatique est d'environ 30% et, selon l'emplacement, il peut être couvert de nuages pendant plusieurs jours et ne peut pas être vu sur les images satellite. En comparaison, ** les images SAR sont difficiles à identifier le type de véhicule, comme une voiture ou un camion **, mais elles peuvent être évaluées qualitativement si un grand nombre de véhicules sont garés sur le parking. , Et comme il n'est pas affecté par les nuages, il peut être évalué de manière stable. Cette fois, contrairement au cas de l'estimation de la distribution du nombre de voitures à partir de photographies aériennes, nous trouverons la tendance relative de l'évolution du statut d'utilisation en fonction du statut d'utilisation de la voiture à une certaine date et heure. Par conséquent, même les images SAR peuvent être analysées. Cependant, il y a une différence de résolution même avec la même image SAR, et j'aimerais utiliser une image SAR haute résolution si possible. Je vais l'utiliser. La densité des structures telles que les voitures dans le parking sur la base de l'image SAR peut être déduite dans une certaine mesure de l'image. Je n'ai pas de cœur de dessin, je vais donc me référer aux articles connexes.
Kihon de données satellitaires - Compréhension, type, fréquence, résolution, cas d'utilisation ~
Le satellite SAR irradie la Terre avec des ondes radio et des images de l'intensité du signal réfléchi. À ce moment, ** les ondes radio sont émises à partir d'une direction oblique par rapport à la surface du sol **, donc si la surface du sol est plane comme indiqué sur la figure, beaucoup de choses sont dans la direction incidente des ondes radio, c'est-à-dire le satellite qui reçoit les ondes radio émises. Il réfléchit dans la direction opposée. Par conséquent, ** Si la surface au sol cible est plate, le signal reçu est faible et l'image sera sombre. La surface de l'eau des lacs et de la mer est extrêmement plate, elle semble donc plus sombre **. D'autre part, lorsqu'il y a une structure telle qu'un bâtiment, un bâtiment ou une voiture, l'objet est inégal, donc plus d'ondes radio sont réfléchies dans la même direction que la direction incidente, de sorte que l'image semble lumineuse. Par exemple, l'image d'observation du satellite radio de Tokyo Disneyland est la suivante.
Vous pouvez voir les installations de Disneyland. De plus, comme vous le savez probablement si vous êtes allé à Disneyland, vous pouvez voir qu'il y a un parking autour, qui est large et plat, donc il fait sombre. Lorsqu'une voiture est garée dans ce parking, elle semble brillante, la méthode d'évaluation cette fois-ci est d'estimer l'état d'utilisation du parking en évaluant la luminosité de la zone du parking. Les satellites artificiels utilisés cette fois sont Sentinel-1 et 2 développés et exploités par l'Agence spatiale européenne. Pour plus de détails sur chacun, veuillez consulter les articles suivants.
Comment obtenir gratuitement les dernières images satellite.
L'image observée de l'évaluation d'analyse est Sentinel-1, qui est un satellite SAR. Sentinel-1 est composé de deux satellites, ** l'un a 12 jours de retour ** (c'est-à-dire qu'il traverse la même zone dans les mêmes conditions tous les 12 jours), mais il est composé de deux. Par conséquent, nous observons de nombreuses zones ** une fois tous les 6 jours **. Cette ** observation régulière ** est une caractéristique majeure du satellite Sentinel et un avantage côté utilisateur. [Sentinel-1 Observation Scenario] (https://sentinel.esa.int/web/sentinel/missions/sentinel-1/observation-scenario)
De plus, l'heure d'observation des satellites artificiels est quasiment fixe **, pour les satellites optiques vers 10h30, et pour les satellites SAR vers 6h00 et 18h00 **. Pouvez-vous voir des gens depuis le satellite artificiel? ~ Par satellite, résolution au sol / résumé de l'heure locale ~
Dans Sentinel-1, qui a été introduit plus tôt, l'heure d'observation est 6h00 pour le satellite A et 18h00 pour le satellite B. Par conséquent, si le satellite A est utilisé, la situation de stationnement tôt le matin sera évaluée. Je pense qu'il est rare que les gens attendent sur le parking à partir de cette heure, donc je n'ai utilisé que l'image d'observation du ** satellite B cette fois **. En plus de cette évaluation du stationnement, il est recommandé que ceux qui utilisent le satellite Sentinel-1 pour l'évaluation des séries chronologiques utilisent uniquement les images d'observation du satellite A ou du satellite B. Parce que la direction d'observation diffère en fonction du satellite, lors de l'évaluation d'une structure haute comme un bâtiment, la direction d'irradiation de l'onde radio est différente et l'ombre change, donc une simple comparaison d'avant en arrière provoque une différence autre que la composante temporelle. .. Ensuite, nous présenterons l'acquisition d'images satellites de GEE et son évaluation.
Veuillez vous référer à l'article suivant pour plus de détails sur la façon d'acquérir des images satellite avec GEE. Analyse d'images satellites artificielles par Google Earth Engine et Google Colab-Analyse d'images satellite à partir de gratuitement (Introduction) - ** Facile à utiliser gratuitement si vous avez un compte Google **. C'est devenu un monde incroyable. Les données acquises telles que les images satellite sont enregistrées dans Google Drive. Étant donné que le code et les données sont supprimés chaque fois que vous utilisez Google Colaboratory, il est pratique de conserver les données dans votre propre Google Drive. Cependant, étant donné que la capacité de Google dirve pour une utilisation gratuite est de 20 Go, elle s'épuisera dès qu'une grande image satellite sera téléchargée, alors veillez à la supprimer le cas échéant. Maintenant, laissez-moi vous présenter le code.
import ee
import numpy as np
import matplotlib.pyplot as plt
ee.Authenticate()
ee.Initialize()
Tout d'abord, exécutez ceci pour authentifier la connexion GEE. Lorsque vous l'exécutez, le lien sera retourné. Cliquez dessus pour effectuer la procédure d'authentification, copiez le code d'accès et saisissez-le.
Ensuite, authentifiez la connexion à Google Drive. Encore une fois, le flux est le même que celui de la certification GEE.
from google.colab import drive
drive.mount('/content/drive')
Ensuite, nous effectuerons des tâches telles que la visualisation des images satellites acquises et l'installation des modules nécessaires à leur numérisation et à leur analyse.
#Installation du package&importer
!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
Les modules fréquemment utilisés sont déjà installés dans Google Colaboratory, donc aucun travail supplémentaire n'est requis, mais cette fois nous utiliserons Geotiff, qui est une image avec des informations cartographiques ajoutées, donc il est nécessaire pour le traitement d'image ** Rasterio Installez **.
Ensuite, installez un module appelé ** folium ** pour vérifier la zone cible définie sur la carte.
!pip install folium
import folium
Maintenant que l'environnement est prêt, prenez l'image satellite de GEE.
Afin d'acquérir des images satellite de GEE, vous devez entrer les informations de latitude / longitude de la zone cible qui vous intéresse. Je me souviens en quelque sorte de la latitude et de la longitude du Japon lors de la classe de géographie à l'école et dans le monde, mais quelle est la latitude et la longitude de ma maison? Même si c'est dit, je pense que vous pouvez enfin le découvrir en cherchant et en cherchant. (Bien sûr, je ne me souviens pas non plus.) Par conséquent, j'ai fait ce qui suit afin que la latitude et la longitude de la zone d'intérêt puissent être facilement étudiées et obtenues.
#Acquisition des informations polygonales de la zone d'intérêt.
from IPython.display import HTML
HTML(r'<iframe width="1000" height="580" src="https://gispolygon.herokuapp.com/" frameborder="0"></iframe>')
Lorsque vous exécutez cela, l'écran suivant s'affiche.
Après avoir élargi la zone d'intérêt, sélectionnez le polygone carré dans l'icône de gauche pour afficher le polygone de la zone d'intérêt. Après cela, cliquez sur ** Afficher les entités ** pour afficher les informations géographiques du polygone dans la fenêtre de droite. Cliquez ensuite sur ** Copier ** en bas pour copier ces informations géographiques. Par exemple, dans le cas du parking de Tokyo Disneyland, qui est l'objectif de cette fois, ce sera comme suit.
Collez ensuite les informations cartographiques copiées ci-dessous et entrez-les.
A = {"type":"FeatureCollection","features":[{"properties":{"note":"","distance":"1127.16 m","drawtype":"rectangle","area":"11.71 ha"},"type":"Feature","geometry":{"type":"Polygon","coordinates":[[[139.87487004138532,35.63225823758155],[139.87487004138532,35.6360949926148],[139.87790093757215,35.6360949926148],[139.87790093757215,35.63225823758155],[139.87487004138532,35.63225823758155]]]}}]}
Ces informations géographiques sont traitées dans le format d'entrée pour GEE et pour l'affichage dans Folium.
#Définissez n'importe quel nom de fichier à utiliser ultérieurement. Par exemple, le nom de la zone.
object_name = 'Tokyo_TDL2'
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)
#Seules les informations de latitude / longitude de la zone d'intérêt sont extraites de json.
AREA = json_object["features"][0]["geometry"]['coordinates'][0]
area = pd.DataFrame(AREA, columns=['longtitude', 'latitude'])
area_d =[[area['longtitude'].min(), area['latitude'].max()],
[area['longtitude'].max(), area['latitude'].max()],
[area['longtitude'].max(), area['latitude'].min()],
[area['longtitude'].min(), area['latitude'].min()],
[area['longtitude'].min(), area['latitude'].max()]]
AREA = area_d
Maintenant, vérifions la zone d'intérêt définie.
m = folium.Map([(AREA[0][1]+AREA[len(AREA)-2][1])/2,(AREA[0][0]+AREA[len(AREA)-3][0])/2], zoom_start=15)
folium.GeoJson(str(object_name) +'_2.geojson').add_to(m)
m
production
De nombreuses images satellites et de nombreuses informations déjà analysées sont définies dans GEE. Pour plus de détails, veuillez consulter Data Catalog. Sentinel-1 et 2 sont les suivants.
Sentinel-1 SAR GRD: C-band Synthetic Aperture Radar Ground Range Detected, log scaling Sentinel-2 MSI: MultiSpectral Instrument, Level-1C
À partir de cette page, ** les images d'observation Sentinel-1 peuvent être utilisées à partir du 3 octobre 2014 **, et ** les données Sentinel-2 peuvent être utilisées à partir du 23 juin 2015 **. Quant à l'image d'observation de Sentinel-2, une image de correction atmosphérique de niveau 2A avec le brouillard de l'atmosphère enlevé est également préparée, mais seule l'image postérieure au 28 mars 2017 lorsque l'analyse est devenue standard est ciblée. Il devient. Par conséquent, si vous souhaitez utiliser une image d'observation plus ancienne, veuillez utiliser cette image.
Maintenant, récupérez les images de Sentinel-1 et 2 de GEE et enregistrez-les dans Google colaboratory.
Tout d'abord, préparez le format des informations géographiques à définir dans GEE.
region=ee.Geometry.Rectangle(area['longtitude'].min(),area['latitude'].min(), area['longtitude'].max(), area['latitude'].max())
Ensuite, définissez les paramètres des informations à acquérir. Cette fois, la période de l'image acquise et la destination de sauvegarde de l'image acquise sont spécifiées.
#Précisez la période
from_date='2019-01-01'
to_date='2020-08-31'
#Nom du dossier à enregistrer
dir_name_s1 = 'GEE_Sentinel1_' + object_name
dir_name_s2 = 'GEE_Sentinel2_' + object_name
Maintenant, définissons les conditions d'image pour Sentinel-1 et 2.
def cloudMasking(image):
qa = image.select('QA60')
cloudBitMask = 1 << 10
cirrusBitMask = 1 << 11
mask = qa.bitwiseAnd(cloudBitMask).eq(0).And(qa.bitwiseAnd(cirrusBitMask).eq(0))
return image.updateMask(mask).divide(10000)
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()
Sentinel1 = ee.ImageCollection('COPERNICUS/S1_GRD').filterBounds(region).filterDate(parse(from_date),parse(to_date)).filter(ee.Filter.eq('orbitProperties_pass', 'ASCENDING')).select(['VV'])
Sentinel2 = ee.ImageCollection('COPERNICUS/S2').filterBounds(region).filterDate(parse(from_date),parse(to_date)).filterMetadata('CLOUDY_PIXEL_PERCENTAGE','less_than', 20).map(cloudMasking).select(['B4','B3','B2'])
imageList_s1 = Sentinel1.toList(300)
imageList_s2 = Sentinel2.toList(300)
Pour les paramètres ci-dessus, reportez-vous à cet article. [6. Exécution GEE locale par 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-tutoriels-de-télédétection / moteur-google-earth% 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) Sur la base de ce qui précède, le réglage de l'image d'observation de Sentinel-1 et la suppression de l'image du nuage sont ajoutés dans Sentinel-2.
Ici, comme l'image d'observation de Sentinel-1 n'utilise que l'image d'observation du satellite B à 18h00, «ASCENDING» est sélectionné dans «orbitProperties_pass». Si vous le réglez sur "Décroissant", l'image d'observation sera à 6h00.
Désormais, dans les conditions d'acquisition d'images satellite ci-dessus, les images des zones d'intérêt de Sentinel-1 et Sentinel-2 seront acquises.
for i in range(imageList_s1.size().getInfo()):
image = ee.Image(imageList_s1.get(i))
ImageExport(image.reproject(crs='EPSG:4326',scale=10),image.get('system:index').getInfo(),dir_name_s1,region['coordinates'][0],10)
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)
Affichez et confirmez l'image satellite acquise. Les images satellites sont enregistrées dans le répertoire (dossier) défini dans mon lecteur de Google Drive. Appelez-le et affichez-le. Tout d'abord, à partir de l'image d'observation de Sentinel-2.
#Visualisation par ordre chronologique
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)):
#Acquérir et visualiser des images une scène à la fois
with rasterio.open(s2_path + files[i]) as src:
arr = src.read()
j+=1#Décaler et placer la position de tracé de l'image
plt.subplot(v,5,j)
arrayImg = np.asarray(arr).transpose(1,2,0).astype(np.float32)*2 #La luminosité est corrigée en doublant la luminosité.
plt.imshow(arrayImg)
plt.title(files[i][0:8])#Obtenir la date à partir du nom du fichier
#plt.tight_layout()
** La résolution de l'image observée de Sentinel-2 est de 10 m **, ce qui rend difficile l'identification du modèle de la voiture. Cette fois, l'image d'observation de Sentinel-2 ne sera pas utilisée pour l'évaluation, mais vous pouvez avoir un aperçu de la situation du parking lorsque l'image d'observation de Sentinel-1 a été acquise. La situation actuelle est inconnue car Tokyo Disneyland n'a pas été visité depuis plus de quelques années, mais un parking à plusieurs étages ou une sorte de bâtiment (en haut à gauche) est construit dans le parking de la rue, et 2019 lorsque l'image d'observation a été acquise. Il pourrait être en construction en janvier. Ensuite, l'image observée de Sentinel-1 est affichée.
#Visualisation par ordre chronologique
s1_path = '/content/drive/My Drive/' + dir_name_s1 + '/'
files =os.listdir(s1_path)
files.sort()
plt.figure(figsize=(20, 40))
j=0
v = len(files)//5 +1
for i in range(len(files)):
#Acquérir et visualiser des images une scène à la fois
with rasterio.open(s1_path + files[i]) as src:
arr = src.read()
j+=1#Décaler et placer la position de tracé de l'image
plt.subplot(v,5,j)
plt.imshow(arr[0], cmap='gray')
plt.title(files[i][33:41])#Obtenir la date à partir du nom du fichier
plt.tight_layout()
L'image observée du satellite SAR est une image en noir et blanc, et cela ne ressort pas clairement de cela. L'image d'observation de Sentinel-2 confirmée plus tôt est utile pour comprendre cette image.
Ensuite, la valeur intégrée du signal (luminosité) de chaque image observée de Sentinel-1 est obtenue et la tendance est acquise.
#Graphique chronologique de la valeur totale de l'intensité de réflexion dans la zone
sum_signal = []
label_signal = []
for i in range(len(files)):
#Acquérir et visualiser des images une scène à la fois
with rasterio.open(s1_path + files[i]) as src:
arr = src.read()
sum_signal.append(arr.sum())
label_signal.append(files[i][33:41])
#Visualisation
fig,ax = plt.subplots(figsize=(15,6))
plt.plot(sum_signal, marker='o')
ax.set_xticks(np.arange(0,len(files)))
ax.set_xticklabels(label_signal, rotation=90)
plt.title('Trend in parking lot usage at TDL.')
plt.xlabel('date')
plt.show()
L'axe horizontal est la date d'observation, et l'axe vertical est la valeur intégrée des signaux de l'image observée (la valeur intégrée des signaux de l'image entière). La valeur sur l'axe vertical n'a pas de signification physique, mais elle est évaluée en fonction de la valeur du 18 janvier 2019. La valeur augmente de janvier à mars 2019. En regardant l'image d'observation de Sentinel-2, un bâtiment (parking tridimensionnel?) A été construit dans l'aire de stationnement pendant cette période, et cette structure a augmenté le signal de l'image SAR (augmentation de la densité des bâtiments dans la zone cible). ) Probablement à cause de cela. Après cela, jusqu'à fin janvier 2020, il n'y a pas eu de changement significatif, bien qu'il ait légèrement fluctué, mais en février 2020, la valeur a fortement chuté et s'est maintenue. Ceci est considéré comme ** l'effet de la propagation du nouveau virus corona **. En fait, ** Tokyo Disneyland a été suspendu à partir du 29 février 2020 ** et a repris ses activités à partir du 1er juillet. Avec la reprise des opérations, la valeur a augmenté, mais elle a de nouveau diminué en août. Je pense que cela a pour effet de propager à nouveau l'infection. Je pense qu'on s'attendait à ce que de nombreuses personnes viennent sur les lieux pendant les vacances d'été, mais je pense que la situation difficile continue. Nous espérons que le parc à thème reviendra dans un endroit amusant tout en essayant de prévenir la propagation de l'infection.
Nous avons présenté un exemple d'acquisition et d'analyse d'images satellite à l'aide du moteur Google Earth Engine fourni par Google. Cette fois, nous avons ciblé le statut d'utilisation des parkings à Disneyland, mais ** le signal SAR augmentera à mesure que le nombre de structures dans la zone cible augmente **, il peut donc également être utilisé pour les tendances de l'état de développement des zones urbaines autres que les parkings. Je pense que cela peut être appliqué. J'espère que ce sera l'occasion pour plus de gens de s'intéresser aux images satellites. Si vous avez des commentaires ou des questions, n'hésitez pas à commenter. Je suis heureux.
Comment obtenir gratuitement les dernières images satellite. J'ai essayé d'acquérir automatiquement l'image d'observation du satellite artificiel (Sentinel-2) en utilisant l'API. Créer une carte de distribution estimée des voitures à partir d'images satellites artificielles de PyTorch.
[Sequel] Analyse d'images satellitaires artificielles par Google Earth Engine et Google Colab-Analyse d'images satellite commençant gratuitement (pratique) - Analyse d'images satellites artificielles par Google Earth Engine et Google Colab-Analyse d'images satellite à partir de gratuitement (Introduction) - [6. Exécution GEE locale par 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-tutoriels-de-télédétection / moteur-google-earth% 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 de données satellitaires - Compréhension, type, fréquence, résolution, cas d'utilisation ~ Pouvez-vous voir des gens depuis le satellite artificiel? ~ Par satellite, résolution au sol / résumé de l'heure locale ~
Sentinel-1 SAR GRD: C-band Synthetic Aperture Radar Ground Range Detected, log scaling Sentinel-2 MSI: MultiSpectral Instrument, Level-1C
Recommended Posts