你能够完整地解释在R中使用distm
函数或distVincentyEllipsoid
函数计算大地坐标距离时的显著差异吗?
我注意到使用distm
计算所需时间更长。 除了这个差异,您能否向我解释为什么会出现这种情况?
谢谢!
在你之前的问题 Distance calculation optimization in R 的基础上,这里有进一步的解答。
速度是指产生返回对象所需的计算级别,而不一定是距离计算之间的差异(我不确定distm()
函数使用的默认大圆计算方式)。实际上,geosphere::
的文档在这里: https://cran.r-project.org/web/packages/geosphere/geosphere.pdf表明distVincentyEllipsoid()
计算是“非常精确”的,但比其他大圆方法“计算量更大”,尽管这会使您怀疑计算速度较慢,但这是因为我已经按照我的答案结构化代码以返回每行之间的距离向量(而不是每个点之间的距离矩阵)。
相反,您在原始代码中的distm()
计算返回每个点之间的多个向量的矩阵。对于您的问题,只要数据已排序,则不必如此。这就是为什么我这样做的原因。此外,基于这些距离使用分层聚类将点分成3个(您定义的数量)簇也不是必要的,因为我们可以使用每个点值之间距离的百分位数来完成相同的效果。同样,速度好处与在单个向量上计算聚类有关,而不是在矩阵上。
请注意,我是一名会计/金融背景的数据分析师,而不是GIS专家。尽管如此,我的distVincentyEllipsoid()
函数的使用基于我对其能够返回一个相当精确的大圆距离估计结果(作为向量而不是矩阵)的一般理解。此外,在过去用于优化物流运营以进行定价目的时,我可以证明这些计算已经在市场上得到测试并被发现是可靠的。