跳到主要内容

在坐标系下测距

在 GIS 软件中,测量距离是一项严谨而复杂的工作。在现实世界中,我们可以通过测距仪直接测量地面上的真实距离;而在 GIS 中,距离测量依赖于坐标参考系统。然而,由于地球并非规则球体,而是一个不规则的椭球体,将其数字化为坐标系统的过程中会引入各种近似误差,导致在不同坐标系下测得的距离可能不完全一致,任何坐标系下的距离计算都需考虑几何变形和投影误差。。

地理坐标系(也称为大地坐标系)中,地球通常被简化为一个参考椭球体(Reference Ellipsoid),这是一个用于逼近地球形状的数学模型。由于各类椭球体采用的参数(如长半轴、扁率)不同,基于这些椭球体计算出的空间距离也会有所差异,从而影响测量精度。

而在 投影坐标系 中,测距误差通常更为显著。将椭球面投影到二维平面本身就是一种变形过程,不可避免地引入形变误差。随着测量范围的扩大,尤其是在高纬度或远离中央经线的位置,这些误差可能会被进一步放大,导致实际距离与投影计算距离之间出现较大偏差。

因此,在使用 GIS 软件进行距离测量时,应充分考虑所使用的坐标系类型和其带来的几何特性差异,以确保测量结果的合理性和准确性。软件中提供了距离的四种选项,分别是测地线、平面、等角线和大椭圆线。

测地线 Geodesic Line

测地线是地球参考椭球面上两点间的最短曲线路径,其本质是椭球面上的"直线"。在球体上,这对应于“大圆航线”,但在椭球体上则需考虑地球的扁率影响。测地线路径所经过的方向不断变化(除非沿子午线或赤道),但总体长度最短。测地线广泛用于测绘和导航领域,其距离计算精度可达到毫米级。

应用场景

测地线广泛应用于测绘制图、航空航海和军事领域。例如,在测绘中需要计算两已知坐标点之间的精确距离或划定边界,通常采用椭球测地线以保证准确性(很多国际边界和海洋划界即由各端点坐标通过测地线连成)。

在航空领域,远程航班规划通常依据测地线(近似为球面大圆)来确定最短飞行路径,以节省燃料。比如,从北京飞往纽约的航线如果沿测地线规划,将比沿固定航向飞行节省数%的距离。

在卫星应用中,虽然卫星轨道本身不沿地表,但当需要表示卫星在地表的投影路径时,常用测地线或大圆进行近似。

军事上,导弹最远射程通常假设沿地球椭球表面的测地线距离,以评估打击范围。

总的来说,测地线因其代表最短路径, 是各种需要最优距离计算的GIS分析和导航规划的基础选择

计算方法与算法

  • Vincenty公式法: Vincenty算法由波兰裔测地学家Thaddeus Vincenty提出(1975年),用于计算椭球上两点间的测地线距离和方位角。它采用迭代方法求解“测地线反解”(已知两点经纬度,求最短距离和方位)和“测地线正解”(已知起点、方位和距离,求终点)问题。Vincenty公式基于参考椭球(如WGS84)的长半轴和扁率参数,算法涉及将地理纬度转换为辅助球面的化简纬度,然后利用球面三角计算,再迭代修正距离。该方法比简单的球面大圆公式复杂,但精度很高,在地球椭球面上可达0.5毫米。需要注意的是,Vincenty算法在两点接近对跖点(几乎相对的地点)时可能不收敛。

  • Karney算法(GeographicLib): 为提高测地线计算的稳健性和精度,Karney于2013年提出了改进算法。该算法基于对椭球测地线公式的级数展开,能够处理Vincenty方法的极端情况(如近对跖点)并达到接近浮点极限的精度。Karney算法已被实现在GeographicLib库中,很多现代GIS工具和编程库(如geopy等)默认采用Karney方法计算测地线距离。相比Vincenty,Karney算法收敛更快、更可靠,适合于高精度要求的测绘和地理计算。

  • 其他方法: 在球面模型下,常用**半正矢公式(haversine公式)**直接计算两点间大圆距离,作为测地线的近似。但由于地球是扁球,球面方法存在最多约0.5%的误差sourceforge.net(例如距离1公里时误差可达数米,长距离航线误差达数公里)。因此,在需要高精度(如测绘、边界划定)时,应使用椭球测地线算法。

投影距离

