GIS工具箱
几何计算

球面多边形面积计算原理与实现

如何用经纬度顶点计算地块面积,球面过剩角算法详解,亩/公顷/英亩换算。

多边形面积球面面积地块面积

球面多边形面积计算原理与实现

在土地测量、农业地块估算、城市规划等场景中,常需根据一组经纬度顶点计算多边形面积。直接套用平面几何的 shoelace(鞋带)公式会因忽略地球曲率而产生明显误差,尤其在大范围地块上。本文介绍球面多边形面积的计算原理。

为什么不能用平面 shoelace 公式

平面 shoelace 公式假设坐标是笛卡尔坐标,而经纬度是球面坐标——单位经度对应的实际距离随纬度升高而减小,直接相乘会扭曲形状。对于面积较大的地块,平面公式误差会显著累积。

球面过剩角算法

球面多边形的一个核心性质是:其内角和大于平面多边形的内角和,超出部分称为球面过剩角(Spherical Excess)。

  • 平面 n 边形内角和为 (n-2)π
  • 球面 n 边形内角和为 ΣA,其中 A 为各顶点内角。
  • 球面过剩角 E = ΣA - (n-2)π

球面多边形面积公式为:

面积 = E × R²

其中 R 为地球半径。该公式的几何含义是:面积与球面过剩角成正比,过剩角越大,多边形覆盖的球面区域越大。

球面梯形法

实际工程实现中,更常用的是球面梯形法(也称球面鞋带法)。其思路是将多边形按相邻顶点分成若干边段,每个边段与赤道构成一个球面梯形,再根据顶点顺序累加各梯形的有符号面积:

function sphericalArea(points) {
  const R = 6371008.8; // 地球平均半径(米)
  let sum = 0;
  for (let i = 0; i < n; i++) {
    const p1 = coords[i];
    const p2 = coords[(i + 1) % n];
    sum += (p2.lng - p1.lng) * (2 + Math.sin(p1.lat) + Math.sin(p2.lat));
  }
  return Math.abs((sum * R * R) / 2);
}

这种方法避免了显式计算各顶点内角,实现更简洁,数值稳定性也更好。

单位换算

GIS 中面积单位多样,常用换算关系如下:

  1. 平方米 → 亩:÷ 666.67
  2. 平方米 → 公顷:÷ 10000
  3. 平方米 → 平方千米:÷ 1000000
  4. 平方米 → 英亩:÷ 4046.86
其中"亩"是中国农业常用单位,1 亩约等于 666.67 平方米(15 亩 = 1 公顷)。

应用场景

  • 土地测量:根据宗地界址点计算地块面积,用于确权登记。
  • 农业估算:测算农田、林地面积,辅助产量预估与补贴核算。
  • 城市规划:统计地块、绿地、水体面积,支持用地分析。

注意事项

  1. 顶点顺序:顺时针与逆时针会导致面积符号相反,计算结果需取绝对值,但自交检测依赖符号,不可忽略。
  2. 自交多边形:若多边形边段相交,球面梯形法的累加结果可能不等于视觉面积,需先做自交检测或拆分。
  3. 闭合处理:首尾顶点不必相同,算法会自动闭合,但仍需保证至少 3 个顶点。

如需在线计算多边形面积,可使用 多边形面积计算工具,支持多种单位输出。

本文涉及的工具

打开工具 →

相关文章