JA:JOSM/Plugins/Conflation
Conflation(合成)プラグインはJOSMでオブジェクトの合成を行うツールです。 今のところ、住所、建物、公園、学校、バス停などのPOI間の1対1の一致に焦点を当てています。 utilsplugin2の位置を置き換えコマンドを利用して、あるOSMオブジェクトを別のオブジェクトに置き換えたり更新したりします。
便利な使用例
GNISのアップデート
2009年にアメリカのGNISからOSMにデータがノードとしてインポートされました。 その後、ノードはエリアに変換されたり、移動・置換されています。この操作でgnis:feature_idがなくなることがあり、confulationを使用することで、正しいIDに戻すことができます。 またGNISは2009年以降更新されており、このツールでOSMに追加することができます。ツールではgnis_feature_id=*とname=*が一致することに重点を置いてデータの統合ができます。
アドレスのノードを建物のポリゴンに置き換え
OSMのアドレスノードを地方自治体からの高品質の建物データに置き換えることを考えてみてください。 建物に住所がタグ付けされている場合、addr:housenumber=*とaddr:street=*の一致を優先して重み付けすることで 照合ができます。 そのような住所情報がない場合でも、だいたい20mの距離のしきい値を設定することにより、データを統合できる可能性があります。
建物の外形の更新
建物はインポートされたり手書きでトレースされています。建物の外形データが公開された時に、そのデータでOSMの建物データを更新することができます。
最適な駐車スペースの割り当て
これはデータの統合ではなく単なる遊びです。住居と駐車スペースをマッピングした時に、距離情報から各戸に最適な駐車スペースの割り当てを見つけることもできます。
インストール
プラグインのインストールからconflationをインストールできます。500以上のオブジェクトを統合する場合は64bit Java VMを使用して下さい。
用語の定義
- Reference(リファレンス): 参照用の信頼に足る位置座標、属性データを有するデータセット。通常は政府機関などのようなデータ供給元から出されるデータセット
- Subject(サブジェクト): リファレンスのデータを統合するデータセット。通常はOSMからダウンロードした最新のデータセット。
使い方
データの準備
プラグインはJOSMで開くことができる、Reference(リファレンス)となるデータセット(OSMファイル)が必要です。 最初に編集したいエリアのデータをダウンロードしてから、新規のレイヤーで参照用のOSMファイルを開きます。 参照用のファイルを先に開いてから、同じレイヤーにJOSMでダウンロードしてしまうと、データの選択が非常に困難になります。
一致データの生成
- 左側の編集ツールバーにあるConflationのアイコンをクリックし、合成パネルを表示します。
- 右側のダイアログパネルにある合成パネルの設定ボタンをクリックします。
- Reference(リファレンス)データのあるレイヤーを選択し、アクティブにします。
- 注:ReferenceデータをSubjectデータに合成します。
- このレイヤーの中でReferenceデータを選択します(すべてのデータを選択する場合はCtrl+A)。
- 合成パネル内のRererence:の隣にある固定ボタンを押します。
- 次にSubject(サブジェクト)データを選択します。Subjectデータがあるレイヤーを選択してアクティブ状態にし、すべてのデータが対象の場合はCtrl+Aで選択します。
- 合成パネル内のSubject:の隣にある固定ボタンを押します。
- 必要によりMatchingのオプションを設定してGenerate matchesボタンを押します。
選択
選択を行うためには「編集」>「選択」ウインドウを使用します。もしウェイを合成する場合は、ウェイのみを選択する必要があります(ノードは選択しない)。逆に、ノードを合成する場合には、ウェイを選択してはいけません。
現時点でプラグインはリレーションをサポートしていないので、リレーションは選択しないで下さい。
例えば、"building=* type:way"とすると正しく建物を選択できます。type:way
はリレーションのノードを選択しないようにするために必要です。
マウスだけでエリアを選択することはできません。
合成
合成パネルの中に3つのタブがあります。 一致はリファレンスとサブジェクトのレイヤーの両方に存在するものをリストにしています。 参照のみとSubject onlyのタブは各々のデータセットで一致しなかったオブジェクトをリストにしています。
- 一致または不一致のオブジェクトをダブルクリックすることでズームし、選択したオブジェクトの中心に移動します。
- 1つ以上の一致するオブジェクトを選択し合成ボタンをクリックすると参照データの値が合成されます。参照のみのリストにあるオブジェクトを選択し、合成ボタンを押すことでサブジェクトのレイヤーにコピーできます。
リファレンスとサブジェクトで同じものを選択できることに注意して下さい。両方のオブジェクトが同じ場合、アルゴリズムは非常に高いコストを割り当てるため、同じオブジェクトが一致することはありません。
実装
- リファレンスとサブジェクトの選択には、既存の検索および選択の機能を再利用しています。
- Java Conflation Suite(JCS)とJava Topology Suite(JTS)を使用して、リファレンスとサブジェクトのオブジェクト間のスコアを計算し、一致のリストを作成します。
- オブジェクトの合成にはutilsplugin2の位置を置き換えコマンドを使用しています。
v0.4とv0.5の新機能
- 位置座標は合成せず、タグのみ合成することを可能にします。
- レーベンシュタイン距離を使用してタグ間の距離を算出
- 編集機能で要素を選択すると、リスト中の対応するオブジェクトを選択
(以下省略)
今後の予定
これは、私が考えた不完全で順序付けられていないタスクのリストです。 これらやあるいは他のものがあなたに役立つ場合は、それらのチケットを作成してください。
(リスト省略、英語版参照)
開発
最初はUser:Joshdoeが作成しましたが、他の開発者もGitHubでフォークすることができます。バグレポートやリクエストはJOSM Tracで"Plugin conflation" componentから送って下さい。