明明走的是同一段路,兩個 App 顯示的距離為什麼不一樣
兩個口袋各放一支手機走同一段路,或是把同一個檔案傳到兩個平台,回頭一看距離對不上。實際走的路明明只有一條,數字卻給出兩個答案,聽起來有點怪。原因是沒有一個 App 是直接「量」出距離的——它們都是把記錄下來的一個個點之間的間隔加起來,而這個「怎麼加」,不同 App 之間的差別比大多數人以為的要大。
簡單說
距離不是從地上讀出來的數字,是事後算出來的。把記錄到的點按順序連起來,相鄰兩點之間的直線距離一段段加起來,就是總距離。這個加法結果取決於手邊有哪些點、點與點之間隔了多久記錄一次,以及在加之前有沒有對這條線做過簡化或平滑處理。這三樣裡隨便一樣不同,就算走的是完全同一條路,算出來的總數也會不一樣。
所以「為什麼距離不一樣」這個問題裡其實藏著兩個不同的問題:是同一個檔案被兩種方式重新算了一遍,還是兩次記錄本來就得到了兩套不同的點。兩種情況都常見,解釋也不一樣。
同一個檔案,算出兩個總數
把同一個 GPX 檔案傳到兩個平台,數字照樣能對不上,因為接收方完全可以不理會檔案裡帶的總數,自己重新從座標點算一遍。有的平台把每兩點之間的距離原樣全部加起來,有的會先把幾乎在同一條直線上的點刪掉一些再加,總數會因此略微變短,還有的會先把細小的鋸齒抹平了再加,總數又會再短一點。這些做法沒有誰對誰錯,只是對「這條略帶彎曲的線到底有多長」這個問題,給出的答案不太一樣而已。
這正是為什麼把同一個 GPX 換個平台重新上傳一次,數字就可能挪個百分之一二——路線本身沒變,檔案內容也沒變,變的是在它上面做的那道算術。
兩次記錄,根本就是兩套不同的點
更大的差異往往出現在檔案形成之前,也就是記錄本身這一步。同一段路,兩個 App 幾乎不會記錄到完全相同的點。手機的 GPS 定位落在真實位置附近幾公尺的範圍內,而不是分毫不差,這幾公尺的抖動落在記錄下來的每一個點上。把成千上萬個各自帶一點抖動的點兩兩之間的距離全部加起來,抖動不會像想的那樣互相抵消,反而多半會多算出一小截原本沒走過的鋸齒——因為在兩點之間走一條彎彎曲曲的路,長度不可能比這兩點間的直線還短。
這段多出來的鋸齒有多少,取決於記錄間隔和有沒有對誤差做平滑處理。不加平滑、每一兩秒記一個點的 App,往往比記錄間隔更長或會先濾掉誤差的 App,累加出來的鋸齒要多一些。這不是誰做得不對,只是「盡量留原始記錄」和「留一份稍微整理過的記錄」之間的取捨,不同 App 落在不同的位置上。
還有幾樣也在悄悄影響數字
- 手機揣在口袋、背包還是拿在手上,決定了它能看到多乾淨的一片天空,也就決定了記錄裡混進多少抖動。
- 把記錄到的點自動「吸附」到已知步道或道路上再顯示的 App,和照原始點畫線的 App,算出來的距離可能不一樣。
- 有明顯起伏的路段,按坡面實際長度算距離的 App 會比按地圖平面投影算的顯得更長——爬升和下降走過的地面,本來就比地圖上那條線看起來要多。
- 開始記錄早了幾秒、結束晚了幾秒,原地站著不動那幾秒的抖動也會被算進去,跟另一個掐得更準的 App 相比就多出一點。
實際該怎麼辦
不用把這當成一場「哪個才是真實距離」的比賽。對一趟健行來說,GPS 本來就不可能給出精確到公尺的數字,兩種都算合理的測法之間有點小差異,不代表哪一個壞了。比起非要跟別的 App 對上,更值得在意的是自己前後一致——一直用同一個 App 記錄,它給出的數字彼此之間就能拿來比較,就算永遠對不上朋友的 App 或登山口牌子上的數字也沒關係。
TrailCam 會替每條路線記錄距離、行進時長、配速和爬升,並且能把背後的軌跡匯出成 GPX 1.1 或 CSV,想看清楚一個總數到底是從哪些點算出來的,自己拉出來看就是了,不用只憑 App 說的數字。
常見問題
- 兩個 App 裡哪個算出來的距離才是「對的」?
- 通常沒有誰更對。兩邊都是從一串帶著幾公尺誤差的 GPS 點裡,按各自 App 或平台選定的方法算出來的。小小的差異是正常現象,不代表哪個出了問題。
- 把同一個 GPX 檔案傳到另一個平台,距離怎麼就變了?
- 因為接收方常常會重新從座標點算一遍距離,而不是直接用檔案裡帶的總數,不同平台在加之前把線簡化或平滑掉多少,做法各不相同。
- 記錄間隔調短一點,距離會更準嗎?
- 不一定。間隔調短確實能更細緻地捕捉路線的形狀,但同時也會多拾進每個點自身的一點 GPS 抖動,沒做平滑的原始總數往往因此偏大一些,而不是更接近真實距離。
記錄你自己的軌跡
TrailCam 是一款 iPhone 上的 GPS 軌跡記錄 App,會把沿途拍下的影片、照片與語音釘在你拍它的那個位置,並支援匯出成 GPX 1.1 或 CSV。免費下載。