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

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

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

有人知道一个公式或经验法则告诉您根据您要测量的距离的比例,两个距离测量之间的差异?

我认为明确地做到这一点将有助于:


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


#1 楼

例如,在经度和纬度给定的位置上使用勾股定律就没有什么意义,例如,用正方形的公式计算圆的面积是没有意义的:尽管它产生一个数字,但没有理由认为它应该起作用。 br />
尽管在小比例尺上任何光滑的表面看起来都像一个平面,但勾股公式的精度取决于所使用的坐标。当这些坐标是球体(或椭圆体)上的经度和纬度时,我们可以期望


经线的距离将是相当准确的。
赤道沿线的距离将
所有其他距离都是错误的,与纬度和经度的差异大致成比例。

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

毕达哥拉斯公式,使用地球的平均半径,< />
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%之间;更长的距离可能会出现更大的误差(如轮廓图所示)。

评论


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

–德夫达塔(Devdatta Tengshe)
13年4月21日在4:10

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

–lynxlynxlynx
13年4月21日在17:11

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

–lynxlynxlynx
13年4月22日在8:36

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

–德夫达塔(Devdatta Tengshe)
13年4月22日在13:45

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

– hu
18年11月24日在19:51

#2 楼

我将“毕达哥拉斯距离”解释为“欧几里得距离”。然后,
答案与“圆的和弦的长度与对向的周长之间的区别是什么?”相同。令半径为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
13年4月21日在17:07

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

–好奇
2014年3月28日在18:10

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

– cffk
2014年4月2日,凌晨1:20

#3 楼

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

之所以对平面/毕达哥拉斯的计算不合适,是因为这些计算依赖于以下事实:在任何方向上移动一步都是一个不变的变化不管您在图表上的什么位置,其大小都将保持不变。



经度不符合此要求。经度线在极点处收敛。



这就是为什么当我们将地球展平以反映平面图的规则时会出现变形。



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



您可以看到格陵兰岛的大小与墨西哥差不多。 />


南极洲大约相当于南部非洲(而不是南非)的大小。

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

评论


实际上,您所显示的是另一种错误类型。正确使用的勾股定理可根据您所在的纬度线的长度计算经度距离,因此乘以cos(lat)。以这种方式使用时,球体上任何地方(除非通过N极或S极),对于小距离的误差都很小。您所显示的是整个地球投影的扭曲,不可避免地某些区域会严重扭曲。如果使用* cos(lat),则“得到的错误将更多地取决于距离而不是距离”。

–ToolmakerSteve
18年11月24日在17:24