怎麼把兩個 GPX 檔案合併成一條軌跡
本來是一次健行,結果記錄變成了兩個檔案——手機半路重開過機、記錄的 App 被誤關掉,或者一趟走好幾天的健行是一天記一個檔案,事後想把它們拼成一條完整的線。合併 GPX 說穿了就是把第二個檔案裡的點,按時間順序接到第一個檔案後面。以下說說具體怎麼做,以及這件事能修好什麼、修不好什麼。
先講結論
GPX 裡的一條軌跡,本質上就是 trk 元素裡一串按順序排好的點。合併兩條軌跡,就是把第二個檔案裡的點按時間先後,接到第一個檔案軌跡段的末尾,這樣地圖或服務讀到的就是一條連續的記錄,而不是兩條。座標本身沒變,變的只是它們被分在幾個檔案裡。
工作量大小要看檔案本身。一段不長的記錄,用文字編輯器手動接一下就夠了;一整天、好幾千個點的檔案,還是交給專門的工具比較保險。
一次健行怎麼就變成了兩個檔案
最常見的原因是半路被打斷:手機為了裝更新重開機了、電量耗盡充完電才接著用,或者記錄的 App 被不小心滑掉關了,而不是自己主動停止的。中斷之前的那段被存成一個檔案,之後的又變成第二個,兩者之間隔著一段長度不明的空白。
走好幾天的健行是另一回事,其實算不上什麼問題。一天記一段,晚上就停下,本來就是很正常、很合理的做法。檔案是分開的,是因為那幾天本來就是分開的。事後想把它們拼成一個檔案,是行程結束之後自己做的選擇,不是行程當中出的差錯。
TrailCam 的記錄如果半路被打斷,下次打開 App 會把沒走完的那條軌跡直接還給你,不用自己事後把兩個檔案拼起來。這解決了意外造成的中斷;至於故意分成好幾天記錄的檔案要不要合併,隨你決定。
具體怎麼合併
用專門的工具
GPX Studio 這類瀏覽器工具,可以把好幾個檔案讀進同一張地圖,再一起匯出成一條軌跡,不用碰底層的 XML。GPSBabel 是個專門為轉換和合併 GPS 資料設計的免費指令列工具,不怕用終端機的話一個指令就能合完。QGIS 也能做同樣的事,而且是正經的 GIS 操作,要合的檔案超過兩三個的話,用它更省心。
檔案小的話手動來
GPX 就是純文字,短一點的檔案用文字編輯器就能手動合併。把兩個檔案都打開,在第二個檔案裡找到軌跡段,把裡面的點全部複製出來,貼到第一個檔案軌跡段的結束標籤之前,讓兩批點落在同一段軌跡裡,而不是兩個檔案裡。存成 .gpx 副檔名之後,記得打開確認一下還能不能正常讀——標籤少了一個,或閉合的位置不對,是最常見的出錯原因。
合併能修好什麼,修不好什麼
合併解決的是「有兩個檔案」這件事:不管是檢視工具還是上傳頁面,看到的都是一條軌跡,距離、時長、海拔剖面都只有一份,不用再糾結你說的是哪個檔案。
但它填不上兩個檔案之間的空檔。如果第一段記錄的最後一個點和第二段記錄的第一個點之間隔了好幾個小時——過了一夜、開車挪了地方,或乾脆手機關機了——這段空白照樣會算進合併後檔案的經過時間裡,不管你有沒有留意到。反過來,如果兩段記錄重複覆蓋了同一段路,直接接起來會讓那幾分鐘同時存在兩組點,距離和配速就會出現莫名其妙的突變。這種情況,合併前先把重疊的部分從其中一個檔案裡刪掉比較值得。
在副本上操作,原始檔案留著
合併的時候用兩個檔案的副本,別直接改手上唯一的那一份。萬一手動編輯出了差錯——多打了個字元,標籤閉合的位置不對——你還能從沒動過的原始檔案重新來一遍,而不是連資料帶錯誤一起丟掉。
TrailCam 能做什麼
TrailCam 可以把單條軌跡或整段歷史,匯出成一個 GPX 1.1 檔案,也可以匯出成 CSV 彙總,手上已有的 GPX 檔案也能匯進來。要是記錄半路被打斷,下次打開會把沒走完的那條軌跡還給你,這也是大多數意外分裂的檔案不會出現的原因。匯出屬於可選的 TrailCam Pro,App 本身免費下載。
常見問題
- 合併兩個 GPX 檔案,會不會讓 Strava 之類的服務把距離或時間算錯?
- 只有兩段記錄之間真的存在空檔才會——比如過了一夜、開車挪動過、手機關過機好幾個小時。這段空檔會照樣算進合併後檔案的距離和時間裡,跟你分開看兩個檔案時是一樣的,上傳前心裡有數就好。
- 一條軌跡的 GPX 和只有航點的 GPX,能合併嗎?
- 可以放進同一個檔案,但它們還是兩種不同的資料,只是並排放在一起,不會融合成一樣的東西。軌跡是一條線,航點是一個個單獨有名字的點。兩者放進同一個 GPX 檔案互不衝突。
- 兩個檔案的時間戳記先後順序重要嗎?
- 重要。軌跡段裡的點必須按時間先後排好,地圖才能正確畫出線來。如果第二個檔案就是接著第一個往後走的,直接接到末尾就夠了;要是兩段記錄有重疊或順序反了,合併之前先按時間戳記排序。
記錄你自己的軌跡
TrailCam 是一款 iPhone 上的 GPS 軌跡記錄 App,會把沿途拍下的影片、照片與語音釘在你拍它的那個位置,並支援匯出成 GPX 1.1 或 CSV。免費下載。