Chapitre 9 Géocodage

# CRAN
library(sf)
library(tidyverse)
library(mapview)
library(mapedit)

# Github
# remotes::install_github("joelgombin/banR")
library(banR)

9.1 Géolocalisation à l’adresse

Plusieurs packages permettent de géocoder des adresses. Le package {tidygeocoder} utilise un grand nombre de services de géocodage en ligne et est international.

Le package {banR} de Gombin et Chevalier, exploite l’API de la Base Adresse Nationale. Il s’intalle depuis github. Il est particulièrement approprié pour géocoder des adresses en France.

mes_adresses <- data.frame(
  services = c("DDTM76", "CVRH Nantes", "DREAL Pays de la Loire"),
  adresses = c("Cité Administrative, 2 rue Saint Sever, 76000 ROUEN",
                "25 Rue du Douet Garnier, 44000 Nantes",
                "5 Rue Françoise Giroud, 44200 Nantes")
)

mes_adresses_geoc <- geocode_tbl(tbl = mes_adresses, adresse = adresses)
mes_adresses_geoc
# A tibble: 3 × 20
  services               adresses   latitude longitude result_label result_score
  <chr>                  <chr>         <dbl>     <dbl> <chr>               <dbl>
1 DDTM76                 Cité Admi…     49.4      1.10 2 Rue Saint…        0.520
2 CVRH Nantes            25 Rue du…     47.2     -1.57 25 Rue du D…        0.978
3 DREAL Pays de la Loire 5 Rue Fra…     47.2     -1.54 5 Rue Franç…        0.971
# ℹ 14 more variables: result_score_next <chr>, result_type <chr>,
#   result_id <chr>, result_housenumber <chr>, result_name <chr>,
#   result_street <chr>, result_postcode <chr>, result_city <chr>,
#   result_context <chr>, result_citycode <chr>, result_oldcitycode <chr>,
#   result_oldcity <chr>, result_district <chr>, result_status <chr>

Le résultat est un df enrichi de 15 nouveaux attributs dont le nom commence par result_ + les champs longitude et latitude.

mes_adresses_geoc %>% 
  select(starts_with("result_")) %>% 
  names()
 [1] "result_label"       "result_score"       "result_score_next" 
 [4] "result_type"        "result_id"          "result_housenumber"
 [7] "result_name"        "result_street"      "result_postcode"   
[10] "result_city"        "result_context"     "result_citycode"   
[13] "result_oldcitycode" "result_oldcity"     "result_district"   
[16] "result_status"     

Le champ result_score fournit un indicateur de la qualité de la géolocalisation.

Il reste alors à transformer le résultat en df spatial, grâce à la fonction st_as_sf() vue au chapitre [lire-des-donnees-spatiales].

mes_adresses_sf <- st_as_sf(mes_adresses_geoc, coords = c("longitude", "latitude"), crs = 4326)
mapview(mes_adresses_sf)

Pour en savoir plus : site web de {banR}, http://joelgombin.github.io/banR/.

9.2 Digitalisation

Le package {mapedit} permet de digitaliser des fonds de carte directement dans R.

Bien que pouvant se révéler pratique dans certains cas, ce package ne saurait se substituer aux fonctionnalités d’un SIG pour les tâches de numérisation importantes.