B
打开Feature Class Properties对话框,进入Subtypes选项卡。在Subtypes Field下拉框中选择需要建立子类型的属性字段,在Default Subtype文本框中出现所选字段的默认的新的子类型名称:New Subtype。如图3.58所示;
图3.57 建立子类型
图3.58 Feature Class Properties对话框
在Subtypes栏中,在Code列输入子类型代码及其描述,描述将自动更新Default Subtypes窗口中的内容;
D 在Default Values and Domains栏中,对于每一个字段,在Default Value中输
入默认值,在Domain栏中选择一个属性域(将新子类型的字段关联到一个属性域);
E 重复上述步骤,添加其他子类型。单击Use Defaults按钮,可以让新子类型
采用默认子类型的所有默认值和属性域; F 单击确定按钮,完成操作。 2) 修改子类型:
进入Feature Class Properties对话框,参见图3.58。在Subtypes栏下选中需要删除的子类型,按Delete键,或在Subtypes和Default Values and Domains栏下对各项子类型特征进行修改。 2. 创建关系类
地理对象之间存在各种各样的关系的。如供水系统中的水管和水管维修记录之间的关系、宗地和业主之间的所属关系等。在Geodatabase中,事物之间的这些联系使用关系类来表现。关系类可以在空间对象间实现、在非空间对象间实现,或者在空间对象与非空间
C
67
对象之间实现。空间对象是存储在要素类中,非空间对象存储在对象类中,关系类存储在关系类中。 (1) 关系类概述
1) 基数(Cardinality)
描述对象之间的关系,分为以下四种:一对一(1-1)、一对多(1-M)、多对一(M-1)和多对多(M-N)。
2) 关联键
要创建关系,表(对象类或要素类)中必须至少包含一个“共同”的字段,这样的字段称为“键”(key)。键值可以是文本型、数值型的(通常为整型)。在关联的两个表中,关联的键字段名称不一定要一致,但是数据类型必须一致。关系类的创建是在源类(Oringin class)的主键(primary key)和目标类(destination class)的外键(foreign key)之间创建的。
主键:存储能够唯一标识表中的每个对象的字段。外键:纪录有源表主键信息的字段。在对象类中,外键记录值不需要唯一,而且通常也是不唯一的。关联标注
在关系类中,查找关联表的时候需要关联标注,标注分为向前标注和向后标注。使用向前标注可以从源类找到目标类;使用向后标注,可以从目标类找到源类。
3) 关系种类
简单关系(Simple Relationship)是Geodatabase中的两个或多个对象之间的关系,对象是独立存在的,进行对象操作时不会影响其它类中的对象。简单关系可以有一对一、一对多、多对多的基数。
复合关系(Composite Relationship)首先要有一个目标类,它依赖于源类,如果从源类中删除对象,目标类中相关联的对象也会被删除。复合关系总是一对多的,但也可以通过关系规则限制到一对一。 (2) 建立关系类
1) 建立简单关系类
A 在ArcCatalog目录树中,右键单击需要在其中建立关系类的Geodatabase或
要素数据集,单击New命令,单击Relationship Class命令,如图3.59所示;
68
B
弹出New Relationship Class对话框,如图3.60所示。在Name of the
relationship class文本框中输入关系类名称,选择源表或要素类,选择目标表
图3.59 建立关系类
图3.60 New Relationship Class对话框
C
或要素类;
单击下一步按钮,打开New Relationship Class(选择关系类型)对话框,如图3.61所示。选择Simple(peer to peer) relationship单选按钮,建立简单关系类;
图3.61 选择关系类型对话框
图3.62 确定关系类属性对话框
D 单击下一步按钮,打开 New Relationship Class(确定关系类属性)对话框,
69
E
如图3.62所示。输入从源类到目标类的向前路径标注:owners,输入从目标类到源类的向后路径标注:is owned by,选择关系的消息传递方向(Forward,Backward,Both,None);
单击下一步按钮,打开New Relationship Class(选择关系类基数)对话框,如图3.63所示。选择一对一的关系(即一个拥有者只拥有一个地块,一个地块只属于一个拥有者);
图3.63选择关系类基数对话框 图3.64关系类添加属性对话框
F
单击下一步按钮,打开New Relationship Class(关系类添加属性)对话框,如图3.64所示。选择No…单选按钮(在本例中,关系类不需要属性); G 单击下一步按钮,打开New Relationship Class(选择主键)对话框,如图3.65
所示。在第一个下拉框中为要素类或表选择主键,在第二个下拉框中,选择
70
图3.65 选择主键对话框
图3.66 总结信息对话框
所选的主键的外键; H 单击下一步按钮,打开New Relationship Class(总结信息)对话框,如图3.66
所示。确认无误后,单击完成按钮,完成操作。
2) 建立复合关系类
建立复合关系类与建立简单关系类相似,不同的是在New Relationship Class(选择关系类型)对话框中选择Composite relationship单选按钮,建立复合关系类。在New Relationship Class(选择关系类基数)对话框中选择一对多的复合关系。
3) 建立关系类的属性
不论是简单关系类的还是复合关系类,都可以具有属性。例如在建立地块与业主的简单关系中,地块有自己的属性,业主也有自己的属性,关系类描述的是某块地所对应的业主,有时还需要存储关系类的一些属性信息,比如业主对地块的使用情况等。
A 在上述New Relationship Class(关系类添加属性)对话框中选择Yes…单选
按钮。参见图3.64;
B 单击下一步按钮,打开New Relationship Class(添加属性字段)对话框,如
图3.67所示。在Field Name列下输入添加字段的名字,如attri1、attri2,并分别为字段选择数据类型:Text。在Field
Properties栏中,设置新字段的属性;
C 重复以上步骤,直到定义
完关系类的所有属性字
段; D 其余步骤与上述创建不需
要属性的关系类相似。单击完成按钮,即可创建具有属性的关系类。
4) 建立关系类规则:
关系类规则用于限制源要素类或表
图3.67 添加属性字段对话框 中的对象,是否可以被连接到目标要素
类或表中的一个确定类型的对象。例如,可以指定每一个水龙头管连接几个水龙头,不连接一个水龙头的水龙头管是无效的。
A 在ArcCatalog目录树中,右键
单击需要建立规则的关系类,单击Properties,打如图3.68所示。开Relationship Class Properties对话框(Rules选项卡),如图3.69所示;
B 在Origin Table/Feature Class窗口,如果源类有子类型,单击与关系规则关联
的子类型,如果源类没有子类型,关系规则将应用于所有要素;
71