Les données spatiales peuvent être regroupées en deux types principaux :
Vecteur : Les données vectorielles représentent des entités géographiques par des points, des lignes, et des polygones. Chaque entité spatiale est associée à des attributs qui peuvent être vus comme un tableau de données lié à ces entités. Par exemple : les frontières administratives, les routes, les parcs naturels.
Raster : Les données raster sont représentées par une grille de pixels, où chaque cellule contient une valeur. Ce type de donnée est généralement utilisé pour les données continues, comme l’altitude, la température, ou la couverture forestière.
3.2 Données vectorielles
3.2.1 Importation des données vectorielles avec sf
Pour illustrer l’importation de données vectorielles, nous allons utiliser le package sf, qui est une librairie puissante pour la manipulation des données spatiales vectorielles en R.
Charger les Données : Nous allons commencer par charger un fichier GeoJSON qui contient des informations sur les aires protégées de Madagascar.
Code
library(sf)library(tidyverse)library(tmap)library(geodata)library(terra)# Importer le fichier GeoJSONAP_Vahatra <-st_read("data/AP_Vahatra.geojson")
Reading layer `AP_Vahatra' from data source
`/home/onyxia/work/mapme_impact_training/data/AP_Vahatra.geojson'
using driver `GeoJSON'
Simple feature collection with 98 features and 16 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: 43.25742 ymin: -25.60502 xmax: 50.47724 ymax: -11.98301
Geodetic CRS: WGS 84
Explorer les Données : Explorons le contenu de ce fichier pour comprendre sa structure et ses attributs. Vous pouvez également utiliser le menu contextuel de RStudio pour ouvrir et examiner les données de manière interactive.
Code
# Afficher les premières lignes de l'objet spatialhead(AP_Vahatra)
Simple feature collection with 6 features and 16 fields
Geometry type: MULTIPOLYGON
Dimension: XY
Bounding box: xmin: 44.35118 ymin: -25.12034 xmax: 48.32607 ymax: -15.59973
Geodetic CRS: WGS 84
nom cat_iucn creation
1 Ambatotsirongorongo V Décret n°2015-792 du 28 avril 2015
2 Ambohidray <NA> Décret n°2015-808 du 5 mai 2015
3 Ambohijanahary IV Créée depuis le 28 octobre 1958
4 Bemarivo IV Créée le 10 septembre 1956
5 Corridor Forestier Bongolava <NA> Décret n°2015-790 du 28 avril 2015
6 Kasijy IV Créée le 10 setembre 1956
date_creation date_modification mention_changement hectares num_atlas_
1 2015-04-28 <NA> FALSE 1030.048 62
2 2015-05-05 <NA> FALSE 1241.048 38
3 1958-10-28 <NA> FALSE 24302.027 72
4 1956-09-10 <NA> FALSE 12046.314 79
5 2015-04-28 <NA> FALSE 60589.816 63
6 1956-09-10 <NA> FALSE 22956.386 70
full_name
1 Réserve Spéciale d'Ambatotsirongorongo\n
2 Nouvelle Aire Protégée d'Ambohidray
3 Réserve Spéciale d'Ambohijanahary\n
4 Réserve Spéciale de Bemarivo
5 Paysage Harmonieux Protégé du Corridor Forestier Bongolava
6 Réserve Spéciale de Kasijy
province region district
1 Toliary Anosy Taolagnaro (Fort Dauphin)\n
2 Toamasina Alaotra Mangoro Moramanga
3 Mahajanga, Toliary\n Melaky, Menabe\n Morafenobe, Miandrivazo\n
4 Mahajanga Melaky Besalampy, Maintirano
5 Mahajanga Sofia Mampikony, Boriziny (Port Bergé)
6 Mahajanga Betsiboka Kandreho
gest_1
1 Ministère de l'Environnement, de l'Ecologie et des Forêts\n
2 Département de Biologie et Ecologie Végétales
3 Sauvegarde de l'Environnement et développement Intégré de Magadagascar\n
4 Ministère de l'Environnement, de l'Ecologie et des Forêts
5 Fikambananana Bongolava Maintso
6 Ministère de l'Environnement, de l'Ecologie et des Forêts
gest_2 type_ap an_creation geometry
1 MEEF\n TERRESTRE\n 2015 MULTIPOLYGON (((46.78478 -2...
2 DBEV TERRESTRE 2015 MULTIPOLYGON (((48.29791 -1...
3 SEDIM\n TERRESTRE\n 1958 MULTIPOLYGON (((45.43863 -1...
4 MEEF TERRESTRE 1956 MULTIPOLYGON (((44.4565 -17...
5 FBM TERRESTRE 2015 MULTIPOLYGON (((47.60184 -1...
6 MEEF TERRESTRE 1956 MULTIPOLYGON (((45.96836 -1...
Code
# Voir la structure des attributsstr(AP_Vahatra)
Classes 'sf' and 'data.frame': 98 obs. of 17 variables:
$ nom : chr "Ambatotsirongorongo" "Ambohidray" "Ambohijanahary" "Bemarivo" ...
$ cat_iucn : chr "V" NA "IV" "IV" ...
$ creation : chr "Décret n°2015-792 du 28 avril 2015" "Décret n°2015-808 du 5 mai 2015" "Créée depuis le 28 octobre 1958" "Créée le 10 septembre 1956" ...
$ date_creation : Date, format: "2015-04-28" "2015-05-05" ...
$ date_modification : Date, format: NA NA ...
$ mention_changement: logi FALSE FALSE FALSE FALSE FALSE FALSE ...
$ hectares : num 1030 1241 24302 12046 60590 ...
$ num_atlas_ : int 62 38 72 79 63 70 93 66 88 56 ...
$ full_name : chr "Réserve Spéciale d'Ambatotsirongorongo\n" "Nouvelle Aire Protégée d'Ambohidray" "Réserve Spéciale d'Ambohijanahary\n" "Réserve Spéciale de Bemarivo" ...
$ province : chr "Toliary" "Toamasina" "Mahajanga, Toliary\n" "Mahajanga" ...
$ region : chr "Anosy" "Alaotra Mangoro" "Melaky, Menabe\n" "Melaky" ...
$ district : chr "Taolagnaro (Fort Dauphin)\n" "Moramanga" "Morafenobe, Miandrivazo\n" "Besalampy, Maintirano" ...
$ gest_1 : chr "Ministère de l'Environnement, de l'Ecologie et des Forêts\n" "Département de Biologie et Ecologie Végétales" "Sauvegarde de l'Environnement et développement Intégré de Magadagascar\n" "Ministère de l'Environnement, de l'Ecologie et des Forêts" ...
$ gest_2 : chr "MEEF\n" "DBEV" "SEDIM\n" "MEEF" ...
$ type_ap : chr "TERRESTRE\n" "TERRESTRE" "TERRESTRE\n" "TERRESTRE" ...
$ an_creation : num 2015 2015 1958 1956 2015 ...
$ geometry :sfc_MULTIPOLYGON of length 98; first list element: List of 1
..$ :List of 1
.. ..$ : num [1:272, 1:2] 46.8 46.8 46.8 46.8 46.8 ...
..- attr(*, "class")= chr [1:3] "XY" "MULTIPOLYGON" "sfg"
- attr(*, "sf_column")= chr "geometry"
- attr(*, "agr")= Factor w/ 3 levels "constant","aggregate",..: NA NA NA NA NA NA NA NA NA NA ...
..- attr(*, "names")= chr [1:16] "nom" "cat_iucn" "creation" "date_creation" ...
Code
# Ouvrir les données dans la vue interactive de RStudio# View(AP_Vahatra)
Visualisation Initiale avec tmap : Utilisons tmap pour visualiser les aires protégées et avoir une première idée de leur distribution géographique.
Code
# Mode interactif pour explorer les donnéestmap_mode("view")# Créer une carte interactive des aires protégéestm_shape(AP_Vahatra) +tm_borders() +tm_fill("cat_iucn", title ="Catégorie IUCN")
3.2.2 Formats usuels de données vectorielles
Les données vectorielles peuvent être enregistrées dans différents formats, tels que :
GeoJSON : Format ouvert et largement utilisé pour le partage de données spatiales sur le web. Il est basé sur une structure JSON, ce qui le rend lisible pour les humains.
Pour illustrer ce format, nous pouvons ouvrir le fichier AP_Vahatra.geojson dans un éditeur de texte. Vous remarquerez une structure JSON qui contient les coordonnées géographiques ainsi que les attributs associés à chaque entité.
Shapefile : Convertissons le fichier GeoJSON en shapefile pour voir comment les données sont structurées dans ce format très couramment utilisé.
Code
# On crée un dossier pour l'exportdir.create("output")# Enregistrer l'objet en tant que shapefile dans un sous-dossier de datast_write(AP_Vahatra, "output/AP_Vahatra_shapefile.shp", append =FALSE,layer_options ="ENCODING=UTF-8")
Deleting layer `AP_Vahatra_shapefile' using driver `ESRI Shapefile'
Writing layer `AP_Vahatra_shapefile' to data source
`output/AP_Vahatra_shapefile.shp' using driver `ESRI Shapefile'
options: ENCODING=UTF-8
Writing 98 features with 16 fields and geometry type Multi Polygon.
Un shapefile est en fait constitué de plusieurs fichiers (.shp, .shx, .dbf, .prj, etc.) qui doivent être conservés ensemble pour garantir l’intégrité des données. Chaque fichier a un rôle spécifique :
.shp : Contient la géométrie des entités (points, lignes, polygones).
.shx : Index spatial permettant d’accéder rapidement aux entités.
.dbf : Base de données associée contenant les attributs des entités.
.prj : Contient les informations relatives à la projection cartographique, permettant de définir le système de coordonnées des données.
Ces fichiers doivent non seulement être gardés ensemble, mais aussi porter exactement le même nom (à l’exception de l’extension).
Instruction : Ouvrez le dossier output dans votre explorateur de fichiers pour observer les différents fichiers qui composent le shapefile.
Lire le Shapefile : Importons le shapefile nouvellement créé et vérifions qu’il est identique à l’objet d’origine.
Code
# Importer le shapefileAP_Vahatra_shp <-st_read("output/AP_Vahatra_shapefile.shp", quiet =TRUE) # Vérifier que les deux objets sont identiquesidentical(AP_Vahatra, AP_Vahatra_shp)
[1] FALSE
Les objets ne sont plus exactement les mêmes. Voyez-vous pourquoi ?
Outre le GeoJSON et le Shapefile, d’autres formats de données vectorielles incluent :
KML (Keyhole Markup Language) : Utilisé principalement par Google Earth.
GPKG (GeoPackage) : Un format basé sur SQLite, qui est de plus en plus populaire pour stocker des données spatiales.
GML (Geography Markup Language) : Format XML utilisé pour échanger des données géospatiales.
RDS (Format Natif R) : Format utilisé pour enregistrer des objets R directement, ce qui permet une manipulation rapide et facile des données spatiales dans R.
3.2.3 Exploration des Données GADM
Pour illustrer l’accès aux données spatiales administratives, nous allons utiliser les données GADM (Global Administrative Areas). Ces données sont disponibles à différents niveaux administratifs (niveaux 0, 1, 2, etc.). Voici ce que nous allons faire :
Téléchargement manuel : Rendez-vous sur le site https://gadm.org/ et explorez les différentes options de téléchargement des données administratives. Cela vous permettra de vous familiariser avec les types de niveaux disponibles.
Téléchargement via R : Utilisons la fonction gadm() du package geodata pour obtenir directement les données dans R.
Code
# Télécharger les données GADM pour Madagascar au niveau administratif 0gadm_mada0 <-gadm(country ="Madagascar", level =0, path ="data") %>%st_as_sf() # Pour transformer en vecteur
Exercices :
Visualisez les données gadm_mada0 téléchargées avec tmap. De quel niveau administratif s’agit-il ?
En utilisant les autres niveaux administratifs disponibles (1, 2, 3, 4), déduisez à quoi correspond chaque niveau dans la hiérarchie administrative de Madagascar.
3.3 Données en raster
3.3.1 Importation de données raster avec terra
Les données raster sont constituées d’une grille de pixels, chaque pixel ayant une valeur. Ce type de donnée est généralement utilisé pour représenter des phénomènes continus tels que la couverture forestière, l’altitude, ou la précipitation. Les données raster sont souvent dérivées d’images satellitaires ou de relevés aériens, et peuvent varier en résolution (taille des pixels) et en échelle.
Il existe deux catégories principales de données raster :
Images Satellitaires : Ce sont des images prises à partir de satellites, telles que celles fournies par Sentinel-2 ou Landsat (gratuites, à moyenne résolution) ou encore Pléiades (payantes, à haute résolution).
Produits Prétransformés : Ces données sont déjà traitées pour extraire certaines informations pertinentes (par exemple, la couverture forestière, les précipitations mensuelles, l’altitude). Ces produits sont souvent préférés car ils sont directement exploitables.
Voici quelques exemples de produits prétransformés disponibles, qui peuvent être utiles dans vos analyses :
accessibility_2000 : Accessibilité pour l’année 2000
biodiversity_intactness_index : Indice d’intactité de la biodiversité
soilgrids : Propriétés du sol modélisées à l’échelle globale
Ces ressources, parmi d’autres, sont disponibles pour l’analyse et fournissent des données spatiales à différentes résolutions et pour différents indicateurs.
Pour explorer concrètement une donnée raster, nous allons travailler avec une tuile de la base de données Global Forest Change (GFC). Ces données sont disponibles en ligne sur Global Forest Change 2023. Nous utiliserons la tuile 10S, 50E, qui couvre une partie de la côte est de Madagascar, près du parc national de Masoala. Cette tuile est relativement légère car elle comprend principalement des zones marines.
La tuile préchargée est disponible sous : data/Hansen_GFC-2023-v1.11_treecover2000_10S_050E.tif.
Charger et Observer la Tuile Raster : Utilisons le package terra pour manipuler les données raster dans R.
Code
# Charger la tuile rastergfc_raster <-rast("data/Hansen_GFC-2023-v1.11_treecover2000_10S_050E.tif")# Extraire la bounding box du raster en tant que SpatVectorraster_bbox <-as.polygons(ext(gfc_raster), crs =crs(gfc_raster)) %>%st_as_sf()# Calculer l'intersection entre la bbox du raster et gadm_mada0intersection <-st_intersection(raster_bbox, gadm_mada0)# Réduire l'étendue du raster avec crop() en utilisant l'emprise de Madagascargfc_raster_crop <-crop(gfc_raster, intersection)# Appliquer mask() pour ne garder que la partie terrestregfc_raster_mada <-mask(gfc_raster_crop, intersection)# Visualiser la donnée rasterplot(gfc_raster_mada, main ="Couvert forestier en 2000 (Tuile 10S, 50E)")
La fonction rast() permet de charger un fichier raster, et plot() permet d’avoir une visualisation simple de la couverture forestière de l’année 2000 pour la zone concernée. Observez la résolution de la grille ainsi que les valeurs attribuées à chaque pixel, qui représentent ici la proportion de couverture arborée.
Visualisation avec tmap : Utilisons maintenant tmap en mode “view” pour représenter les données raster et colorer la carte en fonction du pourcentage de couvert forestier.
Code
# Mode interactif pour explorer les donnéestmap_mode("view") # Le mode 'view' est utilisé ici pour une visualisation interactive des données spatiales, permettant une exploration dynamique avec des outils de navigation, contrairement au mode 'plot' qui produit une carte statique.# Créer une carte interactive de la couverture forestièretm_shape(gfc_raster_mada) +tm_raster(style ="cont", palette ="Greens", title ="Couvert Forestier (% en 2000)")
3.3.2 Formats de données raster
Comme pour les données vectorielles, les données raster peuvent être enregistrées dans différents formats. Voici quelques-uns des formats les plus courants :
GeoTIFF : Format très utilisé pour les données raster, car il permet de stocker des informations géoréférencées (coordonnées, projection).
.img : Format souvent utilisé par le logiciel ERDAS pour les données raster.
NetCDF : Format flexible utilisé pour stocker des données multidimensionnelles (ex., temps, altitude).
RDS (Format Natif R) : Permet d’enregistrer un objet R directement, ce qui est très pratique pour conserver les paramètres et les métadonnées associées.
3.3.3 Exercice : exploration manuelle et via R
Exploration Manuelle : Rendez-vous sur le site Global Forest Change 2023, et téléchargez une tuile de votre choix. Essayez de comprendre la structure des fichiers téléchargés et leur signification.
Chargement avec R : Utilisez la fonction rast() du package terra pour charger la tuile que vous avez téléchargée, puis affichez-la avec plot(). Quels types d’informations pouvez-vous en déduire ?
Décrire les Différents Formats : En fonction de ce que vous avez appris, décrivez les différents formats de données raster que vous avez rencontrés, et discutez des avantages de chaque format en termes de stockage, de compatibilité, et d’utilisation dans R.
3.4 Opérations spatiales avec le package sf
3.4.1 Introduction aux opérations spatiales
Les opérations spatiales sont des manipulations qui permettent de croiser, combiner, séparer ou analyser des données géographiques. Ces opérations sont essentielles pour explorer les relations spatiales entre différents objets géographiques, par exemple : trouver les aires qui se chevauchent, calculer des distances, ou encore créer des zones d’influence (buffers).
Dans cette section, nous allons nous familiariser avec quelques opérations spatiales de base à l’aide du package sf, un outil puissant pour manipuler les données géographiques dans R.
3.4.2 Types d’opérations spatiales
3.4.2.1 Intersection
L’intersection permet de trouver la zone commune entre deux entités géographiques. Nous avons déjà utilisé cette opération pour découper le raster de Global Forest Change à l’aide des limites de Madagascar.
Maintenant, nous allons appliquer une variante sous forme de tests logique aux communes (niveau 4 dans GADM) pour déterminer quelles communes contiennent des aires protégées.
Code
# Charger les données des aires protégéesAP_Vahatra <-st_read("data/AP_Vahatra.geojson", quiet =TRUE) %>%st_make_valid()# Charger les communescommunes <-gadm(country ="Madagascar", level =4, path ="data") %>%st_as_sf() %>%st_make_valid()# Filtrer les communes qui intersectent le buffercommunes_avec_ap <- communes %>%filter(lengths(st_intersects(., AP_Vahatra)) >0)# Visualiser les résultatstm_shape(communes_avec_ap) +tm_borders() +tm_shape(AP_Vahatra) +tm_borders(col ="green")