Produire des cartes avec

Author

Lino Galiana

Onyxia

Dérouler les slides ci-dessous ou cliquer ici pour afficher les slides en plein écran.

Dans ce TP, nous allons apprendre à créer des cartes avec . A mesure que devient incontournable auprès des personnes manipulant des données spatiales, les solutions pour produire des cartes de qualité deviennent de plus en plus nombreuses. a de moins en moins à envier aux logiciels spécialisés comme QGIS.

Si vous êtes intéressés par Python , une version très proche de ce TP est disponible dans mon cours de l’ENSAE.

Note

Produire de belles cartes demande du temps mais aussi du bon sens. Comme toute représentation graphique, il est important de réfléchir au message à faire passer et aux moyens appropriés. La sémiologie cartographique, une discipline scientifique qui s’intéresse aux messages transmis par les cartes, propose certaines règles pour éviter de transmettre des messages faussés, volontairement ou involontairement.

Certaines peuvent être retrouvées à travers des conseils pratiques dans ce guide de sémiologie cartographique de l’Insee. Celles-ci sont reprises dans ce guide.

Cette présentation de Nicolas Lambert présente, à partir de nombreux exemples, quelques principes de la dataviz cartographique.

Ce TP vise à initier:

Dans ce chapitre, nous allons utiliser les packages suivants:

library(dplyr)
library(sf)
library(stringr)
library(archive)
library(ggplot2)
library(glue)
library(ggtext)
library(scales)
library(units)
library(leaflet)
library(cartiflette)

1 Données

Au cours de ce chapitre, nous allons utiliser plusieurs jeux de données pour illustrer différents types de cartes:

  • Des comptages de population ;
  • Les limites départementales de la France métropolitaine ;
  • Les limites communales du Finistère ;
  • Le couvert forestier du département des Landes ;

2 Import des données

Ce TD va proposer un certain nombre de jeux de données intéressants pour la cartographie. Comme l’import de ceux-ci n’est pas le coeur du chapitre, nous proposons directement le code d’import des données.

2.1 Populations légales au niveau départemental

library(readr)
library(dplyr)

# download et unzip pour avoir les fichiers
url_pop_legales = "https://www.insee.fr/fr/statistiques/fichier/6683035/ensemble.zip"
download.file(url_pop_legales, "pop_legales.zip")
unzip("pop_legales.zip")

pop_legales_departements = read_csv2("donnees_departements.csv")
pop_legales_finistere = read_csv2("donnees_communes.csv") %>%
  filter(CODDEP == "29") %>%
  mutate(code_insee = paste0(CODDEP, CODCOM))

2.2 Limites communales et départementales

Nous allons utiliser cartiflette qui facilite la récupération des fonds de carte administratifs de l’IGN.

remotes::install_github("linogaliana/cartiflette-r")

En premier lieu, nous allons récupérer les limites des départements:

library(cartiflette)
departement_borders <- download_vectorfile_url_all(
    crs = 4326,
    values = "metropole",
    borders="DEPARTEMENT",
    vectorfile_format="geojson",
    filter_by="FRANCE_ENTIERE",
    source="EXPRESS-COG-CARTO-TERRITOIRE",
    year=2022)

Pour s’en assurer, une carte peut rapidement être produite:

ggplot(departement_borders) +
  geom_sf(fill = "transparent") +
  theme_void()

On va également récupérer les limites des communes du Finistère avec cartiflette. Voici le code pour ne garder que les communes du Finistère (département 29):

finistere <- download_vectorfile_url_all(
    crs = 4326,
    values = "29",
    borders="COMMUNE",
    vectorfile_format="geojson",
    filter_by="DEPARTEMENT",
    source="EXPRESS-COG-CARTO-TERRITOIRE",
    year=2022)


finistere <- finistere %>% left_join(pop_legales_finistere, by = c("INSEE_COM" = "code_insee") )
Exercice 1: représenter rapidement les frontières pour se placer dans l’espace

On va d’abord faire une carte simple, avec ggplot, des limites communales

  1. En s’inspirant du code précédent, faire la carte du Finistère

Pour en apprendre un peu plus sur les données, on va mettre en oeuvre une carte avec le package leaflet. Celui-ci permettra de créer des visualisations réactives, plus propices à l’exploration de données.

  1. Représenter les limites communales du Finistère avec le package leaflet en utilisant les fonctions suivantes:
    • Afficher un fonds de carte Open Street Map avec la fonction addTiles
    • Afficher les limites des polygones avec la fonction addPolylines
  2. Travailler un peu la couche Polylines en réduisant la taille des bordures et en utilisant le paramètre popup pour afficher le nom de la ville et la population communales

Carte obtenue à la question 1

Solution question 1
ggplot(finistere) +
  geom_sf(fill = "transparent") +
  theme_void()

Carte obtenue à la question 2

Solution question 2
leaflet(finistere) %>% 
  addTiles() %>%
  addPolylines()