GPX形式について ~ 自作GPSアプリのログに使っていきます
今までkunimiyasoftが作るGPSアプリケーションは、行動ログにPOT形式を利用してきました。しかし、POT形式は大昔に作られたフォーマットで、ポイントを保持するための形式です。そのため、POT形式で行動ログを取った場合は、カシミール3Dに読み込ませた後でトラックに変換する必要がありました。
そのPOT形式は、すでに仕様を解説するサイトもなく、使うべきではないです。これからはGPX形式か、KML形式が良いと思います。
KML形式は、これまでも地図を提供する時のフォーマットとして使っています。でも、行動ログを残すフォーマットには、GPX形式が良く使われます。私も使うYAMAPやヤマレコでもGPX形式が使われるので、 今後はGPX形式を使おうと思います。
1.GPXフォーマットの概要
GPXフォーマットは以下のようなXML形式を採用したフォーマットです。
世の中はタグでデータを保持するのが主流です。これってテキストエディタで見た時に分かりづらいので、好きではありません。これまでPOT形式を採用したのも、テキストエディタで見て分かりやすいからでした。
<?xml version="1.0" encoding="UTF-8"?>
<gpx xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.topografix.com/GPX/1/0" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">
<trk><name>RASPI LOG</name>
<number>1</number>
<trkseg>
<trkpt lat="40.757130" lon="140.232599"><ele>0</ele><time>2020-11-09T04:56:08Z</time></trkpt>
<trkpt lat="40.757130" lon="140.232599"><ele>0</ele><time>2020-11-09T04:56:08Z</time></trkpt>
<trkpt lat="40.757130" lon="140.232599"><ele>0</ele><time>2020-11-09T04:56:09Z</time></trkpt>
</trkseg></trk>
</gpx>
GPX形式自体は、それほど難しくありません。見れば、すぐ分かると思います。最初の2行は既存するGPXからコピペした使いまわしです。
緯度、経度は度未満が小数点なので把握しずらいです。プログラム的に楽なのは確かですが、テキストエディタで見ただけでは、緯度・経度から場所を推測するのが難しいです。
GPX形式については、以下のサイトさんの記事が分かりやすいです。
2.ラズパイ用のGPSアプリをGPX対応する
これまでに作成したラズベリーパイ用のGPSアプリケーションに行動ログを取得する機能を追加し、GPX形式で出力できるように機能アップしました。以下のページで提供を開始しました。
ほぼ1秒ごとに行動ログが保存されます。ラズベリーパイなので行動ログファイルが大きくなっても問題はないですが、カシミール3Dに取り込んだ時、ポイントが多すぎると動作が重くなってしまう問題があります。
対処ですが、取り込んだ後で間引きでも良いですが、やはりラズベリーパイ側でデータの間引きが必要でしょう。間引きバージョンは、もうしばらくお待ちください。
3.今後の行動ログ取得はラズパイも使おうと思います
アウトドアでの行動ログ取得にYAMAPアプリを主に使っていますが、今年のスマートフォン変更から特に、GPS信号のロストが頻繁に起こるようになりました。
上の例は大雪高原沼に行った時のログですが、行動中に2回もロストして信号を取り直しています。スマートフォンをザックの天蓋に入れていても、ロストを防げませんでした。これ以外でも、近くの森を歩く時でもロストが良く起こっていて、ちょっと困っています。
やはりGarmin GPSでの行動ログ取得は欠かせないですが、ラズベリーパイでの行動ログ取得についてもGPS信号のロストが非常に少なく、かつイレギュラーな点も少ないので、使って行こうかと考えています。
gpx形式対応後に、芽室町の新嵐山で行動ログを取ってみました。まじでラズベリーパイに秋月GPSを組み合わせて取ったGPSログは、とても精度が高いと思います。Garmin GPSも良いけど、それ以上に良い軌跡が取れることが多いです。
しかし、まだラズベリーパイのGPSプログラムは機能が不十分なので、こつこつ作っていこうと思います。