创建和管理条件值

条件值(有时也称为条件属性值)是一种数据设计要素,用于使一个字段中的值取决于另一个字段中的值。 通过属性域,您可以将字段上的有效条目限制为一组值的列表或范围。 条件值进一步扩展了此模型,方法为通过针对一个字段选择值,从而进一步限制另一个字段上可用的域值。 通过这种方式,条件值可通过应用附加约束以减少有效字段输入的数量来强制保持数据完整性。 在 GIS 中对实际部分和资产进行建模时,这将非常有用,尤其对于公共事业机构尤其有用。 这对于创建决策树或调查问题也非常有用,因为在这些情境中进行选择将决定下一组有效选择。

警告:

在表或要素类上创建条件值时,会导致表或要素类与 ArcMap 以及 ArcGIS Pro 2.3ArcGIS 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 子类型

对于 Pole 子类型,已将属性域应用于 3 个字段。 属性域将每个字段的可用值限定为有效值的列表。 例如,电线杆可以为 1 类、2 类 或 3 类电线杆;电线杆的材料可以为纤维玻璃、木材或钢;电线杆的高度可以为 30 英尺、35 英尺、40 英尺、45 英尺等。

要进一步限制这组字段的有效值,可以使用条件值。 例如,可以使用条件值定义 1 类电线杆,材料仅使用纤维玻璃,并且高度限制为 30、35、40 或 45 英尺。

针对 Pole 子类型,请考虑您希望在字段值之间设置的条件。 对于这组字段(类、材料和高度),可以设置如下条件:

字段条件值条件值条件值

1

2

3

Material

Fiberglass

Wood

Steel

高度

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 值。
    • 切换编码/描述 - 在数据格网中的属性域代码或描述之间切换显示。
    • 保存 - 保存在“条件值”视图中进行的所有更改。 在单击保存之前,更改将保存在内存中。

创建字段组

在要素类或表的字段中创建条件值之前,必须创建字段组。 字段组是表或要素类中的指定字段集合。 在以上电线杆示例中,存在一个包含电线杆类、材料和高度的字段组。 创建字段组后,您可以将条件分配给该组中的字段值。

要创建字段组,请执行以下操作:

Play Video

  • 视频长度:0:52
  • 此视频是使用 ArcGIS Pro 3.2 创建的。
  1. 单击条件值选项卡中的字段组按钮。

    随即出现字段组对话框。

  2. 名称部分中,单击单击此处添加新字段组文本。

    随即创建一个名为 Field_Group 的新字段组。 可以选择对此字段组进行重命名。

  3. 单击添加字段下拉菜单。

    将列出表或要素类中的所有字段。

  4. 选择要在字段组中包含的字段,然后单击添加按钮。
    • 可以使用列表顶部的搜索文本框来查找特定字段。
    • 要将所有字段添加到字段组,请单击全选,然后单击添加
  5. 或者,取消选中限制性复选框。
    • 选中 - 将创建限制性字段组,并且在字段组中的字段上输入的值将限制为指定为条件值的值。 默认情况下,字段组需要具有限制性,才能在使用条件值时控制编辑体验。
    • 未选中 - 禁用限制性设置。 取消选中此复选框后,创建的字段组将不具限制性,从而可以将未指定为条件值的值提交到字段组。
  6. 单击确定创建字段组。

提示:
可以在键盘上使用以下快捷键来探索字段组对话框:
  • Ctrl+N - 创建字段组。
  • Alt+G - 将指针放置在对话框顶部的字段组数据格网中。
  • Alt+A - 将指针放置在添加字段下拉菜单中。
  • Alt+F - 将指针放置在对话框底部的字段数据格网中。

创建条件值

创建字段组后,可以为参与字段创建条件值。

如果您在“条件值”视图中使用的表或要素类具有多个与其相关联的字段组,则通过单击字段组下拉菜单并选择其他字段组,可以在这些字段组之间进行切换。

如果您在“条件值”视图中使用的表或要素类具有子类型,则可以使用子类型下拉菜单在这些子类型之间进行切换。 由此,可以不同方式为每个子类型的字段设置条件值。 在开始之前,请确保已在子类型视图中子类型级别的字段应用所有属性域。

要在字段组中创建条件值,请完成以下步骤:

  1. 单击条件值组中的新建按钮,或单击空行中显示单击以添加条件值的位置
  2. 针对字段组中的每个字段,从下拉菜单中选择一个字段值。

    <ANY> 和 <NULL> 值也可以作为下拉菜单中的条件值进行添加。 <ANY> 始终可用(即使要添加条件值的字段未应用属性域),而 <NULL> 在字段允许空值时可用。

    • <ANY> - 添加条件值 <ANY> 意味着在字段上放置的任何值都将视为有效。
    • <NULL> - 添加条件值 <NULL> 意味着在字段上放置空值将视为有效。

  3. 对您正在创建的所有条件值重复步骤 1 和 2。
  4. 注:
    如果应用了子类型,则条件值仅适用于所列出的子类型。 要将条件值应用于其他子类型,需单击子类型下拉箭头,选择另一个子类型,然后重复上述步骤。
  5. 完成后,请单击保存以保存更改。

