练习 3:创建子类型和属性域
将数据存储在地理数据库中的一个优势是用户可以定义数据编辑方式的规则。将通过以下方式定义这些规则:为支管直径创建新的属性域,为 Laterals 要素类创建子类型,并将新域、现有域和默认值与各子类型的字段相关联。
属性域是描述字段类型合法值的规则。多个要素类和表可以共享数据库中存储的属性域。但并不是要素类或表中的所有对象都需要共享相同的属性域。
例如,在供水管网中,假定仅消火栓给水支管的压力值可以在 40 和 100 psi 之间,而生活用水支管的压力值只能在 50 和 75 psi 之间。这种情况下应使用属性域来强制实施此限制。要实现此类验证规则,您不必为消火栓和生活用水支管创建单独的要素类,而是希望区分这些类型的给水支管与其他支管以建立一组独立的域和默认值。可以使用子类型来实现这一点。
要了解有关子类型和属性域的详细信息,请参阅子类型快速浏览和属性域快速浏览。
创建属性域
将使用 ArcCatalog 创建新的编码值属性域。这一新域描述新 Laterals 要素类的有效管路直径的集合。
-
右键单击 Montgomery 地理数据库,然后单击属性。
将打开数据库属性对话框。
- 单击域选项卡。
- 单击域名下的第一个空字段并输入 LatDiameter 作为新域的名称。
- 在描述字段中,输入给水支管的有效直径。
-
在域属性下,单击字段类型下拉列表,然后单击浮点型。
这定义了域可以应用到的列的数据类型。
- 单击编码值: 下编码列中的第一个空字段并输入 13。
- 单击旁边的描述字段并输入 13" 作为编码描述。
-
向列表中添加以下编码值:
编码
描述
10
10"
8
8"
6
6"
4
4"
3
3"
2.25
2 1/4"
2
2"
1.5
1 1/2"
1.25
1 1/4"
1
1
0.75
3/4"
-9
未知
-
单击确定关闭数据库属性对话框。
该域即已添加到地理数据库。
接下来应指定域的属性。属性包括此域可与之相关联的字段类型、域的类型(范围或编码值)、分割与合并策略和域的有效值。
范围域描述数值的有效范围,而编码值域描述有效值的集合。在本练习中,将创建新的编码值域。
所有域还具有分割与合并策略。对要素进行分割或合并时,ArcGIS 依据这些策略来决定所生成的一个或多个要素的特定属性值。
为编码域输入有效值或编码,并为各个编码提供简明易懂的描述。在教程的后面部分将看到,ArcMap 使用简明易懂的描述而不是编码来说明与域相关联的字段的值。
创建子类型并关联默认值和域
现在将创建 Laterals 要素类的子类型,并将默认值和域同各个子类型的字段相关联。通过创建子类型,可以使各个给水支管要素使用各不相同的域、默认值或连通性规则(如本教程的以下部分中所示)。
- 双击 Montgomery 地理数据库中的 Water 要素数据集将其打开。
-
右键单击 Laterals 要素类,然后单击属性。
将打开要素类属性对话框。
- 单击子类型选项卡。
- 单击子类型字段下拉箭头,然后单击 TYPECODE。
- 单击子类型下子类型编码 0 旁的描述字段并输入未知作为其描述。
- 在默认值和域下,单击 H_CONFID 字段旁的默认值字段并输入 0 作为其默认值。
- 输入 0 作为 DEPTH_BURI 和 RECORDED_L 字段的默认值。
- 对于 WNM_TYPE 和 PWTYPE 字段,输入 WUNKNOWN 作为默认值。
- 单击 DIAMETER 字段旁的默认值字段并输入 8 作为默认值。
-
单击 DIAMETER 字段的域下拉列表,然后单击 LatDiameter 将其设置为“未知”子类型的默认属性域。
- 单击 MATERIAL 字段并输入 DI 作为默认值。
-
在 MATERIAL 字段的域下拉列表中,单击材料。
-
添加以下子类型:
子类型编码
描述
1
消火栓支管
2
消防支管
3
生活用水支管
- 与“未知”子类型一样,分别为这些新子类型的 DEPTH_BURI、RECORDED_L、DIAMETER 和 MATERIAL 字段设置默认值和域。
- 对于消火栓支管子类型,将 WNM_TYPE 和 PWTYPE 字段设置为 WHYDLIN。
- 对于消防支管子类型,将 WNM_TYPE 和 PWTYPE 字段的默认值设置为 WFIRELIN。
- 对于生活用水支管子类型,将 WNM_TYPE 和 PWTYPE 字段的默认值设置为 WSERVICE。
-
单击默认子类型下拉箭头,然后单击生活用水支管将其设置为默认子类型。
- 单击确定。
现在将为该要素类指定子类型字段。子类型字段包含用于标识特定要素属于哪个子类型的值。
现在将添加子类型编码及其描述。
添加新子类型时,将给其中的某些字段分配默认值和域。
在 ArcMap 编辑环境中向具有子类型的要素类添加新要素时,如果没有指定特定子类型,那么该要素将被分配值默认子类型。添加了要素类的全部子类型之后,可从所添加的子类型中设置默认子类型。
现在已通过添加域和创建子类型为地理数据库添加了行为。
接下来将通过创建关系将一些附加行为添加到地理数据库。请参阅练习 4:创建对象间的关系。