はじめに
今回のブログでは、「FME」の活用方法についてご紹介いたします。
当社では3D都市モデルの構築にFMEを利用する事が多くあります。
FMEはCityGMLの構築や変換の為に利用される事が多いですが、それ以外でも3Dデータを利用したデータ処理や論理検査等、様々な場面で活用する事が可能です。
今回は、太陽光発電の設置規模・発電量の試算の参考として、PLATEAUで公開されている3D都市モデルを使い、建築物モデル(LOD2)の屋根面(bldg:RoofSurface)の3D表面積を計算し、それを建物単位の属性として付与する手順をご紹介します。
ワークスペースの全体像
CityGMLの読み込み
- 建築物モデルのCityGMLを読み込みます。
- Parametersの中のGML SRS Axis Orderを 2,1,3 に設定
GML SRS Axis Orderを設定することでPLATEAUデータの座標軸の順番を正しく解釈できます。
今回必要なFeatureTypeはBuilding(建築物)、RoofSurface(屋根面)のみのため必要なFeatureTypeのみインポートします。
- 屋根面は面積計算にのみ使用するため、AppearanceRemoverでテクスチャ/マテリアルを事前に除去して軽量化し、処理速度を向上させています。
- 屋根面(LOD2)の抽出は Testerで citygml_level_of_detail{0} = 2 とし、LOD2の屋根面を抽出します。
座標変換
今回は 大阪市のオープンデータを使用したために、CsmapReprojectorを使って平面直角座標系 第6系へ変換します。メートル系へ変換することで、正しいm²単位の面積が算出できます。
面積計算(屋根の3D表面積)
- 屋根ごと(フィーチャごと)に3D表面積を計算します。
AreaCalculatorをMultiSurface に対して使用すると、その3D Surface群の累積面積を取得できます。AreaCalculatorのパラメータのTypeは Sloped Area とすることで傾斜を考慮した面積が計算されます。 - 出力属性名例:各屋根面に roof_area_3d_m2。
集計(建物単位)
- StatisticsCalculatorで建物IDごとに roof_area_3d_m2 を累積し、roof_area_3d_m2.sum を作成します。
- Group By キーは親建物のgml:id(属性名gml_parent_id)とします。
建築物モデルと屋根の3D表面積を紐づけ
- FeatureMergerでBuilding(Requestor)に対し、屋根面の集計結果(Supplier)をRequestorはgml_parent_idをキーに、Supplierはgml_idをキーに結合し、roof_area_3d_m2.sum を建物属性として付与します。
建築物モデルをLODごとに分解
- CityGMLのBuilding にはlod1Solid, lod2Solid, lod2MultiSurfaceなど複数 LODが併存します。
- Deaggregatorで分解後、AttributeFilterでLOD 別に分けることで、必要なLODのみを抽出でき活用しやすい形になります。
出力
- FMEのWriterで対応可能なフォーマットとして出力します。(shpやgdbなど)
- 必要なLODのみを出力することで別ソフトウェアでの活用が可能になります。
LOD2
LOD1
LOD0
おわりに
今回は3Dデータだからこそ算出できる表面積に着目してみました。
PLATEAUのCityGMLは単なる属性だけではなく、建物の屋根、壁、床等のサーフェス自体の意味が付加されています。これを利用すれば今回のような2Dデータでは抽出できないデータを取得する事が可能です。
もしPLATEAUのCityGMLの利活用にお困りの方がいらっしゃいましたら、当社までご相談ください。
お問い合わせフォーム
※FME®を使用。FME®はSafe Software Inc.の登録商標です。