您能否充分解释使用 distm
的巨大差异?函数或 distVincentyEllipsoid
计算R中测地坐标距离的函数?
我注意到使用 distm 进行此计算需要更长的时间。您能否向我解释一下差异之外,为什么会发生这种情况?
谢谢!
最佳答案
继续您之前的问题:Distance calculation optimization in R
速度与生成返回对象所需的计算级别有关,不一定与距离计算之间的差异有关(我不确定 distm()
函数使用什么大圆计算作为它的默认值)。确实是geosphere::
此处的文档:https://cran.r-project.org/web/packages/geosphere/geosphere.pdf建议 distVincentyEllipsoid()
与其他大圆方法相比,计算“非常准确”但“计算强度更大”,而这会让您怀疑计算速度较慢,这是因为我在回答中构建代码的方式是返回每行之间的距离向量(不是每个点之间的距离矩阵)。
相反,您的 distm()
原始代码中的计算返回每个点之间的多个向量的矩阵。对于您的问题,只要对数据进行排序,就没有必要这样做,这就是我这样做的原因。此外,也没有必要使用分层聚类将基于这些距离的点聚类为 3 个(您定义的数量)聚类,因为我们可以使用每个点值之间的距离百分比来做同样的事情。同样,速度优势与在单个向量而不是矩阵上计算集群有关。
请注意,我是一名具有会计/金融背景的数据分析师,无论如何都不是 GIS 专家。话虽如此,我对 distVincentyEllipsoid()
的使用函数来自我的一般理解,即这会将大圆距离的相当准确的估计作为向量(而不是矩阵)返回。此外,在过去使用它来优化物流操作以达到定价目的,我可以证明这些计算已经在市场上进行了测试并被证明是合理的。
关于r - R 中的 distm 函数和 distVincentyEllipsoid 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62086618/