ArcGIS中的连接和关联表

摘要:
一对一和多对一的关系在ArcMap中连接表时,将在图层属性表和包含要连接的信息的表之间建立一对一或多对一的关系。可以使用连接数据对话框或空间连接工具执行空间连接操作。ArcMap中定义的关联实质上与地理数据库中定义的简单关系类相同,只是前者是与地图一起保存而不是保存在地理数据库中。下次打开地图时,不论是连接还是关联,ArcMap都将通过从数据库中读取这两个表来重新建立二者之间的关系。连接可存储在ArcMap文档或图层文件中。

大多数数据库的设计指导方针都倾向于将数据库组织成多个表 - 每个表关注一个特定的主题 - 而非一个包含所有必要字段的大型表。设置多个表可以避免数据库中的信息发生重复,因为只会将信息在一个表中存储一次。当需要当前表中未包含的信息时,可以将两个表关联起来。

例如,您可能会从组织中的其他部门获取数据,向供应商购买具有商业价值的数据,或者直接从 Internet 下载数据。如果这些信息本身存储在表文件(如 dBASE、INFO 或地理数据库表)中,您就可以将其与地理要素相关联,而后在地图上显示这些数据。

ArcGIS 允许您通过一个公用字段(也称为键)将一个表中的记录与另一个表中的记录相关联。可通过多种方式进行此类关联,其中包括在地图中临时连接或关联表,或者在地理数据库中创建可以保持更长久关联的关系类。例如,可将宗地所有权信息表与宗地图层进行关联,因为它们共享一个宗地 ID 字段。

当对两表进行连接时,基于两个表的公用字段可以将属性从一个表追加到另一个表上。关联表也用于定义两个表间的关系 - 这也基于公用字段 - 但并不把属性从一个表追加到另一个表;而是在需要时访问关联的数据。

连接表的属性

通常,会根据在这两个表中均可找到的字段值将数据表连接到图层。这一字段的名称可以不同,但数据类型必须相同;例如,必须将数字连接到数字,将字符串连接到字符串,依此类推。可以使用连接数据对话框(通过在 ArcMap 中右键单击某个图层来访问)或添加连接工具执行连接操作。

假设您已获取反映各国家人口百分率变化的数据,并想要根据此信息生成人口增长地图。只要人口数据存储在数据库的表中并且与您当前图层共享公用字段,您就可以将其连接到地理要素,然后使用其他字段来符号化、标注、查询或分析该图层要素。

一对一和多对一的关系

在 ArcMap 中连接表时,将在图层属性表和包含要连接的信息的表之间建立一对一或多对一的关系。下例说明了每个国家与其国家人口数据变化之间的一对一的关系。也就是说,一个国家对应着一个人口变化。

根据连接的人口数据符号化要素

下面是一个多对一的关系示例。假设您有一个图层,按其土地利用类型来对每个面要素进行归类。图层属性表仅存储土地利用编码;而独立表中存储了每个土地利用类型的全部类型描述。连接这两个表可建立一个多对一的关系,因为图层属性表中的许多记录都将连接到土地利用描述表中的同一记录。然后,当为您的地图生成图例时,就可以使用更多的描述文本。

多对一的关系示例

一对多和多对多的关系

使用存在一对多或多对多关系的数据时,应使用关联或关系类来建立数据集之间的关系。但是,也可在这些情况下创建连接。在这种情况下创建连接时,会根据数据的来源,工具和其他特定图层设置的工作方式而存在差别。如果使用地理数据库数据创建连接,则返回所有匹配记录。如果使用 shapefile 或 dBASE 表等非数据库数据创建连接,则只返回第一条匹配记录。

这意味着,如果使用地理数据库数据创建了一对多或多对多连接,则在生成的报表中可以看到多条记录,每个匹配项对应一条记录。在符号化连接图层、标注、识别要素、生成图表和使用“查找”或“超链接”工具时,如果使用连接字段也可以看到多个匹配项。如果使用连接图层作为地理处理工具的输入或用在导出操作中,则将使用多条匹配记录。

警告警告:

在所有一对多连接的情况下,仅连接第一条匹配记录并显示在图层的属性表中。

按空间位置连接数据

当地图上的图层未共享公共属性字段时,可以使用空间连接将其连接起来,即根据图层中要素的位置连接两个图层的属性。

