為什麼 GPX 檔案上傳會失敗?
GPX 上傳被拒是軌跡類軟體裡最讓人不耐煩的失敗之一:錯誤訊息往往什麼都沒說清楚,檔案本身用純文字編輯器打開、或者換一個 App 打開又都好好的。絕大多數拒絕都能歸到幾種固定的原因上,而且大多數跟裡面的座標對不對沒什麼關係。
結論先講
上傳被拒,多半不是座標本身錯了,而是檔案的樣子跟接收方期待的不一樣:GPX 版本不對、副檔名被悄悄改掉、檔案裡根本沒有軌跡,或者檔案是空的、傳輸中斷了。按這個順序一項一項查,大多數情況都能找到原因。
GPX 1.0 與 1.1
GPX 有兩個版本,差別在 XML 開頭宣告的命名空間不一樣,只按其中一個版本嚴格寫的解析器,遇到另一個版本的檔案就可能直接拒收。GPX 1.1 是目前的主流版本,現在大多數記錄類 App 匯出的、也是大多數服務預設接受的都是它;比較舊的檔案,或者出自比較冷門工具的檔案,可能還停留在 1.0。人眼看兩者幾乎沒差別,但對嚴格檢查標頭的解析器來說是兩碼事。
版本號寫在檔案最開頭的 <gpx> 標籤裡,只出現一次。別的地方能打開、偏偏某個服務拒收的時候,值得先看這一眼。
副檔名被不知不覺改掉了
GPX 檔案本質上就是純文字(XML),這正是問題的根源。有些郵件軟體和通訊軟體,在轉發附件的路上會把 .gpx 悄悄改寫成 .xml 或 .txt,因為在它們看來那就是一段文字。接收方的上傳表單一看副檔名不是 .gpx,還沒讀內容就先拒了。只要把副檔名改回 .gpx,內容一個字都不用動,這種情況就解決了。
檔案裡沒有軌跡
GPX 能裝三種東西:軌跡(實際走過的路,帶時間戳記,依序記錄),路線(打算走的路,只是一串轉向點,不帶時間戳記),還有單獨存在的路徑點。以上傳活動記錄為核心設計的服務,預設要的是軌跡。出自規劃類工具的檔案常常只有路線或幾個路徑點,這種檔案被接收方怎麼處理,完全看那個服務嚴不嚴格:有的當成別的類型接受進去,有的直接拒收,有的會匯入成一團看不懂的東西。
再排查幾個常見原因
- 0 位元組檔案,或者傳到一半斷掉的檔案——匯出過程網路斷了,或者傳輸中手機睡著了,檔案在「檔案」App 裡看起來好好的,打開卻幾乎沒內容。
- 手動編輯造成的 XML 損壞——一個沒關上的標籤,或者名字裡寫了 & 這種字元卻沒逸出,就算只動了一行,整個檔案也會變成無效的。
- 上傳大小超出限制——把整段歷史一次匯出,而不是單次健行,檔案可能大到撞上單日軌跡從來碰不到的上限。
- 格式本來就不對——GPX、KML、TCX 都是記錄軌跡資料的格式,但結構彼此不通。只認一種格式的網站,看到另一種連讀都不會讀,直接拒。
怎麼縮小範圍
拿純文字編輯器打開檔案,只看兩件事:開頭 <gpx> 標籤裡的版本號,還有內容裡除了 <rte>、<wpt> 之外,是不是真的有帶軌跡點的 <trk>。把這兩點跟檔案大小對一遍,大多數被拒的原因就擺在眼前了,用不著從頭重新匯出。
TrailCam 在這裡的角色
TrailCam 匯出的是 GPX 1.1——如今大多數會讀 GPX 的地圖與活動類服務,預設接受的正是這個版本。可以單獨匯出一次健行,也可以把整段歷史一次匯出。匯出功能屬於可選的 TrailCam Pro,App 本身免費下載。
常見問題
- 同一個 GPX 檔案在一個 App 裡能打開,換一個就被拒,是為什麼?
- 最常見的兩個原因:一是 GPX 版本不一樣(1.0 還是 1.1),二是那個 App 想要軌跡,檔案裡卻只有路線或路徑點。這兩種情況都不是座標錯了,而是檔案結構裡裝的東西不對。
- 被改成 .txt 或 .xml 的檔案,改回 .gpx 就能上傳了嗎?
- 如果這就是真正的原因,改回來就行。有些郵件和通訊軟體會在傳輸過程中把 .gpx 的副檔名換掉,只要不動內容、把副檔名改回來,檔案就恢復成原本那個有效的樣子。
- GPX 檔案越大,越容易被上傳拒收嗎?
- 有些服務確實對上傳大小設了上限,把整段歷史打包匯出而不是單次健行,檔案可能大到撞上普通一天的軌跡碰不到的那個上限。這是服務端的限制,不是檔案本身出了問題。
記錄你自己的軌跡
TrailCam 是一款 iPhone 上的 GPS 軌跡記錄 App,會把沿途拍下的影片、照片與語音釘在你拍它的那個位置,並支援匯出成 GPX 1.1 或 CSV。免費下載。