Différentes phases de geocoding et de mesures de distance sont réalisées dans le package evavelo
Le géocodage est réalisé lors de l’appel à la fonction geocode_evavelo()
qui est elle-même appelée par process_evavelo()
Les champs suivants sont géocodés:
nom_commune
(associé à cog
)ville_res
(associé à cp_res
et pays_res
)ville_heb
iti_depart_itineraire
iti_arrivee_itineraire
nom_site_enq
Le gécodage de ces communes est d’abord réalisé localement en cherchant une correpondance exacte avec la Base officielle des codes postaux réalisé par La Poste.
Les villes qui n’ont pas été détectées lors de cette recherche sont ensuite recherchées en utilisant le package banR qui fait lui même appel à la Base Adresse Nationale (BAN).
Cette deuxième recherche permet de faire une recherche “approximative” et ainsi interpréter des communes mal nommées ou proposer des corrections.
La recherche de ville étrangère est réalisée uniquement sur le champ ville_res
quand pays_res
est différent de “France”.
Un premier géocodage est réalisé localement en utilisant la Base de données world.cities
du package {maps}
. La description de cette base de données est la suivante:
This database is primarily of world cities of population greater than about 40,000. Also included are capital cities of any population size, and many smaller towns.
Les villes qui n’ont pu être géocodées sont ensuite recherchées en utilisant le package tidygeocoder qui fait appel au service Nomatim de Open Street Map
Ce service étant gratuit, les requêtes sont bridées à 1 demande par seconde. Le géocodage peut donc prendre plusieurs minutes en fonction du nombre de villes étrangères à géocoder.
Les champs iti_dep_iti_valide
et iti_arr_iti_valide
sont renseignés en indiquant la commune appartenant à table_commune
étant la plus proche des champs respectifs iti_depart_itineraire
et iti_arrivee_itineraire
Ces champs ne sont pas renseignés si la commune la plus proche est située à une distance à vol d’oiseau de plus de 30km.
La détection de la commune la plus proche ainsi que la limite des 30km sont calculées en utilisant la méthode mapbbox cheap ruler qui permet de faire des calculs de distance extrêmement rapidement avec une précision suffisamment élevée pour ce type de distances.
La distance hébergement - lieu d’enquête (distance_heb_enq
) est calculée en utilisant la méthode d’Haversine entre les points ville_res
et nom_site_enq
.
Nous déterminons ensuite une distance réelle (distance_heb_enq_reelle
) en utilisant la formule du cabinet Indiggo:
[distance_heb_enq_reelle] = [distance_heb_enq]*(1,1 + 0,3*EXP(-[distance_heb_enq] / 20))