技術コラム

FME活用方法のご紹介~CityGMLから”屋根の3D表面積”をFMEで集計し、建物属性に付与~

はじめに

今回のブログでは、「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.の登録商標です。

関連記事

TOP