GPSログのファイル形式を変換したり、軌跡を間引いてファイルサイズを小さくできる便利ツール GPSBabel をご紹介します。
ブログに走行マップを埋め込みたい
ロードバイクで遠出する際、GPSサイコンXOSS Gを愛用しておりGPSログをSTRAVAにアップロードしてニヤニヤしていましたが、せっかくなのでブログ等に走行マップを貼り付けたくなるものです。
STRAVA埋め込み機能の不満
はじめのうちはSTRAVAの埋め込みをブログへ貼り付けしていましたが、レスポンシブ対応がいまいちなのとマップを貼り付けるのならやはりGoogleマップのようにその場でドラッグ、拡大できるようにしたくなりました。
マップサービスのJavaScript APIを使う
結局LefletやmapboxなどJavaScript APIを使うことにしました。
そうするとGPSログをSTRAVAなどからダウンロードしてJavaScriptから読み込むことになりますが筆者が利用しているブログサービス、Bloggerでは外部ファイルを読み込むことができません。記事作成画面でJavaScriptコード内に直接GPSログを貼り付ける必要があります。
巨大なGPSログをBlogger記事にコピペ
STRAVAからダウンロードしたログはGPXファイルです。GPXはテキストファイルなのでそのまま、またはGeoJSONに変換してからフォーマット文字列として変数に代入するのですが、とにかく行数が多く、記事作成画面がほとんどGPSログで埋まってしまう状態です。
例えば直近で大阪の万博記念公園から奈良の平城宮跡に行った際のGPSログはマップに表示すると下のようになりますが、座標はなんと7874点にもなります。ここでは画像で表示させています。
これでは読み込みも時間がかかりそうですし、記事編集をしたくなくなります。
GPSBabelでGPSログを間引き
自分でスクリプトを書いてある1個前の座標と差を比較してあまり移動していなければ間引くというものを作ってみましたが、先人がもっと洗練されたツールを作っているだろうと思い調べてみたところ、フリーソフトでGPSBabelというツールを発見しました。
GPSBabel公式ホームページ からダウンロードできます。Windows, MaxOS, Linux版があり、Linux版を使いました。Linux版はgpsbabel, gpsbabel-guiとDebianパッケージがあります。以下、gpsbabel 1.8.0+ds-4+b1 というバージョンでのサンプルです。
とりあえずコマンドラインから使ってみます。形式変換だけであればgpsbabel -i 入力形式 -f 入力ファイル名 -o 出力形式 -F 出力ファイル名 とすれば変換してくれます。GPXからGeoJSONに変換するサンプルです。
$ gpsbabel -i gpx -f input.gpx -o geojson -F output.json
GPSデータを間引きするには、フィルターのSimplifyという機能を使います。オプション -x simplify,count=出力したい座標数 または、-x simplify,error=許容誤差 で指定します。
例えば許容誤差10m以内で間引きする場合は下記のコマンドになります。
$ gpsbabel -i gpx -f input.gpx -x simplify,error=0.01k -o geojson -F output.json
GUIフロントエンド
GUIフロントエンドもあります。Linuxの場合はコマンド gpsbabelfe か、アプリランチャから起動できます。
コマンドより使いやすいですが、先に紹介した simplify フィルタでは count しか指定できず error での指定はできないようです。
間引きを試してみた
先程お見せした万博記念公園〜平城宮跡のGPSログをサンプルとして、simplify フィルタで error の値を変更しポイント数と軌跡がどうなっていくか確かめてみました。
error | ポイント数 |
---|---|
オリジナル | 7874 |
0.001k | 2077 |
0.005k | 429 |
0.01k | 260 |
0.03k | 112 |
errorの単位はキロメートルなので、0.001kだと誤差1mですがこれでもデータ量は1/4程度になります。0.03k(30m)では112点まで間引くことができます。
では実際にどんな軌跡になるのか見ていきましょう。
オリジナル(7874点)
間引きによる差がわかりやすい場所で比較するため、急なカーブがある所を拡大してみました。まずはオリジナル。GPSサイコン XOSS は1秒毎のデータになっているようでまあ、こんなものでしょう。
0.001k(2077点)
ほとんど違いがわかりませんね。ただ、2077点はまだまだ多くもっと間引きたいです。
0.005k(429点)
ちょっと粗くなりました。ここまで拡大することはほとんどないでしょうからブログ埋め込み用途としては全く問題ないレベルです。
0.01k(260点)
かなり直線になりましたね。90°カーブは2点だけで斜め直線で繋がれています。これくらいであれば実用上問題ないかなと思います。
0.03k(112点)
100点くらいになると、記事作成画面で直接コピペしてもあまり気にならないレベルまで間引きできましたが、さすがにカクカクで道から外れています。ちょっとやり過ぎました。
まとめ
GPSBabelで簡単にGPS軌跡データを間引いてシンプルにすることができました。サイクリングの記録をブログにアップする用途としては0.005k〜0.01k(誤差5〜10m)くらいで間引きするのが良さそうです。
関連記事
ブログに埋め込むマップサービス比較!
自転車や山登り、キャンプなどアウトドア系の記事を書く際に、どうしてもブログに地図を埋め込んで自転車や ...
万博記念公園から平城宮跡へライド
これまで淀川沿いや大阪北摂の山々を走ることが多かったですが、今回は趣向を変えて奈良県の平城宮跡へ ...
uMap - ブログに埋め込む地図を無料で作成!
ブログに地図を埋め込みたい場合、Googleマップを始めとしたサービスがいくつかあり、前回の記事で ...
淀の河津桜を見に淀川を遡上サイクリング
桂川、宇治川、木津川が合流し淀川となる背割堤から少し上流に淀の河津桜という2月中旬頃から早く咲く ...
Insta360 ONE R 1インチ広角モジュールセット レビュー
サイクリングの記録用に今まで安物アクションカメラを使っていましたが、低画質の写真や動画のブレが不 ...
0 件のコメント:
コメントを投稿