為什麼在別的地方打開 GPX 檔案,距離會不一樣?
因為 GPX 檔案本來就沒有存過「距離」這個數值——它存的是一串點,打開它的那個程式得自己重新把總距離加出來。一條 GPX 軌跡就是一個個點,每個點有經緯度,通常還有海拔和時間,格式裡從來沒有「總距離」這一項。健行結束時顯示的數字,跟另一個程式匯入之後顯示的數字,是從同一批原始點出發做的兩次獨立計算,不是檔案裡帶著一個數字被傳來傳去。兩者出現一點差異幾乎是必然的;差距特別大才值得留意,但原因往往和大家想的不一樣。
簡單說
GPX 檔案是一串軌跡點,每個點有經緯度,通常還帶海拔和時間。距離從來不是其中存好的一個值。任何顯示距離的程式——包括當初錄製的那個 App 自己——都是把點按順序過一遍,把相鄰兩點之間的直線距離一段段加起來,自己算出來的。同一批點,兩個程式分別去加,只要中間處理方式稍有不同,加出來的總數就可能不一樣。這就是檔案換個地方打開、數字就會變的全部原因。
GPX 檔案裡到底存了什麼
用文字編輯器打開一個 GPX 檔案,看到的就是一串點,每個點帶著經緯度,通常還有海拔和時間,基本上僅此而已。檔案裡沒有一個不斷累加的里程表,沒有配速曲線,也沒有標記哪一段在走、哪一段在停。距離、配速、移動時間、爬升這些比原始位置更進一步的數字,都是之後由某個程式看著這些點算出來的,不是檔案本身隨身帶著的儲存值。
這不是格式的疏漏,而是刻意劃的一條線。GPX 記錄的是裝置在一串時刻各自在哪裡,至於從這條路徑裡讀出多遠、多快、爬升多少,全都留給之後打開檔案的那個程式自己去解讀。
為什麼加同樣的點,兩個程式算出來會不一樣
把相鄰點之間的直線距離加起來,聽起來應該只有一個正確答案,如果這批點完全乾淨的話確實如此。實際錄到的 GPS 軌跡很少完全乾淨。任何一條軌跡裡都會混進去幾個稍微偏離實際位置的點,而怎麼處理這幾個點,直接決定了加出來的總數。有的程式不管三七二十一,把記錄下來的每個點原樣加進去;有的程式會先把看起來像雜訊的東西——比如一步之內不可能出現的孤立跳動——過濾或拉平一下,再去加。這兩種做法沒有哪個絕對更「對」,都只是面對同一批含糊資料時不同的取捨,取捨不同,加出來的總數自然也不同。
當初錄製的那個 App,在錄製的那一刻往往掌握著一些之後完全不會寫進匯出檔案裡的資訊——比如每個定位的即時精度估計,或裝置自己判斷「現在是不是在移動」。這些輔助資訊都不屬於 GPX 格式的一部分,所以檔案一旦匯出,另一個程式就只能拿裸的點去算,原本錄製時那套即時過濾就用不上了。這種拿得到的資訊不對等,才是兩個總數對不上的主要原因,並不是誰算錯了。
什麼情況下差距會明顯變大
差距只占總距離很小一部分,是正常現象,不用深究,反映的就是上面說的那種日常小分歧。差距明顯偏大,通常能追到一個具體原因:檔案裡有那麼幾個點,明顯偏離了實際路線,常見於剛開始錄製的那一刻、訊號短暫中斷,或樹冠特別密的一段。不加分辨、把每個點都原樣加進去的程式,會把那一次誇張的跳動原封不動算進總數;先把異常點挑出來的程式則不會。兩邊看到的點其實是同一批,差別只在於怎麼處理那個異常值。
匯出成 CSV 也會遇到同樣的情況嗎?
會,原因是一樣的。CSV 匯出同樣只是一張按列排列的記錄點表格,並不存著一個算好的距離總數。拿到試算表軟體裡把列與列之間的距離加起來,跟在別的地方打開 GPX 檔案是同一類事後計算,加的方式一變,總數自然也會跟著有點出入。
容易搞錯的地方
- 看到在別處打開後數字變了,就認定匯出本身壞了——檔案通常打開得好好的,只是兩個程式各自拿原始點獨立算了一遍。
- 認為數字比較大的那個才是「對的」——數字大並不代表更準,很可能只是一方把異常點留了下來,另一方悄悄把它去掉了。
- 以為匯出檔案裡也會帶著原來那個 App 顯示的距離總數——GPX 和 CSV 存的都是點,不是算好的距離數字,所以別的程式根本沒有現成的數字可以直接讀。
- 把百分之幾的差距當成故障來追查——這種程度的落差,就是兩個不同程式各自面對同樣不完美的點、做出各自的取捨之後,再正常不過的結果。
TrailCam 在這裡的角色
TrailCam 可以把軌跡匯出成 GPX 1.1——Strava、Garmin Connect、Komoot 都讀得懂的格式——也可以匯出成 CSV,這兩項都屬於可選的 TrailCam Pro。不管哪種匯出,帶走的都是記錄下來的點本身——位置、海拔、時間——而不是一個算好的距離數字,所以之後拿去哪裡打開,都會像任何其他程式一樣重新自己算一遍總數。TrailCam 本身免費下載。
常見問題
- GPX 檔案裡存著健行的總距離嗎?
- 不存。存的是一串點——經緯度,通常還有海拔和時間。距離永遠是打開檔案的程式自己算出來的,不是檔案裡存好的一個值。
- App 裡的距離跟匯出後的距離,該信哪一個?
- 不存在哪一個絕對更準。小的差距來自兩個程式對同一批點各自略有不同的加法方式,是正常現象。差距很大的話,值得去看看是不是有明顯的異常點,但這並不代表哪一個總數是壞的。
- 匯出成 CSV 而不是 GPX,能避開這個問題嗎?
- 不能,原因是一樣的。CSV 匯出同樣只是記錄點的表格,而不是算好的距離數字,拿到別的地方打開,同樣會是一次獨立的重新計算,跟 GPX 檔案的情況沒有不同。
記錄你自己的軌跡
TrailCam 是一款 iPhone 上的 GPS 軌跡記錄 App,會把沿途拍下的影片、照片與語音釘在你拍它的那個位置,並支援匯出成 GPX 1.1 或 CSV。免費下載。