Çag*_*lan 1 r matrix great-circle
dist(coords)
使用欧氏距离提供距离矩阵; 它还提供了其他几种选择.但它没有提供任何选项,如半胱氨酸配方.
distHaversine()
为给定的两组纬度/经度坐标计算我想要的距离(大圆).我想知道是否存在使用半正式公式计算大圆距离矩阵的现有包/函数.
您可能已经注意到,distHaversine()
将计算单个点与两列坐标矩阵之间的距离.
要计算两个坐标矩阵之间的所有成对距离,只需使用apply()
逐行迭代通过其中一个矩阵,计算每个点与另一个点中所有点的距离.
library(geosphere)
## Example coordinates (here stored in two column matrices)
cc1 <- rbind(c(0,0),c(1,1))
cc2 <- rbind(c(90,0),c(90,90), c(45,45))
## Compute matrix of distances between points in two sets of coordinates
apply(cc1, 1, FUN=function(X) distHaversine(X, cc2))
# [,1] [,2]
# [1,] 10018754 9907452
# [2,] 10018754 9907435
# [3,] 6679169 6524042
Run Code Online (Sandbox Code Playgroud)
有趣的说明:在引擎盖下快速浏览sp::spDists()
(确实计算两个矩阵之间的成对距离),可以发现它使用的是基本相同apply()
的策略.除了一些额外的错误检查和参数传递之外,主要区别在于它应用spDistsN1()
我们应用的函数distHaversine()
.