GPXのスリム化 3月31日, 2023


sannoto
三ノ塔より富士山 ─ 遠く南アルプスを望む

山のルートデータはGarminのForeAthlete230Jで残している。これをTrailNote上に反映して山行記録としているのだ。

ただこのところ例によって電池がか細くなってきた。夕方までもたないこともある。そこで保険にGNS3000というドイツ製のGPSレシーバーも持ち歩くようになった。毎秒プロットしている。Garminの腕時計は10秒毎なので、かなり細かいと言える。地図に表示するとギザギザが目立つ。

このデータを間引くことができるのか日本の販売サイトに質問のメールを書いてみたのだが、音沙汰無し。まあできないのだろうなあ、とあきらめつつ、ドイツのメーカーのサイトを見てみると、1Hzのデータ取得を(わが希望とは逆に)4Hzで取得するコードのupdate候補が置かれているのを発見した。これからすると、ソフト的な方法で頻度を調節できるようになっているのかもしれない。

まあ、とにかく、目下は毎秒位置データを取得するのを変更することはできない。そこで、せめてでき上がったgpxファイルを間引くくらいはしてみようと考えた。

遥か昔、当時ルート記録を保管していた「ルートラボ」にポイント数の上限があったため、それに合わせることを考えてperlでスクリプトを書いて遊んだことがあった。1分に1ポイントデータにしたと思う。今回は、古いものを手直しすることは捨てて、pythonで書いてみることにした。

pythonには、XMLでもGPXでも解析用のパッケージがあるのだけど、ここでは、以前のperlのやり方だけは踏襲して、正規表現でトラック・ポイント・ブロックを抜き出した上で、INTERVAL間隔(ここでは20秒にしてみている)毎にブロックを書き出している。

コードはgithubの ここ に置いてある。