对于以上电线杆示例,在名为 Poles Contingency 的字段组中,条件值集将如下所示:

电线杆示例的条件值

针对数据准备了条件值后,如果在编辑过程中(例如,在属性窗格或“属性表”视图中)在字段上放置了值,则将在应用程序中强制应用您已创建的限制。

了解有关如何编辑具有条件值的字段的详细信息

停用条件值

您可以停用条件值。 停用条件值时,其将仍会显示在诸如属性窗格等位置的字段的有效值列表中,但是其不可用并且无法选择其作为字段值。 例如,您的组织不再使用石棉作为建筑材料,但是在某些地方已将石棉用于当前资产。 这意味着,它仍为有效值,并且可能存在于某些要素的建筑材料字段中,但是您将不再使用它。 为防止在其他字段中使用该值,您可以停用该值。

要停用条件值,选择要停用的行,然后单击条件值组中的停用值按钮。

要停用条件值,请选择停用的行,然后单击停用值按钮。

在数据集之间复制条件值

为数据集建立条件值后,您可以将其添加到其他数据集中。 您可以通过以下方式在数据集之间复制条件值:

  • 复制和粘贴
  • 导出和导入条件值

复制和粘贴

在“条件值”视图中支持使用键盘快捷键、快捷菜单和剪贴板进行复制和粘贴。 复制和粘贴工作流的前提条件包括目标数据集必须具有字段组,且字段组必须包含匹配的字段数据类型和应用于字段的域。

要将一个数据集中的条件值复制到另一个数据集中,请完成以下步骤:

  1. 打开包含所需条件值的原始数据集的“条件值”视图,以及将要复制条件值的目标数据集。

    随即打开原始数据集和目标数据集的“条件值”视图。

  2. 从原始数据集中选择要复制到目标数据集的条件值。

    条件值将被选中。

  3. 使用剪贴板上的复制、复制的键盘快捷键或快捷菜单中的复制,复制所选的条件值。
  4. 在目标数据集中,选择包含具有匹配属性域和匹配字段数据类型的字段组,并使用剪贴板中的粘贴、粘贴的键盘快捷键或快捷菜单中的粘贴,粘贴条件值。
  5. 单击条件值选项卡中的保存按钮 保存

    条件值将保存在目标数据集中。

导出和导入条件值

当共享表或要素类的条件值和字段组、创建备份,或对生产数据库进行更新,而不将其广泛锁定以进行方案编辑时,导出和导入可能非常有用。 作为从数据集中导出条件值的一部分,将创建两个逗号分隔值文件 (.csv)。 字段组 .csv 文件包含有关参与字段的元数据和信息,而条件值 .csv 文件包含有关条件值组合的元数据。

导出条件值

可使用条件值选项卡上条件值组中的导出按钮或导出条件值地理处理工具,导出字段组和条件值。

要导出数据集的字段组和条件值,请完成以下步骤:

  1. 打开包含要导出条件值的数据集的“条件值”视图

    随即打开数据集的“条件值”视图。

  2. 条件值选项卡上,单击条件值组中的导出按钮。

    导出条件值对话框随即出现。

  3. 对于字段组 CSV条件值 CSV,需提供 .csv 文件的路径和名称,或单击浏览按钮,浏览到存储 .csv 文件的文件夹,并提供 .csv 文件的名称。

    将创建两个 .csv 文件:一个用于字段组,一个用于条件值。

导入条件值

您可以使用条件值选项卡上条件值组中的导入按钮或导入条件值地理处理工具,导入字段组和条件值。

要导入数据集的字段组和条件值,请完成以下步骤:

  1. 打开包含要导出条件值的数据集的“条件值”视图

    随即打开数据集的“条件值”视图。

  2. 条件值选项卡上,单击条件值组中的导入按钮。

    导入条件值对话框随即出现。

  3. 对于字段组 CSV条件值 CSV,需提供相应 .csv 文件的路径和名称,或单击浏览按钮,浏览到存储每个 .csv 文件的文件夹,并单击确定

    条件值将显示在“条件值”视图中。

  4. 或者,如要替换条件值,请选中替换值框。

    此选项允许您覆盖现有值,而不是将更改与数据集中现有的相关值合并。

  5. 单击条件值选项卡中的保存按钮 保存

    条件值将保存在目标数据集中。