Entre école tématique et AG de laboratoire

Tranche de vie d’un professeur de Géographie

Auteur·rice·s
Affiliations

Raphaëlle Krummeich

UMR IDEES, Université de Rouen Normandie

Hugues Pecout

UMR Géographie-cités, CNRS

Sébastien Rey-Coyrehourcq

UMR IDEES, Université de Rouen Normandie

Date de publication

21 juin 2025


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.

Aider R.L.G à la prise de décision ?

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 vectorielles
  • tidygeocoder : pour géocoder des adresses
  • mapview : pour visualiser des données géo. sur un fond de carte interactif
  • osrm : pour faire du routage (calcul d’itinéraire)
  • DT : pour afficher des tableaux interactifs

Installation des packages :

install.packages("sf")
install.packages("tidygeocoder")
install.packages("mapview")
install.packages("osrm")
install.packages("DT")

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.

add1 <- "140, route des Allards, 17310 Saint-Pierre-d'Oléron"
add2 <- "1, allée Monplaisir, 17370 Saint Trojan Les Bains"

Construction d’un data.frame contenant ces adresses.

lieux_df <- data.frame(name = c("CAES du CNRS", "Hôtel Arc en ciel"), adresse = c(add1, add2))

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.

lieux_loc <- geocode(.tbl = lieux_df , address = "adresse", quiet = TRUE)

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.

lieux_sf <- st_as_sf(lieux_loc, coords = c("long", "lat"), crs = 'EPSG:4326')

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

mat_foot <- osrmTable(src = lieux_sf[1,],
                      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

mat_bike <- osrmTable(src = lieux_sf[1,],
                      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.

route <- osrmRoute(src = lieux_sf[1,], dst = lieux_sf[2,], osrm.profile ="bike")

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

Giraud, Timothée, et Hugues Pecout. 2024. Géomatique avec R. Zenodo. https://doi.org/10.5281/zenodo.10560265.

Notes de bas de page

  1. Le géocodage consiste convertir une adresse en coordonnées géographiques (longitude et latitude).↩︎