iT邦幫忙

2026 iThome 鐵人賽

DAY 5
0
Modern Web

教練看不到的那六天|從 FIT 檔到 3D 軌跡,馬拉松訓練資料 Dashboard系列 第 5

Day 5|開箱 FIT 檔(下):解析一場全馬,還原每秒心率與配速

  • 分享至 

  • xImage
  •  

昨天我們藉由一份 28 分鐘的間歇訓練建立概念:三種資料(record / lap / session),加上一個座標單位換算的介紹。今天換上真正的大檔案—今年三月的東京馬拉松,3 小時 22 分,一萬兩千一百二十八筆 record。今天正式上場~


從一萬兩千筆逐秒紀錄,重建分段配速

Garmin 摘要 API 給的,就是昨天貼過的那四個數字:距離、配速、平均心率、最高心率。想知道「哪一段掉速」,得自己從 record 重建。

方法就是把一萬兩千筆 record 按累積距離分桶,每 5 公里一段,算出這一段的平均配速跟平均心率:

0-5K      4:35/km   HR 156
5-10K     4:28/km   HR 164
10-15K    4:29/km   HR 166
15-20K    4:32/km   HR 166
20-25K    4:30/km   HR 169
25-30K    4:32/km   HR 175
30-35K    4:48/km   HR 173
35-40K    5:39/km   HR 161
40-42.65K 5:29/km   HR 160

前三十公里配速穩穩落在 4:28 到 4:35,心率卻一路從 156 爬到 175—這是典型的 cardiac drift,同樣的配速,身體要花越來越多力氣去維持。三十公里之後,配速開始鬆動,掉到 4:48;三十五公里後直接雪崩式降到 5:39,而且心率不但沒有飆高,反而從 175 掉回 161。不是後段變輕鬆,是真的推不動了QQ


同一份資料,換個切法就變成另一個版本

上面那張表是每 5 公里一段。同一份 record,改成每 10 公里切一次:

0-10K      4:31/km   HR 160
10-20K     4:30/km   HR 166
20-30K     4:31/km   HR 172
30-40K     5:13/km   HR 167
40-42.65K  5:29/km   HR 160

前三十公里變成 4:31、4:30、4:31—三段幾乎一模一樣,誤差一秒。單看配速,這是一場執行得漂亮的平均分段,看不出任何問題。

但心率那一欄是 160 → 166 → 172

同樣的速度,身體每分鐘要多跳十二下才維持得住。這就是 cardiac drift 最乾淨的樣子—因為配速被切成三段平的,心率的上升沒有任何其他解釋。5 公里那張表反而看不到這麼純粹,因為每一段的配速本來就有微小起伏,會干擾判讀。

反過來,10 公里的切法也藏掉了東西。30 到 40 公里被壓成一個 5:13,但 5 公里的切法會告訴你那其實是 4:48 加 5:39—崩盤是分兩段發生的,不是一次到底。

把三種切法的極差放在一起看更清楚:

切法 最快 ~ 最慢 落差
每 10 公里 4:30 ~ 5:29 58 秒/km
每 5 公里 4:28 ~ 5:39 71 秒/km
每 1 公里 4:25 ~ 6:10 105 秒/km

切得越粗,崩盤看起來越溫和。 10 公里的表最慢只有 5:29,看起來只是有點累;切到每公里,第 39 公里那格是 6:10—比全程最快的一公里慢了一分四十五秒。同一場比賽、同一份資料,三種數字。

這不是說哪一種切法比較誠實。是每一種切法各自回答一個問題:想看心率漂移,用粗的,讓配速保持平坦;想找崩盤的起點,用細的。這也是為什麼下載原始檔這件事值得花兩天—摘要 API 只會給你它決定好的那一種切法。

Garmin Connect 確實有分段—包括自己按錶分的段、賽事每公里自動分段,它都列得出來。差別在那些是它替你切好的,切法固定。想改成每 5 公里一段、想把配速和心率並排擺著看漂移,就只能回頭自己算。逐秒資料在手,怎麼切都是你的自由。


搜集到的資料,最後會變成什麼

這張分段配速表,還有每一筆 record 裡的座標,是接下來系列的原始素材。座標經過昨天那個 semicircle 換算之後,串起來就是一條完整的 GPS 軌跡—Day 27、28 會把它丟進 Three.js,畫成一條會依配速變色的 3D 路線;這張分段表則會在 Day 22 變成復盤圖,讓我們能一眼看出三十五公里後發生什麼事。

今天先把資料撈出來、看懂它在講什麼,畫面的部分留到後面。


補充一下 Day 2 提到:官方 API 到底要不要錢

Day 2 提過一句「官方 API 不是隨便就能申請成功。

先講最反直覺的一點:官方 API 不用錢,但市民跑者很難申請成功。

Garmin Connect Developer Program 的 FAQ 寫得很直白:

「There are no licensing or maintenance fees for access to the Garmin Connect Developer Program, but it is only for business use.

沒有授權費、沒有維護費—不是費用的問題,是資格。Health API 跟 Activity API 都走合作夥伴審核制,要以公司名義提出申請、簽署開發者協議,Garmin 審過才發 key。一個想拿自己資料的市民跑者專案,這關就過不去了。

錢的部分藏在後面:Health API 有些進階的 wellness 指標,商業使用要另外談授權費,或承諾裝置最低採購量。金額不公開,是私下一案一議。

真正對個人開放、而且完全免費的,是 FIT SDKConnect IQ SDK—不用申請、直接下載。這兩天拆 FIT 檔用的格式定義就是從那裡來的,它跟「API 授權」是兩回事:SDK 給你看懂檔案的能力,API 給你把檔案搬出雲端的通道。前者友善,後者麻煩。

所以市民跑者實際可走的,只剩三條:從 Garmin Connect 手動匯出原始 FIT、把錶接上 USB 直接複製 GARMIN/ACTIVITY/ 底下的檔案,或是 Day 3 那條非官方套件的路—但這條雖然自動化,不過 Garmin 一旦改登入流程就得要重新研究憑證流程。

這也是為什麼這個系列花了兩天在拆二進位檔案,而不是兩行 API 呼叫解決。門不易打開,但檔案格式是公開的。


明天:進到下一個資料來源

FIT 檔案這條線先告一段落。明天要離開 Garmin,處理另一個完全不同性質的資料來源—藏在藍牙訊號裡、不用連線就能讀到的體重機資料。



上一篇
Day 4|開箱 FIT 檔(上):record / lap / session 訊息結構
系列文
教練看不到的那六天|從 FIT 檔到 3D 軌跡,馬拉松訓練資料 Dashboard5
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言