毕达哥拉斯定理与Haversine公式在不同尺度下测量球面距离时的近似误差是多少?


30

许多人在首次尝试计算两个经度/纬度对之间的距离时会问,勾股定理是否可以作为合适的距离函数起作用。

人们最常回答“不,勾股定理仅适用于2D欧几里得平面”。但是,很少有人提到球形上的尺度和位置对勾股定理有多不精确的影响。

基本概念是很小的比例,球的表面看起来非常像飞机。在非常大的比例下,沿曲面的距离更加弯曲,因此,不正确的勾股定理和正确的Haversine公式之间的差异更大。

有谁知道一个公式或经验法则,它会根据您要测量的距离的大小来告诉您两次距离测量之间的差异?

我认为明确地这样做将有助于:

  1. 解释为什么勾股定理不完美;和
  2. 让正在寻找更多“粗略”距离的人知道毕达哥拉斯何时真正能够达到他们的目的。

Answers:


34

例如,在经度和纬度给定的位置上使用勾股定律,这与使用正方形的公式计算圆的面积几乎没有什么意义:尽管它产生一个数字,但没有理由认为它应该起作用。

尽管在小范围内任何平滑表面看上去都像一个平面,但勾股公式的精度取决于所使用的坐标。当这些坐标是球体(或椭球)上的经度和纬度时,我们可以预期

  1. 沿着经度线的距离将是相当准确的。

  2. 沿赤道的距离将是相当准确的。

  3. 所有其他距离都是错误的,与纬度和经度的差异成比例。

误差取决于距离计算的起点和终点。但是,由于球体和椭球体都围绕轴具有圆形对称性,因此误差仅取决于经度的,因此要研究此误差,我们不妨将原点定为本初子午线。因为球体和椭球在南北反射下都是对称的,所以我们只需要研究南半球的起源点。对于任何这样的点,我们都可以绘制相对误差的等高线图,该等高线图等于[毕达哥拉斯计算] / [真实距离]。

毕达哥拉斯公式,使用地球的平均半径,为

Pythagorean distance =  6371000. * Sqrt[dx^2 + dy^2]] * pi / 180 meters

其中dx是经度之差,dy是纬度之差,均以度为单位。(经度以360为模数减少了经度值的差,以便在越过子午线时给出正确的dx值;不这样做会引入人为的大错误,从而使我们对勾股定律公式本身一无所知。)

下图显示了从-70到0的纬度(以10度为增量)与WGS 84椭球上正确距离相比的相对误差。水平坐标是经度的差,垂直坐标是目的地的纬度。浅色区域的误差相对较小:轮廓线位于1、1.01、1.02、1.05、1.1、1.2、1.5、2等(拐角处的纯白色区域是误差超出这些轮廓范围的地方。)红点表示起点。

情节

垂直的白带证明了期望的正确性(1):经度上的差异很小时,勾股距离是准确的。低纬度上的水平白带确认了期望(2):在赤道附近,水平距离相当准确。否则,正如广泛的较暗区域所证明的那样,毕达哥拉斯公式在所有其他距离上都是不好的。


我们可以对最大值进行定量估计对成对的邻近点(例如彼此相距几百公里之内)得出的误差。比例尺-使用适当的半径值-沿子午线是正确的,但是沿着纬度圆,它大约会偏离纬线的割线。例如,在40度纬度下,割线为1.31,这表示勾股定律将使东西方向的距离过大约31%。(这在右上等高线图中很明显,对于一个纬度为-40度的原点,在该点上,红点以西紧邻的区域位于1.2和1.5等高线之间。)所有其他方向的短距离将是太大,介于0%到31%之间;更长的距离可能会出现更大的误差(如等高线图所示)。


1
对于这样的答案,确实需要有“最喜欢的答案”功能。
Devdatta Tengshe

2
@DevdattaTengshe:他明确要求它是理智的:“其中dx是经度差(表示在-180和180之间),而dy是经度差,都是度数。”
lynxlynxlynx

1
那是2,因为2 * 179大于180?
lynxlynxlynx

1
@whuber:我知道这一点,你也知道这一点,但是大多数盲目尝试使用勾股/欧几里得几何的人甚至都不考虑或不知道。如果您的答案中存在此事实(您应该使用Mod 360),则将有所帮助。
Devdatta Tengshe 2013年

1
@ToolmakerSteve很好-我经常使用此更正 -但希望它的用户理解这是一个近似值,并且对于较大距离和其他一些情况,它可能与预期不符。
ub

8

我将“毕达哥拉斯距离”解释为“欧几里得距离”。那么答案就和“圆的弦长与对向的周长有什么区别?”相同。令半径为R,对角为A(弧度)。

perimeter = L = A*R
chord = C = 2*sin(A/2)*R
diff = D = L - C
     = (A-2*sin(A/2))*R
     = A^3/24 * R  (for A small)
     = L^3/(24*R^2) (eliminating A)
relative error = D/L
               = (L/R)^2/24

对于地球,替代R = 6400 km。顺便说一句,称其为“大圆距离”(它是什么)而不是“ haversine距离”(如何计算)。(这类似于勾股距离与欧几里得距离的区别。)


按照你的推理,可以进一步替代L和使估计只需要A.
lynxlynxlynx

您能详细说明一下最终的表达式吗?这个A ^ 3/24 * R是如何产生的?
好奇的

使用sin(x)= x-x ^ 3/6将sin(A / 2)扩展为A小,您将得到此结果。
cffk

5

要获得完整且严格的答案,请查看上面的wuber答案。我将以更直观和基本的方式回答。

平面/毕达哥拉斯的计算之所以不合适,是因为该计算基于以下事实:无论在图形上的什么位置,在任何方向上移动一步都是幅度的恒定变化。

普通图

经度不符合此要求。经度线在两极汇合。

地球显示收敛

这就是为什么当我们使地球变平以反映平面图的规则时会产生变形的原因。

墨卡托投影图

如果您查看该地图,似乎格陵兰岛大约是非洲的大小,而南极洲大约是欧亚大陆的大小。当然不是这样。格陵兰岛和南极洲都非常扭曲,因为它们靠近经度收敛的两极。

北半球的全球视野

如您所见,格陵兰岛大约相当于墨西哥的大小。

南半球手套视图

南极洲的大小与南部非洲(而非南非)差不多。

正如您所看到的那样,应用勾股公式可能会更多地取决于点的位置而不是点之间的距离。重要的警告是,更长的距离会放大任何错误。这就是为什么平面解决方案虽然诱人,却是一个不佳选择的原因。失真会咬住您,它不像偏移那么简单。这些错误是扭曲地球以适应不适当规则的结果。


实际上,您所显示的是另一种错误类型。正确使用的毕达哥拉斯定理会根据您所在的纬度线上的长度来计算经度距离,因此请乘以cos(lat)。通过这种方式,球体上任何地方(除非通过N极或S极),对于小距离的误差都是很小的。您所显示的是整个地球投影的扭曲,不可避免地某些区域会严重扭曲。如果使用,“您将..得到的错误将更多地取决于..而不是距离” * cos(lat)
制造商史蒂夫
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.