我已经将点用经纬度格式进行了地理编码,并且想要使用 R 计算它们之间的距离。这似乎很简单,但我找不到一个能够轻松完成此任务的函数。我一直在尝试使用 gdistance 包来完成,但它似乎非常混乱并且面向绘图,而我只需要一个数字。类似于 distanceBetween(pointA,pointB)
这样返回一个数字的函数。
我已经将点用经纬度格式进行了地理编码,并且想要使用 R 计算它们之间的距离。这似乎很简单,但我找不到一个能够轻松完成此任务的函数。我一直在尝试使用 gdistance 包来完成,但它似乎非常混乱并且面向绘图,而我只需要一个数字。类似于 distanceBetween(pointA,pointB)
这样返回一个数字的函数。
通过加载 geosphere 包,您可以使用许多不同的函数。
library(geosphere)
distm(c(lon1, lat1), c(lon2, lat2), fun = distHaversine)
此外:
distHaversine()
distMeeus()
distRhumb()
distVincentyEllipsoid()
distVincentySphere()
抱歉,我只能回答英文问题。distm
的文档(版本 1.5-5
)中写道,前两个参数可以是 Nx2
矩阵(即点的集合),所以我不明白这里为什么需要使用 apply
? - oensdistm
默认返回的距离单位为米。distm
的文档未提及默认情况下距离以哪种单位返回,但是 distHaversine
的文档中有提到。 - Mikko同意以上@PereG的答案,但认为纬度和经度的顺序是相反的:lon,lat。这会影响到您的距离矩阵结果。因此正确的顺序应该是:
library(geosphere)
distm (c(lon1, lat1), c(lon2, lat2), fun = distHaversine)
来源: ftp://cran.r-project.org/pub/R/web/packages/geosphere/geosphere.pdf
sp
包中的spDistsN1()
函数。 - user3710546