Webサービスプロジェクト ~ 他のGPSファイルフォーマット



2019年8月23日

他のGPSファイルフォーマット

GPS機器で記録したデータから登山やハイキングに役立つ解析をする
Webサービスの制作を記事にしています。

これまで書いてきたのは

  • TCX形式のGPSデータを読み込む
  • 読み込んだデータの表示
  • 時刻の扱い
です。今日は他のGPSデータのフォーマットについて書いてみます!

GPX形式

TCX形式は扱いやすいので最初に読み込むデータの形式として選びました。
実は、GPSのデータ形式としてはGPX形式の方が広く使われています。
なので、広くいろいろな方に使って頂くにはGPX形式のサポートも重要になってきます

TCX形式が便利なのは、ファイルの中に距離情報を計算して予め入れ込んでいるので
距離の処理が必要ない所にあります。
つまり、位置情報は地図上に移動したコースを出したりしない限りは必要ありません。
一方でGPX形式では、距離情報は含まれていないので、
位置情報から計算する必要があります。

実は同じではないGPX形式

色々なGPXファイルを見てみると中身が微妙に違う事が分かります。
同じ形式なのに何故違うのかというと、拡張部分が違います。

元々のGPXファイルは位置情報を記録するための物で、位置情報や時刻以外は
余り考慮されていませんでした。
後から発売されたGPS機器が、位置情報以外にも、心拍数や温度、歩数などを記録できるようにしたため、後から拡張して記録できるようにしたため、
若干内容が異なっています。

私は基本的にGarmin社でGPS機器を揃えているので良く扱うファイルは
ガーミン社のサービスであるGarmin Connectからダウンロードした物です。

以前Javaで同じようなアプリを開発した際に、調べたところ、別のサービスから
ダウンロードした場合、心拍数などの記録のタグの名前(ネームスペース)が
幾つかある事が分かっています。

今回の方針は?

そこで今回の方針は、TCX形式に加えて、
  • Garmin Connectが生成するGPX
  • STRAVAが生成するGPX
  • Runkeeperが生成するGPX
を自動で判別してサポートする事を考えています。
今回扱うファイルは全てXML形式なのでヘッダー部分(ファイルの最初の部分)を
読み込めばファイルがGPSのデータかどうかは判別できます。

TCX形式かGPX形式かはこの部分で判別します。

これで、位置情報、標高、時刻の情報は読み込むことができるので、
後は拡張である心拍数の情報を読み込めれば良い事になります。
他にも拡張機能で、スピードや、歩数、温度などの情報がある場合もありますが、
必要な情報に絞り込んで、出来るだけ多くのファイルをサポートできるようにします。

ヘッダーから得られる情報

GPSのデータファイルのヘッダーにはファイルがどのようなタグを使って
構成されているかを示すURLが書かれています。
この中の「TrackPointExtension」を定義している名前空間(ネームスペース)を
見つけて読み込むようにします。
  • Garminが生成するファイルでは「ns3」というネームスペースを使用
  • STRAVAとRunkeeperでは、「gpxtpx」というネームスペースを使用
このネームスペースにGPX形式の場合、「hr」というタグをつけて心拍数のデータを
保持しています。

これが見つけられた場合は、心拍数を読み込むという事にすれば、
殆どのGPX形式のファイルはサポートできそうです。

課題は
  • ヘッダーをチェックしてGPX形式かTCX形式を判別する
  • ヘッダーから拡張の心拍数に使っている名前空間を抽出する
  • 位置情報から距離の計算をする
という事になります。ヘッダーのチェックはJavascriptの機能を使えばできます。
距離の計算はインターネットを計算すると幾つかの標準的な計算方法が見つかります。
今後はこの辺をもう少し詳しく解説していきます!



お問い合わせはこちら!

コメント

このブログの人気の投稿

ユーザーインターフェースの設計

足し算以外もできるようにする

Reactで表示する文字に色をつける