Skip to content

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

CityGMLのダウンロード

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

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

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

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

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

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にします.

!(image/3Dsibuya.png)

まとめ

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

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

参考サイト

PLATEAU

PLATEAU Open Data

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

G空間センター データセット

PLATEAUのCityGMLを鼻血出してQGISで表示する

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

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

3D都市データ”PLATEAU”をPythonで動かしてみよう

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

533935の地図

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

QGISで1対多の「結合」を保存する

QGIS3 GeoPackageの使い方

Djangoで地図アプリ開発をしよう【前編】