ガーミンのデータを抜き出す 8月13日, 2016


GarminのEdge500とForeAthlete225Jを使用してきている。暑くなって、ゆったりジョギングでの心拍がやはり20bpmは上がったなと思いつつ、ひらめいた。Garmin connectに貯めているデータをまとめてダウンロードできないかな。

確かめると、Garmin connectでは、個々のアクティビティーのデータを得ることはできるが全データを一括して得る方法は無さそうだ。今更GarminのSDKにあたるのも何だし…。ただ、古いアプリケーションのGarmin Training Center(GTC)からであれば、「すべてのデータをエクスポート」する機能がある。

試しにForeAthleteをGTCに同期し、データをXMLでエクスポートしてみた。「すべてのTraining Centerデータ.tcx」というファイルができる。中身を見ると単純なXMLファイルの構造が読みとれる。そこで簡単なperlのスクリプトを書いてみた。

■機能
Lap毎のデータから、ID・時間(秒数)・距離(メートル)・平均心拍数(bpm)・平均ペース(分:秒/km)・平均ステップ(spm)をSTDOUTにCSVデータとして書き出すこと。
IDは、例えば、"2016-03-20T00:18:31Z"のように、スタート日時をUTCで示す文字列にした(日本のローカルタイムでは2016-03-20T09:18:31)。
■実行するには
スクリプト名称をtcx2csv.pl、データファイル名称をData.tcxとすると、
$ tcx2csv.pl Data.tcx | sort > RunningData.csv
■利用例
得られたCSVファイルをNumbersで開くと、例えばこのようなグラフを書くことができる(勿論、Execelに読み込むことも可能)。アクティビティの平均心拍数と平均ステップ数を表示してみたもの。

[追記 2020-03-10] Garmin Training Centerは古いものなので、現在では入手することができない。それにもうCatalinaでは動かないでしょう。