属性规则字典关键字

字典关键字用于显示属性规则功能的高级行为,例如在条件语句中返回自定义错误消息或对其他要素类中的要素执行编辑。 在为属性规则创作 ArcGIS Arcade 表达式时,返回字典类型必须使用下面列出的保留关键字之一。 要执行多个操作,请使用不同的关键字扩展字典。 要了解有关如何使用这些字典关键字的详细信息,请参阅属性规则脚本表达式示例

注:

在定义 globalID 关键字参数时,请确保用单引号将该值括起来。

结果

将提供该要素的单一值或字典的返回。 您只能将此关键字与计算规则配合使用。

在使用 result 关键字返回单一值时,必须在属性规则中定义目标字段以更新正确的字段。 可以返回 result 作为字典以更新要素的多个字段。 在返回 result 作为字典时,属性规则中的目标字段为可选项。 可以使用下表中的关键字参数指定字典中任何待更新字段。

当在属性规则中定义了目标字段并且您将返回 result 作为字典时:

  • 如果目标字段位于字典中,则将使用字典中定义的值来更新目标字段。
  • 如果字典中省略了目标字段,则不会对目标字段进行任何更改。
警告:

ArcGIS Pro 3.1ArcGIS Enterprise 10.9 及更高版本在属性规则中支持 result 的关键字参数。

关键字参数描述

属性

编辑指定字段。 值为字段名称的字典和属性对。

几何

编辑几何。 值为几何对象

return {
    //result is a single value
    'result': 200
}
return {
    //result is a dictionary
    "result": {
        "attributes": {
            "field1": 'field1', //updates field1 in the $feature 
            "field2": 11 //updates field2 in the $feature 
        },
        "geometry": Rotate($feature) //updates geometry in $feature
    }

}

errorMessage

针对评估期间的失败,指定用户定义的错误消息。 在 Arcade 表达式中创建逻辑语句以返回自定义错误消息时,请使用 errorMessage 关键字。 如果返回 errorMessage,则无法使用其他字典关键字。 查看有关如何返回自定义错误消息的示例。

return {
    "errorMessage": "Error message text"
}

calculationRequired

将其他要素标记为需要评估批处理计算规则。 使用此关键字时,相应的一个或多个要素可通过修改验证状态属性标记为需要计算。 此关键字只能与计算规则搭配使用,并且从应用程序评估中排除选项必须设置为 true。 查看有关如何将其他要素标记为需要评估的示例。

关键字参数描述

className

(必填)要修改的要素类或表的名称。 值为要素类名称。

objectID | globalID

(必填)要修改的 ObjectID 或 GlobalID 数组。 值为 ObjectID 或 GlobalID 数组。

return {
    'calculationRequired': [{
        'classname': 'featureclass_name',
        'globalIDs': ['{8B421724-32D0-408A-A8EE-CCC2B064D52B}']
    }]
}

validationRequired

将其他要素标记为需要评估验证规则。 使用此关键字时,相应的要素可通过修改验证状态属性标记为需要验证。 此关键字只能与计算规则搭配使用,并且从应用程序评估中排除选项必须设置为 true。 查看有关如何将其他要素标记为需要评估的示例。

关键字参数描述

className

(必填)要修改的要素类或表的名称。 值为要素类名称。

objectID | globalID

(必填)要修改的 ObjectID 或 GlobalID 数组。 值为 ObjectID 或 GlobalID 数组。

return {
    'validationRequired': [{
        'classname': 'featureclass_name',
        'globalIDs': ['{60905A3D-9783-435D-B4C9-AA4ADA59AD32}']
    }]
}

编辑

在指定的要素类中执行插入、更新和删除要素。 edit 关键字只能与计算规则配合使用,并且从应用程序评估中排除选项必须设置为 true。 查看有关如何编辑其他要素类的示例。