可以使用连接数据对话框(通过在 ArcMap 中右键单击某个图层来访问)或空间连接工具执行空间连接操作。

使用空间连接,您可以找到以下任意内容:

  • 距其他要素最近的要素
  • 要素内包括什么
  • 什么与要素相交
  • 落在每个面要素内的点数

按位置连接(或空间连接)将使用空间关联在所涉及的图层之间将一个图层中的字段追加到另一个图层。空间连接与属性和关系类连接不同,它不是动态连接,而是需要将结果保存到新的输出图层中。

可使用下述三种关联中的其中一种来执行空间连接:

  • 将每个要素与最近的一个或多个要素匹配:在此关联中,您可以添加最近要素的属性或最近要素数字属性的一个聚合(最小、最大等)。
  • 将每个要素与其所属的要素匹配:在此情况下,追加当前要素所属的要素的属性。例如,这种类似情况包括落在面要素内的点或者完全包含(也就是重叠)在其他线段内的线段。
  • 将每个要素与其相交的一个或多个要素匹配:类似于上面提到的最近要素关联,您可以追加一个相交要素的属性或相交要素数值型属性的一个聚合。

对于每个点、面和线的组合,只有最常用的这些关联在连接对话框中才可用。但使用 VBA,可以执行基于任何关联的连接,并可以使用点、线或面要素图层的任何组合。

关联表

与连接表不同,关联表只是在两个表间定义一个关系。关联的数据不会像连接表那样附加到图层的属性表。但是,在使用此图层的属性时可以访问到关联的数据。

例如,如果您选择一个建筑,则可以查找此建筑的所有承租人。同样地,如果您选择一个承租人,则可以查找承租人所在的建筑(或者在多个购物中心的连锁店的情况下为若干建筑 - 多对多关系)。然而,如果您对这些数据上执行连接,ArcMap 将仅查找每个建筑的第一个承租人,而忽略其他承租人。

ArcMap 中定义的关联实质上与地理数据库中定义的简单关系类相同,只是前者是与地图一起保存而不是保存在地理数据库中。

如果数据存储在地理数据库中,并且定义了关系类,您可以直接使用这些关系类而无需在 ArcMap 中建立关联。当您将参与关系类中的一个图层添加到地图中时,该关系类将自动可用。请注意,当数据存储在一个地理数据库中时,要定义不同的多对多关系。一般情况下,如果在您的地理数据库中定义了关系类,则应该使用这些关系类而不是在 ArcMap 中创建新的关系类。

了解创建关系类的方法

地理数据库中的关系类

关系类中存储了地理数据库中要素和记录之间的关联信息,这有助于确保数据的完整性。

了解有关使用关系类的优势的详细信息

连接与关联

以下为针对数据是选择连接还是关联的一般指导方针:

  • 当两个表中的数据存在一对一或多对一的关系时,则可以连接这两个表。
  • 当两个表中的数据存在一对多或多对多的关系时,则可以关联这两个表。

了解有关在关系类、连接和关联之间进行选择的详细信息

保存连接与关联

当您保存包含连接和关联的地图时,ArcMap 将保存两个属性表之间的连接方式定义,而不保存所连接的数据本身。下次打开地图时,不论是连接还是关联,ArcMap 都将通过从数据库中读取这两个表来重新建立二者之间的关系。这样,自上次查看地图上的关系后,在源表中所进行的任何更改都将自动包括并反映在地图上。

连接可存储在 ArcMap 文档或图层文件中。如果您打算在某个时候移动数据,则应该使用相对路径保存您的 ArcMap 文档。如果数据发生了移动,在打开文档后您可以修复表和图层,但除非目标表和连接表位于同一个目录或工作空间中,否则无法修复连接。如果使用相对路径保存文档,只要相对于数据移动的位置相应地移动文档,就可自动恢复表和图层的连接。

通过导出包含连接数据的图层,就可轻松制作该图层的永久磁盘副本。要导出图层,在“内容列表”中右键单击图层,将鼠标指向数据,然后单击导出数据。这样可以创建一个具有所有属性(包含连接字段)的新要素类。

结合使用连接、关联和关系类

