JA:MLIT PLATEAU/imports manual

From OpenStreetMap Wiki
Jump to navigation Jump to search

PLATEAU 建物データ: OpenStreetMap へのインポート手順 日本語版 ドラフト v0.99

国土交通省3D都市モデル Project PLATEAU で公開される三次元の建物オブジェクト LOD1 について、 OpenStreetMap へインポートする手順を記載します。

インポート全体に関する情報については、 OSM wiki: JA:MLIT PLATEAU/imports outline を参照してください。

以下の作業を始める前に、最新版 JavaとJOSM をPCにインストールしておいてください。

以下の作業を始める前に、OSM Wiki のアカウントも作成しておいてください。

以下の作業を始める前に、OSM のインポート作業専用アカウントも作成しておいてください。アカウント名の一部に import の文字列を含めて下さい。

以下の作業を始める前に、インポート作業専用OSMアカウントでJOSMにログインしておきます。

JOSMの「設定」→「表示」メニューで「タイトルバーにユーザ名を表示」にチェックを入れておくと、作業中のアカウント名が常に確認できるので便利です。

0. コミュニティへの事前告知

インポート作業を行う前に、次に列挙する方法で、OSMや関連するコミュニティに告知をしましょう。

  • MLIT PLATEAU/imports outline|OSM Wiki に作業用のアカウントを事前告知する。
  • OSM Japan Slack の #01_アナウンスと告知 チャンネルで事前にインポート作業を行う周知を行う(インポートの1週間以上前)。
  • talk-ja ML にて事前にインポート作業を行う周知を行う(インポートの1週間以上前)。
  • talk:MLIT PLATEAU/imports outline 討論履歴 を熟読し、特に 反対・懸念のご意見 について、反対される方の気持ちを汲み取った上で、OSMマッパーの心が折れないように最大限の配慮を行う方針であることを理解する。
  • できれば、 #OSMjp ハッシュタグをつけて各種SNSで情報拡散する。告知とともに協力者も募る。


PLATEAU建物 LOD1 データをOpenStreetMapへインポートするプロセス全体像

図1. PLATEAU建物 LOD1 データをOpenStreetMapへインポートするプロセス全体像


PLATEAU建物 LOD1 データをOpenStreetMapへインポートするプロセス詳細

図2. PLATEAU建物 LOD1 データをOpenStreetMapへインポートするプロセス詳細


1. 対象地域の CityGML ファイルをダウンロードする

作業対象のファイルを、G空間情報センターからダウンロードします。


3D都市モデル(Project PLATEAU)ポータルサイト

ダウンロードする際には、CityGML形式を選択します。

ファイルのダウンロードが終わったら、 zip ファイルを展開します。建物データは、展開したディレクトリの udx/bldg 配下に格納されています。


gml ファイルをテキストエディタで開き、 <uro:surveyYear>2017</uro:surveyYear> のように、測量年を確認する。


197338720-6f6e3df3-bac8-4aa3-a5e5-ad65b9654ce0


既存 OSM データが 測量年より新しくマッピングされている、もしくは 最新の衛星画像/航空写真との比較で PLATEAU データのほうが古いかの確認で必要になります。

2. 変換スクリプト citygml-osm のダウンロード

yuuhayashi / citygml-osm より変換スクリプトをダウンロードします。


コンパイルされたスクリプトが、release 配下から配布されています。

変換スクリプトのバージョンは更新されていきますが、そのときの最新版を利用することを推奨します。

ダウンロードしたファイルを展開し、citygml-osm-jar-with-dependencies.jar を、 PLATEAU の建物データ( citygml 形式, デフォルトでは udx/bldg 配下)を展開したファイルに格納します。


3. 1st-3rdまでのスクリプトを回す

ターミナル(あるいはコマンドラインや Powershell など)を起動し、citygml を展開したフォルダに移動します。


移動したら、以下のコマンドを入力します。


$ java -Dfile.encoding=utf-8 -jar citygml-osm-jar-with-dependencies.jar 1st

$ java -Dfile.encoding=utf-8 -jar citygml-osm-jar-with-dependencies.jar 2nd

