TOPIC 20|QGISプラグインを使って3D都市モデルを可視化する[2/2]|CityGML形式ファイルのインポート
このトピックでは、オープンソースのデスクトップGISである「QGIS」を使って、PLATEAUの3D都市モデルを可視化します。ここからは「PLATEAU QGIS Plugin」を用いて、必要な詳細度(LOD)だけをインポートしたり、地物を別々のレイヤに分けたりするなど、扱いやすい形式でQGISに取り込む方法を解説します。
このトピックでは、オープンソースのデスクトップGISである「QGIS」を使って、PLATEAUの3D都市モデルを可視化します。ここからは「PLATEAU QGIS Plugin」を用いて、必要な詳細度(LOD)だけをインポートしたり、地物を別々のレイヤに分けたりするなど、扱いやすい形式でQGISに取り込む方法を解説します。
【目次】
20.6.1 Qgis2threejsプラグインのインストール
20.4 _ CityGML形式ファイルのインポート
PLATEAU QGIS Pluginの準備ができたら、CityGML形式ファイルをインポートしていきます。
20.4.1 _ CityGML形式ファイルの準備
まずは、CityGML形式ファイルを準備します。ここでは、下記の愛知県津島市のデータセットを使います。この都市は、第1.0版の[CityGML]と、第2.0版の[CityGML(V2)]の両方が提供されています。第2.0版の[CityGML(V2)]をダウンロードしてください(図20-9)。
ダウンロードしたファイルは、ZIP形式です。適当なフォルダに展開してください(図20-10)。展開したフォルダの構成は変更しないでください。変更してしまうと、付随する属性情報を読み取れないことがあります。
【愛知県津島市のデータセット】
https://www.geospatial.jp/ckan/dataset/plateau-23208-tsushima-shi-2020
20.4.2 _ CityGMLのインポート
対象のCityGML形式ファイルを準備ができたら、次の手順でインポートします。
【手順】CityGMLのインポート
[1]PLATEAU QGIS Pluginを起動する
[プロセシング]メニューから[ツールボックス]を開きます。[Project PLATEAU]の配下の[PLATEAU 3D都市モデルを読み込む]をダブルクリックして、PLATEAU QGIS Pluginを起動します(図20-11)。
コラム:メッシュとして読み込む
このトピックでは扱いませんが、PLATEAU QGIS Pluginには、「PLATEAU地形モデルをメッシュとして読み込む」という機能もあります。
この機能は、地形モデル(DEM)をメッシュレイヤとして読み込むための機能です。[PLATEAU 3D都市モデルを読み込む]でも地形モデルを読み込むことはできますが、データが重く、描画などに時間がかかるため、[PLATEAU地形モデルをメッシュとして読み込む]を選んでインポートすることを推奨します。詳しい使い方は、利用マニュアルを参照してください(https://github.com/Project-PLATEAU/plateau-qgis-plugin/blob/main/docs/manual.md)。
[2]対象ファイルとオプションを選ぶ
インポートのウィンドウが表示されたら、次の項目を設定します。
(1)PLATEAU CityGMLファイル
対象のCityGMLファイルを選択します。どのファイルでもよいのですが、今回は建築物のファイルを例に説明します。展開したフォルダに含まれるudx/bldg/52366519_bldg_6697_op.gmlを選択してください。
(2)読み込むLOD
(1)で選択したファイルに含まれるLODのうち、どれを読み込むかを選択します。LODとは詳細度のことです。値が大きいほど、より詳細なデータが含まれる一方、データサイズは大きくなるので、データ利用の目的に応じて、適切なものを選びます。
次の選択肢があります。ここでは例として、[全てのLODを読み込む]を選択します。
【メモ】
[全てのLODを読み込む]を指定すると、処理に時間がかかります。軽量に扱いたい場合は、[最も単純なLODのみを読み込む]を選択するとよいでしょう。建築物モデルにおいて、この選択肢を選んだ場合、建築物の形状を立方体として表現し、屋根や窓などを再現しないLOD1が読み込まれます。LODについての詳細は、「TOPIC3 3D都市モデルデータの基本[3/4]|LODレベルによる表現の違い」で説明しています。データ利用の目的に応じて必要なLODを確認してください。
・最も単純なLODのみを読み込む(デフォルト)
LODの値が最も小さいもの(例えばLOD1)を読み込みます。
・最も詳細なLODのみを読み込む
LODの値が最も大きいもの(例えばLOD2やLOD3)を読み込みます。
・全てのLODを読み込む
すべてのLODを読み込みます。それぞれのLODは、別のレイヤとして読み込まれます。
(3)追加のオプション
その配下のオプションとして、表20-2に示す項目があります。今回は、すべてデフォルトのままとします。
項目 | 意味 |
---|---|
地物を構成する部分ごとのレイヤを分ける | LOD2以上のモデルにおいて、壁や屋根、車道や歩道など、意味別に分けて、地物を読み込みます。有効にすると、生成される地物の数が大幅に増える可能性があります |
3次元データを強制的に2次元化する | 高さを持つモデルでも、高さを捨てて平面データとして読み込みます(都市計画決定情報など、もともと高さを持たないモデルは、このオプション設定に関わらず、平面として読み込まれます) |
既存の同名レイヤに追加する | 同名のレイヤがある場合、追加します。デフォルトではチェックが付いています |
(4)変換先CRS
読み込むファイルの変換先のCRSを指定します。デフォルトは「EPSG:6668(JDG2011)」です。今回は、このデフォルトのままにします。
【メモ】
CRSについては「TOPIC3 3D都市モデルデータの基本[4/4]|CityGMLの座標・高さとデータ変換」を参照してください。
上記の(1)~(4)の項目を設定したら、[実行]ボタンをクリックして、インポートを実行します。実行が終わったら、[閉じる]をクリックしてインポートのウィンドウを閉じてください。
コラム:バッチプロセスによる複数ファイルの一括読み込み
複数のファイルをまとめて取り込みたいときは、ウィンドウ下部の[バッチプロセスで実行]をクリックします。すると、ファイルを複数選択して、まとめて取り込めます。この操作の詳細は、「TOPIC21 QGISを用いた災害リスク情報の可視化と分析」で解説します。
20.4.3 _ 生成されたレイヤを確認する
インポートが完了すると、「Building(LoD1)」「Building(LoD2)」……のように、レイヤが生成されます。
この例の場合、[レイヤ]の部分を見るとわかるように、5つのレイヤが生成されています。生成されるレイヤは、「地物レイヤ」と「災害リスクの属性レイヤ」の2種類に分かれます。
①地物レイヤ
[Building(LoD1)]や[Building(LoD2)]のレイヤです。ひとつしかレイヤを読み込んでいない場合([最も単純なLODのみを読み込む]もしくは[最も詳細なLODのみを読み込む]を選んだ場合)は、[Building]というひとつのレイヤしか生成されません。
ここには、インポートした地物が配置されています。
②災害リスクの属性レイヤ
[Building / TsunamiRisk]や[Building / RiverFloodingRisk]は、災害リスク情報が設定されているレイヤです。地物に対して、災害リスクの属性が設定されているときに限って生成されます。名称は、CityGMLの属性として含まれる「説明文(description)」と「規模(scale)」に基づくものであるため、読み込んだCityGML形式ファイルによって異なります。災害リスク情報を持たない場合、これらのレイヤは生成されません。
災害リスクの属性レイヤには、浸水の高さや土砂災害の範囲などが含まれています。これらの属性の扱い方については、「TOPIC21 QGISを用いた災害リスク情報の可視化と分析」で解説します。
【メモ】
もし災害リスクの属性レイヤが出力されないときは、第2.0版のファイル(CityGML V2)を用いたかを再確認してください。第1.0版のファイルを読み込んだ場合は、出力されません。
20.4.4 _ 地図を重ねて表示する
さて、地物だけを表示しても、地図上の位置がわかりにくいので、地図を重ねて表示します。
いくつかの方法がありますが、ここでは簡易な方法として、[ブラウザ]ウィンドウの[XYZ Tiles]から[OpenStreetMap]をダブルクリックします。すると、地図のレイヤとして追加されます。ドラッグ&ドロップして、一番下に移動すれば、地図と地物を重ねて表示できます。
【メモ】
OpenStreetMapは、誰もが自由に編集できる世界地図を作る共同作業プロジェクトです(https://openstreetmap.jp/)。
【メモ】
QGISでは、OpenStreetMap以外の地図――例えば、地理院地図など――を表示することもできます。より詳しくは、「TOPIC5 GISで活用する」を参照してください。
20.5 _ 属性の確認とスタイリング
PLATEAUの3D都市モデルには、建築物の用途や高さなどの属性が含まれています。こうした属性を確認してみましょう。
20.5.1 _ 属性を確認する
レイヤ上の地物に関する属性は、「属性テーブル」で確認できます。
属性テーブルは、レイヤを右クリックし、[属性テーブルを開く]メニューから開くことができます。ここでは、[Building(LoD1)]レイヤの属性テーブルを開いてみます。
すると図20-16のように、さまざまな地物の属性が表示されます。主な属性の意味を表 20-3に示します。
【メモ】
属性は、PLATEAUの「3D都市モデル標準製品仕様書」にて定められています。すべての属性の意味については、こちらの仕様を参照してください。
【メモ】
属性テーブル上で行をクリックして選択すると、レイヤ上の該当の地物が選択状態になって色が変わるため、対象物を地図上で確認できます。また図20-16の左下で[すべての地物を表示]ではなく[選択した地物を表示]に切り替えると、地図上で選択した地物の属性だけが表示されるようになり、地図上で対象物を選択して、その属性を調べやすくなります。
項目 | 意味 |
---|---|
id | 建築物ごとに付与されているユニークなID |
usage | 建築物の主な用途 |
measuredHeight | 計測により取得した、建築物の地上の最低点から最高点までの高さ |
buildingFootprintArea | 建築物の壁や柱の中心線で囲まれた部分の水平投影面積。単位はuom属性で指定されており、PLATEAUの3D都市モデルでは、uom=m2(平方メートル)に固定 |
20.5.2 _ 属性に応じてスタイリングする
QGISでは、こうした属性に応じて、地物の色を変えるなどのスタイリングの設定ができます。
ここでは例として、建築物の主な用途を示す「usage」の属性値に基づき、色を変えてみます。
【メモ】
「主な用途」とは、都市計画基礎調査実施要領(国土交通省都市局)による区分です。「住宅」「商業施設」などの区分があります。取り得る値は、https://www.geospatial.jp/iur/codelists/3.0/Building_usage.xmlのスキーマで定義されています。
【手順】属性に応じてスタイリングする
[1]レイヤのプロパティを開く
[Building(LoD1)]を右クリックして[プロパティ]を選択し、レイヤのプロパティを開きます。
[2]シンポロジを変更する
[シンポロジ]タブをクリックして選択します。
一番上のドロップダウンリストを[カテゴリ値による定義(categorized)]に変更します。そして[値(Value)]に[usage]を選択して[分類]ボタンをクリックします。
すると、usage属性に設定されている値が読み込まれ、取り得る値それぞれについて、別の色が自動で割り当てられます。[OK]ボタンをクリックして、この変更を適用します。
【メモ】
必要であれば、それぞれの項目で色が表示されている部分をクリックすると、色を変更できます。
すると、建築物の用途ごとに色分けして表示されます。
【メモ】
ここでは用途ごとに色分けしましたが、値の大小で色づけすることもできます。例えば[連続値による定義]を選べば、建築物の高さが高いものほど色を表示することもできます。
20.6 _ 3Dで表示する
QGISでは、読み込んだ3D都市モデルを3D表示することもできます。3D表示するには、Qgis2threejsプラグインを使います。
20.6.1 _ Qgis2threejsプラグインのインストール
次の手順で、Qgis2threejsプラグインをインストールします。
【手順】Qgis2threejsプラグインをインストールする
[1]プラグインの管理とインストールを開く
[プラグイン]メニューから[プラグインの管理とインストール]を選択します。
[2]Qgis2threejsプラグインをインストールする
[未インストール]タブをクリックします。画面上の検索ボックスに「qgis2threejs」と入力して検索します。[Qgis2threejs]が見つかったら、それをクリックし、[インストール]ボタンをクリックしてインストールします。
インストールが終わったら、[閉じる]をクリックして、ウィンドウを閉じてください。
インストールが完了すると、ツールバーに、[Qgis2threejs Explorer]のアイコンが追加されます。
20.6.2 _ 3D表示する
Qgis2threejsを使って3D表示するには、次のようにします。
【手順】3D表示する
[1]座標参照系を投影座標系に変換する
Qgis2threejsで表示できるのは、投影座標系のレイヤのみです。そこで、あらかじめプロジェクトの設定で、投影座標系に変更します。ここでは、「EPSG:3857」(Webメルカトル)に変更します。
【メモ】
「EPSG:3857」はGoogleマップなどで使われている座標系です。
座標参照系を変更するには、QGISのメニューから[プロジェクト]―[プロパティ]を選択して、プロジェクトのプロパティを開きます。
[座標参照系(CRS)]タブをクリックして開き、「EPSG:3857」を検索します。見つかったら、「WGS84 / Pseudo-Mercator」をクリックして選択し、[OK]をクリックします。
[2]Qgis2Threejsを起動する
ツールバーの[Qgis2threejs Explorer]のアイコンをクリックして起動します(前掲の図20-22を参照)。
[3]表示オプションを設定する
Qgis2threejs Explorerのウィンドウが開いたら、次のように設定します。すると地物が3Dで表示されます。
・[DFM]―[Flat Plane]にチェック
・[Polygon]―[LOD1]にチェック
コラム:LOD1とLOD2の形状の違い
図20-25において、[Polygon]の部分で[LOD2]にチェックを付ければ、LOD2のデータが表示されます。参考までに、LOD1とLOD2の場合の違いを、図20-26に示します。LOD1は平面を積み上げただけですが、LOD2では、屋根形状などが細かく表現されています。
20.7 _ GeoPackageとして保存する
PLATEAU QGIS Pluginで読み込んだデータは、一時スクラッチレイヤとして作成されています。一時スクラッチレイヤは、メモリレイヤです。ディスク上には保存されていないため、QGISを終了すると破棄されます。データを保存したいときは、GeoPackageファイルなどに変換して保存する必要があります。
GeoPackageは、オープンでプラットフォームに依存しないGISシステム用の標準的なデータフォーマットです。QGISのバージョン3以降では、このフォーマットが標準となりました。一般的なGISデータとしてはShapefile(シェープファイル)が有名ですが、「ファイルサイズが2GBに制限されている」「属性名は10バイトまで(日本語は5文字まで)」「単一ファイルではなく複数のファイルで構成されている」など、扱いやすいデータフォーマットではありません。GeoPackageにすれば、こうした制約が解消されます。ひとつのGeoPackageファイルに複数のレイヤを格納することもできますし、Esri社のArcGISでもGeoPackageのインポートがサポートされるなど、汎用性も高いフォーマットです。
GeoPackageとしてエクスポートするには、レイヤを右クリックして、[エクスポート]―[新規ファイルに地物を保存]を選択します。
形式として[GeoPackage]を選択してファイル名を入力すれば、エクスポートできます。エクスポートしたデータは、QGISにドラッグ&ドロップすれば開くことができます。
【文】
久納敏矢(株式会社MIERUNE)、大澤文孝