属性规则字典关键字

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

注:

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

结果

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

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

当在属性规则中定义了目标字段并且您将返回 result 作为字典时,请记住以下几点:

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

ArcGIS Pro 2.7 或 ArcGIS Enterprise 10.9 及更高版本支持在 result 关键字中使用字典。

关键字参数描述

属性

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

几何

编辑几何。 值为几何对象

return {
    //result is a single value
    //set the attribute rule target field to 200 for $feature
    'result': 200
}
return {
    //result is a dictionary
    //set 'field1', 'field2', and the geometry for $feature
    //ArcGIS Pro 2.7 or ArcGIS Enterprise 10.9 and later
    "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

将修改的对象 ID 或全局 ID 数组。 此参数为必填项。

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

validationRequired

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

关键字参数描述

className

已修改要素类或表的名称。 此参数为必填项。

objectID | globalID

将修改的对象 ID 或全局 ID 数组。 此参数为必填项。

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关联

可能的值包括:

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

下面是 ArcGIS Utility Network 版本 4 及更高版本的其他可能值:

  • junctionEdgeFrom
  • junctionEdgeTo
  • midspan

fromTerminal

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

toTerminal

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

isContentVisible

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

percentAlong

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

tag

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

注:

ArcGIS Pro 2.7 或 ArcGIS Enterprise 10.9 及更高版本支持此参数。

className 设置为 ^UN_Association 时,使用以下关键字参数添加关联。

关键字参数描述

fromClass

参与关联的“自”要素或对象类的名称。 此参数为必填项。

fromGlobalID

“自”要素或对象的全局 ID。 此参数为必填项。

toClass

参与关联的“至”要素或对象类的名称。 此参数为必填项。

toGlobalID

“至”要素或对象的全局 ID。 此参数为必填项。

associationType

公共设施网络中,要素之间的关联类型。 此参数为必填项。

可能的值包括:

  • 连通性
  • 包含
  • 附件

下面是 ArcGIS Utility Network 版本 4 及更高版本的其他可能值:

  • junctionEdgeFrom
  • junctionEdgeTo
  • midspan

fromTerminal

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

toTerminal

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

isContentVisible

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

percentAlong

当 associationType 值为 midspan 时,沿线或边的百分比。 值为介于 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 a midspan association to the $feature
        "percentAlong": 0.5,
        "associationType": 'midspan'
    }]
}]
}
//$feature is an edge object in the utility network
//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 and create an attachment association between the new junction objects
        "adds": [{
            "fromClass": "StructureJunctionObject",
            "fromGlobalId": "jo1.globalID",
            "toClass": "StructureJunctionObject",
            "toGlobalId": "jo2.globalID",
            "associationType": "attachment"
        }]
    }]
}

更新

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

关键字参数描述

objectID | globalID

将编辑的要素的对象 ID 或全局 ID 值。 此参数为必填项。

属性

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

几何

编辑几何。 值为几何对象

associationType

公共设施网络中编辑要素的关联

可能的值包括:

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

下面是 ArcGIS Utility Network 版本 4 及更高版本的其他可能值:

  • junctionEdgeFrom
  • junctionEdgeTo
  • midspan

fromTerminal

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

toTerminal

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

isContentVisible

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

percentAlong

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

className 设置为 ^UN_Association 时,使用以下关键字参数更新关联。

关键字参数描述

isContentVisible

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

percentAlong

当 associationType 值为 midspan 时,沿线或边的百分比。 值为介于 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

将删除的要素的对象 ID 或全局 ID 值。 此参数为必填项。

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