coverage 中的要素通常与其他 coverage 中的要素或存储在关系类中的单独表中的属性相关联。可以在同一文件下共享同一属性的任意两个表或要素类之间创建简单关系类或复合关系类。相关的要素类可能位于同一 coverage 中,也可能位于不同的 coverage 中。关系与 ArcInfo 关联相似。
通过关系,您可以定义某一要素类属性表中的哪一列与另一个表中哪一列共享相同的值。关系创建后,可通过该关系在表中某个 coverage 的要素与其描述性属性之间建立一个临时连接。有了关系类,便可使用关联表中的属性来查询、标注和符号化该 coverage 中的要素。
coverage 要素类或 INFO 表参与的关系类位于“属性”对话框的“关系”选项卡中。单击列表中的特定关系,然后单击“属性”了解该关系的详细信息。例如,可以确定与某个 INFO 表相关的所有 coverage 和表。项目的关系也记录在其元数据中。通过 FGDC Esri 样式表,您将能够找到位于元数据“属性”选项卡底部的项目关系。
可以在 ArcCatalog 中定义关系,也可以使用“连接 Info 表”工具;不过,使用此地理处理工具需要Desktop Advanced许可。
关系属性
基数是关系的属性之一,描述了 coverage 中有多少要素与其他属性表中多少记录相关。如果关联表中包含多个取自 coverage 中某个点的测量值,则关系将为一对多关系。一点对多测量值通常,关系可以拥有一对一 (1–1)、一对多 (1–M)、多对一 (M–1) 和多对多 (M–M) 基数。
上例中,coverage 中的点要素类为关系的源,而包含测量值的表为目标。用于连接这些数据源的列为键属性。点要素类(或源)拥有包含每一个站代码的属性;这是该关系的主键。测量值表中有一个属性,用来指示获取测量值的站;这是一个嵌入式外键。
关系中含有用于描述关联性质的路径标注:
- 前向路径标注用于描述在从源导航至目标时的关系;例如,站点“具有”测量值。
- 后向路径标注用于描述在从目标导航至源时的相同关系;本例中,将从站获取测量值。
关系类型
存在两种类型的关系:简单型和复合型。简单关系用于描述彼此独立存在的数据源之间的关联。如果 coverage 和表彼此独立,当删除源 coverage 时,目标表仍继续存在。在前一个例子中,如果开始在新点的上游获取测量值并将以前的点从 coverage 中删除,仍然可以出于历史目的而保留从以前的站获取的测量值。因此,该关系为简单关系。
对于复杂关系所描述的关联中,一个对象的生存时间可控制其相关对象的生存时间。示例为高速公路与高速公路盾形标记放置点之间的关联。对于每一条线,高速公路 coverage 中线要素类的主键都拥有唯一的代码。盾形 coverage 中点要素类的外键包含与其关联的线的代码。盾形点不能脱离高速公路独立存在。
简单关系可拥有一对一、一对多或多对多基数。依照定义,多对一关系也是一对一关系。复合关系始终拥有一对多基数。当创建一对多关系时(无论是简单关系还是复合关系),关系中的“一”方必须为源,而“多”方必须为目标。
一个对象可以参与多个关系。例如,除了高速公路与盾形点之间的复合关系外,高速公路线要素类可能与 INFO 表之间存在简单关系。在这种情况下,每一条高速公路线都拥有一个用来指示所用表面类型的代码,且相关表中包含每一个表面代码的描述,因此,许多高速公路共享同一个表面描述。若要描述此第二种关联,需要创建简单的一对一关系。
虽然以上所有例子中都包含 coverage,但应特别注意:可以通过创建关系类来定义两个 INFO 表之间的关联。
coverage 关系类
可通过图层来定义以不同格式存储的或存储在不同 ArcInfo 工作空间中的地理数据和表格数据间的连接和关联。连接和关联的功能类似于简单关系类,不同的是,必须为每个单独的图层定义连接和关联。
可通过创建 coverage 关系类来对 ArcInfo 工作空间中对象之间的关系建立永久且真实的模型。创建后,可在许多图层中重复使用该信息。ArcMap 将检测关系类的存在时间,允许您轻松访问相关属性。
coverage 关系类与可在地理数据库中创建的关系类基本相同。有关地理数据库中关系类的特定信息,请参阅关系类的优点。