如果既要对数据执行连接又要执行关联,则连接和关联的创建顺序将非常重要。如果您的图层或表包含关联,则当该图层或表与数据建立连接时,关联将被移除。如果在连接的图层或表上执行关联操作,则当移除连接时关联也会被移除。作为一般的经验规则,最好先创建连接然后再添加关联。

假设要将 tableA 连接到 layerC 并将 tableB 关联到 layerC,有三种可能的操作方法,其中两种可行。下面分别介绍每种情况:

  • 将 tableA 连接到 layerC,然后将 tableB 关联到 layerC:该情况可行。此操作以与 tableB 建立关联的连接图层结束。
  • 将 layerC 关联到 tableB,然后将 tableA 连接到 layerC:该情况也可行。由于关联是双向的,因此无论关联隶属于哪个表,所涉及的这两个表都可以使用此关联。在这种情况下,tableB 拥有关联,因此当 tableA 连接到 layerC 时,关联不会被移除。
  • 将 tableB 关联到 layerC,然后将 tableA 连接到 layerC:该情况不可行。这种情况与上述情况的不同在于 layerC 拥有关联。因此,当 tableA 连接到 layerC 时,关联将被移除。

连接表所拥有的关联将不会受到连接的影响。但是,目标表或图层无法访问这些关联。

执行连接或取消连接从不会移除关系类。无论数据是包含在连接还是关联中,关系类都可以正常使用。

免责声明:文章转载自《ArcGIS中的连接和关联表》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇iOS NSString 截取字符串(根据索引截取)pgsql 相关函数下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Sql Server2008R2与IDEA的连接

数据库的连接笔者搞了一天,参阅了众多连接方案,大部分都是Eclipse和My sql,笔者一遍一遍的调试,终于皇天不负有心人,成绩先摆出来   为了让更多的新手能少走弯路,话不多说,上干货 首先,我们需要下载连接IDEA和sql的驱动包 下载地址:https://www.microsoft.com/zh-CN/download/details.aspx?i...

Mongodb学习总结(2)——MongoDB与MySQL区别及其使用场景对比

对于只有SQL背景的人来说,想要深入研究NoSQL似乎是一个艰巨的任务,MySQL与MongoDB都是开源常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种NoSQL数据库。它们各有优点,关键看用在什么地方。 什么情况下,MongoDB是最好的选择? 很多人认为MongoDB难以置信的强大,是一个可扩...

ArcGIS基础篇(1)——如何将本地制作的模型进行拷贝?

在ArcGIS中构建模型,是对ArcGIS各类工具进行拖动、串联,形成一个工作流,能重复使用,通用性强,可形成自己的工具。 构建模型在此不叙述,主要讲一下如何将模型(Model)拷贝。 一般在ArcGIS中制作模型后,进行保存,会默认保存到默认的Home路径的Toolbox.tbx中,如下图所示。 (1)在Toolboxes目录-My Toolboxes...

还原数据库备份文件时,关于“System.Data.SqlClient.SqlError:媒体集有2个媒体簇,但只提供了1个。必须提供所有成员”的处理方式

好久没写博客了,最近在做毕设的权限管理模块,今天在还原数据库文件时,遇到了“System.Data.SqlClient.SqlError:媒体集有2个媒体簇,但只提供了1个。必须提供所有成员”这个错误,百度了一下,找到了原因和解决方式。 原因分析:1。备份的时候,旧路径没有删除,我添加了一个新路径,就无意中设置成了两个备份路径,SQL就会根据两个备份路径把...

(转)SQL SERVER 日志已满的处理方法

本文转载自:http://www.cnblogs.com/eycbest/archive/2012/01/04/2311567.html 事务日志文件Transaction Log File是用来记录数据库更新情况的文件,扩展名为ldf。在 SQL Server 7.0 和 SQL Server 2000 中,如果设置了自动增长功能,事务日志文件将会自动扩...

MySQL用户权限验证与管理方法详解

本文实例讲述了MySQL用户权限验证与管理方法。分享给大家供大家参考,具体如下: 一、Mysql权限分两阶段验证 1. 服务器检查是否允许连接:用户名、密码,主机地址。 2. 检查每一个请求是否有权限实施。 二、Mysql权限列表 权限 权限级别 权限说明 create 数据库、表或索引 创建数据库、表或索引权限 drop 数据库或表 删除数据...