チュートリアル データは、[Help] メニュー → [Download Tutorials and Examples…] を選択し、[CityEngine Tutorial] からダウンロードできます。
レポーティングの機能により、CityEngine は単なるジオメトリ生成ツール以上の強力なものとなっており、ルールに基づいたモデル パラメーターの計算や積算などが可能です。これにより、都市のマスタープランを可視化するだけでなく、いくつかのレポートを生成 (例えば、.csv 経由で Excel テーブルを作成) することによりそれらを強化することができるのです。3D モデルと同様にレポートは CGA により生成されます。ジオメトリを生成するルールの中にレポートの操作を含めることもできますし、レポーティングのみのための CGA ルールセットを作成することも可能です。
レポート操作は、建物のデザインやマスタープランの任意のプロパティをレポートすることができるように開発されています。つまり、レポーティングは完全に汎用的でカスタマイズ可能であり、例えば、延べ床面積 (GFA) やユニット数、混合土地利用度 (Land Use Mix) のような数値を含めることができます。また、都市デザインを変更 (つまりモデルを再生成) するとレポートもリアルタイムに更新されます。このチュートリアルでは、サンプル シナリオとして、スクラッチからマスタープランを構築しますが、もちろん既存の GIS データを解析するためにレポーティング機能を活用することも可能です。
演習 |
---|
・Part 1: 面積のレポート |
・Part 2: GFA および FAR のレポートの追加 |
・Part 3: 用途タイプによるレポート |
・Part 4: 土地利用マップ レイヤーによるレポートの制御 |
レポーティング チュートリアルの最初として、既存の CGA にどのようにレポーティングの動作を組み込み、その結果のレポートがどのように生成されるのかを見ていきます。
Tutorial_11_Reporting/scenes/reporting_01.cej シーンを開きます。
このシーンは以下のような CityEngine の Street Grow 機能によりスパイラル パターンで生成された道路ネットワークに基づいています。
緑地の割合を指定してシンプルな建物を立ち上げるルールを適用し、最初の都市モデルを生成します。
[Navigator] ウィンドウの中で rules/reporting_01.cga ファイルをダブルクリックします。 [CGA Editor] ウィンドウを開き、建物を生成しているルールを確認します。
Lot ルールを見つけ、report() コマンドを含む 2 つの行を探します。
@StartRule
Lot -->
case p(greenspacePercentage/100):
report("Area.Greenspace",geometry.area)
GreenSpace
else:
report("Area.BuildUp",geometry.area)
BuildingLot
プロパティ geometry.area をレポート値として使用することにより、両方の report コマンドが現在のジオメトリの面積 (区画の面積) をレポートしてくれます。最初の case ステートメントの中では、レポーティング変数 “Area.Greenspace” に面積がレポートされ、2 番目の else ステートメントの中では “Area.BuildUp” に面積がレポートされます。
レポーティング変数の中で区切り文字としてピリオド (.) を使用することにより、レポート出力には個々の変数についての情報とそれらの総和 (Area) の両方が表示されます。
Reports 欄には、Area.BuildUp と Area.Greenspace の 2 つの変数がレポートされており、それらの総和である Area も自動的に追加されています。
ピリオドの前に共通のグループ名を持つ Report 変数は、自動的に 1 つのグループ変数にまとめられます。
N カラム (列) は変数の個数を表示しています。この場合では、4 つの区画が選択されており、1 つの BuildUp エリアと 3 つの Greenspace エリアの面積がレポートされています。次のカラム % は、その個数をパーセントで表示しています。
Sum カラムはレポートされている値の総和を表示しています。この場合は、BuildUp エリア面積の総和は 5802.42 で、Greenspace エリアは 19226.12 ということになります。その隣にある % カラムは、これらの結果の相対値をパーセントで表示したものです。
さらに右の 3 つのカラムには、モデルごとの平均値、最小値、最大値のような統計情報が表示されます。
[Reports] ウィンドウの表示は、現在何が選択されているかに依存します。
ルール パラメーターの greenspacePercentage の値を 75 に変更します。
レポーティング チュートリアルの Part 2 では、ルール ファイルに GFA および FAR のレポートを追加する方法を紹介します。
Lot ルールの中で、建物の区画の面積の総和を属性値 plotArea に格納します。この情報は後に容積率 (FAR) を計算するルールの中で使用されます。
@Hidden
attr plotArea = 0 # used to calc FAR
@StartRule
Lot -->
case prob(greenspacePercentage):
report("Area.Greenspace",geometry.area)
GreenSpace
else:
set(plotArea, geometry.area)
report("Area.BuildUp",geometry.area)
BuildingLot
Part 1 で作成したルールと異なるのは、建物の立体がフロアに分割されている点です。FloorBottom ルールを見つけます。
建物の各フロアに対してこのルール (および report() コマンド) が呼び出されると、レポート変数 GFA の値はその都度加算されていき、最終的にすべてのフロアの総和になります。
FAR についても同様で、ここでは面積をすでに格納されている plotArea で除算することにより、延べ床面積とプロットエリアの比を求めることができます。
FloorBottom -->
report("GFA",geometry.area)
report("FAR",geometry.area/plotArea)
Part 1 で紹介したレポート値 Area に加え、新しいレポート値 FAR と GFA が表示されています。N カラムの 16 という値は、現在の選択に対してレポート値が何回呼び出されたかを示しており、この場合はフロア数と同じになります。Sum カラムには計算された容積率 (FAR: 15.16) と延べ床面積 (GFA: 60118.35) が表示されています。
ルール ファイル rules/reporting_02.cga には、建物モデルの表現を切り替えるパラメーターが設定されています。
建物モデルを 1 つ選択し、ルール パラメーターの vizMode を変更します。
ここではレポーティング変数をフロアごとの用途タイプに拡張します。
以下の 3 つの属性が新たに追加されています。
mixedOffice は、建物の用途 (landuse) タイプが Mixed の場合にオフィス スペースと居住スペースの比を包括的に制御します。
attr mixedOffice = 0.2
建物の用途タイプは個別に Office (オフィス) 、Residential (住居) または Mixed (混合) (Office と Residential) に設定することができます。初期値はランダムに 1 つの用途タイプを選択するようになっています。
@Range("Office","Mixed","Residential")
attr landuseType = "Mixed"
33% : "Mixed"
33% : "Office"
else : "Residential"
baseFloors は、建物の地上部 (base) に位置する小売業 (Retail) フロアの階数を制御します。タイプが Residential の建物にはベースフロアはなく、Office および Mixed 用途タイプの建物では、1 ~ 3 階の間でランダムに選択されます。
attr baseFloors =
case landuseType == "Residential" : 0
else : ceil(rand(0,3))
BuildingLot ルールの中に Floor Height と Count のレポートを追加します。
BuildingLot -->
report("Floor Height", floorHeight)
report("Floor Count", nFloor)
setback(distanceStreet)
{ streetSide: OpenSpace
| remainder: Parcel }
用途タイプでフロア面積をレポートできるようにするために、floorBottom ルールを type 引数で拡張します。この type に応じて、FAR.usagetype で示される用途タイプに対応する面積がレポートされます。ピリオド付きの接頭語 “GFA.” を使用することにより、個々の用途タイプだけでなくこれらを加算したトータル FAR もレポート統計として表示されます。また、用途タイプにより異なる色が割り当てられ、生成されたモデルの機能が可視化されます。(赤: 小売業、 緑: オフィス、 青: 住居)
FloorBottom(type) -->
case type == "Retail":
report("GFA.Retail",geometry.area)
report("FAR",geometry.area/plotArea)
color("#ff4444") #Red
FloorViz
case type == "Office" || (type == "Mixed" && split.index < mixedOffice*split.total):
report("GFA.Office",geometry.area)
report("FAR",geometry.area/plotArea)
color("#44ff44") #Green
FloorViz
else:
report("GFA.Residential",geometry.area)
report("FAR",geometry.area/plotArea)
color("#4444ff") #Blue
FloorViz
Mixed 用途タイプの場合にオフィスと住居を区別するために特別な表現を使用します。split.index (このコンテンツのフロア インデックスと等しい) を使用することにより、オフィスフロアが mixedOffice 属性で制御された目的のフロア インデックスまで生成されるようにします。
Reports 欄には新しいレポート変数が表示されています。以下の例では、 GFA.Office の行を見ると、件数が 6 (オフィス フロアが 6 個) で面積の総和が 38777.78 m2 であり、延べ床面積の 46.15% であることが分かります。
用途タイプとしてランダム分布を使用する代わりに、分布を制御するマップ (ラスター) レイヤーを使用します。
シーン Tutorial_11_Reporting/scenes/reporting_04.cej を開きます。
都市の全体的な表現を制御したい場合にマップ レイヤーを使用することができます。シーン reporting_04.cej にはすでにこれから使用するマップ レイヤーが含まれています。 [Scene Editor] ウィンドウの中で Landuse Map レイヤーを表示に切り替え、[3D Viewport] ウィンドウに表示します。
attr Office = brightness > 0.66
attr Mixed = !Office && brightness > 0.33
attr Residential = !Office && !Mixed
attr landuseType =
case Office : "Office"
case Mixed : "Mixed"
else : "Residential"
最初の 3 つの属性はマップ レイヤーの輝度 (brightnrss) 値により制御されています。例えばマップ上の明るい場所では Office が True と評価されます。
結果的に中心部の明るい部分では Office 、中間部分では Mixed (Retail、Office、Residential) 、外側の部分では Residential がトリガーされることになります。
これにより、この都市全体に対するオフィスの延べ床面積 (GFA) は 18.8% から 23.9% に増加し、一方住居は 75.5% から 70.4% に減少したことが分かります。
レポート データをエクスポートするには以下の手順に従います。
レポート データをエクスポートする別の方法として、レポートをオブジェクト別に分類し、各カテゴリに対応する値を表示する.csvファイルを生成することです。一部のオブジェクトには複数のフロアが含まれており、.csvファイルには、各建物とフロアのそのカテゴリの金額が表示されます。
本チュートリアルでは、作成した都市 (または単一の建物) のデザインをレポート機能を使用してチューンナップする方法を紹介しました。どのような数値でもすべて汎用的にすべてルールに基づいてレポートに出力することができます。もちろんこれは 1 つの単純な例に過ぎませんが、レポートの活用法のアイデアのヒントとなれば幸いです。