条件值(有时也称为条件属性值)是一种数据设计要素,用于使一个字段中的值取决于另一个字段中的值。通过属性域,您可以将字段上的有效条目限制为一组值的列表或范围。条件值进一步扩展了此模型,方法为通过针对一个字段选择值,从而进一步限制另一个字段上可用的域值。通过这种方式,条件值可通过应用附加约束以减少有效字段输入的数量来强制保持数据完整性。在 GIS 中对实际部分和资产进行建模时,这将非常有用,尤其对于公共事业机构尤其有用。这对于创建决策树或调查问题也非常有用,因为在这些情境中进行选择将决定下一组有效选择。
警告:
在表或要素类上创建条件值时,会导致表或要素类与 ArcMap 以及 ArcGIS Pro 2.3 和 ArcGIS Enterprise 10.7.x 之前的版本不兼容。有关客户端版本与地理数据库版本不同时提供的功能的详细信息,请参考客户端和地理数据库的兼容性。
条件值应用的一个相关示例是购买车辆。
决策树可能如下所示:选择汽车品牌 > 车型 > 内饰等级 > 颜色
首先,您将选择汽车品牌,例如 Honda。
根据选择的品牌,将提供多款车型。
对于 Honda,可以选择 Pilot、CRV、Accord 和 Civic。
对于 Toyota,提供的车型列表可能会有所不同。
然后,基于您选择的车型,将提供多种内饰等级。
对于 Honda Pilot,可以选择 LX、EX-L、Sport 和 Touring。
对于您选择的内饰等级,将提供多种颜色,例如红色、蓝色、黑色和白色。
决策树中的每个选择将根据您之前选择的内容提供一个选项列表。选择不同的汽车品牌将产生一组不同的可选车型。您选择的车型决定了可选择的内饰等级,并且每个内饰等级可能具有一组不同的颜色选项。您的最终选择可能是 Honda > Pilot > EX-L > 白色,或者是 Toyota > 4Runner > TRD Sport > Inferno,具体取决于您在每个阶段选择的内容。
借助条件值,您可以在数据中设置这些类型的字段依赖关系,通过选择一个字段中的值来定义和限制另一个字段的有效值列表。
对于真实 GIS 示例,请考虑公共设施网络资产包中的 StructureJunction 要素类。对于结构交汇点,存在一个点要素类,其中包括诸如电线杆、检修孔、平台等资产子类型。
对于 Pole 子类型,已将属性域应用于 3 个字段。属性域将每个字段的可用值限定为有效值的列表。例如,电线杆可以为 1 类、2 类 或 3 类电线杆;电线杆的材料可以为纤维玻璃、木材或钢;电线杆的高度可以为 30 英尺、35 英尺、40 英尺、45 英尺等。
要进一步限制这组字段的有效值,可以使用条件值。例如,可以使用条件值定义 1 类电线杆,材料仅使用纤维玻璃,并且高度限制为 30、35、40 或 45 英尺。
针对 Pole 子类型,请考虑您希望在字段值之间设置的条件。对于这组字段(类、材料和高度),可以设置如下条件:
字段 | 条件值 | 条件值 | 条件值 |
---|---|---|---|
类别 | 1 | 2 | 3 |
材料 | 玻璃钢 | 木材 | 钢 |
Height | 30, 35, 40, 45 | 30, 35, 40, 45 | 50, 55, 60, 65 |
创建这些条件值之后,如果放置新的电线杆要素或者修改现有电线杆要素,并将其指定为 1 类电线杆,则 Material 字段的可用值将会限制为 Fiberglass。同样,对于 Class 1 Fiberglass 电线杆,其高度的有效值将限制为 30、35、40 或 45.
以相同方式在数据中构建条件值可以进一步限制字段集的有效值,并且可以更有效地管理数据的有效性和完整性。
为条件值准备数据
为表或要素类中的字段组创建条件值。在创建条件值之前,应使用包含有效值的列表或范围的相应属性域来设置这些字段。
在以上电线杆示例中,条件值位于三个字段(Class、Material 和 Height)构成的组中。每个字段已分配相应的属性域。例如,Material 字段的属性域包含 Fiberglass、Wood 和 Steel 材料类型。正确设置属性域值、将属性域分配给其相应字段并确定了用于创建条件的字段组后,您需要在属性域值之间创建条件。
要在表或要素类上创建条件值,您需要执行以下操作:
- 创建具有有效值列表或范围的属性域。
- 将这些属性域分配给要素类或表的对应字段。
- 在要素类或表上打开“条件值”视图。
- 创建一个包含要设置条件值的字段的字段组。
- 在该字段组的字段中创建条件值。
打开“条件值”视图
您可以在“条件值”视图中创建、删除和管理条件值。
通过执行以下任意操作可以打开“条件值”视图:
- 右键单击目录窗格中的表或要素类,指向设计,然后单击条件值。
- 右键单击内容窗格中的表或要素类,指向设计,然后单击条件值。
- 在内容窗格中选择一个图层或表后,单击要素图层或独立表上下文选项卡的数据功能区上的条件值按钮。视图随即切换为条件值视图。
- 在“字段”视图中,单击字段功能区上的条件值按钮。视图随即切换为“条件值”视图。
- 在“子类型”视图中,单击子类型功能区上的条件值按钮。视图随即切换为“条件值”视图。
注:
如果首次在表或要素类上打开了“条件值”视图,并且未设置条件值,则系统将提示您先创建字段组。
“条件值”功能区
“条件值”视图本身具有用于创建和管理条件值的功能区以及用于切换至其他数据设计视图的按钮。
条件值功能区包含以下各组:
- 剪贴板将为粘贴、复制、剪切和删除提供标准剪贴板选项。
- 设计将提供用于打开其他数据设计视图的按钮,其中包括:
- 字段
- 子类型
- 属性域
- 属性规则
- 字段组将提供用于打开字段组对话框的按钮。
- 条件值将提供用于创建和管理条件值的按钮,其中包括:
- 新建 - 如果视图中存在活动字段组,则将添加一行,在该字段组的字段上创建条件值。
- 导入 - 从逗号分隔值 (.csv) 文件导入字段组和条件值。
- 导出 - 将字段组和条件值导出到逗号分隔值 (.csv) 文件。
- 停用值 - 用于将高亮显示的行设置为已停用条件值。停用值在用户界面的其他位置仍然可见,例如属性窗格中的字段值,但是无法选择这些值。
- 切换值 ID - 视图中每行都具有一个内部管理的值 ID。单击此按钮可以切换在数据格网中是否可见。
- 切换编码/描述 - 单击此按钮可以切换数据格网中的字段值是显示属性域编码还是显示其描述。
- 保存 - 单击保存之前,在“条件值”视图中进行的所有更改都将保存在内存中。
创建字段组
在要素类或表的字段中创建条件值之前,必须创建字段组。字段组是表或要素类中的指定字段集合。在以上电线杆示例中,存在一个包含电线杆类、材料和高度的字段组。创建字段组后,您可以开始将条件分配给该组中的字段值。
要创建字段组,请执行以下操作:
- 单击条件值功能区中的字段组按钮。
随即出现字段组对话框。
- 在名称部分中,单击单击此处添加新字段组文本。
随即创建一个名为 Field_Group 的新字段组。可以选择对此字段组进行重命名。
- 单击添加字段下拉菜单。
将列出表或要素类中的所有字段。
- 选择要参与字段组的字段,然后单击添加按钮。
- 可以使用列表顶部的搜索文本框来查找特定字段。
- 要将所有字段添加到字段组,请单击全选,然后单击添加。
- 通过选中或取消选中限制性复选框指定字段组是否具有限制性。
- 如果选中,将创建限制性字段组,并且在字段组中的字段上输入的值将限制为指定为条件值的值。默认情况下,字段组需要具有限制性,才能在使用条件值时控制编辑体验。
- 要禁用限制性设置,请取消选中限制性复选框。取消选中此复选框后,创建的字段组将不具限制性,从而可以将未指定为条件值的值提交到字段组。
- 单击确定创建字段组。
提示:
可以在键盘上使用以下快捷键来导航字段组对话框:- Ctrl+N - 创建新字段组。
- Alt+G - 将指针放置在对话框顶部的字段组数据格网中。
- Alt+A - 将指针放置在添加字段下拉菜单中。
- Alt+F - 将指针放置在对话框底部的字段数据格网中。
创建条件值
创建字段组后,可以为参与字段创建条件值。
如果您在“条件值”视图中使用的表或要素类具有多个与其相关联的字段组,则通过单击字段组下拉菜单并选择其他字段组,可以在这些字段组之间进行切换。
如果您在“条件值”视图中使用的表或要素类具有子类型,则可以使用子类型下拉菜单在这些子类型之间进行切换。由此,可以不同方式为每个子类型的字段设置条件值。在开始之前,请确保已在子类型视图中子类型级别的字段应用所有属性域。
- 要在字段组中创建条件值,请单击功能区上的新建按钮,或单击空行中显示单击以添加条件值的位置。
- 针对字段组中的每个字段,从下拉菜单中选择一个字段值。
<ANY> 和 <NULL> 值也可以作为下拉菜单中的条件值进行添加。<ANY> 始终可用(即使要添加条件值的字段未应用属性域),而 <NULL> 在字段允许空值时可用。
- <ANY> - 添加条件值 <ANY> 意味着在字段上放置的任何值都将视为有效。
- <NULL> - 添加条件值 <NULL> 意味着在字段上放置空值将视为有效。
- 针对要创建的所有条件重复步骤 1 和 2。完成后,请单击保存以保存更改。
注:
当活动地图中有未保存的编辑时,保存按钮将处于禁用状态,系统将通过信息通栏提醒您。要再次启用保存按钮,必须先保存或放弃地图中的编辑。对于以上电线杆示例,在名为 Poles Contingency 的字段组中,条件值集将如下所示:
针对数据准备了条件值后,如果在编辑过程中(例如,在属性窗格或“属性表”视图中)在字段上放置了值,则将在应用程序中强制应用您已创建的限制。
了解有关如何编辑具有条件值的字段的详细信息。
停用条件值
在某些情况下,您可能需要停用条件值。停用条件值时,其将仍会显示在诸如属性窗格等位置的字段的有效值列表中,但是其不可用并且无法选择其作为字段值。例如,您的组织不再使用石棉作为建筑材料,但是在有些地方已将石棉用于当前资产。这意味着,它仍为有效值,并且可能已放置在某些要素的建筑材料字段中,但是从现在起,您将不会使用它。为防止在其他字段中使用该值,您可以停用该值。
要停用条件值,请选择要停用的行,然后单击功能区上的停用值按钮。
如果该值再次变为有效,则可以通过选择行并单击停用值按钮来取消停用条件值。
导出和导入条件值
当共享任何给定表或要素类的条件值和字段组以及创建备份时,或当对生产数据库进行更新,而不将其广泛锁定以进行方案编辑时,导出和导入可能非常有用。
可使用条件值功能区上的导出工具或导出条件值地理处理工具,将字段组和或条件值导出为逗号分隔值 (.csv) 文件。然后,可以在编辑应用程序(例如 Excel)中打开 .csv 文件以进行查看或做出更改。
同样,可使用条件值功能区上的导入工具或导入条件值地理处理工具,从逗号分隔值 (.csv) 文件导入字段组和或条件值。此时,可以选择使用所选表或要素类中的现有条件值覆盖或合并任何更改。导入后,可以查看“条件值”视图中的所有更改,并在完成任何更新后进行保存。
导出和导入过程使用 2 个 .csv 文件:一个针对字段组,其中包含有关参与字段的信息;另一个针对条件值,其中详细介绍各种元数据,包括类型、值和定义值的描述。可使用条件值功能区上的切换值 ID 和切换编码/描述按钮显示值 ID 和条件值的属性域编码。这些工具可以在处理导出的文件时帮助进行字段映射。有关这些文件格式的更多详细信息,请参考导出条件值。