基于 CityEngine 规则转换要素 (3D Analyst)

需要 3D Analyst 许可。

描述

按照在 ArcGIS CityEngine 中创作的规则基于现有 2D 和 3D 输入要素生成 3D 几何。

使用方法

  • 输入要素可以是点、面或多面体。应该为 CityEngine 规则包 (.rpk) 文件中的 @StartRule 指定其所预期的输入要素类型:对于点,该类型为 @InPoint 注记;对于面,该类型为 @InPolygon;对于多面体要素,该类型为 @InMesh。如果 @StartRule 未使用其中任何一种要素类型进行注释,系统将假设该要素类型为面。如果输入了异常的几何类型,将会发生错误。

  • 输入要素可以是按程序符号化的要素图层。CityEngine 规则通常可以定义一系列属性(CityEngine 中名为 attrs),这些属性可以控制根据输入形状生成输出 3D 模型的方式。例如,生成建筑物外壳的规则对于 attr 为双精度类型 BuildingHeight,对于 attr 为整数类型 FloorCount。如果输入要素类包含的特性字段与 CityEngine 规则属性具有相同的名称和数据类型,则将自动使用该特性字段的值来生成输出模型。CityEngine 规则属性与特性字段的这种自动匹配称为默认字段映射。如果输入要素图层经过按程序符号化,则支持程序符号图层中定义的自定义字段映射符号属性。可以使用自定义字段映射来覆盖由规则包定义的默认字段映射操作。

  • 输入规则包是一种 CityEngine 规则包 (.rpk)。即包含已编译 CityEngine 规则以及该规则使用的关联资产的压缩文件。导出叶形状参数只有在输入规则包声明其包含下列 CGA 注释并支持此操作时可用:@StartRule @Out (granularity=separatedShapes).

  • 使用导出叶形状参数生成叶形状时,将在相同的位置上创建由要素类组成的标准集合作为主输出多面体要素类,并具有如下命名约定:<outputFC_Points><outputFC_MPoints><outputFC_Lines>。所有输出要素类均包含名为 OriginalOID 的属性字段,此属性字段参考生成输出的输入要素 ObjectIDOriginalOID 字段可用于将输出要素类连接到输入要素类。如果报告是使用包括报告参数生成的,那么输出要素类的每个报告也会获得一个属性。

  • 可以将名为 OriginalOID 的字段添加到输出要素类,从而包含已生成各个输出要素的输入要素的 ObjectID。如果输入要素类已经具有名为 OriginalOID 的字段,则可以在此名称后追加数值作为新字段的名称,例如 OriginalOID2

  • 转换期间出现的详细错误或警告会写入到名为 PRT#.txt 的日志文件中(其中 # 是随各个工具运行而递增的数字)。此文件位于 <Install drive>:\Users\<user name>\AppData\Local\ESRI\GeoProcessing

语法

arcpy.3d.FeaturesFromCityEngineRules(in_features, in_rule_package, out_feature_class, {in_existing_fields}, {in_include_reports}, {in_leaf_shapes})
参数说明数据类型
in_features

输入点、面或多面体要素。输入要素可以是按程序符号化的要素图层。将支持字段映射(属性驱动的符号属性)。

Feature Layer
in_rule_package

包含 CGA 规则信息和资源的 CityEngine 规则包 (*.rpk) 文件。对于用于点要素的规则包,应将 CityEngine 规则包 (.rpk) 文件内使用 @StartRule 注释的规则注释为 @InPoint,对于用于面要素的规则包,应注释为 @InPolygon,对于用于多面体要素的规则包,应注释为 @InMesh。如果 @StartRule 未使用 @InPoint@InPolygon@InMesh 进行注释,将假设要素类型为面。

File
out_feature_class

包含应用 CGA 规则生成的多面体要素的输出要素类。可以将名为 OriginalOID 的字段添加到输出要素类,从而包含已生成各个输出要素的输入要素的 ObjectID。

Feature Class
in_existing_fields
(可选)

控制输出要素类是否继承输入要素类的属性字段。使用 in_leaf_shapes 参数时,此参数不在考虑范围之内。

  • INCLUDE_EXISTING_FIELDS输出要素类中将包含输入要素类的属性字段。这是默认设置。
  • DROP_EXISTING_FIELDS不会向输出要素类添加任何源自输入要素类的属性字段。如果 in_leaf_shapes 参数设置为 'FEATURE_PER_LEAF_SHAPE',则将自动使用此选项。
Boolean
in_include_reports
(可选)

根据创建规则包的方法,报告可能包含创建模型时生成一个或多个报告的逻辑。这些报告可以包含有关要素的各种信息。例如,报告为每个建筑模型生成的窗口数的规则包。如果规则包不包含生成报告的逻辑,将会忽略此参数。

  • INCLUDE_REPORTS按照规则包报告生成逻辑,为输出要素类创建新属性字段以包含每个要素的已报告值。为每个报告值创建唯一的属性。
  • EXCLUDE_REPORTS将会忽略在规则包中生成的报告,且不会创建与这些报告相关的任何新属性。这是默认设置。
Boolean
in_leaf_shapes
(可选)

CityEngine 规则包通过生成组件部分并将其合并至单个的 3D 对象来构建内容。然而,它还能将这些组件或叶形状存储为独立的要素。此选项对于运行针对 3D 对象子元素(如建筑物的窗户)的分析操作特别重要。

此参数可确定每个输入要素是否为下列选项之一:

  • 转换为单个、合并的、多面体要素
  • 成为多个要素(可能是点、线或多面体)的集合

例如,某规则可能使用输入面轮廓线生成无缝建筑物模型,或者为每个公寓面(包括朝外的面板、代表中心的点以及显示边界的线)创建单独的要素。在本示例中,应将公寓面板、中心点和轮廓均视为叶形状。

  • FEATURE_PER_LEAF_SHAPE系统将生成其他输出要素类。这是默认设置。输出要素类中不包括输入要素类的属性字段。输出要素类包含名为 OriginalOID 的字段,此字段引用了生成输出的输入要素 ObjectID
  • FEATURE_PER_SHAPE即使在规则的逻辑中定义了附加叶形状,也不会生成附加输出要素类。几何的所有组成部分均包含在输出多面体要素中。
Boolean

派生输出

名称说明数据类型
out_points

生成叶形状时,将在与主输出多面体要素类相同的位置创建输出点要素类。

要素类
out_lines

生成叶形状时,将在与主输出多面体要素类相同的位置创建输出折线要素类。

要素类
out_multipoints

生成叶形状时,将在与主输出多面体要素类相同的位置创建输出面要素类。

要素类

代码示例

FeaturesFromCityEngineRules 示例(Python 窗口)

以下 Python 窗口脚本演示了如何在即时模式下使用 FeaturesFromCityEngineRules 工具:

import arcpy
from arcpy import env
arcpy.CheckOutExtension("3D")
env.workspace = "C:/data"
arcpy.FeaturesFromCityEngineRules_3d("in_polygons", 
                                     "rules.rpk", 
                                     "out_multipatches")

环境

此工具不使用任何地理处理环境。

许可信息

  • Basic: 需要 3D Analyst
  • Standard: 需要 3D Analyst
  • Advanced: 需要 3D Analyst

相关主题