$ java -Dfile.encoding=utf-8 -jar citygml-osm-jar-with-dependencies.jar 3rd

それぞれのコマンドでは、以下の処理が行われます。


1st: CityGML データを .osm 形式に変換し、 .osm 形式として保存する

2nd: それぞれの .osm ファイルのデータ範囲のデータを osm.org からダウンロードし、 .org.osm 形式として保存する

3rd: .osm と .org.osm を比較・マージすることで mrg.osm 形式のファイルを出力し、保存する

この処理により、同じ名称で拡張子の異なるファイルが4種類 ( .gml , .osm , .org.osm そして .mrg.osm ) できあがることになります。


8154E449-C5CD-4CC4-975F-B42CBE551525


なお上記のコマンドは、配布されているスクリプトに同梱されている run.sh (あるいは run.bat )をキックしても、同じ結果が得られます。


スクリプトは、同じディレクトリに格納されているすべての gml ファイルに対して実行されます。そのため、ファイル数が多いとそれなりに処理時間がかかります。必要に応じて、適宜ディレクトリを分けるなどの対応を行ってください。


4. .mrg.osm ファイルをJOSMで開く

拡張子 .mrg.osm のファイルを JOSM で読み込みます。

mrg.osm ファイルをJOSMでインポート後、背景に OSM画像レイヤを表示するとわかりやすくなります。


JOSM を使う以下の作業は、読み込まれたファイルを編集して、インポートしたくないオブジェクトを削除することが目的です。


5. todo プラグインのインストール

以下の手順で todo プラグインを使用可能にします。


JOSM のメニューを開き、プラグイン設定タブを開きます。

todo プラグインにチェックを入れ、 "OK" を押すとプラグインがインストールされます。

スクリーンショット 2022-10-31 9 54 02


インストールが終わったら、インストールを有効化するため、JOSM を再起動します。

再起動が終わったら、JOSM 画面左側のプラグイン一覧から todo プラグインを有効化します。

プラグインが有効化されると、JOSM 画面左側のペインに todo プラグインが表示されるようになります。

6. フィルタの設定

JOSM のフィルタに、以下4つのフィルタを設定します。


"MLIT_PLATEAU:fixme"=*

"MLIT_PLATEAU:fixme"="PLATEAUデータで更新されています"

"MLIT_PLATEAU:fixme"="delete 削除されます"

type:node

スクリーンショット 2022-10-31 10 35 00


合成されたファイルである .mrg.osm では、既存の OSM データと PLATEAU データが同じ領域で重なる部分があった場合、対象のオブジェクトに "MLIT_PLATEAU:fixme" タグが付与されています。この対象のオブジェクトをインポートすべきか人間が確認し、適切に処理する必要があります。


基本的に、この "MLIT_PLATEAU:fixme"=* を処理してゆくことで、アップロード可能な状態のファイルを作成することができます。

JOSM のフィルタを利用することで、対象のオブジェクトを発見しやすくしましょう。


"MLIT_PLATEAU:fixme"=*に含まれる値の解説

"MLIT_PLATEAU:fixme"=*には、以下2つのどちらかの値が格納されています。

"MLIT_PLATEAU:fixme"="PLATEAUデータで更新されています"

"MLIT_PLATEAU:fixme"="delete 削除されます"

7. .mrg.osmの編集

JOSM で .mrg.osm を編集します。


このデータの編集を行う際、「オブジェクトの移動」や「タグの変更」など、「オブジェクトの削除」以外の操作は絶対に行わないでください。

後続のupdate処理では、不要なオブジェクトが削除されているだけで、タグ内容は変更されていないことを前提として動作します。オブジェクトの内容が変更されると「動作不定」になってしまいます。

"MLIT_PLATEAU:fixme" が付与されていないデータの確認

"MLIT_PLATEAU:fixme"=* のフィルタを有効化し、タグがついていないデータ(つまり、PLATEAU データそのままのオブジェクト)だけを表示させます。


スクリーンショット 2022-10-31 10 03 59


