计算属性规则

计算规则可用于自动填充要素上的属性配置。 可以将其创建为实时计算规则或批处理计算规则,具体取决于需要为规则赋值的时间,如下所示:

  • 实时计算规则 - 编辑操作期间实时进行规则评估。 借助在创建规则过程中指定的触发事件类型,可以基于插入、更新或删除操作进行规则赋值。
  • 批处理计算规则 - 在用户指定的时间进行规则评估。

可以将与计算规则关联的属性字段配置为允许用户编辑或者为只读。 创建计算规则时,可编辑复选框位于应用此属性的输入字段的下方,如下所示:

  • 选中 - 允许字段进行用户定义的属性编辑。 根据规则定义,用户对此字段的输入可通过为属性规则赋值进行覆盖。
  • 未选中 - 不允许使用用户定义的属性编辑,且规则创建所依据的属性字段被定义为系统维护字段。 在于规则内定义的触发事件过程中,将应用计算规则。
    警告:
    将用户定义字段设置为系统维护字段后,无法对其进行更改。

以下视频演示了如何创建实时计算规则。

Play Video

  • 此视频是使用 ArcGIS Pro 3.2 创建的。

实时计算规则

在编辑操作过程中,基于某些触发事件而进行赋值的计算规则称为实时计算规则。 这种类型的计算规则可用于进行相应编辑时,需要自动执行计算的工作流中。

通过单击计算规则下拉按钮 计算规则 并单击实时计算 计算规则,可以在属性规则视图中创建实时计算规则。 您也可以使用添加属性规则工具(批处理选项设置为 false)或导入属性规则工具创建这种规则类型。

执行编辑操作时,将基于特定触发事件来为实时计算规则赋值。 触发事件(插入、更新或删除)将指定为规则属性。

抢先版本:

使用立即计算规则可能不会观察到要删除的记录的直接数据更改。 但是,根据 Arcade 脚本,可能会观察到其他高级属性规则功能,例如使用删除触发器编辑其他要素。 有关详细信息,请参阅属性规则字典关键字

批处理计算规则

用户指定时间进行赋值的计算规则称为批处理计算规则。 这种类型的计算规则适用于以下情况:希望对现有要素执行计算或者需要控制为规则赋值的时间。 例如,如果在执行编辑操作时执行计算的成本过高,则需要使用此类型的计算规则。

注:
点、线、面要素类或表仅支持批量计算和验证属性规则。 对于企业级地理数据库,仅分支版本化数据集支持这些规则类型。

通过单击计算规则下拉按钮 计算规则 并单击批处理计算 批处理计算,可以在属性规则视图中创建批处理计算规则。 您也可以使用添加属性规则工具(批处理选项设置为 true)或导入属性规则工具创建这种规则类型。

要评估数据集的批处理计算规则,可以使用评估规则工具或错误检查器

注:
用于评估批次计算和验证规则的输入工作空间取决于 地理数据库类型,具有属性规则的数据集存储于:
  • 文件或移动地理数据库 - 地理数据库是要评估的输入工作空间。
  • 企业级地理数据库 - 要素服务与验证功能作为要评估的输入工作空间。 如果将相同的数据集发布到多个服务,请注意默认版本可能共享错误的图层和验证状态属性。

以下是为企业级地理数据库中的数据集配置和评估批处理计算规则所涉及的一般步骤:

  • 将数据集注册为分支版本化。
  • 对于版本化类型,将数据库连接配置为分支。
  • 将属性规则添加到数据集。
  • 将数据集作为 web 要素图层共享,并启用验证功能。
  • 编辑 web 要素图层。
  • 使用错误检查器评估规则和检查要素。
  • 查看错误要素并进行编辑以更正错误。
  • 再次评估规则。

有关详细信息,请参阅共享包含属性规则的数据集评估属性规则管理含属性规则错误

赋值顺序

为规则赋值时,顺序可以控制规则赋值的序列。 对于计算规则,数据集上的规则赋值顺序非常重要,因为顺序会导致规则赋值的结果有所不同。

当针对要存储的要素计算其他字段的依赖项时,赋值顺序非常重要。 下图说明了两个计算规则的结果如何根据规则的赋值顺序不同而有所不同:

不同赋值顺序的示例

赋值顺序是属性规则的一个属性,可以使用属性规则视图进行查看,也可以使用 arcpy.Describe 函数打印属性规则属性。 赋值顺序最初由针对数据集创建规则的顺序决定,并存储为从 1 开始的整数值。 创建新规则后,顺序将加 1。 实时计算规则和批处理计算规则将独立地维护其赋值顺序。

“属性规则”视图将根据实时批处理部分中的赋值顺序列出计算规则。 要更改赋值顺序,请编辑属性规则视图中的顺序列,或使用重新排序属性规则工具。

如果数据集包含多个属性规则,则执行还会遵循特定顺序,具体取决于规则类型。 有关详细信息,请参阅为属性规则赋值

示例

以下是说明如何在地理数据库中使用计算属性规则的示例:

  • 将文本字段值数组连接到指定字段。
  • 当管道的 LifeCycleStatus 属性更新为 Abandoned 时,PressureZone 属性更新为 None
  • 当电线杆的长度大于 65 英尺时,材料值将按钢材来计算。
  • 创建新电线杆时,将根据序列 assetid_seq 生成文本值。

提示:
创建计算规则时,请确保脚本表达式结果使用的数据类型与正在进行计算的字段的数据类型相同。

有关创作属性规则类型的需求和全局变量,请参阅 Arcade 配置文件。 您可以将 Arcade 入门指南函数索引用作附加资源,以构建属性规则的脚本表达式。

请参阅属性规则脚本表达式的具体示例