calcul de distance entre deux dataframe de localisation gps

Postez ici vos questions, réponses, commentaires ou suggestions - Les sujets seront ultérieurement répartis dans les archives par les modérateurs

Modérateur : Groupe des modérateurs

Delalande Lucas
Messages : 40
Enregistré le : 14 Déc 2017, 08:48

calcul de distance entre deux dataframe de localisation gps

Messagepar Delalande Lucas » 21 Mai 2018, 14:11

Bonjour,

J'ai deux data frame avec des coordonnées gps x,y (en wgs84) qui font exactement le meme nombre de lignes,

Je souhaite calculer la distance entre chacun des points de ligne identique :

DF1
x y
6.35 45.6
6.37 45.8
... ....

DF2
x y
6.32 45.7
6.30 47.6
.... ....

soit pour la première valeur : distance entre le point de coordonnées du DF1 (6.35,45.6) et celui du DF2 (6.32, 45.7)

Une idée ?

Merci!

Gabriel Terraz
Messages : 591
Enregistré le : 26 Sep 2011, 15:11

Re: calcul de distance entre deux dataframe de localisation gps

Messagepar Gabriel Terraz » 21 Mai 2018, 16:20

Salut,

Quelque chose de très simple peut-être :

Code : Tout sélectionner

sqrt((df2$x - df1$x)^2 + (df2$y - df1$y)^2)

Delalande Lucas
Messages : 40
Enregistré le : 14 Déc 2017, 08:48

Re: calcul de distance entre deux dataframe de localisation gps

Messagepar Delalande Lucas » 21 Mai 2018, 19:25

exact! les bases ! merci!

François Bonnot
Messages : 537
Enregistré le : 10 Nov 2004, 15:19
Contact :

Re: calcul de distance entre deux dataframe de localisation gps

Messagepar François Bonnot » 22 Mai 2018, 06:16

Bonjour,
Attention que dans nos régions (il semble que vos localités soient dans l'est de la France) un degré de longitude correspond à une distance beaucoup plus courte qu'un degré de latitude (rapport cos(45°) soit environ 0.7). On ne peut donc faire un calcul comme s'il s'agissait de coordonnées projetées, qui de plus ne donne pas un résultat en km. Le calcul précis de la distance géographique est assez compliqué, heureusement il existe plusieurs packages sous R permettant de le réaliser.
Voir par exemple la fonction distGeo du package geosphere:
https://cran.r-project.org/web/packages/geosphere/geosphere.pdf
François

Bertrand Vassor
Messages : 46
Enregistré le : 18 Sep 2017, 10:18

Re: calcul de distance entre deux dataframe de localisation gps

Messagepar Bertrand Vassor » 23 Mai 2018, 14:06

Bonjour,

pour compléter les propos de François, mesurer la distance entre deux points d'une sphère est un problème courant pour les marins et les aviateurs. Si les points sont assez éloignés, il faut utiliser l'orthodromie :
https://fr.wikipedia.org/wiki/Orthodromie
L'article donne la formule de calcul.

François Bonnot
Messages : 537
Enregistré le : 10 Nov 2004, 15:19
Contact :

Re: calcul de distance entre deux dataframe de localisation gps

Messagepar François Bonnot » 24 Mai 2018, 06:41

Bonjour,
Pour compléter les propos de Bertrand, la distance selon l'orthodromie sphérique est donnée dans le package geosphere par la fonction distCosine. Elle est un peu moins précise que distGeo (qui modélise la terre par un ellipsoïde au lieu d'une sphère) mais suffisante dans la plupart des cas.
Exemple des 2 premiers points des données de Lucas :

Code : Tout sélectionner

library(geosphere)
p1 <- c(6.35,45.6)
p2 <- c(6.32,45.7)
distGeo(p1,p2)    ## 11357.8
distCosine(p1,p2) ## 11374.1
La différence est de 16 m, soit 0.14 %
François

Delalande Lucas
Messages : 40
Enregistré le : 14 Déc 2017, 08:48

Re: calcul de distance entre deux dataframe de localisation gps

Messagepar Delalande Lucas » 24 Mai 2018, 16:24

en effet, super avec geosphere ! merci


Retourner vers « Questions en cours »

Qui est en ligne

Utilisateurs parcourant ce forum : Google [Bot], Karen ZANARDI et 1 invité