Exporter des images satellite de haute qualité

Mots-clés : widgets, interactive, plotting

Aperçu

La plupart des études de cas présentées dans ce référentiel se concentrent sur l’analyse quantitative des données satellitaires pour obtenir des informations sur l’évolution de l’environnement en Afrique. Cependant, l’imagerie satellitaire représente également un puissant outil de visualisation. Les images prises par satellite peuvent aider à expliquer les processus physiques, mettre en évidence les changements au fil du temps ou fournir un contexte précieux pour mieux comprendre les impacts d’événements environnementaux récents tels que les inondations ou les incendies. Les données satellitaires peuvent également être traitées pour créer des images du paysage basées sur des longueurs d’onde de lumière invisibles (par exemple, des images en fausses couleurs), ce qui nous permet d’obtenir des informations plus riches sur des caractéristiques et des processus qui seraient autrement invisibles à l’œil humain.

Cas d’utilisation de Digital Earth Africa

Digital Earth Africa fournit plus de trois décennies d’images satellite sur l’ensemble du continent africain. Les données satellite du programme NASA/USGS Landsat <https://www.usgs.gov/land-resources/nli/landsat>`__ nous permettent de produire des images bimensuelles des divers paysages naturels et artificiels de l’Afrique à tout moment depuis 1984. Plus récemment, la mission Copernicus Sentinel-2 <https://sentinel.esa.int/web/sentinel/missions/sentinel-2>`__ a fourni des images à résolution encore plus élevée aussi fréquemment que tous les 5 jours depuis 2017.

Description

Ce bloc-notes fournit un outil interactif pour sélectionner, charger, traiter et exporter des images satellite sous forme de fichier image de haute qualité. Il peut être utilisé en combinaison avec la plateforme interactive Digital Earth Africa Maps pour identifier une image intéressante, puis la télécharger à l’aide de ce bloc-notes pour l’utiliser dans d’autres applications.

L’outil prend en charge les données Sentinel-2 et Landsat, créant des images en couleurs vraies et fausses.


Commencer

Pour exécuter cette analyse, exécutez toutes les cellules du bloc-notes, en commençant par la cellule « Charger les packages ».

Charger des paquets

Importez les packages Python utilisés pour l’analyse.

[1]:
%matplotlib inline

from deafrica_tools.app.imageexport import select_region_app, export_image_app

Sélectionner des images

Paramètres d’analyse

La cellule suivante définit les paramètres requis importants utilisés pour tracer et sélectionner des images satellite sur la carte interactive.

  • « date » : la date exacte utilisée pour afficher les images sur la carte (par exemple, « date=”1988-01-01””).

  • « satellites » : les données satellites à afficher sur la carte. Cinq options sont actuellement prises en charge :

« Landsat-8 »

Données du satellite optique Landsat 8

« Landsat-7 »

Données du satellite optique Landsat 7

« Landsat-5 »

Données du satellite optique Landsat 5

« Sentinelle-2 »

Données des satellites optiques Sentinel-2A et 2B

« Sentinel-2 géomédien »

Données de la géomédiane annuelle Sentinel-2

Si vous exécutez le bloc-notes pour la première fois, conservez les paramètres par défaut ci-dessous. Cela vous montrera comment fonctionne l’analyse et fournira des résultats significatifs.**

Si vous transmettez le géomédian « Sentinel-2 », assurez-vous que la « date » ressemble à ceci : « <année>-01-01 »

[2]:
# Required image selection parameters
date = '2020-01-30'
satellites = 'Sentinel-2'

Sélectionner un emplacement sur une carte

Exécutez la cellule suivante pour tracer la carte interactive utilisée pour sélectionner la zone dans laquelle charger et exporter les images satellite.

Sélectionnez l’outil « Dessiner un rectangle » ou « Dessiner un polygone » sur la gauche de la carte et dessinez une forme autour de la zone qui vous intéresse. Lorsque vous êtes prêt, appuyez sur le bouton vert « Terminé » en haut à droite de la carte.

Pour maintenir des temps de chargement raisonnables, sélectionnez une zone d’une taille inférieure à 10 000 kilomètres carrés (cette limite peut être dépassée en fournissant le paramètre « size_limit » dans la fonction « select_region_app » ci-dessous).

[3]:
selection = select_region_app(date=date,
                              satellites=satellites,
                              size_limit=10000)

Exporter l’image

Les paramètres facultatifs ci-dessous vous permettent d’affiner l’apparence de votre image de sortie.

  • style: Le style utilisé pour produire l’image. Deux options sont actuellement prises en charge :

« Vraie couleur »

Crée une image en vraies couleurs en utilisant les bandes satellites rouge, verte et bleue

« Fausses couleurs »

