AI 参与说明(Agent:
/root、/root/find_existing_docs、/root/source_check):本文由 Agent 根据公开的一手资料辅助调研、撰写与校验。内容按 2026-08-14 的资料整理;坐标转换必须同时确认实际采用的坐标参考系统、数据版本和高程基准。
可以。三维坐标并不会把地球“压成平面”:它是在三维空间中给地球表面或地球附近的点编号。日常说“地球是圆的”更准确的说法是“地球近似是球体”;在数学上,二维的“圆”和三维的“球面”不是同一个对象。
若把地球先近似成半径为 R 的球,球面上的每个点都满足 x² + y² + z² = R²。这组 (x, y, z) 恰好描述的是一张弯曲的球面,而不是一张平面。经纬度则是给这张曲面选另一种更方便人读的坐标:纬度、经度定位表面上的位置;再加高度,便能定位地表上方、地表或地下的三维位置。
地球不只是一个完美的球#
工程中通常不会把地球当成完美球体。以 World Geodetic System 1984(WGS 84)为例,它使用一个绕地轴略扁的参考椭球:半长轴 a = 6,378,137.0 m,反扁率 1 / f = 298.257223563。NGA 将 WGS 84 定义为 Earth-Centered, Earth-Fixed(ECEF)的三维地球参考系统,也是 GPS 所使用的参考系统。NGA 的 WGS 84 定义
还要区分三个概念:
- 地形表面:山、谷、建筑物所在的真实表面,不规则。
- 大地水准面(geoid):由重力场定义、近似全球平均海平面的起伏曲面;它常用于理解“海拔零点”。NOAA 对 geoid 的说明
- 参考椭球(reference ellipsoid):光滑、可计算的近似模型;WGS 84 的经纬度和椭球高以它为基准。
所以,“地球是圆的”并不妨碍使用坐标;恰恰相反,坐标系统会明确说明要按球、椭球还是大地水准面来计算。
两种常用表示法#
- 大地坐标(geodetic coordinates):
纬度 φ,经度 λ,椭球高 h。这是地图、定位接口中最常见的形式;只给φ, λ时,通常只是在参考椭球表面上定位。 - ECEF 笛卡尔坐标:
X, Y, Z,WGS 84 的原点定义为包括海洋和大气在内的地球质心,坐标轴随地球转动而固定。它适合卫星定位、全球三维计算和坐标转换。
两者描述的是同一个位置,只是“标签方式”不同。把全球表面投到地图上的 Web Mercator、UTM 等平面坐标则是第三种表示:它便于画图或局部测量,但任何全球平面投影都会保留某些性质、牺牲另一些性质,不能同时保持所有距离、面积和角度不变。
从经纬高转换为 X, Y, Z#
对 WGS 84 椭球,转换公式如下(φ 为纬度,λ 为经度):
e² = 2f − f²
N = a / √(1 − e² sin²φ)
X = (N + h) cosφ cosλ
Y = (N + h) cosφ sinλ
Z = [N(1 − e²) + h] sinφ这是地理三维坐标 (φ, λ, h) 与地心 Cartesian 坐标 (X, Y, Z) 的标准转换形式;公式与适用条件可核对 IOGP / EPSG Guidance Note 7-2。
下面的 Python 标准库示例可直接运行。输入为十进制度的纬度、经度和 WGS 84 椭球高(米),输出为 ECEF 米制坐标:
from math import cos, radians, sin, sqrt
A = 6_378_137.0
INV_F = 298.257223563
F = 1 / INV_F
E2 = F * (2 - F)
def wgs84_to_ecef(latitude_deg: float, longitude_deg: float, height_m: float = 0.0):
phi = radians(latitude_deg)
lam = radians(longitude_deg)
n = A / sqrt(1 - E2 * sin(phi) ** 2)
x = (n + height_m) * cos(phi) * cos(lam)
y = (n + height_m) * cos(phi) * sin(lam)
z = (n * (1 - E2) + height_m) * sin(phi)
return x, y, z
x, y, z = wgs84_to_ecef(0.0, 0.0)
print(f"X={x:.3f} m, Y={y:.3f} m, Z={z:.3f} m")预期输出为:
X=6378137.000 m, Y=0.000 m, Z=0.000 m这个点位于赤道与本初子午线的交点。它没有把地球摊平;只是把椭球面上的位置转换成从地心量出的三个直角坐标值。
实际使用时最容易忽略的前提#
- 坐标值本身不够:应同时保存坐标参考系统(CRS)和轴顺序;同一组数字在不同 datum 下可能表示不同位置。
h是椭球高,不必然等于人们口中的“海拔”。若业务需要相对平均海平面的高度,还要指定 geoid / 垂直基准并完成高程转换。- 对全球位置、卫星轨道等问题可使用 ECEF;对城市范围内的距离、方向和局部建模,通常会再转换到合适的局部坐标或投影坐标。
一句话总结:地球的表面可以看作嵌在三维空间中的曲面;三维坐标、经纬高和地图投影是描述这张曲面的不同工具,而不是互相矛盾的说法。
参考资料#
- NGA:World Geodetic System 1984(WGS 84):WGS 84 的 ECEF 定义、轴方向与椭球参数。
- IOGP / EPSG Guidance Note 7-2:地理三维坐标与地心 Cartesian 坐标的转换方法。
- NOAA Ocean Service:What is the geoid?:geoid、全球平均海平面与高度基准的解释。