QGISで3D巨大都市(の一部)を召喚する


はじめに

皆さんはふとした瞬間に「あっ、3Dでベル・ハーバー召喚してーな」って思うことありますか?

僕はありません。

いやいや、そもそもそれなんやねんっていう声が聞こえてきますが

それっ!!!

ここ!ベルハーバー!!!

この辺らしいです。

何召喚すんの

今回はCityGMLという形式のファイルを取り扱って、このあたり一帯の建物をQGIS上に召喚していきます。

CityGMLはOCG(Open Geospatial Consortium)標準規格で3D都市モデルの標準データ形式になりますが、都合よく各国のオープンなCityGMLのデータを取り扱っているサイトがありますのでこちらから拝借してきましょう。

今回はこの中からNYのデータを選択していきます。

クリックすると以下のページに飛ぶと思いますので、CityGMLを選択してダウンロードしていきましょう。
(※zip圧縮時:約900MB、解凍後:約20GBとインパクトのあるデータなので取り扱いに注意しましょう!)

https://www1.nyc.gov/site/doitt/initiatives/3d-building.page

ダウンロードしたzipを解凍して.../DA_WISE_GML/DA_WISE_GMLs/フォルダに格納されている.gmlファイルがCityGML本体になります。

CityGMLをCityJSONに変換する

意気揚々とCityGMLをダウンロードしたはいいものの、このままではQGISで読み込めないのでCityJSONに変換していきましょう。
(詳しくはこちら

親切丁寧に公式変換ツールが用意されているので、ありがたく頂戴しましょう。

ダウンロードが終わったらツールの格納先ディレクトリに移動してツールを実行しましょう

% cd .../citygml_cesium_sample/tools/citygml-tools-1.4.1
% ./citygml-tools to-cityjson .../citygml_cesium_sample/assets/DA_WISE_GML/DA_WISE_GMLs/DA1_3D_Buildings_Merged.gml

Javaを利用したツールのようなので、インストールされていなければNo Java runtime present, requesting install.と怒られます。
そんな時は素直にJDKをインストールしましょう。

JDKのインストールが終了してプログラムを再実行すると、gmlと同ディレクトリに同名JSONが生成されます。

変換後のファイルサイズを見てみると約1/5まで圧縮されてだいぶ取り扱いやすくなりました。

  • 変換前:250MB
  • 変換後:50MB

QGISでCityJSONを召喚

ここまできたらあとはチョチョイのジョイやで。

偉大な先人がプラグインを作成なされておりますのでCityJSON Loaderを検索してをインストールしましょう。

インストール後、CityJSONのアイコンをクリックしてプラグインを起動します。
(ベクタ→CityJSON Loaderでも良い)

CityJSONを選択し、OKをクリックします。
(CRSとかは自動で読み込まれるはずなのでそのままで良いと思います。)

この段階で建物データがポリゴンとしてレイヤに読み込まれていると思いますが、物足りないですね。

そうです。3Dです。

「ビュー→新しい3Dマップビューを選択」を選択して華麗に3次元表示していきましょう。

できた。すげぇ。

アメリカ全土のデータがあるっぽいので次は自由の女神とか召喚したい。