PLATEAUのCityGMLの3D表現を実施します

PLATEAUのCityGMLの3D表現を実施します。

# CityGMLのダウンロード

下記のサイトでCityGMLのダウンロードを実行します.

3D都市モデル(Project PLATEAU)東京都23区(CityGML 2020年度) (opens new window)

今回は,渋谷駅周辺(3次メッシュコード「53393596・53393586」)の投影をしてみたいので,2次メッシュコード「533935」のCityGMLをダウンロードします.

533935の地図 (opens new window)でメッシュコードを確認しています.

ダウンロードしたファイルは東京23区における3D都市モデルのための拡張製品仕様 (opens new window)より,下記のような種類があり,各ファイルで圧縮されています.

bldg 建築物、建築物部分、建築物付属物、及びこれらの境界面 
tran 道路、通路
luse 土地利用
urf 都市計画区域、区域区分、地域地区
dem 地形(起伏)
fld 洪水浸水想定区域
tnm 津波浸水想定 
lsld 土砂災害警戒区域 
brid 橋梁
frn 設置物

今回は建築物を投影したいので,「bldg.7z」を解凍します.

中に入っているファイルは,3次メッシュコード(53393596 ex)で整理されているGMLファイルです.

例:53393586_bldg_6697_op2.gml(3次メッシュコード_GMLの種類_日本測地系22011のCRSコード_op2.gml)

また、appearanceフォルダには建物のテクスチャ(表面画像)が入っています.

# QGISの投影

# GMLの投影バグ

53393586_bldg_6697_op2.gmlをQGISにドラッグすると,「座標」の表記がXY逆になっていることがわかります.

本来,X=緯度・Y=経度となるはずが,X=35.63664,Y=139.70695となって逆になっています.

# GMLの投影の修正

その前に生のGMLだといろいろエラーが出ると怖いので、一旦 .gpkg(GeoPackage形式)にして座標のXY入れ替えをします.

SHPに変換もできなくもないのですが日本語の属性フィールド名ですとSHPがエラーを吐くので、*.gpkgとかのほうがおすすめです.

「座標のXY入れ替え」は,「プロセッシングメニュー/プロセッシングツールボックス/ベクタジオメトリ/座標のXY入れ替え」を使用します.

*.gpkgで保存したレイヤーを入力レイヤに選択したら,出力レイヤを入力します.ここではとりあえず,「一時レイヤを作成」でします.

# 3Dの投影

QGISの投影法(右下端)をEPSG:6677(JGD2011 平面直角ⅠX系)などのメートル単位の投影法に変更します.

そして,QGIS2Threejsプラグインなどを使って,建物高さを"measuredHeight"にして3Dにします.

# まとめ

ここまでで,CityGMLの3D表現を実施しました.

次は,Pythonで自動化もしていきます.

# 参考サイト

PLATEAU (opens new window)

PLATEAU Open Data (opens new window)

3D都市モデル(Project PLATEAU)東京都23区(CityGML 2020年度) (opens new window)

G空間センター データセット (opens new window)

PLATEAUのCityGMLを鼻血出してQGISで表示する (opens new window)

QGISでProject PLATEAUのCityGMLの緯度経度が入れ替わる問題を修正した件 (opens new window)

3D都市モデル(Project PLATEAU)ポータルサイト(全国版) (opens new window)

3D都市データ”PLATEAU”をPythonで動かしてみよう (opens new window)

Pythonでシェープファイルから都道府県境界図を作成する (opens new window)

533935の地図 (opens new window)

1次メッシュ 2次メッシュ 3次メッシュ (基準地域メッシュ) (opens new window)

QGISで1対多の「結合」を保存する (opens new window)

QGIS3 GeoPackageの使い方 (opens new window)

Djangoで地図アプリ開発をしよう【前編】 (opens new window)

Pythonでファイル・ディレクトリを確認する

Pythonでファイル・ディレクトリを確認する

Pythonでファイル・ディレクトリを確認します.

Python(psycopg2) + PostgreSQLで特定の地物と重なる地物を抽出する(MULTIPOLYGON)

Python(psycopg2) + PostgreSQLで特定の地物と重なる地物を抽出する(MULTIPOLYGON)

Python(psycopg2) + PostgreSQLで特定の地物と重なる地物を抽出します(MULTIPOLYGON)