TOPIC 4|CityGMLから各種データ形式へのコンバート[1/2]|FME Formの機能と基本的な使い方
PLATEAUが提供する3D都市モデルは、CityGML形式のファイルフォーマットを採用しています。このデータをアプリケーションで使いやすい形式にコンバートして利用する方法を説明します。
TOPIC 4:CityGMLから各種データ形式へのコンバート
PLATEAUが提供する3D都市モデルは、CityGML形式のファイルフォーマットを採用しています。このデータを、アプリケーションで使いやすい形式に変換して利用します。
一部の3D都市モデル地域では、CityGML形式に加え、FBX形式やOBJ形式が提供されていますが、配布されているものを、そのまま利用するのが最適とは限りません。データを小さくするために、もっと狭い地域に限って書き出したり、一部の建築物だけを取り出したりしたい場面もあるからです。
このトピックでは、CityGML形式のデータをコンバートする方法を説明します。
【目次】
4.1 FME Form
4.1.1 FME Formの機能
4.1.2 ライセンスとダウンロード、インストール
4.2 基本的な使い方
4.2.1 PLATEAUが提供するドキュメントとサンプル
4.2.2 FBXに変換する例
4.2.3 その他の形式への変換
4.1 _ FME Form
CityGML形式のデータを加工するときに、よく使われるのが、Safe Software社の「FME Form」(旧 FME Desktop)というソフトウェアです。PLATEAUでも、このソフトウェアを使ったデータ変換のドキュメントやサンプル(4.2参照)を提供しています。
4.1.1 _ FME Formの機能
FME Formは、データの変換や統合などの処理機能を持つソフトウェアです。XML、GIS、CADなどで使われる、さまざまな空間データのフォーマットに対応しており、GIS業界や建築業界などで、幅広く使われています。
PythonやR言語を使ってプログラミングすることもできますが、さまざまな入力、変換、出力を担うオブジェクト(モジュール)が提供されており、それらの処理をつなぎ合わせるだけで、簡単にデータ変換処理を記述できます。FME Formで作成する処理をつないだ一連の流れのことを「ワークベンチ(Workbench)」と言います。
4.1.2 _ ライセンスとダウンロード、インストール
FME Formは、商用のソフトウェアです。業務目的で利用するには、ライセンスの購入が必要です。新規ライセンスの購入については、Pacific Spatial Solutions 株式会社(Safe Software の公式パートナー)にお問い合わせください。
製品ライセンスの購入を決定する前に評価版ライセンス(無償)を発行できます。
評価版ライセンスによる試用をご希望の方は、次のウェブページに記載の要領でPacific Spatial Solutions株式会社にお申し込みください。
Q&A FMEの無償(フリー)ライセンス
コラム:日本語化
FME Formのインストール直後は、英語版ですが、日本語言語パックをインストールすることで、日本語化できます。
【日本語言語パック】
https://fmesupport.com/fme-desktop-japanese-lang-pack/
4.2 _ 基本的な使い方
PLATEAUでは、このFME Formを使ってCityGMLから各種データ形式に変換するためのドキュメントやサンプルプログラムを提供しています。
まずは提供されているサンプルを使って、基本的な変換をする手順を説明します。
4.2.1 _ PLATEAUが提供するドキュメントとサンプル
PLATEAUは以下のドキュメントで、FME Formを使ったデータ変換に関する情報を提供しています。
【3D都市モデルのデータ変換マニュアル】
https://www.mlit.go.jp/plateau/file/libraries/doc/plateau_doc_0007_ver01.pdf
また、下記のGitHubで、データ変換のサンプルを提供しています。4.2.2以降の手順で使うため、ダウンロードしてください。
サンプルは、Sample Workspaceフォルダに格納されており、表4-1のとおりです。(2022年10月時点)
【3D都市モデルのデータ変換マニュアル】
https://github.com/Project-PLATEAU/Data-Conversion-Manual-for-3D-City-Model
サンプルファイル | 解説 |
---|---|
csmapreprojector.fmwt | 座標系の変換をするだけの簡単なサンプル |
local_coordinate_system.fmwt | ローカル座標を使う簡単なサンプル |
citygml2fbx.fmwt | FBX形式に変換するサンプル |
citygml2obj.fmwt | OBJ形式に変換するサンプル |
citygml2datasmith.fmwt | Datasmith形式(Unreal Engineがサポートしているファイル形式)に変換するサンプル |
citygml2ifc.fmwt | IFC形式(建築業界で使われている標準的なデータフォーマット。各種CADソフトで読み込める)に変換するサンプル |
citygml2ifc_meta.fmwt | 上記にメタデータを付与するサンプル |
search_envelope.fmwt | 経緯度で囲んだエリアの地物だけを取り出すサンプル |
trim_dem_surface.fmwt | 3Dサーフェスを加工して、経緯度で囲んだエリアで地形データ(dem)を切り出すサンプル |
merge_bldg_surface.fmwt | テクスチャ付きLOD2データのサーフェスを建物単位でマージすることで、読み込み処理が軽くなるFBX/OBJ形式に変換するサンプル |
tingenerator.fmwt | 地形データ(dem)のサーフェス粒度を制御して、3Dシミュレータにおいて、メッシュが切れないと呼ばれる現象を回避するサンプル |
4.2.2 _ FBXに変換する例
実際に、上記のGitHubでサンプルとして提供されている「citygml2fbx.fmwt」を使って、東京都23区の新宿都庁があるあたりの建物データ「53394525_bldg_6697_2_op.gml」と地形データ「533945_dem_6697_op.gml」をコンバートしてみます。
【メモ】
東京都23区のCityGMLのデータは、G空間センターの「3D都市モデル(PLATEAU Project)東京都23区」(https://www.geospatial.jp/ckan/dataset/plateau-tokyo23ku)からダウンロードできます。詳細は、【3D都市モデルデータの基本】を参照してください。建物データ「53394525_bldg_6697_2_op.gml」は展開したファイルのudx/bldgフォルダに、地形データ「533945_dem_6697_op.gml」は同じくudx/demフォルダにあります。
サンプルの「citygml2fbx.fmwt」は、建物データと地形データの両方を変換するツールですが、必要ない変換フローを無効に設定することで、建物データだけ、もしくは、地形データだけを処理することもできます。
■ サンプルのワークベンチを開く
まずは次の手順で、サンプルとして配布されているFBXにコンバートするワークベンチを開きます。
[1]FME Workbenchを起動する
[スタート]メニューから、FME Workbenchを起動します。FME Workbenchは、FME Formにおいて、ワークベンチを編集したり実行したりするツールです。
[2]ワークベンチのサンプルを開く
[File]メニューから[Open]を選択して、ワークベンチのサンプルを開きます。あらかじめGitHubからダウンロードしておいたサンプルの「citygml2fbx.fmwt」を開きます。
[3]ワークベンチが開いた
図 4-3のように、ワークベンチが開きます。中央に表示されるフローが、何を入力し、どのような変換をして、どのように出力したかを定義したものです。
■ サンプルのワークベンチの構造
ワークベンチには、さまざまなオブジェクトを並べられますが、大きく「リーダー(Reader)」「トランスフォーマー(Transformer)」「ライター(Writer)」の3種類に分けられます。
・リーダー
データを読み込むオブジェクトです。
・トランスフォーマー
変換や抽出などの処理をするオブジェクトです。
・ライター
データを書き出すオブジェクトです。
サンプルのcitygml2fbx.fmwtには、次の2つのリーダーと、3つのライターがあり、これらの間に、いくつかのトランスフォーマーがあってデータ変換していくフローとして構成されています(図 4-4)。ワークベンチ上の、すべてのオブジェクトは、[Navigator]ウィンドウで確認できます(図 4-5)。
【メモ】
[Navigator]ウィンドウが表示されていないときは、[View]メニューの[Window]から表示してください。他のウィンドウについても同じく[View]メニューから、表示・非表示を切り替えられます。
【リーダー】
・建物のCityGMLファイルを読み込むリーダー
・地形のCityGMLファイルを読み込むリーダー
【ライター】
・LOD1の建物をFBX変換したものを出力するライター
・LOD2の建物をFBX変換したものを出力するライター
・地形をFBX変換したものを出力するライター
■ ファイル名などをパラメータとして設定する
このワークベンチを実行するには、入力するCityGMLファイル名や出力先のフォルダなどを設定する必要があります。これらは[Navigator]ウィンドウから、次のように設定します。
【メモ】
ここで設定しなくても、実行する際に、[Run]をクリックしたときに表示される画面で設定することもできます。しかし[Run]をクリックしたときの表示には、同名の項目があるため、どれを設定しているのかわかりにくいので、事前にひとつひとつ設定していくことを推奨します。
[1]建物に関するリーダーの設定画面を開く
まずは、建物に関するリーダーであるInput:blog[CITYGML]から設定していきます。
[Navigator]ウィンドウから[Input:blog[CITYGML]]を右クリックし、[Edit Input bldg[CITYGML] Parameters...]を選択して、設定画面を開きます。
[2]建物のCityGMLファイルを選択する
建物のCityGMLファイルを選択します。ここでは東京都23区の新宿都庁があるあたりの建物データ「53394525_bldg_6697_2_op.gml」を選択します。
[3]xsi:schemaLocationを無視する
同じ画面の[CityGML Schema Options]を開き、[Ignore xsi:shemaLocation in Dataset]を[Yes]にします。FME Formでは通常、CityGMLが利用しているXMLスキーマ情報(どのような要素の配下にどのような配下が存在することができ、どのような属性を持てるか)を読み込み、構造上のエラーがないかを確認しています。XMLスキーマ情報のURLはxsi:schemaLocation属性に書かれており、実際にその場所から読み込みます。この設定を[Yes]に設定すると、スキーマの読み込みや構造の確認を無視するようになります。
この設定は、2022年10月の時点において、[Yes]にすることが必要です。なぜなら、PLATEAUの3D都市モデルのCityGMLが利用しているXMLスキーマのうち、「i-UR(i-都市再生技術仕様案:内閣府が提供する建物の高さや建築年などが含まれる情報)」が改訂され、そのXMLスキーマのURLが変更されたため、スキーマが見つからずにエラーが発生します。
この問題を解決する別の方法(つまり、この設定を[No]のままで解決する方法)もあります。その詳細は次の「コラム CityGMLに記述されたURLを更新する」を参照してください。
変更したら[OK]をクリックして、設定を完了してください。
【メモ】
PLATEAUでは2022年度提供しているすべてのCityGMLのデータセットを対象に、参照するXMLスキーマのアップデート作業を行っています。このアップデートが完了した都市のCityGMLに対しては、この作業は不要です。
コラム:CityGMLに記述されたURLを更新する
このチュートリアルで[Ignore xsi:xchemaLocation in Dataset]を[Yes]に設定しているのは、PLATEAUの3D都市モデルで参照しているi-UR1.4(uroの記述)を定義するXMLスキーマの場所が、内閣府のURL変更に伴い変わったことで、読み込めなくなったためです。i-UR1.4自体も、現在( 2022年10月時点)は、i-UR1.5に改訂されています。
「3D都市モデルのデータ変換マニュアル」のReadme(https://github.com/Project-PLATEAU/Data-Conversion-Manual-for-3D-City-Model)に記述されているように、CityGMLファイルをテキストエディタ(例えばVisual Studio Codeなど)で開き、スキーマのURLをi-UR1.5の新しいURLに置換してからFMEで処理すれば、[Ignore xsi:xchemaLocation in Dataset]を[No]にしたままでも動作します。
置換すべき内容は、表 4-2、表 4-3のとおりです。詳細は、Readme(https://github.com/Project-PLATEAU/Data-Conversion-Manual-for-3D-City-Model)を参照してください。
旧URL(i-UR1.4のURL) | 新しいURL(i-UR1.5のURL) |
---|---|
http://www.kantei.go.jp/jp/singi/tiiki/toshisaisei/itoshisaisei/iur/uro/1.4 | https://www.chisou.go.jp/tiiki/toshisaisei/itoshisaisei/iur/uro/1.5 |
http://www.kantei.go.jp/jp/singi/tiiki/toshisaisei/itoshisaisei/iur/urf/1.4 | https://www.chisou.go.jp/tiiki/toshisaisei/itoshisaisei/iur/urf/1.5 |
http://www.kantei.go.jp/jp/singi/tiiki/toshisaisei/itoshisaisei/iur/urg/1.4 | https://www.chisou.go.jp/tiiki/toshisaisei/itoshisaisei/iur/urg/1.5 |
http://www.kantei.go.jp/jp/singi/tiiki/toshisaisei/itoshisaisei/iur/urt/1.4 | https://www.chisou.go.jp/tiiki/toshisaisei/itoshisaisei/iur/urt/1.5 |
旧URL(i-UR1.4のURL) | 新しいURL(i-UR1.5のURL) |
---|---|
http://www.kantei.go.jp/jp/singi/tiiki/toshisaisei/itoshisaisei/iur/schemas/uro/1.4/urbanObject.xsd | https://www.chisou.go.jp/tiiki/toshisaisei/itoshisaisei/iur/schemas/uro/1.5/urbanObject.xsd |
http://www.kantei.go.jp/jp/singi/tiiki/toshisaisei/itoshisaisei/iur/schemas/urf/1.4/urbanFunction.xsd | https://www.chisou.go.jp/tiiki/toshisaisei/itoshisaisei/iur/schemas/urf/1.5/urbanFunction.xsd |
http://www.kantei.go.jp/jp/singi/tiiki/toshisaisei/itoshisaisei/iur/schemas/urg/1.4/statisticalGrid.xsd | https://www.chisou.go.jp/tiiki/toshisaisei/itoshisaisei/iur/schemas/urg/1.5/statisticalGrid.xsd |
http://www.kantei.go.jp/jp/singi/tiiki/toshisaisei/itoshisaisei/iur/schemas/urt/1.4/publicTransit.xsd | https://www.chisou.go.jp/tiiki/toshisaisei/itoshisaisei/iur/schemas/urt/1.5/publicTransit.xsd |
LOD2を無視する
[CityGML Options]の設定を開くと、[LODs to Read]の項目で、LOD1、LOD2など、どのデータを読み込むかを指定できます。LOD1のデータしか使わない場合には、LOD2のチェックを外しておくと、高速に処理できます。
[4]地形に関するリーダーのパラメータを設定する
同様にして、地形に関するリーダーも設定します。これは[Input dem[CITYGML]]オブジェクトです。
東京都23区の新宿都庁を含む地形データ「533945_dem_6697_op.gml」を開きます。先ほどと同様に、[CityGML Schema Options]で[Ignore xsi:xchemaLocation in Dataset]を[Yes]にします。
コラム:地形の変換をしない
建物の変換だけが必要で、地形の変換が必要ないときは、右クリックして、[Disable Input dem[CITYGML]]を選択して、リーダーを無効にします。
こうした無効化は、ほかの項目、例えば、LOD1やLOD2が不要な場合も、同じように設定できます。
[5]LOD2出力に関するライターを設定する
入力であるリーダーの設定が終わったので、次に、出力を担当するライターの設定をしていきます。まずは、LOD2出力を担当する[Output:bldg_lod2[FBX]]を右クリックして、[Edit 'Output: bldg_lod2[FBX]' Parameters...]をクリックします。
パラメータの設定画面が開いたら、変換後のLOD2データを格納するフォルダを設定します。適当な任意のフォルダを設定してください。
[6]LOD1出力に関するライターを設定する
[Output:bldg_lod1[FBX]]に対して、同様の設定をします。これはLOD1出力データを格納するフォルダです。手順[5]と同じフォルダでもかまいません。
[7]地形出力に関するライターを設定する
[Output:dem[FBX]]に対して、同様の設定をします。これは地形出力データを格納するフォルダです。手順[5]や手順[6]と同じフォルダでもかまいません。
■ 実行する
すべてのパラメータの設定が終わったら、[Run]ボタンをクリックします。クリックすると、これまで設定したパラメータの一覧が表示されます。そのまま[Run]をクリックして、実行します。
実行が始まると、画面下に進行中のメッセージが表示されるので、完了まで待ちます。変換の完了には、しばらく時間がかかります(数十分程度)。変換に際し、いくつか微細なワーニングが発生することがありますが、たいていの場合、正常に変換されています。
コラム:インスペクタでデータを確認する
一度実行すると、ワークベンチの線を通った実際のデータが、つないでいる線の上に、個数として表示されます。線の始点となっている虫眼鏡のアイコンをクリックすると、インスペクタが起動し、その線を流れたデータを目視できます。
表形式だけではなく地図上での確認もできるため、デバッグするのに便利な機能です。
■ 実行結果を確認する
実行が完了すると、パラメータとして指定した「地形」「LOD1」「LOD2」のそれぞれのフォルダに、変換後のFBX形式ファイルが格納されます。このファイルを3Dソフトで読み込めば、表示できます。
・3Dビューアーで確認する
Windowsには、「3Dビューアー」というソフトがあり、変換したFBX形式ファイルをダブルクリックすると、起動して表示できます。建物や地形が変換されていることがわかるはずです。
ただしLOD2のデータはサイズが大きいため、全域を変換したデータでは、読み込めないことがほとんどです。
ところで図 4-20を見ると、変換されたLOD1のデータは、真ん中の建物が抜けていることがわかるかと思います。これはこの地域がLOD2のデータであるためです。
提供されている「citygml2fbx.fmwt」では、LOD2の建物は、LOD1のデータから除外される設定であるため、こうした挙動になります。含めて変換する方法については、「4.3.2 _ LOD2の建物もLOD1に含める」を参照ください。
・FBX Reviewで確認する
3Dビューアーなどがない、もしくはうまく表示できないときは、Autodesk社が無償で提供しているFBX Reviewを利用するとよいでしょう。
【FBX Review】
・3Dソフトなどで確認する
もちろんこのデータを、BlenderやUnityなどのソフトウェアで読み込むこともできます。その詳細については、それぞれのトピック【Blenderで活用する(近日公開予定)】【Unityで活用する(近日公開予定)】で触れます。
4.2.3 _ その他の形式への変換
ここでは例として、FBX形式への変換を説明しましたが、「citygml2obj」や「citygml2datasmith」を使えば、それぞれ、OBJ形式やDatasmith形式へも、同様に変換できます。
【文】
大澤文孝
【監修】
於保俊(株式会社ホロラボ)
アクセンチュア株式会社
Pacific Spatial Solutions 株式会社