投影距离也称作平面距离、笛卡尔距离,是将坐标系转为对应投影坐标下的平面距离。

等角线(Rhumb Line,航向线)

定义与特点: 等角线(又称恒向线、loxodrome)是在地球表面上与经线始终保持恒定夹角的曲线。换言之,航行或移动过程中罗盘方位(相对于真北的角度)不变,则路径即为等角线。在墨卡托投影的地图上,等角线会显示为直线,这一特性使其在航海史上极为重要。与测地线相比,等角航线并非两点间的最短路径,但因航向不变,早期航海和航空导航中为了简化操舵经常采用此路径。

典型应用

等角航线在航海史上占有重要地位。古代航海因为缺乏精密导航仪器,水手更易保持罗盘航向恒定,所以常采用等角航线来航行。例如16世纪的航海图即使用了墨卡托投影,方便航线绘制为直线。

在实际应用中,低纬度地区或短途/沿岸航行常用恒向航线,因为此时等角线与最短路径差别不大且航向易于保持。然而对于高纬度或跨洋长航线,等角线绕曲严重,路径明显长于测地线:例如伦敦到纽约沿恒向线要比大圆航线多走约4%的距离,而纽约到北京若沿恒向线更会比最短路径长约30%。因此现代远程航行多采用测地线/大圆航线,而等角线更多用于教学演示或专业场合(如沿固定方位线巡航的气象无人机等)。

尽管如此,一些地图学场景下仍关注等角线:比如航海地图上绘制等角网,以供船长根据恒向线快速判定航向;又如气象学上分析恒定风向路径等。在GIS分析中,如果需要表示恒定方位的移动轨迹,等角线模型会派上用场。

计算方法与算法

球面模型下的等角线公式

在球面模型中,等角线可以通过球面三角法则推导。球面等角线距离公式为:

d=RΔϕ2+q2Δλ2d = R \cdot \sqrt{ \Delta\phi^2 + q^2 \cdot \Delta\lambda^2 }
  • RR 为球体半径;
  • Δλ\Delta\lambda 为经度差,单位为弧度,取最小夹角范围 [π,π][-\pi, \pi]

初始航向角(方位角)计算:

θ=arctan(ΔλΔψ)\theta = \arctan\left( \frac{ \Delta\lambda }{ \Delta\psi } \right)

椭球模型下的等角线公式(近似)