Crée une image en fausses couleurs en utilisant les bandes infrarouges à ondes courtes, infrarouges et satellites vertes.

  • résolution : la résolution spatiale pour charger les données. Par défaut, l’outil définit automatiquement la meilleure résolution possible en fonction des satellites sélectionnés (c’est-à-dire 30 m pour Landsat, 10 m pour Sentinel-2). L’augmentation de cette résolution (par exemple à résolution = (-100, 100)) peut être utile pour charger de grandes étendues spatiales.

  • « vmin, vmax » : les valeurs de réflectance de surface minimales et maximales utilisées pour découper l’imagerie résultante afin d’améliorer le contraste.

  • percentile_stretch : un tuple de deux percentiles (c’est-à-dire entre 0,00 et 1,00) qui peut être utilisé pour découper l’imagerie afin d’optimiser la luminosité et le contraste de l’image. Si ce paramètre est utilisé, vmin et vmax n’auront aucun effet.

  • « Power » : augmente l’imagerie d’une puissance pour réduire les éléments lumineux et améliorer les éléments sombres. Cela peut ajouter une définition supplémentaire sur les zones présentant des éléments extrêmement lumineux comme la neige, les plages ou les marais salants.

  • image_proc_funcs Une liste facultative contenant des fonctions qui seront appliquées à l’image de sortie. Cela peut inclure des fonctions de traitement d’image telles que l’augmentation du contraste, le masquage flou, la saturation, etc. La fonction doit prendre et renvoyer un numpy.ndarray de forme [y, x, bands].

  • standardise_name : s’il faut exporter le fichier image avec un nom de fichier lisible par machine (par exemple, sentinel-2a_2020-01-30_bitou-local-municipality-western-cape_true-colour-10-m-resolution.jpg)

Si vous exécutez le bloc-notes pour la première fois, conservez les paramètres par défaut ci-dessous. Cela permettra de démontrer le fonctionnement de l’analyse et de fournir des résultats significatifs.

[4]:
# Optional image export parameters
style = 'True colour' # 'False colour'
resolution = None
vmin, vmax = (0, 2000)
percentile_stretch = None
power = None
image_proc_funcs = None
output_format = "jpg"
standardise_name = False

Une fois que vous êtes satisfait des paramètres ci-dessus, exécutez la cellule ci-dessous pour charger les données satellite et les exporter sous forme d’image :

[5]:
# Load data and export image
export_image_app(
    style=style,
    resolution=resolution,
    vmin=vmin,
    vmax=vmax,
    percentile_stretch=percentile_stretch,
    power=power,
    image_proc_funcs=image_proc_funcs,
    output_format=output_format,
    standardise_name=standardise_name,
    **selection
)

Client

Client-1e018e7f-9ae2-11ef-86eb-d6403d3f629b

Connection method: Cluster object Cluster type: distributed.LocalCluster
Dashboard: /user/mpho.sadiki@digitalearthafrica.org/proxy/8787/status

Cluster Info


Exporting image to Sentinel-2A - 2020-01-30 - Ramotshere Moiloa Local Municipality, North West - True colour, 10 m resolution.jpg.
This may take several minutes to complete...
Finished exporting image.
../../../_images/sandbox_notebooks_Real_world_examples_Exporting_satellite_images_14_2.png

Téléchargement de l’image exportée

L’exportation de l’image sera terminée lorsque « Exportation de l’image terminée » apparaît ci-dessus et un aperçu de votre image s’affiche sous la carte.

Le fichier image haute résolution généré ci-dessus sera enregistré au même emplacement à partir duquel vous exécutez ce bloc-notes (par exemple, généralement « Real_world_examples »). Dans JupyterLab, utilisez le navigateur de fichiers pour localiser le fichier image avec un nom au format suivant :

Sentinel-2A - 30/01/2020 - Municipalité locale de Bitou, Cap occidental - Couleurs réelles, résolution de 10 m

Si vous utilisez le DE Africa Sandbox, vous pouvez télécharger l’image sur votre PC en cliquant avec le bouton droit sur le fichier image et en sélectionnant « Télécharger ».

Prochaines étapes

Une fois terminé, revenez à la section Paramètres d’analyse, modifiez certaines valeurs et relancez l’analyse. Par exemple, vous pouvez essayer :

  • Remplacez « satellites » par « Landsat » pour exporter une image Landsat au lieu de Sentinel-2.

  • Modifiez « style » en « Fausse couleur » pour exporter une vue en fausses couleurs du paysage qui met en valeur la végétation en croissance et l’eau.

  • Spécifiez une résolution personnalisée, par exemple « résolution = (-1000, 1000) ».

  • Expérimentez avec les paramètres « vmin », « vmax », « percentile_stretch » et « power » pour modifier l’apparence de l’image résultante.


Informations Complémentaires

Licence Le code de ce notebook est sous licence Apache, version 2.0 <https://www.apache.org/licenses/LICENSE-2.0>`__.

Les données de Digital Earth Africa sont sous licence Creative Commons Attribution 4.0 <https://creativecommons.org/licenses/by/4.0/>.

Contact Si vous avez besoin d’aide, veuillez poster une question sur le canal Slack DE Africa <https://digitalearthafrica.slack.com/> ou sur le GIS Stack Exchange <https://gis.stackexchange.com/questions/ask?tags=open-data-cube> en utilisant la balise open-data-cube (vous pouvez consulter les questions posées précédemment `ici <https://gis.stackexchange.com/questions/tagged/open-data-

Si vous souhaitez signaler un problème avec ce notebook, vous pouvez en déposer un sur Github.

Version de Datacube compatible

Dernier test :

[7]:
from datetime import datetime
datetime.today().strftime('%Y-%m-%d')
[7]:
'2024-11-04'