JOSM (Java OpenStreetMap Editor) を用いた複数OSMファイルのマージ
【概要】JOSM(Java OpenStreetMap Editor)は、OpenStreetMapデータを編集するためのデスクトップアプリケーションである。本記事では、複数のOSMファイルを1つにマージする手順を解説する。分割してダウンロードしたデータを統合する場合などに用いる。
JOSMはJavaで動作するアプリケーションであり、Windows用のインストーラ(MSIまたはEXE)が公式サイト(josm.openstreetmap.de)から配布されている。Windowsパソコンで動作し、CPUのみの機器でもGPU搭載機でも利用できる(特別なGPUは不要)。
【作業を始める前に】
- JOSMの「レイヤーの結合」は、1つのレイヤーを別の1つのレイヤーへ統合する操作である。一度の操作で複数のファイルを統合することはできないため、ファイルが3つ以上ある場合はこの操作を繰り返して順次1つにまとめる。
- マージや競合解決の結果は元に戻せない場合がある。作業前に、元のOSMファイルのコピーを別の場所に保存しておく。
- JOSMを導入していない場合は、公式サイト(josm.openstreetmap.de)からWindows用インストーラ(MSIまたはEXE)を入手してインストールする。
複数のOSMファイルを開く
JOSMを起動し、マージするOSMファイルを開く。ファイルは、メニューの「ファイル」→「開く」から選択するか、ファイルをJOSMのウィンドウへドラッグ&ドロップして読み込む。複数のファイルを開くと、それぞれが個別のレイヤーとして読み込まれ、画面右側の「レイヤー」パネルに一覧表示される。
レイヤーを1つにマージする
「レイヤーの結合」は、1つのレイヤーを別の1つのレイヤーへ統合する操作である。手順は次のとおり。
- 画面右側の「レイヤー」パネルで、統合元となるレイヤーを選択する。
- メニューから「編集」→「レイヤーの結合」を選ぶ(ショートカットは Ctrl+M。レイヤーパネルの統合ボタン、または右クリックメニューからも実行できる)。
- 表示されるダイアログで、統合先(マージ先)のレイヤーを選択する。統合元のレイヤーの内容が統合先のレイヤーに取り込まれる。
- この操作の結果、統合先のレイヤーが残り、統合元のレイヤーは消える。以後の作業(追加のマージや保存)は、残った統合先のレイヤーに対して行う。
- OSMファイルが3つ以上ある場合は、この操作を繰り返し、すべてのレイヤーが1つになるまで順次マージする。
この結合操作は、OSMデータレイヤーのほか、GPX・マーカー・ジオイメージなど、同じ種類のレイヤー同士に対して適用できる。
競合が発生した場合の対処
同一のオブジェクト(同じノードやウェイなど)が複数のファイルに含まれている場合、マージ時に競合(コンフリクト)が発生することがある。競合が検出された場合は、JOSMの競合解決ダイアログに従い、どちらのデータを採用するかを選択して対処する。
競合が残っている間は、そのレイヤーは未解決の状態として扱われ、マージ結果の保存やOSMサーバーへのアップロードができない。検出されたすべての競合を解決して、マージ作業が完了する。
マージ結果を保存する
すべてのレイヤーを1つにまとめ、競合をすべて解決したら、結果をファイルとして保存する。マージした状態はファイルに自動では反映されないため、保存操作を行わないと統合結果は残らない。
残った統合先のレイヤーを選択した状態で、メニューから「ファイル」→「名前を付けて保存」を選び、OSM形式(.osm)でファイルに書き出す。これで、複数のファイルを統合した1つのOSMファイルが得られる。