Go for it!

モーターサイクルと自転車とキャンプの日々。

TCXからNP, APを得る

いつものpython遊び。

以前試したときはXMLの名前空間が違うデータがうまく引っ張ってこられなかったんだけど、頭を冷やして考え直したらちゃんと動いた。

ちなみに、NPとAPの説明ですが、

NP = Normalized Power AP = Average Power

とのことで、前者はアクティビティの平均パワー、後者は0W時(空走時)を含む平均パワーとなるそうです。アクティビティに空走時間や休憩時間が含まれる場合、NPよりもAPの値が低くなります。

python 2.5用のコードを書いたので置いておきます。

実行方法は引数にtcxファイルを与えるだけ。

mitsukuni% gtc_power.py /Volumes/GARMIN/Garmin/History/2009-03-02-00-56-57.tcx
Max Power: 922 Watts
Average Power: 119.00 Watts
Normalized Power: 160.00 Watts

ちなみにハマッたのはxpathのクエリ部分で、ExtensionエレメントまでがTrainingCenterDatabase v2の空間、TPX/WattsはActivityExtension v2の空間になります。こんなかんじ。

[code lang=‘python’] nodes = root.xpath(‘/n:TrainingCenterDatabase/n:Activities/n:Activity/n:Lap/n:Track/n:Trackpoint/n:Extensions/n2:TPX/n2:Watts/text()’, namespaces={‘n’:‘http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2’, ‘n2’:‘http://www.garmin.com/xmlschemas/ActivityExtension/v2’}) [/code]

クエリ部分にちゃんと名前を入れたら取れた。今まで何やってたんだってかんじでガックリです。 [ad#text_wide]