为什么 GPS 海拔和地图对不上
GPS 量的是相对于一个光滑数学椭球面的高度,地图量的是相对于平均海平面(大地水准面)的海拔——这两个参考面之间相差 −100 到 +85 米,差多少取决于你在哪里。再算上 GPS 天生更大的垂直误差,两个数字对不上是意料之中,不是故障。
基于授权 · 私密 · 支持 Chrome、Safari、Firefox、Edge
两个不同的零点
“高度”必须有一个起算面,而这里同时存在两个。卫星感知不到海平面在哪里,所以原始的 GPS 高度是从 WGS-84 椭球面量起的——一个光滑、理想化的扁球体。但海平面随重力而定,重力又随地球内部质量分布的不均匀而变,于是形成了那个起伏不平的曲面,也就是大地水准面——地图、路牌和直觉所用的那个零点。两个面之间的差距(即大地水准面差距)从印度以南约 −100 米到新几内亚附近的 +85 米不等。所以一个原始的 GPS 高度可以“错”上几十米,同时又完全正确——它回答的是另一个问题。
为什么手机通常靠谱,浏览器有时不靠谱
现代手机在显示海拔之前会先做大地水准面改正,所以徒步应用里的数字通常已经是海平面之上的海拔。但浏览器的 Geolocation API 可能把原始椭球高原样传出来,也可能干脆什么都不给——这就是网页工具的数字比应用更奇怪的原因。在参考面的混乱之上,还压着单纯的测量误差:因为每一颗 GPS 卫星都在你的地平线以上,垂直方向的解算约束很弱,误差是水平误差的 1.5–3 倍。一次水平精度 5 米的定位,垂直方向上确实可能差 15 米。
气压计和地形模型——另外两个答案
手机和手表还多了一个气压计:测相对变化极准(一段 3 米的楼梯它都感觉得到),绝对值却在漂移,因为天气每小时都在挪动基准——所以运动应用会拿 GPS 或已知点给它重新校准。第三个来源是地形模型(DEM):由实测数据生成的地面海拔网格,比如我们的海拔工具背后的 Copernicus 数据。它回答的是“这组坐标处的地面有多高”——对山顶来说非常可靠,但你在十楼时,它报的仍然是地面。
几个经典的困惑,一次说清
在海边出现负海拔:通常是椭球面与大地水准面之间的差距,偶尔只是单纯的垂直误差——两者都正常。站着不动海拔却上下跳 ±10 米:这是垂直几何太弱的正常表现;看趋势,别看每一次跳动。飞机上的“高度”又是第三套系统——相对标准大气的气压高度,所以座椅背后屏幕上的 10,000 米不该拿来和这里的任何数字比。有三个词值得分清:海拔说的是地面高出海平面多少,高度说的是你高出海平面多少,离地高度说的是你高出地面多少。
该信哪个数字?
站在地面上、想要地图给出的那个答案:用地形模型——海拔页面首先显示的就是它,旁边还列出你设备的 GPS 海拔以便比较。飞无人机或玩滑翔伞:用 GPS 与气压计的融合值,因为你不在地面上。跑步时判断爬升:看气压计的相对变化。看到不同来源之间差了 30 米,这不是需要修的故障——而是三台仪器在回答三个不同的问题,现在你知道每一台回答的是哪一个了。