GPX 裡的「軌跡」和「路線」到底差在哪
跟一個徒步的人說「路線」,他想到的是走出來的那條線本身——不管它拐去了哪裡。可在 GPX 檔案裡,「路線」是個更窄的詞,指的是格式裡兩種結構中的一種,而且不是記錄類 App 實際寫出來的那一種。這篇講清楚 GPX 檔案裡的軌跡和路線各自是什麼、日常說法和技術說法為什麼會對不上,以及這種偏差平時為什麼感覺不到,又會在什麼時候突然冒出來。
先給結論
GPX 裡的軌跡(檔案中寫作 <trk>)是一串帶時間戳記的記錄點,是 GPS 接收器在有人實際移動的過程中,一點一點記下來的。GPX 裡的路線(<rte>)是事先規劃好的路徑——一串按順序排列、打算依次經過的地點,通常完全沒有時間資訊。一款記錄徒步、散步或騎行的 App,寫出來的是軌跡。一款用來在出發前規劃要走哪條路的 App,讀寫的更可能是路線。當有人談起已經走完的一次徒步,說「我的路線」時,他幾乎肯定指的是軌跡。
兩種結構誕生的時刻不一樣
這個區別落在一段路的哪個階段被建立出來。路線屬於「之前」——在規劃類 App 裡,或者手動畫出來的,一串打算按順序抵達的地點,出發前就定好了。軌跡屬於「當中」和「之後」——GPS 接收器實際穿過那些地點、以及中間所有位置留下的那條線,是事情發生時被記下來的,而不是事先決定好的。GPX 規範把這兩者當成同一份檔案格式裡的兩個獨立元素,是因為它們回答的是不同的問題:路線說的是打算去哪裡,軌跡說的是實際去了哪裡。
資料上到底差在哪
軌跡點
軌跡點幾乎總是帶著時間戳記——它的存在本身,就是因為接收器在某個時刻記下了一次位置,一分鐘裡重複很多次。把時間戳記拿掉,線條照樣能畫出同樣的形狀,但沒辦法再說清楚哪一段走得多快、什麼時候停下過。軌跡的點也很密集,整段距離上每隔幾秒就有一個點,因為接收器實際記錄的方式就是這樣。
路線點
路線點通常不帶這些資訊。它是一個有名字、有座標的點,打算被經過,但對於到下一個點要花多久,沒有任何概念。路線的點數往往也很少——幾個標記轉彎或地標的點,而不是連續的軌跡,因為它表達的是一份計劃,不是一次記錄。
日常說法和檔案格式為什麼對不上
「路線」這個詞,不管是平常說話,還是很多 App 介面上的用法,指的都是整段記錄下來的行程——線條的形狀、走過的距離、去過的地方。這個用法完全合理,大多數人想到的也正是這個意思。只是 GPX 規範恰好已經把這個詞用在了另一個更窄的地方:一份完全沒有記錄支撐、只是規劃好的地點序列。這兩種用法談不上真正衝突,只是各自預設的場景不同——直到有人打開檔案去找 <rte> 元素,卻發現根本沒有,這種偏差才會冒出來。
一個檔案裡到底裝的是哪一種,什麼時候真的要緊
大多數時候不要緊。一款能畫線的地圖 App,不管拿到的是軌跡還是路線都能畫出線來,大部分檢視器根本不會區分這兩者。開始要緊的地方,是那些圍繞「跟著路線走」而不是「回看軌跡」設計的導航類工具:一個指望拿到一串有序地點、逐段帶你走下去的工具,讀的就是 <rte> 元素本身,一個只有 <trk> 的檔案,就算地圖上的線看起來一模一樣,也可能不會照那個工具期望的方式運作。反過來的情況也會發生——一條只有寥寥幾個點的手工路線,放進指望拿到密集軌跡的工具裡,地圖上看起來沒問題,卻可能根本沒有配速或海拔曲線需要的時間資訊。
容易讓人卡住的地方
- 檔案裡完全沒有 <rte>——多數記錄類 App 本來就不會寫路線,因為一段被記錄下來的行程,按定義就是軌跡,不是計劃。
- 匯入的路線沒有配速或海拔曲線——檔案裡本來就沒有能畫出這類圖的時間資訊。
- 一個只讀 <rte> 元素的工具,好像在檔案裡什麼都沒找到——那段行程其實是以軌跡的形式存在檔案裡,只是掛在這個工具沒去找的那個標籤下。
- 路上散落著一個個點,卻沒有線連起來——多半是軌跡沒匯入成功,只有個別、更接近路線點的座標被傳了過來。
TrailCam 在這裡的角色
TrailCam 把一次徒步、散步或騎行記錄成一條 GPS 軌跡——實際移動過程中留下的一串帶時間戳記的點——然後匯出成 GPX 1.1 或 CSV。這對應的正是 GPX 格式裡「軌跡」的那一半,也是 Strava、Garmin Connect、Komoot 這類圍繞回看已完成行程設計的服務幾乎都會去讀的那種資料。匯出屬於可選的 TrailCam Pro,App 本身免費下載。
常見問題
- GPX 檔案裡一定會有路線嗎?
- 不一定。記錄類 App 產生的 GPX 檔案,大多只包含軌跡,完全沒有 <rte> 元素。路線是另一種可選的結構,很多檔案根本用不上它。
- 一個 GPX 檔案能同時裝下軌跡和路線嗎?
- 可以。GPX 規範允許路點、路線、軌跡同時出現在同一個檔案裡,不過大多數 App 只會寫其中跟自己功能對應的那一種——記錄類 App 寫軌跡,規劃類 App 寫路線。
- 如果一款徒步 App 在介面上把它叫做「路線」,是不是就代表檔案裡有 <rte> 元素?
- 不是。那是日常語言裡的說法,不是技術意義上的。不管介面上怎麼稱呼,檔案裡幾乎肯定是把這段行程存成了 <trk> 元素。
記錄你自己的軌跡
TrailCam 是一款 iPhone 上的 GPS 軌跡記錄 App,會把沿途拍下的影片、照片與語音釘在你拍它的那個位置,並支援匯出成 GPX 1.1 或 CSV。免費下載。