昨天我們藉由一份 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 不是隨便就能申請成功。
先講最反直覺的一點:官方 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 SDK 跟 Connect IQ SDK—不用申請、直接下載。這兩天拆 FIT 檔用的格式定義就是從那裡來的,它跟「API 授權」是兩回事:SDK 給你看懂檔案的能力,API 給你把檔案搬出雲端的通道。前者友善,後者麻煩。
所以市民跑者實際可走的,只剩三條:從 Garmin Connect 手動匯出原始 FIT、把錶接上 USB 直接複製 GARMIN/ACTIVITY/ 底下的檔案,或是 Day 3 那條非官方套件的路—但這條雖然自動化,不過 Garmin 一旦改登入流程就得要重新研究憑證流程。
這也是為什麼這個系列花了兩天在拆二進位檔案,而不是兩行 API 呼叫解決。門不易打開,但檔案格式是公開的。
FIT 檔案這條線先告一段落。明天要離開 Garmin,處理另一個完全不同性質的資料來源—藏在藍牙訊號裡、不用連線就能讀到的體重機資料。