怎麼從 GPX 檔案裡找出一趟健行走得最快的那一段
一趟健行的平均配速是個誠實的數字,不算錯,但它是把走過的距離平攤到全程的移動時間上算出來的,而恰恰是這種「平攤」,把那段真正讓人記住走得最快的路段給抹平了。GPX 檔案從一開始記錄的就不是這個平均數,它記的是一串點,每個點帶著位置和時間,路線上任何一處的配速都是事後拿這串點算出來的。找最快的那一段,用的是同一串點,只是換了個用法,過程中要留意的坑也就一個。
先說結論
按順序走過軌跡上的點,不要只算一次全程的配速,而是把路線切成一段段又短又重疊的區間——比如每走滿 100 到 200 公尺就切一段,而不是每兩個相鄰點就算一次。每一段都拿走過的距離除以花掉的時間,算法跟算整趟配速時完全一樣。配速最好的那一段,就是這條路線走得最快的地方。算這個所需要的距離和時間數字,本來就已經在檔案裡了,一條標準 GPX 軌跡不需要為此額外記錄什麼。
為什麼一個平均配速回答不了這個問題
平均配速是用總距離除以總移動時間算出來的,這個算法本身就把整趟健行當成了以同一個恆定速度一路前進。一趟健行如果開頭是碎石坡上慢慢往上爬,快到終點時突然接上一段平坦的路,最後又輕鬆走回停車場,整體平均下來可能只是個不起眼卻完全誠實的配速,可單把那段平路拎出來,按幾百公尺算,配速可能快了將近一倍。平均數沒有說謊,它只是在回答另一個問題,而不是「哪一段走得最快」——盯著從全程裡抽出來的這一個數字看再久,都不會替你回答第二個問題。
把健行切成每公里或每英里的分段,也會遇到程度輕一些的同樣問題。一小段真正走得快的路段,就算落在整體配速還算普通的某一公里裡,照樣會跟這一公里的其他部分混在一起——只不過被稀釋的範圍從整趟健行縮小到了這一公里而已。真要找出最快的那一小段,就得用一個短到真正的加速藏不進去的單位去看。
GPX 檔案裡已經有的材料
一條 GPX 軌跡就是一串按順序排列的點,每個點帶著經緯度,通常還有時間戳。這跟健行記錄裡顯示的總距離、移動時間、平均配速、累計爬升這些數字背後的原始材料完全是同一份——它們都不是作為現成數字存在檔案裡的,而是每次都從這同一串點重新算出來的。路線某一小段的配速,也不過是這串點能算出的又一個數字,用得到的只是連續幾個點的距離和時間,其他都不需要。
唯一的坑:相鄰兩點之間的速度雜訊太大,不能直接拿來用
定位從來不是絕對精確的,如果只拿相鄰兩個點來算距離——這兩點往往只隔幾公尺,記錄時間也只差幾秒——一段其實走得並不快的普通路段,也可能因為其中一個點剛好偏向了一側幾公尺、下一個又剛好偏向了另一側,突然冒出一個現實中根本不可能走出來的配速。要是不處理這種情況,這一小段純屬雜訊的「快」反而會蓋過檔案裡所有真實的快速路段,被誤判成「全程最快」。
把區間放寬到一個固定距離——通常 100 到 200 公尺就夠——基本能解決這個問題:這樣算出來的是一段真實走過的距離除以夠長的時間,兩端各自幾公尺的定位誤差幾乎撼動不了結果,而一段真正持續幾百公尺的快速路段,依然能清清楚楚地顯現出來。區間切得太窄,雜訊就會贏;切得太寬,一小段真正的加速又會被周圍比較普通的配速稀釋掉,跟按公里分段時一樣的問題。真正合適的寬度,落在這兩者中間,既能讓一小段真實的加速露出來,又不至於被雜訊騙。
拿真實數字算一遍
假設一條軌跡大約每 5 秒記一個點。某段 150 公尺的區間走了 110 秒——配速大約是每公里 12 分 13 秒。緊接著下一段 150 公尺只走了 75 秒——配速大約是每公里 8 分 20 秒,明顯快了不少。再往前走,接下來那段 150 公尺花了 130 秒,配速又降回每公里大約 14 分 27 秒。中間那段就是這條路線走得最快的地方——要是沒人去看比全程更短的區間,它本來會安安靜靜地被埋在這趟健行每公里 11 到 12 分左右的整體平均配速裡,誰也看不出來。
TrailCam 能幫上什麼
TrailCam 顯示的是整趟健行一個平均配速,而不是逐段的配速曲線,所以一小段走得特別快的路段,也會跟其他部分一樣被壓進那一個平均數字裡。想自己動手跑上面這套算法的人,路線可以匯出成 GPX 1.1 或 CSV,記錄下的每一個點都完整保留,正好是這個方法需要的原始材料。匯出功能包含在可選的 TrailCam Pro 裡,App 本身免費下載。
常見問題
- 不自己算配速,也能看出一趟健行最快的那一段在哪嗎?
- 不像海拔那麼直接。TrailCam 會在回放路線時畫出高度剖面圖,但配速只以整趟健行的一個平均數字顯示,不是逐段的曲線。所以要找出真正最快的那一段,需要從匯出的 GPX 或 CSV 檔案裡的原始點算起。
- 為什麼換一個距離區間的大小,算出來的最快路段會不一樣?
- 區間切得越窄,幾公尺的定位誤差在這麼短的一段裡占的比例就越大,越容易被雜訊牽著走。區間切得越寬,一小段真實的加速又容易被周圍比較普通的配速稀釋掉。大概 100 到 200 公尺通常能兼顧兩邊,但具體切多寬是個取捨,不是一條固定不變的規則。
- 一趟健行走得最快的那一段,是不是就是記錄裡出現的最高速度?
- 不一定。記錄裡的單次最高速度,往往正是這套方法想要避開的那種點與點之間的雜訊——相鄰兩點之間一次偶然的跳變。用這套方法找出來的最快路段,是在一段真實距離上持續走得快,而不是原始資料裡的一次瞬間尖峰。
記錄你自己的軌跡
TrailCam 是一款 iPhone 上的 GPS 軌跡記錄 App,會把沿途拍下的影片、照片與語音釘在你拍它的那個位置,並支援匯出成 GPX 1.1 或 CSV。免費下載。