地图上两点之间要走的是大圆航线,不是平面直线。用 Haversine 公式算出的球面距离,才和导航、飞行里程对得上。
输入参数 INPUT
测算结果 OUTPUT
公式先用经纬度差算出球面上两点间的圆心角,再乘地球半径。它对小距离数值稳定,也不会出现平面近似的严重失真。
其中 φ 是纬度、λ 是经度,都要先转成弧度。Δφ、Δλ 是两点的差值。地球半径取 6371.0088 km 是 IUGG 的平均半径,比赤道半径 6378 km 更接近全球平均。
方位角以正北为 0°、顺时针增加,得到的是起点处的初始航向。沿大圆飞行时航向会持续变化,所以「终点看起点」的反方位角并不是简单加 180°,这里给出的反方位角仅为近似值。
球面距离适合估算飞行里程、徒步直线距离、基站覆盖半径。若要做测绘级计算(厘米级),需要用椭球体大地线算法(如 Vincenty 或 GeographicLib),本页不适用。
两种可能:一是地图按路网测距,绕行会让里程变长;二是地图用椭球体模型,本页用球体模型,长距离下差异约 0.3%–0.5%。1000 公里的行程,差 3–5 公里属正常。
按本页默认坐标(39.9042,116.4074 → 31.2304,121.4737)约 1067 公里。高铁里程 1318 公里、公路约 1200 公里,都比球面直线距离长,这是路网绕行的结果。
是。方位角以正北为 0°,顺时针旋转:90° 正东、180° 正南、270° 正西。若你算出的角度是负值,加 360° 归一化即可。
不会。Haversine 用的是经度差的正弦与余弦,Δλ = 179° 与 Δλ = −181° 在三角函数下等价,会自动走最短的那一侧,不需要手动处理跨日界线。