对于公共设施网络,您可以使用 edit 关键字来编辑使用 associationType 关键字的 $feature 的关联。 要编辑公共设施网络中的任何关联,请将 className 值设置为 ^UN_Association。 借助 ^UN_Association,您可以访问公共设施网络关联表,从而在针对 addsupdates 使用关联的关键字参数时,能够编辑要素之间的任何关联。

如果使用编辑关键字执行关联编辑,则在评估过程中将不考虑公共设施网络规则。 将在网络拓扑任务(例如启用或验证网络拓扑)过程中验证网络要素。

了解有关公共设施网络关联的详细信息

关键字参数描述

className

(必填)要修改的要素类或表的名称。 值为要素类名称。

adds | updates | deletes

要创建的编辑类型。 值为字典数组,详细说明了每种编辑类型的编辑。

注:

请勿创建用于执行递归编辑的脚本。 如果脚本配置为执行触发或评估属性规则的编辑,则将创建一个无限循环。 这将导致意外结果。

adds

edit 字典内使用的关键字,用于对指定要素类或表执行插入。

关键字参数描述

属性

编辑指定字段。 值为字段名称的字典和属性对。

几何

编辑几何。 值为几何对象

associationType

公共设施网络中编辑 $feature关联。 可能的值包括:

  • 连接
  • 容器
  • 内容
  • 结构
  • 已附加

下面是公共设施网络版本 4 及更高版本的其他可能值:

  • junctionEdgeFrom
  • junctionEdgeTo
  • midspan

fromTerminal

当 associationType 值为 connected、junctionEdgeFrom 或 junctionEdgeTo 时,要编辑的“自”终端。 值为终端名称。

toTerminal

当 associationType 值为 connected、junctionEdgeFrom 或 junctionEdgeTo 时,要编辑的“至”终端。 值为终端名称。

isContentVisible

指定内容是否对包含关联可见。 值为 true 或 false。

percentAlong

associationType 为中跨时,沿线或边的百分比。 值为介于 0 到 1 之间的百分比。

tag

为尚未创建的要素或记录设置标签。 在编辑 ^UN_Association 时,可以在 edit 字典的其他部分中引用标签值,例如 fromGlobalID 或 toGlobalID 关键字。 该值是唯一的字符串。

注:

ArcGIS Pro 3.1ArcGIS Enterprise 10.9 及更高版本支持使用该标签。

className 设置为 ^UN_Association 时,用于添加关联的关键字参数。

关键字参数描述

fromClass

(必填)参与关联的要素或对象类名称。

fromGlobalID

(必填)要素或对象的 GlobalID。

toClass

(必填)参与关联的要素或对象类名称。

toGlobalID

(必填)要素或对象的 GlobalID。

associationType

(必填)公共设施网络中,要素之间的关联类型。 可能的值包括:

  • 连通性
  • 包含
  • 附件

下面是公共设施网络版本 4 及更高版本的其他可能值:

  • junctionEdgeFrom
  • junctionEdgeTo
  • midspan

fromTerminal

连通性关联的“自”终端。 值为终端名称。

toTerminal

连通性关联的“至”终端。 值为终端名称。

isContentVisible

指定内容是否对包含关联可见。 值为 true 或 false。

percentAlong

associationType 为中跨时,沿线或边的百分比。 值为介于 0 到 1 之间的百分比。

