install.packages("sf")
install.packages("tidygeocoder")
install.packages("mapview")
install.packages("osrm")
install.packages("DT")
Entre école tématique et AG de laboratoire
Tranche de vie d’un professeur de Géographie
1 Introduction
Alors que l’été approche, R.L.G, Professeur de géographie dans une université parisienne, est tiraillé entre la participation à deux événements professionnels passionnants pour terminer l’année.
Doit-il participer à l’école thématique organisée par l’UAR qu’il dirige ou à l’assemblée générale de son laboratoire ?
R.L.G souhaite vraiment participer au deux… Coup de chance ! Ils se déroulent presque au même endroit : l’île d’Oléron. Bien que R.L.G soit un pilote d’avion aguerri, l’utilisation de ce moyen de transport ne serait pas efficient par rapport à la distance à parcourir pour faire acte de présence aux deux évenements. Et surtout selon le collectif “Labos 1point5”, il ne serait pas responsable de réaliser ce trajet en avion pour des raisons écologiques.
Les ingénieurs de son unité ont décidé de calculer des trajets optimisés à pied ou à vélo entre ces deux lieux, pour permettre à leur directeur de représenter l’UAR RIATE aux quatres coins de l’île durant cette dernière semaine de Juin.
Mais comment ce groupuscule de géomaticiens va-t-il s’y prendre ??! Réponse ci-dessous…
2 Packages & données
2.1 Liste des packages
Les packages utilisés pour réaliser cette analyse exploratoire sont les suivants :
sf
: pour manipuler des données géographiques vectoriellestidygeocoder
: pour géocoder des adressesmapview
: pour visualiser des données géo. sur un fond de carte interactifosrm
: pour faire du routage (calcul d’itinéraire)DT
: pour afficher des tableaux interactifs
Installation des packages :
Chargement des librairies :
library(sf)
library(tidygeocoder)
library(mapview)
library(osrm)
library(DT)
2.2 Les adresses des événements
Seule deux adresses vont être utilisées comme données pour réaliser cette exploration :
- Le lieux de l’école thématique :
140, route des Allards, 17310 Saint-Pierre-d’Oléron
- Le lieux de l’assemblée générale :
1, allée Momplaisir, 17370 Saint Trojan Les Bains
3 Géocodage des lieux
Pour calculer un itinéraire entre deux lieux, il faut dans un premier temps déterminer les localisations précises de départ et d’arrivée. Pour cela nous devons transformer les adresses des lieux concernés en deux points localisés dans l’espace (x,y). Cela s’appelle du géocodage1.
3.1 Création d’un tableau d’adresses
Récupération des deux adresses ciblées.
<- "140, route des Allards, 17310 Saint-Pierre-d'Oléron"
add1 <- "1, allée Monplaisir, 17370 Saint Trojan Les Bains" add2
Construction d’un data.frame
contenant ces adresses.
<- data.frame(name = c("CAES du CNRS", "Hôtel Arc en ciel"), adresse = c(add1, add2)) lieux_df
Affichage du tableau lieux_df
:
3.2 Géocodage des adresses
Récupération des coordonnées de localisation à partir d’une adresse avec le package tidygeocoder
.
<- geocode(.tbl = lieux_df , address = "adresse", quiet = TRUE) lieux_loc
Coordonnées géographiques récupérées (lieux_loc
) :
3.3 Des coordonnées à la couche géographique
Conversion des coordonnées en couche géographique de points avec la package sf
.
<- st_as_sf(lieux_loc, coords = c("long", "lat"), crs = 'EPSG:4326') lieux_sf
Le tableau a été converti en couche géographique “cartographiable” (objet sf
). La librairie mapview
permet d’afficher très facilement cette couche de points créée sur un fond de carte intéractif.
mapview(lieux_sf)
4 Calcul des distances
Selon les données de la base de données OpenStreetMap :
4.1 A pied
<- osrmTable(src = lieux_sf[1,],
mat_foot dst = lieux_sf[2,],
osrm.profile = "foot",
measure = c("duration",
"distance"))
Distance km et temps
Le chemin le plus court à pied est de 18.9 km. La durée de déplacement est estimée à 4.2 h.
4.2 En vélo
<- osrmTable(src = lieux_sf[1,],
mat_bike dst = lieux_sf[2,],
osrm.profile = "bike",
measure = c("duration",
"distance"))
Distance km et temps
Le chemin le plus court à vélo est de 16.3 km. La durée de déplacement est estimée à 1 h.
5 Conclusion - itinéraire
R.L.G devrait chosir l’option vélo si il veut assister un minimum aux deux évenements. Pour calculer le plus court chemin à vélo selon OpenStreetMap, il est possible d’utiliser la fonction osrmRoute()
du package osrm
.
<- osrmRoute(src = lieux_sf[1,], dst = lieux_sf[2,], osrm.profile ="bike") route
L’itinéraire récupéré peut ensuite être affiché avec mapview
.
mapview(route) + mapview(lieux_sf)
6 Informations de session
R version 4.5.1 (2025-06-13)
Platform: x86_64-pc-linux-gnu
Running under: Ubuntu 24.04.2 LTS
Matrix products: default
BLAS: /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3
LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.26.so; LAPACK version 3.12.0
locale:
[1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
[3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
[5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
[7] LC_PAPER=en_US.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
time zone: Etc/UTC
tzcode source: system (glibc)
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] DT_0.33 osrm_4.2.0 mapview_2.11.2 tidygeocoder_1.0.6
[5] sf_1.0-21
loaded via a namespace (and not attached):
[1] xfun_0.52 bslib_0.9.0 raster_3.6-32
[4] htmlwidgets_1.6.4 lattice_0.22-7 leaflet.providers_2.0.0
[7] vctrs_0.6.5 tools_4.5.1 crosstalk_1.2.1
[10] generics_0.1.4 stats4_4.5.1 curl_6.3.0
[13] tibble_3.3.0 proxy_0.4-27 pkgconfig_2.0.3
[16] KernSmooth_2.23-26 satellite_1.0.5 RColorBrewer_1.1-3
[19] uuid_1.2-1 leaflet_2.2.2 lifecycle_1.0.4
[22] compiler_4.5.1 farver_2.1.2 googlePolylines_0.8.7
[25] textshaping_1.0.1 terra_1.8-54 codetools_0.2-20
[28] htmltools_0.5.8.1 class_7.3-23 sass_0.4.10
[31] yaml_2.3.10 pillar_1.10.2 jquerylib_0.1.4
[34] classInt_0.4-11 cachem_1.1.0 brew_1.0-10
[37] tidyselect_1.2.1 digest_0.6.37 dplyr_1.1.4
[40] fastmap_1.2.0 grid_4.5.1 colorspace_2.1-1
[43] cli_3.6.5 magrittr_2.0.3 base64enc_0.1-3
[46] dichromat_2.0-0.1 leafem_0.2.4 e1071_1.7-16
[49] RcppSimdJson_0.1.13 scales_1.4.0 sp_2.2-0
[52] rmarkdown_2.29 httr_1.4.7 png_0.1-8
[55] evaluate_1.0.3 knitr_1.50 rlang_1.1.6
[58] Rcpp_1.0.14 leafpop_0.1.0 isoband_0.2.7
[61] glue_1.8.0 DBI_1.2.3 mapiso_0.3.0
[64] svglite_2.2.1 jsonlite_2.0.0 R6_2.6.1
[67] systemfonts_1.2.3 units_0.8-7
7 References
Notes de bas de page
Le géocodage consiste convertir une adresse en coordonnées géographiques (longitude et latitude).↩︎