背景画像に Bing や Maxar など、なるべく撮影年度の新しい衛星写真をセットし、明らかに現状存在しない建物オブジェクトがある場合、そのオブジェクトを削除します。このとき、 1. の手順で確認した gml データの測量年と背景画像の撮影年を比較し、常に新しいほうに合わせてオブジェクトの削除を行ってください。


"MLIT_PLATEAU:fixme"=* が付与されたデータへの対応

type:node と "MLIT_PLATEAU:fixme"="delete 削除されます" のフィルタを有効化した状態で、"MLIT_PLATEAU:fixme"="delete 削除されます" をインバース(反転)し、ショートカットキー <Ctrl + A> を押し、レイヤー内のオブジェクトを全選択します。


これにより、オブジェクトを選択する際にノードが選択されないようになります。


"MLIT_PLATEAU:fixme"="PLATEAUデータで更新されています" に関する処理

OSM の既存データから、 PLATEAU データの形状への置換が行われる予定のオブジェクトです。


目視によるチェックや修正作業を行い、アップロードしてもよい形状であることを確認します。


これらの建物形状データは、以下の特性を有しています。


建物形状: PLATEAU 側の形状を利用

タグ: 既存と PLATEAU の両方をマージしたもの(タグのマージ方針については GitHub を参照してください)

次に、レイヤーを選択し、 type:node と "MLIT_PLATEAU:fixme"=PLATEAUデータで更新されています のフィルタを有効化した状態で、ショートカットキー <Ctrl + A> を押し、レイヤー内のオブジェクトを全選択します。


タグが付与されたオブジェクトが全選択されたら、その状態で todo プラグインの + ボタンを押して、対象のオブジェクトが todo リスト内に格納され、チェックリストを作成します。


スクリーンショット 2022-10-31 10 21 36

背景画像に osm.org のタイル画像と、撮影年度の新しい衛星写真の2つを設定し、 OSM に存在する既存の建物との位置関係を確認してください。


もしオブジェクトの形状やタグに問題がなく、インポートができると判断できれば、 todo プラグインの ✔マーク ボタンを押します。

もし "MLIT_PLATEAU:fixme"="PLATEAUデータで更新されています" のタグがあるオブジェクトの位置が間違っている場合、そのオブジェクトを削除してください。削除することで、既存の OSM データが優先され、形状の更新が行われなくなります。

次の処理で使うため、 "MLIT_PLATEAU:fixme"="PLATEAUデータで更新されています" のタグは削除しないでください。


"MLIT_PLATEAU:fixme"="delete 削除されます" に関する処理

このタグが付与されたオブジェクトは、何らかの理由で削除が提案されています。


例えば、3戸の既存建物が存在する箇所が、2戸のPLATEAUオブジェクトに統合される場合、統合からあぶれた1戸が ”delete” となります。


更新されていますのオブジェクトの手順と同様、レイヤーを選択し、 type:node と "MLIT_PLATEAU:fixme"="delete 削除されます" のフィルタを有効化した状態で、ショートカットキー <Ctrl + A> を押し、レイヤー内のオブジェクトを全選択します。


タグが付与されたオブジェクトが全選択されたら、その状態で todo プラグインの + ボタンを押して、対象のオブジェクトが todo リスト内に格納され、チェックリストを作成します。


スクリーンショット 2022-10-31 10 28 22

osm.org のタイル画像や、撮影年度の新しい衛星写真と比較し、削除して問題ないことが確認できた場合は、todoプラグインの ✔マーク ボタンを押してリストから消込を行い、このタグ("MLIT_PLATEAU:fixme"="delete 削除されます")をもつオブジェクトをそのままにしてください。


この建物形状を残したい場合は、 "MLIT_PLATEAU:fixme"="delete 削除されます" のタグを削除してください。


また、すぐ近くに、置き換え対象となっている建物形状が存在することが多いはずです。フィルタのオン/オフを行ってオブジェクトを表示させ、近隣の建物形状を適宜修正してください。場合によっては、近くに存在する建物オブジェクトから残したい建物オブジェクトに対し、 name などのタグをコピーしてくることも重要です。


