问题
I have geocoded points in long, lat format, and I want to calculate the distance between them using R. This seems pretty straight forward, yet I can't find a function that will do it easily. I've been attempting to do it with the gdistance package, but it seems very convoluted and oriented to graphing, I just need a number. Something like distanceBetween(pointA,pointB)
that returns a number.
UPDATE: This question is specific to R, the possible dup is more general. Although there is an R specific answer, it is buried in 28 other answers.
回答1:
Loading the geosphere package you can use a number of different functions
library(geosphere)
distm(c(lon1, lat1), c(lon2, lat2), fun = distHaversine)
Also:
distHaversine()
distMeeus()
distRhumb()
distVincentyEllipsoid()
distVincentySphere()
...
回答2:
Agree with @PereG on answer above, but think that the order of latitude and longitude is the other way around: lon, lat. This will affect your results for distance matrix. So correct is:
library(geosphere)
distm (c(lon1, lat1), c(lon2, lat2), fun = distHaversine)
Source: ftp://cran.r-project.org/pub/R/web/packages/geosphere/geosphere.pdf
来源:https://stackoverflow.com/questions/32363998/function-to-calculate-geospatial-distance-between-two-points-lat-long-using-r