Ruby on rails 求地球上各点的几何平均值
我正在启动一个项目,我正在使用谷歌地图绘制地球上的一组点。我想找到地球上的平均点(到所有点的总距离最短),但考虑到绕地球的距离可能更短,我不确定如何处理。(-178度到178度的经度仅相隔4度,而不是356度)。通过api调用或从数学角度来看,实现这一点的最佳方法是什么?我可以建议简单而快速的解决方案(但不是精确的初始任务)。找到点的数量,可能有两种情况:Ruby on rails 求地球上各点的几何平均值,ruby-on-rails,google-maps,math,maps,geometry,Ruby On Rails,Google Maps,Math,Maps,Geometry,我正在启动一个项目,我正在使用谷歌地图绘制地球上的一组点。我想找到地球上的平均点(到所有点的总距离最短),但考虑到绕地球的距离可能更短,我不确定如何处理。(-178度到178度的经度仅相隔4度,而不是356度)。通过api调用或从数学角度来看,实现这一点的最佳方法是什么?我可以建议简单而快速的解决方案(但不是精确的初始任务)。找到点的数量,可能有两种情况: 它位于球体的中心-不知道该做什么(如果初始点彼此靠近分布-这不会发生) 在其他情况下,考虑质心矢量和球面中心作为终点和起始点,找到这样的矢量
所以,你们会得到一些类似于“中点”的点,但只有在考虑的表面非常小的情况下(可能所有点都位于同一个城市内)。但它也与从结果到初始点的最小平均距离无关。我高度怀疑是否有一个巧妙的几何论证给出了所需点的闭合形式表达式。尽管如此,这里有一个简单的算法,可以在任何期望的精度范围内给出答案:
如果您想要一个数学上更令人满意的解决方案,我建议您在询问,否则他们对您没有帮助,请将其升级到。无论是“平均”还是“到所有点的最短距离”都没有明确定义。是否要最小化最大值(最小化点与原始集中点之间的最大距离)?是否要最小化点与原始集中点之间的平均距离?我要最小化点与原始集中点之间的平均距离。这是错误的。考虑三点:北极与两个点上的本初子午线正好在南极第六十个平行的南面。它们的重心正好在地核的南部,所以你的算法会规定南极。然而,从南极到这三个点的平均距离略低于
5*PI*r/9
(其中r
是地球的半径),而如果我们选择北极,我们会得到略高于4*PI*r/9
的平均距离。是的,我同意,可能没有合适的结果。但如果这些点彼此非常接近,你会得到一些实际可以接受的结果。。。但再一次,所建议的algo算法与表面上任何一种最短距离都无关。事实上,这也不是真的,这意味着一个更简单的反例。在本初子午线上考虑3个点,纬度为0、0.5和10度(度)。那么平均距离最小的点就是纬度为0.5的点。您的算法推荐的点位于纬度3.496526579822483。。。。点的平均距离比给定的最佳平均距离大29.96526579822483…%。七折太过分了。好吧,对不起!这不是初始任务的解决方案,但我已经提到了这一点。关于你的数值解(如果你想和数字打交道,我也会试试):子午线弧长测量20003.93km(来自维基百科)。因此,如果我想找到精度为1m的中点,我需要在您的算法中将精度
指定为~0.0000001,因为它的复杂性为O(步骤^2),所以它将执行~10^15次运算。你看,这个数字太大了(不说Ruby本身,不太适合数学计算)。所以,你应该建议更有效的算法,可能是基于内尔德-米德方法或二分法。这将是我的答案,因为这是循环平均数的自然延伸谢谢!我试试这个方法。