在椭球模型上,Rhumb Line 的计算更复杂,因为经线间距随纬度变化,不再保持均匀。常见处理方法:

  1. 近似法
    • 先计算两点之间沿子午圈(经线方向)的椭球弧长(纯南北向距离);
    • 再通过除以 cosα\cos\alphaα\alpha 为航向角)估算路径长度。
  2. 投影-反解法(更准确):
    • 将两点经纬度转换为 椭球墨卡托投影坐标(需积分 1/cosϕ1/\cos\phi');
    • 在投影平面上直接计算直线距离;
    • 再将该距离反算回椭球曲面长度。

这种方法虽然涉及复杂积分,但在中短程、中低纬度区域误差较小,精度可接受。

大椭圆线(Great Ellipse Line)

大椭圆线是指将经过地球椭球体中心并包含起点和终点的平面,去截割地球椭球所形成的曲线。换句话说,大椭圆是椭球上的一个“中央截面椭圆”。在球体情况下,这一截面就是大圆,因此“大椭圆线”在球面情形下等价于“大圆航线”​。大椭圆线路径一般不是严格的测地线(除特殊情况如赤道或经线),但对于地球这种扁率很小的椭球而言,大椭圆航线与真正测地线的长度非常接近:在两点相距不超过地球周长1/4(约1万公里)时,两者相差仅约50万分之一。因此,大椭圆航线有时被视作远距离航行的良好近似路线。

适用场景

大椭圆航线主要在长距离航海和航空规划的历史上扮演角色。当航程跨越大片海域、涉及高纬度时,传统的等角航线会显著变长,而大圆航线虽然更短但未考虑地球扁率。此时航海者会选用“大椭圆航线”进行精密推算,以取得比大圆更准确的距离。例如,早期远洋船舶在制图时,有时采用大椭圆方法来校正大圆航线的误差,使航线长度更贴近实际最短路径。

现代应用中,随着计算机可以直接求解测地线,大椭圆航线作为独立方法的实用需求降低。

但在教学和研究中,它仍是理解球面与椭球航线差异的一个重要概念。例如航海院校会比较等角航线、大圆航线和大椭圆航线三者在不同投影下的表现;航空领域也关注大椭圆在极地航路规划中的作用(如跨越极区的航班,其航路平面近似通过地心)。总体而言,如果需要在适度简化计算的同时保证较高精度,大椭圆航线是不失为一种折衷方案:它计算上比测地线简单但精度几乎相当,于是曾被用于远程航线的人工规划。

不过在当今GIS应用中,通常只有在特定分析或专业仿真中才会刻意区分“大椭圆”路径;一般的长距离最短路径问题,直接使用测地线算法即可满足需求。各大GIS软件和工具也都倾向于提供测地线作为默认选项,以确保得到真正的最短距离结果。因此,大椭圆线更多具有理论和教学意义,用于说明地球非球形时航线规划的细微差异。

计算原理与算法

计算大椭圆线通常需要求解平面与椭球的交线问题。基本原理是:已知两端点的地理坐标,可确定经过椭球中心和这两点的平面方程,然后求此平面与椭球面的交线。在数学上,这会得到一个二次曲线(椭圆)的参数方程。直接求解可能比较复杂,GIS领域常采用等效球面映射的方法来简化计算:

  • 辅助球面法: 将地球椭球投影或映射到一个辅助球面,使得两点所在的大椭圆对应于球面上的大圆。常用的方法包括映射椭球的参数纬度(亦称第二纬度)或地心纬度到球面en.wikipedia.org。例如,选取与椭球赤道半径相同的球体,通过令球面上的纬度β\beta满足tanβ=(1f)tanϕ\tan\beta = (1-f)\tan\phi(其中ff是椭球扁率,ϕ\phi为地理纬度)来进行变形sourceforge.net。如此一来,椭球上的大椭圆会映射为球体上的大圆en.wikipedia.org。在该辅助球面上,可用球面大圆航线公式计算距离和航向,然后再反变换回原来的椭球坐标,即可得到大椭圆航线解。文献中也有直接针对大椭圆航线的反解算法(如Williams 1996提出的大椭圆距离和航向公式)用于航海计算en.wikipedia.org。

  • 精度与差异: 由于地球的扁率很小(约1/298.3),大椭圆线长度与真正测地线长度的差别在常见距离范围内极小。例如,大西洋跨洋航线几千公里范围内,两者差异可能只有几米到几十米量级。因此在电子计算手段不便的年代,大椭圆被视为计算简便又足够精确的长航线方案sourceforge.net。需要强调的是,大椭圆并非严格最短路径,特别是在超远距离(接近半个地球)时会有细微差别。不过这些差异相对于总距离而言非常小,一般不足0.1%。现代高精度需求下,可以直接采用测地线算法获得最优解,大椭圆更多作为一种概念或近似方法存在。

XinGEO中的距离计算

XinGEO的测地线计算采用Proj4库进行,测地线是采用Charles F. F. Karney 的椭球测地线精确解算法(2013),参考文档geod_inverse函数 — PROJ 9.6.2 文档,对具体算法有兴趣的研究者可以参考原始论文Algorithms for geodesics|Journal of Geodesy 出版日期:2012 年 6 月 26 日第 87 卷,第 43-55 页

Karney 的算法相比早期的 Vincenty 算法(1975) 优势如下:

比较项Vincenty 算法Karney 算法
精度毫米级(高精度)纳米级(极高精度)
稳定性在接近对跖点(180°)附近会发散全面稳定收敛
可用纬度范围几乎全球,但极点附近不稳定全球适用(极区稳定)
使用者GPS 计算器、早期 GIS现代 PROJ、GeographicLib

投影距离是使用proj4库转换为投影坐标系后,再进行计算近距离。

等角线(Rhumb Line,航向线)采用proj4库进行, 通过 墨卡托投影后测直线 实现近似,pyproj 中封装为 Geod.rhumb_inverse() 与 rhumb_direct()。

大椭圆线(Great Ellipse Line)采用GeographicLib进行,GeographicLib 是由美国数学家 Charles F. F. Karney 开发的一个 高精度地理计算库,用于在椭球体上进行测地学相关的计算。它被广泛应用于 GIS、导航、遥感、地图制图、测量工程 等领域,是现代地理测量领域最权威和精确的工具之一。https://grass.osgeo.org/grass-stable/manuals/d.geodesic.html)