计算规则可用于自动填充要素上的属性配置。可以将其创建为实时计算规则或批处理计算规则,具体取决于需要为规则赋值的时间,如下所示:
可以将与计算规则关联的属性字段配置为允许用户编辑或者为只读。创建计算规则时,可编辑复选框位于应用此属性的输入字段的下方,如下所示:
- 选中 - 允许字段进行用户定义的属性编辑。根据规则定义,用户对此字段的输入可通过为属性规则赋值进行覆盖。
- 未选中 - 不允许使用用户定义的属性编辑,且规则创建所依据的属性字段被定义为系统维护字段。在于规则内定义的触发事件过程中,将应用计算规则。
警告:
将用户定义字段设置为系统维护字段后,无法对其进行更改。
实时计算规则
在编辑操作过程中,基于某些触发事件而进行赋值的计算规则称为实时计算规则。这种类型的计算规则可用于进行相应编辑时,需要自动执行计算的工作流中。
通过单击计算规则下拉按钮 并单击实时计算 ,可以在属性规则视图中创建实时计算规则。也可以使用添加属性规则工具(批处理选项设置为 false)或导入属性规则工具创建这种规则类型。可以在文件或企业级地理数据库的数据集上创建实时计算规则。
执行编辑操作时,将基于特定触发事件来为实时计算规则赋值。触发事件(插入、更新或删除)将指定为规则属性。
批处理计算规则
在用户指定时间进行赋值的计算规则称为批处理计算规则。这种类型的计算规则适用于以下情况:希望对现有要素执行计算或者需要控制为规则赋值的时间。例如,如果在执行编辑操作时执行计算的成本过高,则需要使用此类型的计算规则。
已在企业级地理数据库的数据集上配置批处理计算规则。必须在地理数据库连接属性中将工作空间设置为分支。
注:
点、线、面要素类或表仅支持批量计算和验证属性规则。通过单击计算规则下拉按钮 并单击批处理计算 ,可以在属性规则视图中创建批处理计算规则。也可以使用添加属性规则工具(批处理选项设置为 true)或导入属性规则工具创建这种规则类型。
要为数据集的批处理计算规则赋值,可以使用赋值规则工具或错误检查器。数据源必须来自启用了验证功能的要素服务。
以下是配置和评估批处理计算规则所涉及的一般步骤:
有关详细信息,请参阅共享包含属性规则的数据集和赋值属性规则。
赋值顺序
为规则赋值时,顺序可以控制规则赋值的序列。对于计算规则,数据集上的规则赋值顺序非常重要,因为顺序会导致规则赋值的结果有所不同。
当针对要存储的要素计算其他字段的依赖项时,赋值顺序非常重要。下图说明了两个计算规则的结果如何根据规则的赋值顺序不同而有所不同:
赋值顺序是属性规则的一个属性,可以使用属性规则视图进行查看,也可以使用 arcpy.Describe 函数打印属性规则属性。赋值顺序最初由针对数据集创建规则的顺序决定,并存储为从 1 开始的整数值。创建新规则后,顺序将加 1。实时计算规则和批处理计算规则将独立地维护其赋值顺序。
“属性规则”视图将根据实时和批处理部分中的赋值顺序列出计算规则。要更改赋值顺序,请编辑属性规则视图中的顺序列,或使用重新排序属性规则工具。
如果数据集包含多个属性规则,则执行还会遵循特定顺序,具体取决于规则类型。有关详细信息,请参阅为属性规则赋值。
示例
以下是说明如何在地理数据库中使用计算属性规则的示例:
- 将文本字段值数组连接到指定字段。
- 当管道的 LifeCycleStatus 属性更新为 Abandoned 时,PressureZone 属性更新为 None。
- 当电线杆的长度大于 65 英尺时,材料值将按钢材来计算。
- 创建新电线杆时,将根据序列 assetid_seq 生成文本值。
提示:
创建计算规则时,请确保脚本表达式结果使用的数据类型与正在进行计算的字段的数据类型相同。有关创作属性规则类型的需求和全局变量,请参阅 Arcade 配置文件。在开始构建属性规则的脚本表达式时,可以将 Arcade 入门指南和函数索引用作附加资源。