Importer des ensembles de données externes

Le Digital Earth Africa Sandbox permet aux utilisateurs d’ajouter des données externes telles que des fichiers shape et des fichiers .geojson à leurs algorithmes.

Ce tutoriel vous guidera :

  1. Les paquets à importer

  2. Définition du chemin d’accès au fichier vectoriel

  3. Chargement de l’ensemble de données externes

  4. Affichage du jeu de données sur une carte de base

  5. Chargement de l’imagerie satellite en utilisant l’étendue de l’ensemble de données externes.

  6. Masquer la zone d’intérêt de l’imagerie satellitaire à l’aide de l’ensemble de données extensible.

Pour ce tutoriel, l’exemple de jeu de données externe est au format shapefile.

Note

Avant de poursuivre, assurez-vous d’avoir suivi toutes les leçons du cours de formation de six semaines de DE Africa.

Configurer le notebook

Dans votre dossier Training, créez un nouveau notebook Python 3. Nommez-le external_dataset.ipynb. Pour plus d’instructions sur la création d’un nouveau notebook, consultez les instructions de la session 2.

Charger des packages et des fonctions

Dans la première cellule, tapez le code suivant, puis exécutez la cellule pour importer les dépendances Python nécessaires.

import sys
import datacube
import numpy as np
import pandas as pd
import geopandas as gpd

from datacube.utils import geometry

sys.path.append('../Scripts')
from deafrica_datahandling import load_ard, mostcommon_crs
from deafrica_plotting import map_shapefile, rgb
from deafrica_spatialtools import xr_rasterize

Prenez note de la façon dont les paquets ci-dessous ont été importés avec les autres paquets ci-dessus.

Ces paquets sont ceux dont vous aurez besoin lorsque vous voudrez utiliser des jeux de données externes.

import geopandas as gpd
from datacube.utils import geometry
from deafrica_plotting import map_shapefile
from deafrica_spatialtools import xr_rasterize

Connectez-vous au datacube

Entrez le code suivant et exécutez la cellule pour créer notre objet dc, qui donne accès au datacube.

dc = datacube.Datacube(app='import_dataset')

Créez un dossier appelé data dans le répertoire Training. Téléchargez ce fichier zip et extrayez-le sur votre machine locale. Téléchargez le fichier shape reserve (cpg, dbf, shp, shx) dans le dossier data.

Créer une variable appelée shapefile_path, pour stocker le chemin du fichier de forme comme indiqué ci-dessous.

shapefile_path = "data/reserve.shp"

Lire le fichier de forme dans un GeoDataFrame en utilisant la fonction gpd.read_file.

gdf = gpd.read_file(shapefile_path)

Convertir toutes les formes en une géométrie de datacube en utilisant geometry.Geometry.

geom = geometry.Geometry(gdf.unary_union, gdf.crs)

Utilisez la fonction map_shapefile pour afficher le shapefile sur une carte de base.

map_shapefile(gdf, attribute=gdf.columns[0], fillOpacity=0, weight=2)

The DE Africa

Créer un objet de requête

Nous allons remplacer x et y par geopolygon, comme indiqué ci-dessous. Nous supprimons les arguments x, y et les remplaçons par geopolygon.

query = {
    'x' : x,
    'y' : y,
    'group_by': 'solar_day',
    'time' : ('2019-01-15'),
     'resolution': (-10, 10),
}

Retirer x, y de query et mettre à jour avec geopolygon :

query = {
    'geopolygon' : geom,
    'group_by': 'solar_day',
    'time' : ('2019-01-15'),
     'resolution': (-10, 10),
}

Nous identifions ensuite le système de projection le plus courant dans la requête d’entrée, et chargeons le jeu de données ds.

output_crs = mostcommon_crs(dc=dc, product='s2_l2a', query=query)

ds = load_ard(dc=dc,
              products=['s2_l2a],
              output_crs=output_crs,
              measurements=["red","green","blue"],
              **query
             )

Imprime le résultat de ds.

ds

Mise en place du résultat

Nous allons mettre en diptyque le jeu de données retourné en utilisant les fonctions rgb.

rgb(ds)

The DE Africa

Rastériser le fichier de forme

Avant de pouvoir appliquer les données du fichier de forme comme un masque, nous devons convertir le fichier de forme en un raster en utilisant la fonction xr_rasterize.

mask = xr_rasterize(gdf, ds)

Masquer l’ensemble des données

Masquez le jeu de données à l’aide de ds.where et mask pour définir les pixels en dehors du polygone à NaN.

ds = ds.where(mask)

Tracez le résultat masqué de l’ensemble de données.

rgb(ds)

The DE Africa

Conclusion

Vous pouvez appliquer cette méthode aux carnets déjà existants avec lesquels vous travaillez. Elle est utile pour sélectionner des zones d’intérêt spécifiques et pour transférer des informations entre les platines Sandbox et SIG.