為什麼 GPS 軌跡會顯示負的海拔
整個下午都走在比海面高出幾公尺的岬角步道上,回家打開海拔曲線,卻發現有兩處掉到了零以下。那天你根本沒有走到海面以下的地方。GPS 軌跡會記出負數,原因有兩個,而且都不代表檔案出了問題。
先講結論
GPS 給出的所有數字裡,海拔是最不精確的一個,靠近海平面的地方,光是這份誤差就足以讓單一個點跌到零以下。另一個原因跟它無關:衛星定位算出的原始高度,參照的是一個用數學方式近似地球形狀的基準面,而不是真正的海平面。世界上有些地方,這個基準面本身就比實際海平面略低,結果會讓整條軌跡整體偏低差不多一個固定的量。這兩個原因,單獨出現或疊在一起,都能讓一段其實一直在海面以上的路,在檔案裡冒出幾個負數點。
為什麼海拔是最不穩的那個數字
手機靠計算頭頂散布的衛星訊號抵達的時間差來定位。水平位置的話,這些衛星從四面八方把你圍住,東西南北方向都卡得比較死。高度就不一樣了——看得到的衛星全都在地平線以上,永遠在你上方,從來不會在下方,幾何上只能從一側夾住你。正是這種不對稱,讓 GPS 垂直方向的精度通常比水平方向差兩到三倍,這是定位方式本身的幾何限制,不是哪支手機或哪個 App 的問題。
把這份誤差加到海邊真實海拔五公尺的地方,正負都有可能,單一個點很容易就跌到負二、負三。同一個點的水平位置可能分毫不差,只有高度這一個數字自己在飄。
另一個原因:兩種不同的「零」
基準橢球高度跟海平面不是一回事
衛星定位給出的原始高度,是相對於「參考橢球」——一個用數學方式平滑近似地球形狀的模型——量出來的,而不是相對於真正隨重力起伏、凹凸不平的平均海平面。兩者之間的差距叫大地水準面差距,在世界各地都不一樣:有些地方真實的海平面比參考橢球高,有些地方比它低。在偏低的地方,沒有做過修正的高度讀數就會比真正的海拔矮一截,一塊其實略高於海面的地面,讀出來可能就在零附近甚至以下。
這種偏差不像 GPS 雜訊那樣每次都在跳,它比較接近於一個地區內相對固定的偏移。至於裝置或 App 在把數字顯示給你之前,會不會、以及多徹底地去修正這個偏差,是定位本身之外另一個步驟,各家做到什麼程度並不一樣。
GPX 檔案裡長什麼樣
GPX 軌跡裡每個點的海拔,就是 <ele> 標籤下一個以公尺為單位的普通數字,格式本身不區分這是一次真正的凹陷還是一次垂直方向的雜訊——負數跟正數存法完全一樣。用文字編輯器打開一段貼近海面的低地軌跡,在大多是小正數中間偶爾混進幾個小負數,是很正常的樣子。這是海拔資料在靠近海平面時的正常質感,不是檔案損壞的跡象。
什麼情況值得多看一眼
- 一段貼近海面的路線上,只有一兩個點是幾公尺的負數——這是普通的 GPS 垂直雜訊,跟原始海拔曲線在別處也會顯得鋸齒狀是同一回事。大多數 App 在算出總數之前會先把這類雜訊抹平。
- 這些負值幾乎不影響爬升總數——爬升通常是過濾掉小於某個門檻的上下波動之後才算出來的,零附近的幾個雜訊點很少會真的動搖那個真正有用的數字。
- 整條軌跡從頭到尾都低了幾十公尺,而不只是一兩個點——這不是雜訊,而是一個相對固定的偏移,值得拿登山口的標牌或地圖之類的已知參考對一下,因為它更可能指向參考橢球與海平面之間的差距,而不是普通的抖動。
TrailCam 的話
TrailCam 會把每條記錄的爬升畫成地圖下方的海拔曲線,回放保存好的軌跡時同一條曲線也在下面同步跑,匯出成 GPX 1.1 或 CSV 時海拔也會一併帶上。靠海路線的曲線裡偶爾冒出的一個負值,是 GPS 高度資料本身的樣子,不是記錄出了問題。App 本身免費下載。
常見問題
- 海拔顯示負數,是不是代表 GPX 檔案壞了?
- 不是。GPX 把海拔存成一個普通數字,正負沒有特別區分,也沒有單獨的標記。靠近海平面時出現負值,幾乎都是普通的垂直方向 GPS 雜訊,不是檔案損壞。
- 為什麼這種情況多出現在海邊,山上反而少見?
- 因為誤差的大小在哪裡都差不多。把這份誤差加到海邊真實海拔五公尺的地方,很容易就變成負數;把同樣大小的誤差加到山上五百公尺的地方,頂多變成一個略有偏差的五百公尺。
- 明明整段路都在海面以上不少,整條軌跡會不會還是偏低?
- 會。如果 GPS 參照的基準橢球跟當地真實海平面之間的差距,在那個地區正好是負的,就會表現成整條軌跡幾乎一致地偏低,而不是零星幾個雜訊點。
記錄你自己的軌跡
TrailCam 是一款 iPhone 上的 GPS 軌跡記錄 App,會把沿途拍下的影片、照片與語音釘在你拍它的那個位置,並支援匯出成 GPX 1.1 或 CSV。免費下載。