# iD エディタで複数の GPS トラックを表示する 時期的にちょうどいい(?)ので [OpenStreetMap Advent Calendar 2019](https://qiita.com/advent-calendar/2019/osmjp)の1日目の記事にします()。 正攻法でいくなら [GPS の軌跡を osm.org にアップロード](https://wiki.openstreetmap.org/wiki/JA:%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89)してからエディタの GPS トラックを表示するか、JOSM にドロップするなどの方法がありますが、多くのトラックに自宅付近が記録されているといった理由でアップロードしにくい場合の次善の手を考えました。 ## 長いので要点だけを簡潔に 次のどちらかでできます。 - GDAL ツールか QGIS などで GPX ファイルをマージしてから読み込む - GPX ファイルを地図画像タイルに変換してカスタム背景を設定する QGIS をインストールしておくとどちらの作業できます。 ## GPX ファイルをマージしてから読み込む QGIS か GDAL に含まれる `ogr2ogr` を使います。 この方法では視覚的に異なるトラックを認識するのは難しいかもしれません。 ### 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 のスキーマ](http://www.topografix.com/GPX/1/1/gpx.xsd)を見てみると、軌跡の情報を格納している `trk` 要素は ```xml <xsd:element name="trk" type="trkType" minOccurs="0" maxOccurs="unbounded"> ``` となっており、`maxOccurs="unbounded"` ということは複数の軌跡情報を格納することができます。 そこで、GPX ファイルをメモ帳で開き、`trk` 要素を次々にコピペしていけば複数の軌跡を持った GPX ファイルを作成できます。 Internet Explorer など XML パース機能を持ったソフトウェアで展開してみてエラーが出なければ XML 的には問題ないだろうと思います。 XML の構造が問題なくてもデータ上の問題が起るかもしれないので非推奨にしています。 ## GPX ファイルを地図画像タイルに変換してカスタム背景を設定する(検証中) この方法のメリットは複数のトラックを視覚的に見やすく分けて表示することが可能ではないかということです。デメリットはとても面倒なこと。 現在検証中。4.までやった、12/1までに残りをやってみること 1. QMeta Tiles プラグインをインストールする 1. QGIS を起動して必要な GPX ファイルを QGIS にドロップ(レイヤ名は tracks を選択) 1. 適当に見やすいスタイルに変更する 1. QMeta Tiles で TMS 地図画像ファイルを作成 1. できた地図タイルを適当なウェブホストサービスにアップロードする 1. iD エディタにある背景画像のカスタム設定でアップロードしたホストとパラメータをセットする