web-dev-qa-db-fra.com

Fonction permettant de calculer la distance géospatiale entre deux points (lat, long) à l'aide de R

J'ai des points géocodés au format long, lat, et je veux calculer la distance qui les sépare à l'aide de R. Cela semble assez simple, mais je ne trouve pas de fonction qui le fasse facilement. J'ai essayé de le faire avec le paquetage gdistance, mais cela semble très compliqué et orienté graphique, il me faut juste un nombre. Quelque chose comme distanceBetween(pointA,pointB) qui retourne un nombre.

MISE À JOUR: Cette question est spécifique à R, la duper possible est plus générale. Bien qu'il existe une réponse spécifique R, elle est enterrée dans 28 autres réponses.

46
SteveO7

En chargeant le paquet geosphere, vous pouvez utiliser un certain nombre de fonctions différentes

library(geosphere)
distm(c(lon1, lat1), c(lon2, lat2), fun = distHaversine)

Aussi:

distHaversine()
distMeeus()
distRhumb()
distVincentyEllipsoid()
distVincentySphere()

...

67
PereG

D'accord avec @PereG sur la réponse ci-dessus, mais pensez que l'ordre des latitude et longitude est l'inverse: lon, lat. Cela affectera vos résultats pour la matrice de distance. Donc correct est:

library(geosphere)
distm (c(lon1, lat1), c(lon2, lat2), fun = distHaversine)

Source: ftp://cran.r-project.org/pub/R/web/packages/geosphere/geosphere.pdf

14
Agustín Indaco