gpt4 book ai didi

r - 计算大圆距离矩阵

转载 作者:行者123 更新时间:2023-12-02 17:38:29 26 4
gpt4 key购买 nike

dist(coords) 使用欧氏距离提供距离矩阵;它还提供了其他几个选项。但它没有提供任何选项,例如 haversine 公式。

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

有趣的注意事项:快速浏览一下 sp::spDists()(它确实计算两个矩阵之间的成对距离)表明它使用了一个本质上相同的基于 apply() 的策略。除了一些额外的错误检查和参数传递之外,主要区别在于它在我们应用 distHaversine() 的地方应用函数 spDistsN1()

关于r - 计算大圆距离矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23615063/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com