计算大圆距离矩阵

时间:2014-05-12 17:16:38

标签: r matrix great-circle

dist(coords)使用欧几里德距离提供距离矩阵;它还提供了其他几种选择。但它没有提供任何选项,如半正式公式。

distHaversine()为给定的两组纬度/经度坐标计算我想要的距离(大圆)。我想知道是否存在使用半正式公式计算大圆距离矩阵的现有包/函数。

1 个答案:

答案 0 :(得分:5)

您可能已经注意到,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

有趣的提示:在sp::spDists() 计算两个矩阵之间的成对距离)的引擎盖下快速浏览一下,可以看出它使用了一个基本相同的{基于{1}}的策略。除了一些额外的错误检查和参数传递之外,主要的区别在于它应用apply()函数,我们应用spDistsN1()