チュートリアル データは、[Help] メニュー → [Download Tutorials and Examples…] を選択し、[CityEngine Tutorial] からダウンロードできます。
レポート機能は、CityEngine をジオメトリの生成以外にも拡張します。この機能は、モデルのパラメーターをルールに基づいて計算し、蓄積することができます。つまり、都市マスター プランを視覚化するだけでなく、Microsoft Excel や同様の表計算アプリで、さらに処理するための .csv ファイルなどの数値レポートを生成することで、都市マスター プランを強化することができます。3D モデルと同様に、CGA シェープ グラマーでレポートを生成できます。レポート操作は、ジオメトリを生成する対応するルールに含めることも、ジオメトリを作成せずにレポートのみを作成するルールを作成することもできます。
レポート操作により、建築設計またはマスター プラン プロパティのレポート値を作成することができます。これにより、レポートは完全に汎用的かつカスタマイズが可能になります。例えば、延床面積 (GFA) 、容積率 (FAR) 、戸数、土地用途構成などの値を含むレポートを作成できます。また、都市設計を変更することで、つまりモデルを再生成することで、レポートは自動的に更新されます。
このチュートリアルでは、マスター プランを最初から作成するシナリオを例に説明します。その後、レポート機能を使って既存の地理空間データを分析する方法を学びます。
演習 |
---|
・Part 1: 面積レポートの操作 |
・Part 2: 延床面積 (GFA) と容積率 (FAR) の追加のレポートを調べる |
・Part 3: 用途タイプによるレポート |
・Part 4: 土地用途マッピングレイヤーでレポートを管理 |
・Part 5: レポート データのエクスポート |
このチュートリアルのセクションでは、CGA ファイルにレポート アクションを埋め込む方法と、結果のレポートがどのように生成されるか説明します。
面積レポート シーンを開くには、以下の手順を行います。
CGA ルールでのレポートを見るには、以下の手順を行います。
@StartRule
Lot -->
case p(greenspacePercentage/100):
report("Area.Greenspace",geometry.area)
GreenSpace
else:
report("Area.BuildUp",geometry.area)
BuildingLot
レポーティング変数の中で区切り文字としてピリオド (.) を使用することにより、レポート出力には個々の変数についての情報とそれらの総和 (Area) の両方が表示されます。
ドット文字の前に同じグループ名を共有するレポート変数は、自動的にグループ変数に収集されます。グループ変数を持たない場合、N および Sum 値の % 列は 0.00 と表示されます。
生成された異なるモデル セットを選択し、[Reports] セクションの結果を比較します。
[Inspector] ウィンドウで、[Report] セクションを展開します。
greenspacePercentage 属性はデフォルトで 30 に設定されています。これは、土地の 30 % が緑地に割り当てられていることを意味します。
greenspacePercentage 属性は、土地の何パーセントが緑地やオープン スペースとして確保されているか、言い換えれば、土地の何パーセントが未建築であるかを示します。
確率とシード値に応じて、パーセンテージはわずかに変化します。シード値を更新すると (Shapes → Update Seed または Ctrl + Shift + G)、値も変化します。
greenspacePercentage 属性の値を 75 に変更します。 シーン内の緑地が大幅に増加し、[Reports] セクションの Area.Greenspace の値もそれに応じて増加しました。
次に、延床面積 (GFA) と容積率 (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
最初のセクションのルールファイルと比較して、建物はフロアごとに分割されています。FloorBottom ルールを見つけます。このルールは report() 操作をすることで、建物の各フロアに対して呼び出します。したがって、レポート変数の延床面積 (GFA) は段階的に合計され、全てのフロア面積の合計となります。
同様に、容積率 (FAR) では、面積が以前に保存された plotArea 値で割られ、総フロア面積と区画面積の比率が得られます。
FloorBottom -->
report("GFA",geometry.area)
report("FAR",geometry.area/plotArea)
生成された建物を選択し、[Report] セクションを調べます。 最初のセクションの面積のレポート値に加え、新しい延床面積 (GFA) と容積率 (FAR) のレポート変数が表示されます。N 列の値 18 は、レポート変数が選択に対して呼び出された回数を示します。Sum 列は延床面積 (GFA) と容積率 (FAR) の計算された値を表示します。延床面積 (GFA) と容積率 (FAR)の % 列は、グループ変数を持たないため、0.00 と表示されます。
[distanceStreet] スライダーを動かしてパラメーターを変更します。 建物モデルの変更を反映して、延床面積 (GFA) と容積率 (FAR) の値が更新されます。
モデルの可視化を変更するには、[Rules] セクションの [vizMode] ドロップダウン メニューをクリックします。以下のいずれかの方法でモデルを可視化できます。可視化を変更しても、このルールファイルを使用している場合、レポート値には影響ありません。
次に、このルールをどのように拡張すれば、フロアごとに異なる土地用途タイプを視覚化およびレポートできるかを見ていきます。
reporting_03.cej シーンと reporting_03.cga ルールファイルを開きます。
reporting_03.cgaルールでは、以下の 3 つの属性が追加されています。
・mixedOffice 属性は、土地用途タイプが [Mixed] の建物において、オフィススペースと住居スペースの比率をグローバルにコントロールします。
attr mixedOffice = 0.2
・建物の landuseType 属性は、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 ルールでは、階高および階数レポートが追加されます。
BuildingLot -->
report("Floor Height", floorHeight)
report("Floor Count", nFloor)
setback(distanceStreet)
{ streetSide: OpenSpace
| remainder: Parcel }
用途タイプでフロア面積をレポートできるようにするために、floorBottom ルールを type 引数で拡張します。この type に応じて、FAR.usagetype で示される用途タイプに対応する面積がレポートされます。ピリオド付きの接頭語 [GFA.] を使用することにより、個々の用途タイプだけでなくこれらを加算したトータル [FAR] もレポート統計として表示されます。また、用途タイプにより異なる色が割り当てられ、生成されたモデルの機能が可視化されます。(赤: Retail (小売業)、緑: Office (オフィス)、 青: Residential (住居))
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 属性で制御された目的のフロア インデックスまで生成されるようにします。
[Inspector] ウィンドウで土地用途タイプを変更するには、以下の手順を行います。
このセクションでは、土地利用タイプをランダムに分布させるのではなく、マッピング レイヤーを使って分布をコントロールします。
マッピングレイヤーを使用して、都市の全体的な外観を制御することができます。
attr landuse = map_01(red, 0.0, 1.0)
attr Office = case landuse > 0.66: true else: false
attr Mixed = case !Office && landuse > 0.33: true else: false
attr Residential = case !Office && !Mixed: true else: false
attr landuseType =
case Office : "Office"
case Mixed : "Mixed"
else : "Residential"
Office、Mixed、Residential 属性は、マップの明るさ(マップの赤チャネルで決定)によって制御されます。たとえば、マップが明るい場所では、Officeが 真 と判別されます。
その結果、中央の明るい部分は背の高いオフィスビルを、中央の部分は土地用途が混在する小規模なビル(小売、オフィス、住宅)を、そして外側の部分は小規模な住宅をされることになります。
同じ方法で、建物の高さは BuildingHeight マッピング レイヤーによって制御されます。レイヤーを表示すると、マップと生成された建物の相関関係がわかります。
Subparcel -->
case landuseType == "Office": Office
case landuseType == "Mixed" : Mixed
else: Residential
Mixed -->
[ extrude(baseFloors*floorHeight) RetailBase ]
t(0,baseFloors*floorHeight,0)
set(nFloor,nFloor-baseFloors)
offset(-5,inside) LUShape
以下の例は、Office、Mixed、Residential の各土地用途タイプの建物の視覚化を示しています。
次に、都市全体のスペースと建物のレポートを作成します。
レポート データをエクスポートするには以下の手順に従います。
レポート データをエクスポートする別の方法として、レポートをオブジェクト別に分類し、各カテゴリに対応する値を表示する .csv ファイルを生成することです。一部のオブジェクトには複数のフロアが含まれており、.csv ファイルには、各建物とフロアのそのカテゴリの値が表示されます。
このチュートリアルでは、次のことを学びました。
・区画の面積などの値を計算し、レポートする方法
・GFA と FAR の追加のレポートを調べる方法
・利用タイプ別にレポートし、フロアごとに異なる土地用途タイプの視覚化をする方法
・マッピングレイヤーを使用して土地用途タイプとレポートを制御する方法
・Microsoft Excel や類似のスプレッドシート アプリにレポートをエクスポートする方法
CityEngineの学習を続けるには、CityEngine チュートリアル カタログをご覧ください。