PlateauのCityGMLをArcGISで表示する


Plateauとは

国土交通省がPlateauと称して、日本の各都市の建物等の3DデータをCityGMLという形式で整備、オープンデータ化しています。
2020年12月のPlateauのサイトが公開された当初は、3Dデータをブラウザ上で表示するのみでしたが、2021年3月26日からCityGML形式のデータをダウンロードが可能になっています。

データのダウンロードは
https://www.geospatial.jp/ckan/dataset/plateau
CityGML形式以外に、一部都市ではFBX形式、OBJ形式、3D Tiles形式でのダウンロードも可能です。
東京23区から始まり、2021年6月18日時点で29都市分が公開されています。今後も増える予定のようです。

CityGML形式のデータの変換

CityGMLは馴染みのないファイル形式であるため、利用時には使用目的に応じた変換が必要になります。オープンデータ化後、いろいろな変換が試みられています。

国交省

まず、国交省は、公式のマニュアル「3D都市モデルのデータ変換マニュアル」 でFME Desktop(位置情報データ変換の世界標準ソフト)によるFBX/OBJ/Datasmith/IFC形式への変換変換を解説しています。

「変換を行うワークスペースのサンプル」 https://github.com/Project-PLATEAU/Data-Conversion-Manual-for-3D-City-Model

その他、以下のような変換のノウハウが共有されています。

QGISへ:

Pythonへ:

plateaupyによるOpen3D TriangleMesh/Blender Object への変換

Unityへ:

Blenderへ:

CityGML形式からの変換ではなく、一部都市については公式に提供されている、FBX形式からの変換。

WebGL / Mapboxへ:

最後のはCityGML形式からの変換ではなく、一部都市については公式に提供されている、3D Tiles形式からの変換。

ArcGIS Proへ

見渡したところ、ArcGISに取り込んだという記事がなかったのですが、Esriが公開している変換ツールを使用することで、CityGMLからファイルジオデータベース形式に変換できます。国土交通省都市局、国際航業株式会社、ESRIジャパン株式会社が共同で作成・開発したものだそうです。

マニュアルも公開されていますので、詳細はそれに従えば、ArcGIS Pro上で変換できます。ただし、動作環境について、

本ツールを実行するには、バージョン 2.6 以上のArcGIS Pro とData Interoperability エクステンション をインストールし、ライセンスを有効化している必要があります。

Data Interoperabilityは、データ接続・変換のエクステンションです。Data Interoperability のライセンスが利用可能か確認してください。

本ツールを使って変換するまでには、大まかに次のステップが必要です。操作方法の詳細は3D 都市モデルデータ変換ツール for ArcGIS 操作マニュアル をご参照ください。

  • 3D 都市モデルデータ変換ツール for ArcGIS をダウンロードします。
  • ダウンロードしたZIP ファイルを、任意の場所に解凍します。
  • ArcGIS Pro を起動し、フォルダー接続の追加 で、解凍したフォルダを指定します。
  • G空間情報センターから、必要な3D都市モデル(CityGML)のデータをダウンロードし、解凍しておきます。
  • 操作マニュアルの「2.4 3D都市モデルデータ変換ツールの実行方法」を参照しながら、それぞれの地物を変換します。
  • 必要に応じて、拡張属性にコード値ドメインの割り当てするスクリプトツールや、汎用属性セットをフィールドに展開するスクリプトツールを実行します。

ちゃんと時間を測っておけばよかったのですが、建物の変換にはそれなりに時間がかかります。
属性データもうまく取り込めているようです。

おまけ

Esri社が東京23区のLOD2の建物をCityGMLからWebシーンレイヤーに変換して公開していました。
https://www.arcgis.com/home/item.html?id=9d1a43732ea54e27998a567a70aafc20
CityGML形式からファイルジオデータベースに変換したものを、ArcGIS Pro のツールを使用してArcGIS Online 上に Web サービスとして公開したものだと思います。
以下の記事では、それをUnityの3Dオブジェクトとして地図上に表示する過程が解説されています。