残したい建物オブジェクトと重複しているすべてのオブジェクトを削除することで、対象の建物形状を残すことができるようになります。


迷ったときは?

多くの場合、 PLATEAU の建物データは非常に優秀で、形状の置き換えに問題はありません。


ただし、 PLATEAU データも完璧ではありません。現在の建物の状況がどうなっているか、 PLATEAU データセットの建物形状が本当に正しいものなのかどうか、 Bing などの航空写真では判別が付きづらい場合、以下の手がかりを参考に情報を集めてください。


既存データの履歴の確認


既存データの履歴等を確認し、どのような情報をもとに形状が描かれたかを確認します。

Plateauデータは主に2016年頃に取得したデータから作成されていることが多く、それよりも後に追加された建物オブジェクトの場合は、新しく描かれた建物が正しい場合があります。特に2016年以降にsurvey情報をもとに形状が描かれた建物は信頼性が高い可能性があります。

最新の航空写真を参照する


2016年以降にOSMへ追加された建物オブジェクトであったとしても、参照している航空写真/衛星写真が2016年よりも古い写真であるケースがあります。

2016年より新しく撮影された航空写真と比較することによって、データの信憑性を確認することが可能です。

それでもどうしても判別や決断ができない


作業を一時中断し、対象のメッシュ名を付記してSlackチャンネル等で相談してください。

なお、 PLATEAU データのインポートを行った地域は、作業完了後、 Tasking Manager を使って形状などの事後確認プロセスを設ける予定です。大きな間違いの場合は、事後確認プロセスの段階でチェックすることも可能です。


8. チェックしたファイルを 名前をつけて保存

チェックが完了したファイルを、名前を付けて保存します。


JOSM のメニューから、あるいは JOSM のレイヤー一覧から、対象のレイヤーを保存します。


保存する際は、ファイル名を checked.osm としてください。


9. アップロード用ファイルへの変換(4thスクリプトを回す)

checked.osm ファイルを、アップロード用ファイルに変換します。


ターミナルから、以下のコマンドを入力します。


$ java -Dfile.encoding=utf-8 -jar citygml-osm-jar-with-dependencies.jar 4th

これにより、 checked.osm を元にした upload.osm が生成されます。


10. osm.org へのアップロード

JOSM で upload.osm を開き、 osm.org へアップロードします。


レイヤで upload.osm を開いた状態で 妥当性検証 を行います。


妥当性検証の結果として表示される警告やエラーを確認し、その上でデータのアップロードを行ってください。

例えば、縁の部分で重複するノードのエラー処理や、メンバーが存在しないリレーションなどが発生することがあります。


アップロードする際には、変更セットに対して以下のタグを付与してください。


source = MLIT_PLATEAU

source_ref = https://wiki.openstreetmap.org/wiki/MLIT_PLATEAU/imports_outline

また、変更セットのコメントとして、以下のフォーマットを推奨します。

メッシュ番号は、作業を行っているファイルの先頭8桁の数字です。


Plateau import: [対象の市町村] [メッシュ番号]

例: Plateau import: 新座市 53395404

インポート作業終了後、JOSMのログインアカウントを通常アカウントに戻すことを忘れないで下さい。

11. OSM wiki の対象リストを編集する

OSM wiki に、インポート対象となる各市町村ごとのファイル名一覧を作成しています。


https://wiki.openstreetmap.org/wiki/JA:MLIT_PLATEAU/imports_list

インポートが完了したメッシュ番号に対し、インポート済みであることを記載してください。

また、申し送り事項がある場合は、備考欄にその内容を記載してください。


12. 事後検証

12-1. Tasking Manager を用いた検証作業

インポート作業完了後、OSM Japan Slack の #01_アナウンスと告知 チャンネルで完了報告を行ったうえで、事後検証用の Tasking Manager プロジェクトを準備してください。利用可能な Tasking Manager が用意できない場合は Slack にて相談すれば、コアチーム がサポートしてくれます。


12-2. 現地チームによる現地調査

TBD


以上ですべての工程の終了です。