JOSM (Java OpenStreetMap Editor) を用いた複数OSMファイルのマージ

【概要】JOSM(Java OpenStreetMap Editor)は、OpenStreetMapデータを編集するためのデスクトップアプリケーションである。本記事では、複数のOSMファイルを1つにマージする手順を解説する。分割してダウンロードしたデータを統合する場合などに用いる。

JOSMはJavaで動作するアプリケーションであり、Windows用のインストーラ(MSIまたはEXE)が公式サイト(josm.openstreetmap.de)から配布されている。Windowsパソコンで動作し、CPUのみの機器でもGPU搭載機でも利用できる(特別なGPUは不要)。

【作業を始める前に】

  1. JOSMの「レイヤーの結合」は、1つのレイヤーを別の1つのレイヤーへ統合する操作である。一度の操作で複数のファイルを統合することはできないため、ファイルが3つ以上ある場合はこの操作を繰り返して順次1つにまとめる。
  2. マージや競合解決の結果は元に戻せない場合がある。作業前に、元のOSMファイルのコピーを別の場所に保存しておく。
  3. JOSMを導入していない場合は、公式サイト(josm.openstreetmap.de)からWindows用インストーラ(MSIまたはEXE)を入手してインストールする。

複数のOSMファイルを開く

JOSMを起動し、マージするOSMファイルを開く。ファイルは、メニューの「ファイル」→「開く」から選択するか、ファイルをJOSMのウィンドウへドラッグ&ドロップして読み込む。複数のファイルを開くと、それぞれが個別のレイヤーとして読み込まれ、画面右側の「レイヤー」パネルに一覧表示される。

JOSMでOSMファイルを開いた画面

レイヤーを1つにマージする

「レイヤーの結合」は、1つのレイヤーを別の1つのレイヤーへ統合する操作である。手順は次のとおり。

  1. 画面右側の「レイヤー」パネルで、統合元となるレイヤーを選択する。
  2. メニューから「編集」→「レイヤーの結合」を選ぶ(ショートカットは Ctrl+M。レイヤーパネルの統合ボタン、または右クリックメニューからも実行できる)。
    JOSMのレイヤー結合ボタン
  3. 表示されるダイアログで、統合先(マージ先)のレイヤーを選択する。統合元のレイヤーの内容が統合先のレイヤーに取り込まれる。
  4. この操作の結果、統合先のレイヤーが残り、統合元のレイヤーは消える。以後の作業(追加のマージや保存)は、残った統合先のレイヤーに対して行う。
  5. OSMファイルが3つ以上ある場合は、この操作を繰り返し、すべてのレイヤーが1つになるまで順次マージする。

この結合操作は、OSMデータレイヤーのほか、GPX・マーカー・ジオイメージなど、同じ種類のレイヤー同士に対して適用できる。

競合が発生した場合の対処

同一のオブジェクト(同じノードやウェイなど)が複数のファイルに含まれている場合、マージ時に競合(コンフリクト)が発生することがある。競合が検出された場合は、JOSMの競合解決ダイアログに従い、どちらのデータを採用するかを選択して対処する。

競合が残っている間は、そのレイヤーは未解決の状態として扱われ、マージ結果の保存やOSMサーバーへのアップロードができない。検出されたすべての競合を解決して、マージ作業が完了する。

マージ結果を保存する

すべてのレイヤーを1つにまとめ、競合をすべて解決したら、結果をファイルとして保存する。マージした状態はファイルに自動では反映されないため、保存操作を行わないと統合結果は残らない。

残った統合先のレイヤーを選択した状態で、メニューから「ファイル」→「名前を付けて保存」を選び、OSM形式(.osm)でファイルに書き出す。これで、複数のファイルを統合した1つのOSMファイルが得られる。