TCXのデータの例
実際のデータは?
実際、取りあえず試用のプログラムは既にあって、データを読み込めるようになっています。でも、興味がある方もいらっしゃるみたいなので、もう少し詳しい中身について今日は書いてみます。
上の例が、TCXファイルの例です。これは、昨年Mt.Whitneyに行った時の冒頭のデータを一部抽出した物です。一連のデータとして、時刻、位置情報(緯度と経度)、標高、心拍数などが入っています。TCXファイルには、距離も入っているのが分かるかと思います。これは、スタートからの積算距離になっています。
先にも書きましたが、TCXファイル自体は、XMLファイルなので、ファイルはタグを基に、そのタグの階層で構成されています。例では一部を抜き出していますが、「Trackpoint」というタグは別の上位の階層のタグに含まれていて、この前後には、別の「Trackpoint」が同じレベルで羅列されているような形式になっています。このタグ一つ一つが個々の時刻のデータになるわけです。
この「Trackpoint」の下位には、個々のデータが別のタグで含まれているのが分かるかと思います。
基本的に、各タグのデータは最初の「<>」で囲まれた所からスタートして、</>という、同じタグで、先頭に「/」が入った所で終わる様になっています。
つまり、個々のGPSのトラックデータが欲しい場合は、このTCXファイルの場合、「Trackpoint」というタグを探して、その中のデータを抜き出していけばよい事になります。ファイルも、テキスト形式のファイルなので、少々プログラムに慣れた方ならば簡単なプログラムでデータを抜き出すことができるわけです。
GPXファイルは?
GPXの同じデータの例
さて、これが同じ時刻のデータをGPXファイルから抜き出してみました。こちらも同じXML形式なので、似ていますが、少し書き方が違うのが分かるかと思います。こちらの場合は、「trkpt」というタグに個々の時刻のデータがあります。位置情報は最初の「trkpt」のタグの中に埋め込まれていて、その後に、個々のデータが少し別のタグで入っているのが分かるかと思います。こちらの場合、積算距離の情報は入っていないので、位置情報から自分で計算する必要があります。これは、調べてみたのですが、少し面倒です。簡易版は地球を完全な球体として計算する方法が簡単なようですが、回転楕円体として計算するのは幾つか方法があって、少し調べてみる必要があるようです。将来的にはGPXファイルのデータも読めるようにしたいので、こちらはもう少し調べて、実際にGarminのソフトウエアは何を基準に距離を出しているのかを検証しようかと思います。
取りあえずは、TCXのデータを処理しているので、問題はないのですが、GPXのファイルを調べていて、気づいたので書いておきます。
データーは読めた!次は?
現状は、データを読んで読んだデータを表計算ソフトで読み込めるところまでは完成しています。それで、今は表計算ソフトでデータをマニュアルで処理して、どうすると有用なデータになるかと試行錯誤中です。データの抽出は、コース上の主要ポイントの位置情報を入れればその場所のデータを抜き出すこともできるようにしてみました。これで、同じコースの別のデータを比べるのが容易になりました。少なくても各区間の所要時間は簡単に比較できるようになっています。
前回示した「休憩」時間の方はまだプログラムが出来ていません。というのは、現在の各レコードは数秒おきに記録されており、数秒間の移動距離では休憩を定義するのに少々問題があるからです。そこで、もう少しデータの処理がやりやすいように、データを再構成する方を先にやっています。
(1)サンプル期間を長めにする
これは、数秒おきでは短すぎるので、この長さを変えられるようにしようとしています。この長さはデータを見ながら調整できるように、処理する時に1分毎とか5分毎とか変えられるようにしています。
(2)サンプル期間のデータ処理
このサンプル期間には複数のレコードが含まれるので、これを無視する手はないので、データによっては、区間の積算値、例えば距離や標高ならば、区間中の移動距離を単にサンプル期間の差だけでなくて、全てのレコードの積算で求めるようにしようと考えています。この際に、時々存在する特異点をどう処理するかはまだ決めていなくて、今はそのまま積算しています。恐らく前後の平均値から、以上に大きな変化があった点は無視するなどの処理が必要かと思います。あまり、サンプル区間の時間が長くなければ、距離も標高も単位時間当たりの移動量の平均にして、算出する方法の方が良いのかもしれません。ちょっと実際にデータを処理して考える事にします。
心拍数は、区間の平均にすることで特異点の影響を少なくする事ができます。
(3)データの正規化
積算なり、平均なりで各サンプル区間のデータを計算して、まずは、そのデータを区間の時間で割って、平均変化率を計算するのがまずは最初のステップだと思っています。この平均変化率の変化を見るともう少し詳しい事がわかるのではと思っています。つまり、距離の場合は、平均変化率(=速度)になるので、歩くスピードがどう変化しているかを見る事ができます。
心拍数は、運動開始直後から心拍数が安定するまでの変化率や、休憩時の心拍数の低下の度合いが取りあえずは興味があるデータかと思います。
とそんなデータの処理を考えていて、プログラムで自動化してまずは表計算でグラフを書かせて有用なデータになるかを調べようと思っています。
(つづく)
コメント
コメントを投稿