要访问教程CityEngine中,单击 帮助>下载教程和例子…。选择教程或示例后,项目会自动下载并添加到您的工作区。
概述
报告功能在生成几何图形之外增强了 CityEngine;它允许基于规则的计算和模型参数的累积。这意味着您不仅可以可视化您的城市总体规划,还可以通过生成数字报告(例如,通过 .csv 生成的 Excel 表格)来扩充它们。与 3D 模型一样,可以使用 CGA 形状语法生成报告。可以将报告操作包含在生成几何的相应规则中,也可以创建仅用于报告的 CGA 形状语法规则集。
报告操作允许报告建筑设计或总体规划的任意属性。因此,报告是完全通用的和可定制的。例如,它可以包括数字,例如总建筑面积 (GFA)、单元数量或土地使用组合。此外,通过改变城市设计(即重新生成模型),报告会自动即时更新。本教程展示了一个示例场景,其中从头开始构建总体规划,并使用报告功能分析现有的地理空间数据。
区域报告
本教程的这一部分展示了如何在 CGA 文件中嵌入报告操作以及如何生成结果报告。
教程设置
打开Tutorial_11_Reporting/scenes/reporting_01.cej场景。
该场景基于以下街道网络,该街道网络是使用 CityEngine 的街道增长功能使用螺旋图案生成的:
通过应用带有一些绿地百分比的简单挤压规则,生成了一个城市模型。
绿地和建筑面积报告
-
- 在导航器中,双击rules/reporting_01.cga文件以打开 CGA 编辑器以查看外观的规则。
- 找到 Lot 规则,找到包含 report() 命令的两行。
@StartRule Lot --> case p(greenspacePercentage/100): report("Area.Greenspace",geometry.area) GreenSpace else: report("Area.BuildUp",geometry.area) BuildingLot
通过使用geometry.area属性作为报告值,两个报告命令都报告当前几何面积(地块面积)。在第一个 case 语句中,该区域被报告给 Area.Greenspace 报告变量;在第二种情况下(else 情况),该区域被报告给 Area.BuildUp。
笔记:
通过在报告变量中使用点 (.) 作为分隔符,报告输出将显示两个变量以及它们的组合(面积)总和。
-
- 选择一些足迹,并生成模型。
- 选择一组任意生成的模型,然后在检查器中打开报告窗格。
报告窗格显示两个报告的变量Area.BuildUp和Area.Greenspace,以及自动添加的总和Area。
笔记:
在点字符之前共享相同组名的报表变量会自动收集在一个组变量中。
- 所述Ñ列显示的变量的报告的数目。下一列 % 以百分比显示该数字。
- 该求和列显示每个报告变量的报告值的总和。同样,% 列以百分比形式显示这些结果的相对关系。
- 接下来的三列显示有关每个模型的平均、最小和最大报告值的附加统计信息。
报告窗格
“报告”窗格根据当前选择显示报告。
- 选择一组不同的生成模型,并在 Inspector 中比较报告结果。
- 选择更大的模型集。
- 在规则参数中,将greenspacePercentage的值更改为75。
- 重新选择模型以查看报告中反映的更改。
GFA 和 FAR 的附加报告
本节介绍如何将 GFA 和 FAR 的其他报告添加到规则文件中。
教程设置
- 打开Tutorial_11_Reporting/scenes/reporting_02.cej场景。
- 在导航器中,双击rules/reporting_02.cga文件以打开 CGA 编辑器以查看外观的规则。
报告总建筑面积 (GFA) 和建筑面积比率 (FAR)
Lot 规则将地块的总面积存储到建筑物的 plotArea 属性中。此信息稍后将在规则中用于计算容积率 (FAR)。
@Hidden
attr plotArea = 0 # used to calc FAR
@StartRule
Lot -->
case p(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)
-
- 选择生成的建筑物,然后在检查器中找到“报告”窗格。
除了上面第一部分中报告的面积值之外,还显示了新的FAR和GFA报告变量。N列中的值 16表示为选择调用报表变量的次数;在这种情况下,它等于楼层数。的萨姆列显示所计算出的FAR(15.16)和GFA(60118.35)。
- 选择生成的建筑物。
- 使用滑块更改 distanceStreet 参数。
- 请注意 FAR 和 GFA 的值如何更新到新建筑模型。
可视化模式
该规则/ reporting_02.cga规则文件提供了可能不同的可视化模式建立模型之间切换。
选择一个建筑模型,然后更改 vizMode 规则参数。
按使用类型报告
您现在将按楼层将报告变量扩展到不同的土地利用类型。
- 打开Tutorial_11_Reporting/scenes/reporting_03.cej场景。
- 在导航器中,双击rules/reporting_03.cga 文件以打开 CGA 编辑器以查看外观的规则。
添加土地利用类型
添加了以下三个属性:
- mixOffice 全局控制土地使用类型为混合的建筑物中办公空间与住宅空间的比例。
attr mixedOffice = 0.2
- 建筑物的landuseType 属性可以单独设置为Office、Residential 或Mixed(Office 和Residential)。初始值设置为随机平均选择一种土地利用类型。
@Enum("Office","Mixed","Residential") attr landuseType = round-shape 33% : "Mixed" 33% : "Office" else : "Residential"
- BaseFloors 控制建筑物基础上的零售楼层数。住宅建筑没有底层,办公和混合用地类型随机选择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)
{ street.front: OpenSpace
| remainder: Parcel }
按类型报告
为了能够按使用类型报告楼层面积,您将使用参数类型扩展 floorBottom 规则。根据这种类型,该区域被报告给相应的使用类型,用GFA.usagetype表示。通过使用前缀GFA,报告统计将显示各个使用类型以及总GFA。此外,根据使用类型分配不同的颜色,以在生成的模型中可视化它们的功能(红色:零售,绿色:办公室,蓝色:住宅)。
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
在混合土地利用类型的情况下,使用特殊的表达方式来区分办公室和住宅用途。通过使用split.index(在此上下文中等于楼层索引),可以确保生成的办公室楼层达到所需的楼层索引,由mixOffice属性控制。
-
- 选择并生成建筑物。
- 更改landuseType 参数以获得建筑物的不同表示。
新报告变量显示在“报告”窗格中。在以下屏幕截图中,GFA.Office 报告了 6 次(六个办公楼层),总计 38777.78 平方米的办公空间,占总建筑面积的 46.15%。
在下一部分中,您将使用地图图层来控制土地利用类型分布。
由土地利用地图层控制的报告
您现在将使用地图图层来控制分布,而不是使用土地利用类型的随机分布。
教程设置
打开Tutorial_11_Reporting/scenes/reporting_04.cej 场景。
土地利用类型地图图层
地图图层可用于控制城市的全局外观。Reporting_04.cej 场景已经包含您要使用的地图层。在场景编辑器中取消隐藏 Landuse Map 图层以在 3D 视口中显示它。
-
- 在场景编辑器中,选择 Landuse Map 图层,然后在检查器中找到图层属性。
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""
- 在场景编辑器中,选择 Landuse Map 图层,然后在检查器中找到图层属性。
前三个属性由地图层的亮度控制。例如,在地图明亮的地方,Office 评估为真。
因此,中心的明亮部分触发办公楼,中间部分触发混合用地(零售、办公和住宅)的建筑,外部触发住宅建筑。
-
- 检查相应的Tutorial_11_Reporting/rules/reporting_04.cga 规则文件。
Reporting_04.cga 规则文件添加了其他规则,这些规则可根据土地利用类型(包括混合、办公和住宅)及其后续规则创建不同的体量模型。
全市报告
- 将mixedOffice 参数从0.2 更改为0.3(在所有建筑物上),并生成报告。
- 生成完成后,重新选择所有建筑物以查看更新的报告。
全市写字楼建筑面积由18.8%上升至23.9%,住宅面积由75.5%下降至70.4%。
导出报表数据
要导出报告的数据,请完成以下步骤:
- 选择要导出的行(Shift+单击或Ctrl+单击)。
- 单击编辑>复制将数据复制到剪贴板(制表符分隔)。
- 将其粘贴到 Microsoft Excel 或其他应用程序中。
导出报告数据的另一个选项是生成一个 .csv 文件,该文件按对象分解报告并显示每个类别的相应值。某些对象包含多个楼层,.csv 文件将显示每个建筑物和楼层的该类别的数量。
- 在 CGA 编辑器中单击export_report.py脚本文件。
- 单击Python >运行脚本以生成 .csv 文件。
- 双击data/reports.csv文件以打开 Excel 电子表格。