解析Garmin FIT file,計算累計里程和累計高度
緣起 以 東三塔規劃表 為例,大會有檢錄點,我們有休息點,把他們全部塞入試算表。要估算時間,得猜 平均速度 , 我的方法 簡述如下 距離 :絕對里程相減,簡單 爬升量 :累積爬升量相減, 麻煩 坡度 : 爬升量 / 距離 平均速度 : 平地速度 - 坡度 * K ,騎一趟觀霧可以估算 這篇要解決 累計爬升量 ,我想要有一份軌跡檔(FIT),計算出每公里的資訊 預期的產出 假如弄得到軌跡檔(比如我自己的FIT檔),我就能算出下表,這樣規劃路線就是查表而已 累積里程 海拔高度 累計爬升 經緯度 上表做圖,看得出蘇花公路120~200,爬升1000,可以用來分配體力,安排休息點 解析FIT檔案 Garmin FIT檔可以用 fitfileviewer 閱讀,“record”是單車碼表運作的依據,每一秒的經緯度,心律,功率,踏頻,高度,左右腳平衡,blah blah。這裡只需要 時間 經緯度 高度 不同廠商的碼表,紀錄邏輯也不同,寫軟體處理相容性問題,也是非常有趣 Garmin/ Wahoo:每秒紀錄 Bryton/ iGPSport:有變化才紀錄 假如上面的資訊完全沒誤差,計算每秒之間的移動距離,和爬升量,得到 delta_distance[n] delta_altitude[n] 累加上述參數,就有每秒鐘的絕對里程,累積爬升量。最後再查表,問題就解完了 累計距離=1km,經緯度,累計高度,海拔高度 累計距離=2km,經緯度,累計高度,海拔高度 處理誤差 真實世界感應器都有誤差, GPSVisualizer 提供兩個完美教學,解釋如何修正誤差 修正水平誤差 (Smoothing & Simplifying Tracks) 修正高度誤差 (Calculating elevation gains) 核心概念很簡單,水平和垂直處理的手法,基本上是一樣的 假設第0點是有效參考點pt[0] 計算distance(pt[1], pt[0]),小於5公尺,pt[1]當成雜訊丟掉 計算distance(pt[2], pt[0]),超過5公尺,pt[2]有效並當成新的參考點 計算distance(pt[3], pt[2]),... 得到里程表 所以FIT檔照以下順序處理,就有里程表 水平過濾 垂直過濾 剩下的點,計算累積距離,累計爬升,得到表格 {時間,里程,高度,累計爬升,經緯...