ByteScope

GPX & FIT Viewer

讀手錶或碼錶的 GPX/FIT 紀錄:摘要、軌跡、圖表一次看完,FIT 轉 GPX、匯出 CSV 都在瀏覽器裡完成,檔案不會離開你的電腦。

GPX 和 FIT 檔都在你電腦的瀏覽器 worker 裡解析——不上傳、不用登入,也不會向任何地圖圖資服務發出請求,所以路線在哪裡只有你知道。

把 .gpx 或 .fit 檔拖到這裡

手錶、碼表或 app 匯出的紀錄,一個或多個都行;也可以點一下選檔。

再拖檔案進來會加到清單裡,從左邊切換要看哪一個。

限制

  • 爬升和下降只在海拔變化相對上一個計入點達到 3 m 時才計入一次,GPS 飄移才不會累積成一座山。Strava 和 Garmin Connect 用自己的海拔來源和平滑方式,總數不同很正常。
  • 移動時間是把速度至少 0.5 m/s 的相鄰點之間的時間加總起來。
  • 檔案資訊夠的話,距離會顯示兩個:裝置記錄的,以及由座標加總出來的。
  • 廠商私有的 FIT 訊息只在進階區依編號列出,內容不解碼。
  • 軌跡底下沒有地圖。接任何圖資服務,對方都會收到你路線所在的範圍。
  • FIT → GPX 會丟掉分圈、裝置事件、開發者欄位、裝置記錄的速度和距離;功率也會丟,除非你勾選保留。
  • FIT 的時間是 UTC,這裡會換算成你瀏覽器的時區,並附上 UTC。GPX 時間沒帶時區的話會標成「時區不明」,不亂猜。

關於這個工具

運動手錶和自行車碼錶錄下來的是 .fit,但多數路線網站和 app 只收 .gpx。不管哪一種,把檔案拖到這裡就會直接在頁面裡解析:先看摘要——距離、總時間、移動時間、爬升與下降、平均和最高速度(或配速)、心率、功率、錄製的裝置——接著是依比例畫出的軌跡(附比例尺和北方箭頭),還有高度、速度、心率、踏頻、功率、溫度的圖表,檔案裡有哪些就畫哪些。可以一次拖進好幾個檔,從左邊清單切換。

所有東西都留在你的瀏覽器裡。GPS 軌跡等於一本「你什麼時候在哪裡」的日記,只是想看一眼,實在不必交給任何伺服器。解析在你電腦上的 Web Worker 裡跑,頁面沒有上傳端點,關掉分頁就什麼都不留。這也是為什麼軌跡畫在空白背景上、不疊地圖:只要向地圖圖磚服務要底圖,對方就會收到你路線所在的那一塊區域。

FIT 轉 GPX、轉 CSV

FIT 轉 GPX 會產出 GPX 1.1 軌跡,心率、踏頻、溫度寫進 Garmin 的 TrackPointExtension,Strava、Komoot、Garmin Connect 和大多數路線工具都讀得懂。GPX 沒有地方放分圈、裝置事件、developer fields,以及裝置自己量的速度和距離,這些會被丟掉,頁面會把丟掉的欄位逐一列出來。功率在 GPX 裡沒有標準欄位,勾選後會寫成非標準的 <power>,預設不勾,因為加了它檔案就過不了 schema 驗證。FIT 和 GPX 也都能匯出 CSV——每個紀錄點一列,單位直接寫在欄名裡(ele_m、speed_mps、hr_bpm),旁邊有連結可以直接在 CSV Explorer 打開。

數字是怎麼算的

爬升和下降只計入「跟上一個計入點相差至少 3 公尺」的高度變化,GPS 的抖動才不會累積成一座山;Strava 和 Garmin Connect 各有自己的平滑方式和高度來源,所以總數對不上是正常的。移動時間只累計相鄰兩點之間速度至少 0.5 m/s 的秒數。距離在檔案允許時會給兩個:裝置記錄的(輪徑感測器或它自己過濾過的 GPS),以及原始座標逐點加總出來的。

