Le package mapsf
vient tout juste d’arriver sur le CRAN. mapsf
est un package de cartographie thématique léger et ergonomique.
Le package est accompagné d’un site web et d’une vignette.
Principales fonctionnalités du package
mf_map()
La fonction principale de mapsf
est mf_map()
. Cette unique fonction permet de réaliser un grand nombre de types de cartes.
Le premier argument, x
, est destiné à recevoir un objet sf
(de points, lignes ou polygones). Le deuxième argument, var
, doit recevoir le nom de la variable à représenter. Le troisième argument, type
, définira le type de carte à créer.
Exemple de carte choroplèthe:
Voici un exemple de chaque type de carte :
L’habillage
Plusieurs fonctions sont dédiées à l’affichage d’éléments d’habillage de la carte. Le script suivant en mobilise la plupart :
Thèmes
Il est possible de choisir un thème graphique pour les cartes grâce à la fonction mf_theme()
.
Les thèmes proposés par mapsf
sont visibles sur les cartes suivantes:
Il est possible de créer ses propres thèmes. Les paramètres des thèmes sont la couleur de fond et la couleur principale, la taille des marges, et plusieurs paramètres du titre.
Les cartons (ou insets)
Il est possible de créer des cartons cartographiques avec la fonction mf_inset_on()
.
Il est aussi possible en utilisant mf_inset_on(x = "worldmap")
puis mf_worldmap()
d’afficher une carte de situation dans le carton:
Dans un carton on peut afficher ce que l’on veut, pas uniquement une carte. En fait une fenêtre graphique est affichée dans la fenêtre graphique courante :
Export des cartes
La fonction mf_init()
permet, entre autre, d’initialiser une carte centrée sur un objet géographique.
Notons l’utilisation du paramètre expandBB
qui permet d’étendre l’espace de la carte sur l’un (ou plusieurs) de ces côtés. Ce paramètre peut être utile pour réserver un espace pour les légendes par exemple.
Cette fonction permet également d’exporter les cartes aux formats PNG et SVG. Le ratio hauteur/largeur de la figure produite respecte celui de l’objet géographique (x
). Cela permet de produire des cartes bien centrées et sans marges excessives.
Sucre syntaxique
Les fonctions prenant en entrée un objet sf
sont pour l’essentiel compatible avec la syntaxe pipe (le %>%
de magrittr
, et fort probablement le futur |>
) :
Développement
Le développement du package se fait sur la plateforme GitHub.
Ce projet utilise les conventional commits qui forcent la création d’un historique claire et explicite des étapes de développement.
Contrairement à cartography
, mapsf
ne devrait pas être enrichi de méthodes de représentation exotiques (cartes en gaufres, cartes en grilles régulières, triangles proportionnels, import de tuiles OpenStreetMap, cartes de discontinuités…). Si ces fonctionnalités se révèle nécessaires elle feront sûrement l’objet d’un ou plusieurs packages complémentaires (voir par exemple maptiles
pour l’import de tuiles cartographiques raster).
Et cartography
alors ?
La première version de cartography
est sortie en 2015. Cette version était faite pour interagir avec les fonctions et objets des packages sp
, rgdal
et rgeos
(sf
n’existait pas encore). La version 2.0.0 a introduit la possibilité de cartographier des objets sf
. La majorité du code a aussi été adaptée pour utiliser sf
plutôt que la trinité sp
, rgdal
, rgeos
. L’API du package (fonctions, noms des fonctions, noms des arguments) est restée a peu près identique.
Certains choix initiaux finissent par peser sur le développement et la maintenance du package (utilisation du camelCase, des noms de fonctions et d’arguments super longs et parfois peu intuitifs). La nécessité de backward compatibility (cartography
a quand même été téléchargé au moins 132000 fois sur le CRAN de RStudio) tend a freiner le développement de nouvelles fonctionnalités. C’est pour ces raisons que j’ai décidé de créer un successeur à cartography
.
Que va donc devenir cartography
?
A partir de sa prochaine version, cartography
entre en mode maintenance. Cela signifie que le package continuera a fonctionner indéfiniment sans ajout de nouvelles fonctionnalités. Les bugs seront corrigés et le package restera sur le CRAN.
Les projets utilisant déjà cartography
peuvent continuer à l’utiliser mais j’incite les nouveaux projets à utiliser plutôt mapsf
.
La vignette de mapsf
propose un tableau de correspondance des fonctions.
Remerciements
Je tiens à remercier Hugues Pecout pour son magnifique logo hexagonale et ses remarques pertinentes sur l’ergonomie du package, Diego Hernangómez pour son travail sur le site web du package, et bien sûr les auteurs et contributeurs du package sf
et des librairies indispensables GEOS
, GDAL
et PROJ
.
OpenEdition vous propose de citer ce billet de la manière suivante :
Timothée Giraud (4 mars 2021). Le package mapsf. R Géomatique. Consulté le 13 janvier 2025 à l’adresse https://doi.org/10.58079/tp4o
Bonjour,
j’ai beaucoup apprécié les fonction du package mapsf et la clarté des cartes. Lorsque j’exécute les exemples de la Martinique fournis avec le package, j’obtiens les même résultats. Cependant, en appliquant les mêmes fonctions, avec le shapefile de mon pays (Congo ou République du Congo) j’obtiens des errers lors qu’il s’agit de calculer les centroïdes ou faires de la cartographie thématique. qu’est-ce que vous me conseillé ?
Voici la nature des erreurs obtenues:
“Error in s2_geography_from_wkb(x, oriented = oriented, check = check) :
Evaluation error: Found 1 feature with invalid spherical geometry.
[4] Loop 2 is not valid: Edge 2 has duplicate vertex with edge 5.
In addition: Warning message:
In st_centroid.sf(d2) :
st_centroid assumes attributes are constant over geometries of x”
ou
“Error in s2_geography_from_wkb(x, oriented = oriented, check = check) :
Evaluation error: Found 1 feature with invalid spherical geometry.
[4] Loop 2 is not valid: Edge 2 has duplicate vertex with edge 5.
Bonjour,
Il m’est très difficile de vous répondre avec ces informations. Les messages d’erreur semble indiquer un problème de validité des géométries contenues dans votre fichier.
Si vous voulez vous pouvez poster un exemple reproductible () dans les issues du dépôt du package : https://github.com/riatelab/mapsf/issues
TG
Bonjour,
J’aurais voulu savoir s’il était possible de mettre un graph construit avec ggplot dans un inset car j’ai l’impression que ça ne fonctionne pas ?
Merci par avance,
Bonjour,
En effet le package mapsf utilise le système de graphiques de base de R.
Il n’est donc pas possible d’utiliser ggplot2 dans les insets.
Cordialement,
TG
Bonjour Mr Giraud,
ne sachant comment vous joindre, j’utilise ce subterfuge pour vous contacter. Je ne suis ni cartographe ni informaticien. aussi pour combler cette grave lacune, j’ai pris beaucoup de plaisir à lire votre excellent travail “Cartographie avec R”. Cependant, je bute sur l’exercice 1.11 en particulier en ce qui concerne le chargement du fichier Occitanie.gpkg avec la fonction st_read (qui par ailleurs fonctionne très bien avec des fichiers .shp récupérés via admin.express). J’utilise un (vieux) MacBookair (R Version 3.6.6 non upgradable) où occ_raw <- st_read(dsn = "data/Occitanie.gpkg", stringsAsFactors = FALSE) échoue totalement et un IMac (R version 4.02) où cette fonction opère correctement à la condition expresse de supprimer stringsAsFactors = FALSE . Pouvez-vous m'aider à comprendre ce comportement étrange ? Avec mes remerciements anticipés.
Dr JC Bartier