Bloc-notes de Sylvain

Mesurer des distances dans OpenRefine

Suite à une discussion vue passer sur Mastodon, quelques notes liées à la mesure de distance entre deux points en utilisant OpenRefine. Je m'étais posé la question récemment pour des histoires de distance entre boîtes à livres alors je partage ici.

Le calcul de distance à vol d'oiseau peut se faire à l'aide de formule géométrique, on trouve tout un tas de questions à ce sujet sur stackoverflow. Et OpenRefine a l'avantage d'intégrer toutes les formules nécessaires (cos, acos, radians).

Dans un fichier OpenRefine contenant un point de départ défini par lat1, lng1 et un point d'arrivée défini par lat2, lng2, il est possible de créer une colonne contenant la distance à vol d'oiseau entre ces deux points à l'aide de la formule suivante :

( 6371 * acos( cos( radians(cells["lat1"].value) ) *cos( radians( cells["lat2"].value ) ) * cos( radians( cells["lng2"].value ) - radians(cells["lng1"].value) ) + sin( radians(cells["lat1"].value) ) * sin( radians( cells["lat2"].value ) ) ) )
    

Les quelques exemples que j'ai fait semblent fonctionner, au sein de la France métropolitaine en tout cas. Il y a peut-être des effets de bord à l'international mais c'est un début.