# Installer `pacman` si ce n'est pas déjà fait
if (!requireNamespace("pacman", quietly = TRUE)) {
install.packages("pacman")
}
# Charger les paquets requis à l'aide de pacman
pacman::p_load(
sf, # gestion des données vectorielles spatiales
dplyr, # manipulation des données
ggplot2, # construir des graphiques
here # gestion des chemins d'accès aux fichiers
)Examiner les données du fichier shapefile
Aperçu
Dans le contexte de l’adaptation au niveau infranational (SNT), il est essentiel de disposer de fichiers shapefile précis et à jour. Ces fichiers constituent la base permettant de relier les données aux unités géographiques. Cette page fournit un guide étape par étape sur la manière de charger et d’afficher efficacement les données shapefile.
- Importer tous les composants du fichier de formes requis (
.shp,.shx,.dbf) - Lire le fichier de formes dans un objet
sf - Définir un système de référence de coordonnées (SRC) cohérent
- Inspecter les attributs et la géométrie du fichier de formes
- Créer des cartes de base à partir des données du fichier shapefile
- Superposer plusieurs niveaux administratifs
Utilisation des shapefiles dans le contexte de SNT
Que sont les shapefiles ?
Les shapefiles comptent parmi les formats les plus couramment utilisés pour stocker des données vectorielles géospatiales. Ils peuvent représenter des entités géographiques telles que des points, des lignes et des polygones, ainsi que leurs attributs associés, ce qui les rend indispensables pour les applications de systèmes d’information géographique (SIG).
Bien que communément appelé “shapefile” ou “fichier de forme”, ce format est en réalité un ensemble de plusieurs fichiers qui fonctionnent ensemble. Les shapefiles peuvent inclure plusieurs types de fichiers, mais seuls trois sont essentiels pour SNT :
.shp– contient la géométrie réelle des entités spatiales.shx– un fichier d’index qui relie la géométrie aux données d’attributs.dbf– un fichier de base de données qui stocke les informations d’attributs pour chaque entité
Ces trois fichiers fonctionnent en parallèle, chaque enregistrement étant aligné par position, ce qui signifie que la première entrée du fichier .shp correspond à la première entrée des fichiers .shx et .dbf, et ainsi de suite. Il est important de noter que les fichiers .shp et .shx utilisent des champs avec des ordres d’octets (endianness) différents, ce qui nécessite une manipulation prudente lors de la lecture ou de la mise en œuvre de ces formats.
Le fichier .shp contient spécifiquement les données géométriques, chaque élément spatial étant représenté par un ensemble de coordonnées vectorielles. Le fichier commence par un en-tête de longueur fixe, suivi d’un ou plusieurs enregistrements de longueur variable, chacun composé d’un en-tête et d’une section de contenu.
Ressources supplémentaires pour en savoir plus sur les shapefiles :
Où trouver des shapefiles pour SNT
Avant de commencer toute analyse, ces shapefiles doivent être examinés et validés par l’équipe SNT et doivent représenter l’ensemble officiel des limites nationales. Cela garantit la conformité avec les normes nationales, l’exactitude des limites et évite les divergences dans les données spatiales.
À des fins SNT, seuls les shapefiles officiels partagés par l’équipe SNT doivent être utilisés, mais les shapefiles téléchargés à partir de sources externes peuvent être utiles pour des travaux non liés à SNT, pour l’apprentissage ou pour l’exploration générale des shapefiles. Si l’équipe SNT ne peut pas obtenir un ensemble officiel de shapefiles pour SNT, elle peut décider d’envisager une source publique. Toutefois, l’analyste ne doit pas utiliser les shapefiles téléchargés avant qu’ils aient été examinés et validés par l’équipe SNT.
Les sources permettant d’accéder aux shapefiles généraux sont les suivantes :
- GADM : limites administratives mondiales
- Humanitarian Data Exchange (HDX) : ensembles de données sur les limites humanitaires et administratives
Étape par étape
Dans cette section, nous vous guidons à travers les étapes essentielles pour charger et visualiser des données shapefile.
L’exemple utilise des shapefiles de limites administratives de la Sierra Leone, en mettant l’accent sur les niveaux de chefferie (adm3) et de district (adm2). Les principes peuvent être appliqués à des shapefiles de n’importe quel pays.
Pour ignorer l’explication étape par étape, passez directement au code complet à la fin de cette page.
Étape 1 : Installer et charger les paquets
Commencez par installer et/ou charger les paquets nécessaires au traitement des données spatiales, à la manipulation des données et à la visualisation. Ces bibliothèques fournissent des fonctions essentielles pour travailler avec des données spatiales.
Le paquet sf est particulièrement important, car il implémente des normes simples pour le traitement des données vectorielles géographiques dans R.
Pour adapter le code :
- Ne modifiez rien dans le code ci-dessus.
Étape 2 : Importer et préparer les shapefiles
Définissez les chemins d’accès aux composants de votre shapefile et importez-les en tant qu’objets spatiaux. Le chargement correct de tous les composants d’un shapefile et la configuration d’un système de référence de coordonnées cohérent garantissent une représentation spatiale précise et la compatibilité avec d’autres ensembles de données géospatiales.
Montrer le code
#|
# Définir les chemins d'accès aux fichiers à l'aide de `here` pour garantir la reproductibilité
shapefile_shp <- here::here("english/data_r/shapefiles", "Chiefdom2021.shp")
shapefile_shx <- here::here("english/data_r/shapefiles", "Chiefdom2021.shx")
shapefile_dbf <- here::here("english/data_r/shapefiles", "Chiefdom2021.dbf")
# Niveau administratif 1 (par exemple, districts)
adm1_shapefile <- here::here("english/data_r/shapefiles", "District 2021.shp")
# Charger le shapefile chefferie dans un objet sf
gdf <- sf::st_read(shapefile_shp, quiet = TRUE)
# Charger le shapefile adm1
adm1_gdf <- sf::st_read(adm1_shapefile, quiet = TRUE)
# Définir le système de référence des coordonnées
sf::st_crs(gdf) <- 4326
sf::st_crs(adm1_gdf) <- 4326Pour adapter le code :
- Remplacez
"english/data_r/shapefiles"par le nom du dossier ou sous-dossier dans lequel vos composants de shapefile sont enregistrés - Mettez à jour les noms de fichiers afin qu’ils correspondent aux noms spécifiques de vos shapefiles
Étape 3 : Examiner les données spatiales
Le code ci-dessous affiche les 10 premières lignes de votre ensemble de données spatiales, en indiquant à la fois les entités géographiques (telles que les polygones pour les zones administratives) et les données d’attributs associées (telles que les noms et les codes), ce qui vous aide à comprendre la structure et le contenu du shapefile avant de poursuivre l’analyse.
Étape 4 : Visualiser le contenu du shapefile
Générez des cartes pour représenter visuellement vos données spatiales, en commençant par une carte de base d’un seul niveau administratif. La représentation visuelle permet de vérifier que votre shapefile s’est chargé correctement et vous offre une vue claire des limites géographiques. Ce code génère les limites administratives au niveau des chefferies (adm3) pour la Sierra Leone.
Montrer le code
#|
# Visualiser le shapefile des chefferies
basic_map <- ggplot() +
geom_sf(data = gdf, fill = "lightblue", color = "black") +
theme_minimal() +
theme(
panel.grid = element_blank(),
axis.title = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank()
) +
labs(
title = "Carte des chefferies de Sierra Leone (adm3)",
subtitle = "Limites administratives de niveau 3"
) +
theme(
plot.title = element_text(face = "bold", size = 14),
plot.subtitle = element_text(size = 12)
)
ggsave(
filename = file.path(output_dir, "chiefdom_boundaries.png"),
plot = basic_map,
width = 10,
height = 6
)Pour adapter le code :
- Ligne 23 : Veuillez mettre à jour le chemin d’accès au dossier de sortie afin qu’il corresponde à votre structure de dossiers.
- Modifiez les paramètres
color,fillettitleainsi que le style en fonction de vos besoins et de vos préférences.
Après avoir créé vos cartes des unités administratives, examinez-les avec l’équipe SNT afin de vous assurer qu’elles représentent fidèlement les unités opérationnelles pour la prise de décision. Cette étape de validation permet d’identifier tout problème lié aux shapefiles avant de poursuivre l’analyse.
Étape 5 : Superposer plusieurs niveaux administratifs
Pour ajouter les limites adm2 à la carte de l’étape 4, superposez les lignes adm2 sans fill, comme indiqué à la ligne 4 ci-dessous. Nous ajoutons également les noms adm2 à la carte afin d’identifier clairement les districts.
Montrer le code
# Superposition des limites des districts et des chefferies
overlay_map <- ggplot() +
geom_sf(data = gdf, fill = "lightblue", color = "black") +
geom_sf(data = adm1_gdf, fill = NA, color = "black", linewidth = 1.0) +
geom_sf_text(data = adm1_gdf, aes(label = FIRST_DNAM), size = 3) +
theme_minimal() +
theme(
panel.grid = element_blank(),
axis.title = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank()
) +
labs(
title = "Superposition des limites administratives de la Sierra Leone",
subtitle = "Districts (adm2) et chefferies (adm3)"
) +
theme(
plot.title = element_text(face = "bold", size = 14),
plot.subtitle = element_text(size = 12)
)
ggsave(
filename = file.path(output_dir, "overlay_district_chiefdom.png"),
plot = overlay_map,
width = 8,
height = 6
)Pour adapter le code :
- Modifiez
color,fill,titleet le style en fonction de vos besoins et de vos préférences - Si vous avez plus de deux niveaux administratifs, vous pouvez ajouter des couches
geom_sf()supplémentaires - Vous devrez peut-être ajuster le paramètre
labeldansgeom_sf_text()pour qu’il corresponde à la colonne de vos données contenant les noms
Résumé
Nous avons maintenant abordé les étapes essentielles pour lire et visualiser des shapefiles géospatiales en R à l’aide du package sf. Cela comprenait :
- La configuration de l’environnement nécessaire avec les packages de données spatiales
- L’importation des shapefiles et la configuration des systèmes de référence de coordonnées
- L’examen de la structure des données spatiales
- La création de cartes de base et de superposition des limites administratives
Ces étapes constituent la base d’une analyse et d’une visualisation spatiales plus avancées.
Avant de poursuivre l’analyse, veuillez partager vos cartes de shapefile avec l’équipe SNT pour validation. L’équipe s’assurera que :
- Les shapefiles représentent fidèlement les limites administratives actuelles
- Les limites correspondent aux unités opérationnelles utilisées pour la prise de décision
- Il n’y a pas de divergences entre les données des shapefiles et les limites officielles
- Toutes les décisions relatives à la cartographie (couleurs, libellés, symbologie) sont conformes aux normes du programme
Cette étape de validation est essentielle pour garantir l’intégrité des données tout au long du processus SNT.
Code complet
Veuillez trouver ci-dessous le code complet pour afficher les données des shapefiles.
Montrer le code
# ----------------------------------
# Étape 1 : Configurer l'environnement
# ----------------------------------
if (!requireNamespace("pacman", quietly = TRUE)) {
install.packages("pacman")
}
pacman::p_load(
sf,
dplyr,
ggplot2,
here
)
# ----------------------------------------------
# Étape 2 : Importer et préparer les shapefiles
#-----------------------------------------------
# Définir les chemins d'accès aux fichiers à l'aide de `here` pour garantir la reproductibilité
shapefile_shp <- here::here("english/data_r/shapefiles", "Chiefdom2021.shp")
shapefile_shx <- here::here("english/data_r/shapefiles", "Chiefdom2021.shx")
shapefile_dbf <- here::here("english/data_r/shapefiles", "Chiefdom2021.dbf")
# Niveau administratif 1 (par exemple, districts)
adm1_shapefile <- here::here("english/data_r/shapefiles", "District 2021.shp")
# Charger le shapefile chefferie dans un objet sf
gdf <- sf::st_read(shapefile_shp, quiet = TRUE)
# Charger le shapefile adm1
adm1_gdf <- sf::st_read(adm1_shapefile, quiet = TRUE)
# Définir le système de référence des coordonnées
sf::st_crs(gdf) <- 4326
sf::st_crs(adm1_gdf) <- 4326
# --------------------------------------------------
# Étape 3 : Examiner les données spatiales
# --------------------------------------------------
# Afficher les 10 premières lignes de l'objet spatial
head(gdf, 10)
# --------------------------------------------------
# Étape 4 : Visualiser le contenu du shapefile
# --------------------------------------------------
# Créer un dossier de sortie s'il n'existe pas
output_dir <- here::here("english/library/data/shapefiles/Shapefile outputs/")
if (!dir.exists(output_dir)) dir.create(output_dir)
# Visualiser le shapefile des chefferies
basic_map <- ggplot() +
geom_sf(data = gdf, fill = "lightblue", color = "black") +
theme_minimal() +
theme(
panel.grid = element_blank(),
axis.title = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank()
) +
labs(
title = "Carte des chefferies de Sierra Leone (adm3)",
subtitle = "Limites administratives de niveau 3"
) +
theme(
plot.title = element_text(face = "bold", size = 14),
plot.subtitle = element_text(size = 12)
)
ggsave(
filename = file.path(output_dir, "chiefdom_boundaries.png"),
plot = basic_map,
width = 10,
height = 6
)
# --------------------------------------------------
# Étape 5 : Superposer plusieurs niveaux administratifs
# --------------------------------------------------
# Superposition des limites des districts et des chefferies
overlay_map <- ggplot() +
geom_sf(data = gdf, fill = "lightblue", color = "black") +
geom_sf(data = adm1_gdf, fill = NA, color = "black", linewidth = 1.0) +
geom_sf_text(data = adm1_gdf, aes(label = FIRST_DNAM), size = 3) +
theme_minimal() +
theme(
panel.grid = element_blank(),
axis.title = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank()
) +
labs(
title = "Superposition des limites administratives de la Sierra Leone",
subtitle = "Districts (adm2) et chefferies (adm3)"
) +
theme(
plot.title = element_text(face = "bold", size = 14),
plot.subtitle = element_text(size = 12)
)
ggsave(
filename = file.path(output_dir, "overlay_district_chiefdom.png"),
plot = overlay_map,
width = 8,
height = 6
)