return {
    'edit': [{
        'className': 'b_edit_dict',
        'adds': [{
            'attributes': {
                'field_name': 11
            },
            'geometry': Geometry({
                'x': -76.8375008,
                'y': 39.4949383,
                'spatialReference': {
                    'wkid': 4326
                }
            })
        }]
    }]
}
"edit": [{
    "className": "ElectricDistributionJunctionObject",
    "adds": [{ //adds a new Electric Distribution Junction Object and creates and midspan association to the $feature
        "percentAlong": 0.5,
        "associationType": 'midspan'
    }]
}]
}
//$feature is an edge object in the utility network
//The arcade will add two junction objects and associate them to the $feature
//The junction object with asset group 5 and asset type 1 has a terminal configuration of High/Low
return {
    "result": $feature.assetid,
    "edit": [{
        "className": "ElectricDistributionJunctionObject",
        "adds": [{
            "attributes": { //Adds a junction object
                "assetgroup": 5,
                "assettype": 1
            }, //create a connectivity association between the $feature and junction object
            "toTerminal": "High", //to the high side terminal of the junction object
            "associationType": "junctionEdgeFrom" //on the from side of the edge object
        }, {
            "attributes": { //Adds a junction object
                "assetgroup": 5,
                "assettype": 1
            }, //create a connectivity association between the $feature and junction object
            "toTerminal": "High", //to the high side terminal of the junction object
            "associationType": "junctionEdgeTo" //on the to side of the edge object
        }]
    }]
}
return { //creates two new Structure Junction Objects and creates an association between them using a tag
    "edit": [{
        //create two junction objects and identify them uniquely with a tag
        "className": "StructureJunctionObject",
        "adds": [{
            "tag": "jo1", //unique identifier for new feature in the Structure Junction Object class
            "attributes": {
                "AssetGroup": 1,
                "AssetType": 2
            }
        }, {
            "tag": "jo2", //unique identifier for new feature in the Structure Junction Object class
            "attributes": {
                "AssetGroup": 1,
                "AssetType": 2
            }
        }]
    }, {
        "className": "^UN_Association", //edit the association table create a attachment association between the new junction objects
        "adds": [{
            "fromClass": "StructureJunctionObject",
            "fromGlobalId": "jo1.globalID",
            "toClass": "StructureJunctionObject",
            "toGlobalId": "jo2.globalID",
            "associationType": "attachment"
        }]
    }]
}

更新

edit 字典内使用的关键字,用于对指定要素类或表执行更新。

关键字参数描述

objectID | globalID

(必填)要编辑的要素的 ObjectID 或 GlobalID 值。 值为 ObjectID 或 GlobalID。

属性

编辑指定字段。 值为字段名称的字典和属性对。

几何

编辑几何。 值为几何对象

associationType

公共设施网络中编辑要素的关联。 可能的值包括:

  • 连接
  • 容器
  • 内容
  • 结构
  • 已附加

下面是公共设施网络版本 4 及更高版本的其他可能值:

  • junctionEdgeFrom
  • junctionEdgeTo
  • midspan

fromTerminal

当 associationType 值为 connected、junctionEdgeFrom 或 junctionEdgeTo 时,要编辑的“自”终端。 值为终端名称。

toTerminal

当 associationType 值为 connected、junctionEdgeFrom 或 junctionEdgeTo 时,要编辑的“至”终端。 值为终端名称。

isContentVisible

指定内容是否对包含关联可见。 值为 true 或 false。

percentAlong

associationType 为中跨时,沿线或边的百分比。 值为介于 0 到 1 之间的百分比。

className 设置为 ^UN_Association 时,用于更新关联的关键字参数。

关键字参数描述

isContentVisible

指定内容是否对包含关联可见。 值为 true 或 false。

percentAlong

associationType 为中跨时,沿线或边的百分比。 值为介于 0 到 1 之间的百分比。

return {
    'edit': [{
        'className': 'b_edit_dict',
        'updates': [{
            'globalID': '{7EBAB596-E9DB-40D8-9756-B2EBED2500B7}',
            'attributes': {
                'field_name': 22
            }
        }]
    }]
}
return {
    "result": $feature.assetid,
    "edit": [{
        "className": "electricdistributionassembly",
        "updates": [{
            "objectID": feature_objectid,
            "associationType": 'container'
        }]
    }]
}

deletes

edit 字典内使用的关键字,用于在要素类或表中执行删除。

关键字参数描述

objectID | globalID

(必填)要编辑的要素的 ObjectID 或 GlobalID 值。 值为 ObjectID 或 GlobalID。

return {
    'edit': [{
        'className': 'b_edit_dict',
          'deletes': [{
            'objectID': 22
        }]
    }]
}