Open Yosi0530 opened 1 year ago
以下の作業を始める前に、PLATEAUインポート作業専用OSMアカウントでJOSMにログインしておきましょう。
インポート作業を行う前に、次に列挙する方法で、OSMや関連するコミュニティに告知をしましょう。
MLIT PLATEAU/imports outline|OSM Wiki に作業用のアカウントを事前告知する。 作業ログ用の Issue を yuuhayashi/citygml-osm Issues|GitHub に作成する。 OSM Japan Slack の #01_アナウンスと告知 チャンネルでインポート前に事前に作業を行う周知を行う。 OSM Japan Slack の #30_プログラムとデータ利用 チャンネルでインポート前に事前に作業を行う周知を行う。 Facebook Japan Community でインポート前に事前に作業を行う周知を行う。 OSM Japan Slack の #01_アナウンスと告知 チャンネルでインポート前に事前に作業を行う周知を行う。 talk-ja ML に事前に作業を行う周知を行う。 talk:MLIT PLATEAU/imports outline 討論履歴 を熟読し、特に 反対・懸念のご意見 について、反対される方の気持ちを汲み取った上で、OSMマッパーの心が折れないように最大限の配慮を行う方針であることを理解する。 できれば、 #OSMjp ハッシュタグをつけて各種SNSで情報拡散する。告知とともに協力者も募る。
図2. PLATEAU建物 LOD1 データをOpenStreetMapへインポートするプロセス詳細
OSMにはAPIが豊富に揃っているためOSMでインポートするのが早い
作業対象のファイルを、G空間情報センターからダウンロードします。
ファイルのダウンロードが終わったら、 zip ファイルを展開します。建物データは、展開したディレクトリの udx/bldg
配下に格納されています。
gml
ファイルをテキストエディタで開き、 <uro:surveyYear>2017</uro:surveyYear>
のように、測量年を確認する。
yuuhayashi / citygml-osm より変換スクリプトをダウンロードします。
ダウンロードしたファイルを展開し、citygml-osm-jar-with-dependencies.jar
を、 PLATEAU の建物データ( citygml
形式, デフォルトでは udx/bldg
配下)を展開したファイルに格納します。
ターミナル(あるいはコマンドラインや 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
それぞれのコマンドでは、以下の処理が行われます。
.osm
形式に変換し、 .osm
形式として保存する.osm
ファイルのデータ範囲のデータを osm.org
からダウンロードし、 .org.osm
形式として保存する.osm
と .org.osm
を比較・マージすることで mrg.osm
形式のファイルを出力し、保存する
この処理により、同じ名称で拡張子の異なるファイルが4種類 ( .gml
, .osm
, .org.osm
そして .mrg.osm
) できあがることになります。
.mrg.osm
ファイルをJOSMで開く拡張子 .mrg.osm
のファイルを JOSM で読み込みます。
mrg.osm
ファイルをJOSMでインポート後、背景に OSM画像レイヤを表示するとわかりやすくなります。
JOSM を使う以下の作業は、読み込まれたファイルを編集して、インポートしたくないオブジェクトを削除することが目的です。
以下の手順で todo プラグインを使用可能にします。
アップロード、保存は外す
JOSM のフィルタに、以下4つのフィルタを設定します。
"MLIT_PLATEAU:fixme"=*
(OSMになくてPLATEAUにのみあるデータ)"MLIT_PLATEAU:fixme"="PLATEAUデータで更新されています"
(OSMにもPLATEAUにもあるデータ)"MLIT_PLATEAU:fixme"="delete 削除されます"
type:node
"MLIT_PLATEAU:fixme"="PLATEAUデータで更新されています"
をInverseすると、OSMにはなく、PLATEAUのみにある建物データになる
合成されたファイルである .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 削除されます"
JOSM で .mrg.osm
を編集します。
このデータの編集を行う際、「オブジェクトの移動」や「タグの変更」など、「オブジェクトの削除」以外の操作は絶対に行わないでください。
update
処理では、不要なオブジェクトが削除されているだけで、タグ内容は変更されていないことを前提として動作します。オブジェクトの内容が変更されると「動作不定」になってしまいます。
"MLIT_PLATEAU:fixme"
が付与されていないデータの確認
"MLIT_PLATEAU:fixme"=*
のフィルタを有効化し、タグがついていないデータ(つまり、PLATEAU データそのままのオブジェクト)だけを表示させます。
背景画像に Bing や Maxar など、なるべく撮影年度の新しい衛星写真をセットし、明らかに現状存在しない建物オブジェクトがある場合、そのオブジェクトを削除します。このとき、 1. の手順で確認した gml データの測量年と背景画像の撮影年を比較し、常に新しいほうに合わせてオブジェクトの削除を行ってください。
"MLIT_PLATEAU:fixme"=*
が付与されたデータへの対応type:node
と "MLIT_PLATEAU:fixme"="delete 削除されます"
のフィルタを有効化した状態で、"MLIT_PLATEAU:fixme"="delete 削除されます"
をインバース(反転)し、ショートカットキー <Ctrl + A> を押し、レイヤー内のオブジェクトを全選択します。
これにより、オブジェクトを選択する際にノードが選択されないようになります。
"MLIT_PLATEAU:fixme"="PLATEAUデータで更新されています"
に関する処理
osm.org
のタイル画像と、撮影年度の新しい衛星写真の2つを設定し、 OSM に存在する既存の建物との位置関係を確認してください。"MLIT_PLATEAU:fixme"="PLATEAUデータで更新されています"
のタグがあるオブジェクトの位置が間違っている場合、そのオブジェクトを削除してください。削除することで、既存の OSM データが優先され、形状の更新が行われなくなります。
"MLIT_PLATEAU:fixme"="delete 削除されます"
に関する処理
このタグが付与されたオブジェクトは、何らかの理由で削除が提案されています。
例えば、3戸の既存建物が存在する箇所が、2戸のPLATEAUオブジェクトに統合される場合、統合からあぶれた1戸が ”delete” となります。
type:node
と "MLIT_PLATEAU:fixme"="delete 削除されます"
のフィルタを有効化した状態で、ショートカットキー <Ctrl + A> を押し、レイヤー内のオブジェクトを全選択します。osm.org
のタイル画像や、撮影年度の新しい衛星写真と比較し、削除して問題ないことが確認できた場合は、todoプラグインの ✔マーク ボタンを押してリストから消込を行い、このタグ("MLIT_PLATEAU:fixme"="delete 削除されます"
)をもつオブジェクトをそのままにしてください。
この建物形状を残したい場合は、 "MLIT_PLATEAU:fixme"="delete 削除されます"
のタグを削除してください。
また、すぐ近くに、置き換え対象となっている建物形状が存在することが多いはずです。フィルタのオン/オフを行ってオブジェクトを表示させ、近隣の建物形状を適宜修正してください。場合によっては、近くに存在する建物オブジェクトから残したい建物オブジェクトに対し、 name
などのタグをコピーしてくることも重要です。
残したい建物オブジェクトと重複しているすべてのオブジェクトを削除することで、対象の建物形状を残すことができるようになります。
迷ったときは? 多くの場合、 PLATEAU の建物データは非常に優秀で、形状の置き換えに問題はありません。
ただし、 PLATEAU データも完璧ではありません。現在の建物の状況がどうなっているか、 PLATEAU データセットの建物形状が本当に正しいものなのかどうか、 Bing などの航空写真では判別が付きづらい場合、以下の手がかりを参考に情報を集めてください。
既存データの履歴の確認
最新の航空写真を参照する
それでもどうしても判別や決断ができない
なお、 PLATEAU データのインポートを行った地域は、作業完了後、 Tasking Manager を使って形状などの事後確認プロセスを設ける予定です。大きな間違いの場合は、事後確認プロセスの段階でチェックすることも可能です。
チェックが完了したファイルを、名前を付けて保存します。
JOSM のメニューから、あるいは JOSM のレイヤー一覧から、対象のレイヤーを保存します。
保存する際は、ファイル名を checked.osm
としてください。
checked.osm
ファイルを、アップロード用ファイルに変換します。
ターミナルから、以下のコマンドを入力します。
$ java -Dfile.encoding=utf-8 -jar citygml-osm-jar-with-dependencies.jar 4th
これにより、 checked.osm
を元にした upload.osm
が生成されます。
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
OSM wiki に、インポート対象となる各市町村ごとのファイル名一覧を作成しています。
12-1. Tasking Manager を用いた検証作業 インポート作業完了後、OSM Japan Slack の #01_アナウンスと告知 チャンネルで完了報告を行ったうえで、事後検証用の Tasking Manager プロジェクトを準備してください。利用可能な Tasking Manager が用意できない場合は Slack にて相談すれば、コアチーム がサポートしてくれます。
12-2. 現地チームによる現地調査 TBD
以上ですべての工程の終了です。
PLATEAU to OSM インポート(東村山)
参考:https://qiita.com/nyampire/items/1c10afdd36750c87154d