把你的紀錄帶出來:GPX、KML 和 CSV,各自派什麼用場
三種格式,三種不同的工作。每一種實際裝了什麼、什麼情況該用哪一種,以及為什麼「能不能匯出」這件事,決定了你的騎乘歷史到底是不是你的。
一趟只存在於某一個 App 裡面的紀錄,是一趟你用租的。App 會停止營運、訂閱會漲價、公司會被買走,而「你能不能帶著自己的歷史離開」這個問題,往往會在很短的時間內突然變得很急。決定這件事的功能就是匯出,而在你需要它之前,值得先搞懂這幾種格式各自在做什麼。
GPX——在 App 之間搬動一條路線的那一種
GPX 是一種 XML 格式,從 2002 年起就是 GPS 軟體之間的共通語言。幾乎所有東西都讀得懂它:Garmin 的裝置、Strava、Komoot、Gaia、QGIS、OpenStreetMap 的編輯器,以及每一個有上傳框的地圖網站。
它裝三種東西,而把它們搞混,通常就是麻煩的來源。
- 航點(waypoints)——獨立標記的單點,沒有順序。一個登山口、一個補水點。
- 路線(routes)——一串有順序的點,描述你打算怎麼走。一份計畫。
- 軌跡(tracks)——一串有順序、帶著時間戳記的記錄點,而且分成若干軌跡段。一份「你實際上走了哪裡」的紀錄。
一趟記錄下來的路是軌跡。每個點帶著緯度、經度,通常還有高度和時間戳記,而擴充欄位可以再加上心率、踏頻、溫度等等——互通性從這裡開始參差不齊,因為擴充欄位是選用的,而每一家廠商各有偏好。
對會騎過隧道的人來說,真正要緊的細節是:一個 GPX 軌跡可以包含多個軌跡段,而軌跡段的斷點,正是這個格式用來表達「記錄在這裡中斷了」的方式。一個把中斷過的行程壓平成單一連續軌跡段的匯出工具,等於把這個資訊丟掉了,而之後讀這個檔案的東西,就會自己把兩端接起來。
KML——想在 Google 地球裡看它的那一種
KML 也是 XML,最初為 Google 地球開發,現在是 Open Geospatial Consortium 的標準。它和 GPX 有重疊,但目標是呈現而不是交換:樣式、顏色、圖示、資料夾,以及決定一條線是貼著地形鋪上去、還是畫在真實高度上的高度模式。
當你想用三維的方式看一條路線、想把它披在地形上,或者想丟一個檔案給別人、讓他在 Google 地球裡按兩下就打得開,就用 KML。但不要拿它當你的典藏副本——它是一個以呈現為導向的格式,在 Google 生態系以外的支援比較薄,而 KMZ 不過就是壓縮過的 KML。
CSV——自己算自己的那一種
CSV 根本不是一種 GPS 格式,而這正是它好用的原因。它就是一堆列和欄,任何試算表都打得開,而且它讓你問得出那些 App 自己的畫面回答不了的問題。
它有兩種真正不同的形狀,先弄清楚自己要哪一種,可以省下很多時間。
- 一個點一列。這趟路裡的每一個定位點:時間、緯度、經度、高度、速度、精度。這是拿來做分析的檔案——把速度對著坡度畫出來、找出你到底是在哪裡慢下來的、檢查某一段你不太信任的路的精度數字。
- 一趟一列。你記錄過的每一趟,各佔一行:日期、里程、時間、爬升。這是拿來做「你的年度試算表」的檔案——按月統計總公里數、依運動類型做樞紐分析、畫一張整季的圖。
Roam 這四種形狀都能匯出:GPX、KML、以點為單位的 CSV,以及以趟為單位的 CSV。FIT 是刻意沒有做,而不是做了一半——對一個很容易做壞的格式來說,這是個合理的偏好。
有兩個性質,比格式清單更重要
它必須從磁碟匯出,而不是從正在跑的記錄引擎匯出
你最想搶救的那一趟,通常正好是出過事的那一趟——記錄中斷之後再也沒有回來的那一趟。如果一個 App 只能匯出它的即時記錄引擎手上握著的東西,那麼它給不了你的,剛好就是那一趟。Roam 的匯出讀的是資料庫而不是引擎,所以一條記錄行程被砍掉、從此沒有再續上的軌跡,照樣可以單獨匯出來。
它應該告訴你這個檔案信不信得過
一次匯出可以是完整的,同時又是錯的——如果 App 對一趟路的認知,和實際存下來的東西已經對不起來的話。Roam 會把兩邊比一比:摘要宣稱的點數,對上磁碟上的點數,然後告訴你它們合不合。檔案在兩種情況下都會寫出來,這是刻意的:拒絕匯出等於把資料和壞消息一起拿走,而拿著手機的那個人,才是還能為這件事做點什麼的人。
實務上的幾點
- 典藏用 GPX。它是十年後最可能還讀得開的格式,也是其他每一個工具都收的那一個。
- 在你需要之前就先匯出。你想把歷史拿出來的那一刻,通常就是已經出事的那一刻。
- 在相信某個第三方網站報給你的里程之前,先看看那趟有缺口的行程的軌跡段結構,因為那個網站會自己決定要怎麼處理那些洞。
- 要做年度回顧,用「一趟一列」的 CSV,不要匯出兩百個 GPX 檔再想辦法加總。
- 記得一條軌跡就是一份「你當時人在哪裡」的紀錄。在把一條從自家門口開始的軌跡貼出去之前,先想一下這件事。
在 Roam 裡,匯出屬於 Roam Pro。完整記錄一趟、看它、回放它,都是免費的,而且會一直是免費的。
常見問題
GPX 和 KML 差在哪裡?
GPX 是交換格式——幾乎每一個 GPS 工具都讀得懂也寫得出來,拿來典藏是正確的選擇。KML 以呈現為導向,為 Google 地球而生,帶著 GPX 沒有的樣式和高度模式。要搬資料用 GPX,要用三維的方式看它就用 KML。
我該匯出哪一種 CSV?
想分析單獨一趟,用一個點一列——沿路的速度、高度和精度都在裡面。想做很多趟的試算表、要月統計或整季的圖,就用一趟一列。
中斷過的那一趟還能匯出嗎?
可以,只要那個 App 匯出的是存下來的資料,而不是即時記錄引擎手上的東西。Roam 的匯出讀的是資料庫,所以一趟記錄被砍掉、再也沒有續上的行程,照樣寫得出來。
為什麼我匯出的里程和 App 顯示的不一樣?
多半是因為你把檔案丟進去的那個工具,用它自己的規則重算了一次——平滑化不同,對訊號缺口該怎麼處理也有它自己的決定。一個保留了軌跡段斷點的檔案,在不同工具裡會被用不同的方式對待,而它們沒有誰有義務彼此同意。
一個不會把這趟弄丟的記錄 App
Roam 每收到一個定位點就立刻寫進手機,和當下的累計數字在同一個交易裡落地;訊號斷掉的那一段就標成斷的,不拿一條直線糊過去;爬升讀的是氣壓計,不是 GPS 高度。沒有帳號、不用登入、不做同步。完整記錄一趟、看它、回放它,都是免費的。