幻灯片-CityEngine城市引擎

已解决ArcGIS Urban Parcels在 CGA 中访问分区代码作为属性

我正在寻求确认以下情况目前是否可行。我目前正在编写一条 CGA 规则,用于我的 ArcGIS Urban 场景。我正在编写的规则利用 CityEngine 的功能来检查和处理超出 Urban 直接可行范围的有条件分区规定。我正在探索的条件之一是相邻地块的分区会影响可建性要求的情况(例如,工业区可能需要在与住宅区接壤的地方设置额外的退让线)。

我理解如何在 CityEngine 中使用遮挡查询构建逻辑的原理,但在构建该逻辑之前,我需要一种方法来通过 CGA 访问分配给每个地块的分区。但是,ArcGIS Urban 的分区指定位于检查器中这个特殊的“分区”部分中,而不是作为对象属性:

RidleySoudack_0-1760111196662.png

有没有办法将此部分中的“区域类型”值链接到我的 CGA 中的属性?

我知道使用 Python/利用 ArcGIS Pro 可以轻松实现这一点,但由于我正在利用 CGA 来实现此建模的其他组件,因此如果可能的话,我宁愿避免在工作流程中引入额外的步骤。

 

回复:

我很高兴看到您 利用 CityEngine 功能来检查和处理有条件的分区规定。

此宗地形状的示例规则显示了如何使用 从场景的区域边界层获取的 ZoneTypeID属性 

version "2025.0"

@Order(1)
@Enum(valuesAttr=zoneTypeIDs,restricted=false)
@DisplayName("Zone Type ID")
attr ZoneTypeID = ""
@Hidden
attr zoneTypeIDs = getKeys(zoneTypeTable)

@Order(2)
@DisplayName("Zone Type Label")
attr Zone_Type_Label = getValue( zoneTypeTable, ZoneTypeID, "Label")

@Order(3)
@Color
@DisplayName("Zone Type Color")
attr Zone_Type_Color = getValue( zoneTypeTable, ZoneTypeID, "Color")

@Order(4)
@DisplayName("Zone Type HeightMax")
attr Zone_Type_HeightMax = float(getValue( zoneTypeTable, ZoneTypeID, "HeightMax"))

@Order(0)
@File
@DisplayName("Zone Type Table")
attr Zone_Type_Table = "data/Urban_for_CE_Database_View.csv"

const zoneTypeTable = readStringTable(Zone_Type_Table)

getKeys(table) = transpose(table[1:nRows(table) - 1, 0])

getValue(table, key, columnName) with(
	keysColumn := getKeys(table)
	rowIndex := findFirst(keysColumn, key) + 1
	columnIndex := findFirst(table[0, 0:nColumns(table)], columnName)
	) = 
	case (rowIndex == 0) || (columnIndex == -1): "Error"
	else: table[rowIndex, columnIndex]

@StartRule
Parcel --> 
	print(ZoneTypeID)
	print(Zone_Type_Label)
	
	color(Zone_Type_Color)
	extrude(Zone_Type_HeightMax)

 

与空间类型信息不同,从 ArcGIS Urban 导入规划图时,分区信息不会以 CSV 格式添加到项目中。您可以执行以下操作来处理分区信息:

  1. 在门户内容中找到您的规划的 ArcGIS Urban Database View。它包含一个名为ZoneTypes的表
    ThomasFuchs_0-1760539452591.png

     

  2. 将此ZoneTypes 表导出为 CSV 文件,然后下载
    ThomasFuchs_1-1760539532443.png
  3. 在 CityEngine 中,将ZoneTypes CSV 文件添加到项目的数据文件夹
    托马斯·福克斯_4-1760542154472.png
  4. 现在您可以将 规则属性 Zone_Type_Table连接 到下载的ZoneTypes CSV 文件。
    托马斯·福克斯_6-1760543009825.png
  5. 要获取地块的区域类型信息,只需将规则属性 ZoneTypeID连接 到场景的区域边界层中的匹配属性:
    ThomasFuchs_2-1760540184344.png
  6. 最终结果应如下所示:
    可视化区域类型.png
请登录后发表评论