解析器老實承認看不懂的部分

FIT 檔裡有各廠商的私有訊息,只有原廠軟體看得懂。進階區塊會列出每種訊息的筆數和欄位名稱、developer fields 的名稱和單位,以及看不懂的訊息編號——不會假裝解讀。某一筆資料壞掉不會害整個檔案被丟掉:解析成功的點照常顯示,下方標出略過了幾筆。FIT 的時間存的是 UTC,顯示時用你瀏覽器的時區並附上 UTC 值;GPX 的時間若既沒有 Z 結尾、也沒有 +08:00 這類時差,會標「時區不明」而不是亂猜。

常見問題

我的 GPX 或 FIT 檔會被上傳嗎?

不會。檔案直接從你的磁碟讀進來,在頁面裡的 Web Worker 解析;摘要、軌跡、圖表和轉出來的檔案全部在本機產生。沒有伺服器、不用帳號,也不會向任何地圖服務要圖磚,所以路線在哪裡沒人知道。

為什麼爬升跟 Strava 或 Garmin Connect 不一樣?

因為爬升本來就沒有唯一正確答案。每個平台各自挑高度來源——檔案裡的氣壓計數值,或是用座標查地形模型——也各自平滑。這個頁面用檔案裡的高度,變化累積到跟上一個計入點相差 3 公尺才算一次,規則就寫在頁面上,方便你拿同樣的基準比。跟其他平台對不上是正常的,不是壞掉。

FIT 轉 GPX 會丟掉什麼?

分圈、裝置事件(暫停、按鍵)、Connect IQ app 的 developer fields、裝置自己量的速度和距離,還有功率(除非你勾選非標準選項)。心率、踏頻、溫度、高度和時間會留在 Garmin 的 TrackPointExtension 裡。頁面會針對你打開的檔案列出被丟掉的欄位,如果其中有你在意的,原始 .fit 要留著。

為什麼軌跡下面沒有地圖?

刻意的。要在路線下面畫出道路,就得向圖磚伺服器要你所在的那塊區域,等於把你家、公司或固定練車路線的位置交給第三方。所以軌跡改成依比例畫在空白畫布上,附比例尺和北方箭頭——要認出路線形狀、找出 GPS 飄掉的那一段已經夠用了。

裁掉起點附近的點,Strava 就一定看不到我家嗎?

不一定,而且這個版本目前根本不做裁切(排在之後的階段)。就算真的裁了也不保證:平台還是看得到時間、你出發的方向、資料開始的那個點,再跟你其他活動一比對就能推回去。比較可靠的做法是用平台自己的隱私區域功能(Strava、Garmin Connect、Komoot 都有),它會對其他使用者隱藏那一塊,你自己的統計數字不受影響。

為什麼距離有兩個數字?

一個是裝置記錄的,通常來自輪徑感測器或它自己過濾過的 GPS;另一個是把原始座標逐點加起來。騎車時輪徑感測器比較準,低速時 GPS 抖動則會把座標加總灌水。兩個都給,你就知道上傳的平台會比較接近哪一個。

轉 GPX 時該勾「包含功率」嗎?

只有在你確定要匯入的工具讀得懂時才勾。GPX 沒有標準的功率欄位,這裡寫出的 <power> 落在 GPX 自己的命名空間裡,嚴格的驗證器會直接拒收。要上傳 Strava 或大多數路線規劃工具就別勾;真的需要功率,改匯出 CSV 或留著 .fit。

手錶的 FIT 檔在別的地方打不開,裡面到底有什麼?

拖進來後捲到進階區塊。那裡列出每種訊息的筆數和欄位、developer fields 的名稱和單位,以及解析器看不懂的廠商私有訊息編號。就算檔案有一部分損壞,解析成功的點照樣顯示,下方會標出略過了幾筆。