iD エディタで複数の GPS トラックを表示する
時期的にちょうどいい(?)ので OpenStreetMap Advent Calendar 2019の1日目の記事にします()。
正攻法でいくなら GPS の軌跡を osm.org にアップロードしてからエディタの GPS トラックを表示するか、JOSM にドロップするなどの方法がありますが、多くのトラックに自宅付近が記録されているといった理由でアップロードしにくい場合の次善の手を考えました。
長いので要点だけを簡潔に
次のどちらかでできると思います。
- GDAL ツールか QGIS などで GPX ファイルをマージしてから読み込む
- GPX ファイルを地図画像タイルに変換してカスタム背景を設定する
QGIS をインストールしておくとどちらの作業できます。
GPX ファイルをマージしてから読み込む
QGIS か GDAL に含まれる ogr2ogr
、GPSBabel を使います。
この方法では異なるトラックを視覚的に認識するのは難しいかもしれません。
QGIS を使った方法
QGIS を起動し、表示したい GPX ファイルを全て QGIS で表示します。
GPX ファイルを読み込もうとすると、 どのように読み込むか聞いてくるので、軌跡を表示したい場合には tracks
を選択します。
ポイントとして読み込む場合には track_points
を選択してください。
読み込んだらベクタレイヤのマージ機能でマージします。 「ベクタ」→「データ管理ツール」→「ベクタレイヤのマージ」
変換先の座標参照系(CRS)
では EPSG:4326
を選択しておきます。
出力レイヤ
では右側の「...
」をクリックしてファイルに保存
を選択します。ファイルの種類は GeoJSON files(*.geojson)
を選択して任意の保存場所に任意の名前で保存します。
入力レイヤ
の指定では右側の「...
」をクリックして読み込まれている GPX トラックを選択します。すべてを選択する
→OK
でもいいと思います。
実行
をクリックすると軌跡がマージされたレイヤが表示され、ファイルとしても保存されます。QGIS はプロジェクトの保存をせずに終了して大丈夫です。
iD エディタを開き、GPX ファイルを読み込む時と同じ要領で生成された GeoJSON ファイルを読み込みます。
GPX と似たような表示になると思います。
ogr2ogr コマンドを使った方法
GDAL ツールに含まれる ogr2ogr
コマンドを使った方法です。 内容は上記と同じ事をコマンドでやってるだけです。
Windows でも GDAL 単体のインストールができますし、QGIS の Windows 版に含まれる OSGeo4W Shell
から実行することもできます。
Linux だとパッケージ管理システムから gdal
や gdal-bin
などで検索するとインストールできるはずです。
trackA.gpx
,trackB.gpx
,trackC.gpx
をマージするコマンド例です。
ogr2ogr -f GeoJSON tracks.geojson trackA.gpx tracks ogr2ogr -f GeoJSON tracks.geojson -update -append trackB.gpx tracks ogr2ogr -f GeoJSON tracks.geojson -update -append trackC.gpx tracks
ogr2ogr
で GPX の軌跡(tracks
)を GeoJSON の MultiLineString に変換し、tracks.geojson
に保存しています。
2つめ以降のコマンドでは GPX の軌跡を tracks.geojson
に追加していっています。
使いたい GPX ファイルが大量にある場合には任意のプロンプトで使える for
系コマンドを使うといいと思います。
全部結合できたら QGIS の時と同じように iD エディタで読み込めば OKです。
GPSBabel を使った方法(未実施)
GPSBabel というソフトウェアでも GPX ファイルをマージできるようです。
試していないので情報提供のみ。
メモ帳が至高である(個人的に非推奨)
GPX ファイルの実態は XML ファイルです。 GPX のスキーマを見てみると、軌跡の情報を格納している trk
要素は
<xsd:element name="trk" type="trkType" minOccurs="0" maxOccurs="unbounded">
となっており、maxOccurs="unbounded"
ということは複数の軌跡情報を格納することができます。
そこで、GPX ファイルをメモ帳で開き、trk
要素を次々にコピペしていけば複数の軌跡を持った GPX ファイルを作成できます。
Internet Explorer など XML パース機能を持ったソフトウェアで展開してみてエラーが出なければ XML 的には問題ないだろうと思います。
XML の構造が問題なくてもデータ上の問題が起るかもしれないので非推奨にしています。
何らかのプログラミング言語で XML として読み込み、 trk
要素を追加していってもいいかもしれません。
GPX ファイルを地図画像タイルに変換してカスタム背景を設定する
この方法のメリットは複数のトラックを視覚的に見やすく分けて表示することが可能ではないかということです。デメリットはとても面倒なこと。
QMeta Tiles プラグインのインストール
まずは使うプラグインのインストールです。 今回は QGIS 3.4 系を使っています。
QGIS を起動して必要な GPX ファイルをドロップ
QGIS に GPX ファイルを表示させます。エクスプローラーから QGIS にドロップしてあげれは読み込まれます。
読み込むレイヤはtracks
を選択します。
適当に見やすいスタイルに変更する
読み込まれたトラックを自分の見やすいスタイルに変更します。
色を変更する。線種を変更するなどしてトラックを判別できるようにします。
QMeta Tiles で TMS 地図画像ファイルを作成
メニューから QMeta Tiles を起動します。
起動したら出力先や使うズームレベルを設定します。
今回はディレクトリに保存する方法を選択しました。
また、ズームレベルに関してはあまり大きすぎるとファイルシステムのファイル数上限を突破してしまうので気をつける必要があります。
できた地図タイルを適当なウェブホストサービスにアップロードする
FTP の転送ソフトなどを使って自分の自由にできるホスティングサービスなどにアップロードします。
GPS の軌跡に自宅付近や知られたくない場所が多く出てくるなどの事情がある場合には .htaccess
などを使って認証をかけるか、アクセス元の制限を行って見られたくない人に見られないようにしておく必要があります。
また、非常に多くのファイルをアップロードすることになるので、ホスティングサービスの制限にも気をつけなければいけません。
iD エディタにある背景画像のカスタム設定でアップロードしたホストとパラメータをセットする
osm.org にアクセスして iD エディタを起動したら背景設定
からカスタム
を選択します。
地図タイルをアップロードした URL をセットします。
ズームレベルを {z}
、その配下のフォルダを {x}
, ファイル名を {y}.png
として置換えて貼り付けます。
OK
をクリックするとタイルが読み込まれて表示されるはずです。
なお、トラックの存在しない場所を表示するとホスティングサービスへのリクエストが404になって返ってくるので、そうなる前にカスタム背景を除去しておく方がいいと思います。