您可以将关系数据库图层拖到地图上以自动创建查询图层,或使用 地图 选项卡上的 添加数据 按钮 在 ArcGIS AllSource 地图中创建查询图层。
本页面介绍了如何为关系数据库中的表创建查询图层。 要访问云数据仓库中的数据,请参阅 为云数据仓库中的数据创建查询图层 。
不支持访问地理数据库系统表的查询图层。
创建查询图层之前,请参阅 查询图层的数据库和客户端配置 。
接下来,阅读以下小节以了解使用 新建查询图层 对话框为关系数据库创建查询图层时要遵循的工作流。
在定义查询图层之前,您必须连接到要查询的数据库。
可以按照 连接到 ArcGIS AllSource 关系数据库 中的说明在 目录 窗格中创建数据库连接,将其添加至工程,然后从 新建查询图层 对话框浏览到该数据库连接。 或者,可以通过 新建查询图层 对话框创建数据库连接。
在 查询 文本框中指定 SQL 查询以访问您需要的表或视图中的数据。
您可以在 查询 文本框中粘贴 SQL 查询,或者,如果您未准备 SQL 查询并且需要查看表列表,请选中 表列表 框。 您可以双击列表中出现的表和列来构建 SQL 查询,方法是双击或将其从表列表窗口拖到 查询 文本框中。
数据库中的每一列都具有特定的数据类型。 ArcGIS 可以处理最常用的数据库类型。 但不支持某些不常用的数据库类型。 如果属性列的类型为未知,这表明 ArcGIS 不支持该数据类型。 指定某个查询时,必须排除数据类型为“未知”的所有列,或者将这些列强制转换为 ArcGIS 支持的数据类型。 有关每种数据库支持的数据类型列表,请参阅 ArcGIS 支持的数据库数据类型 。
ArcGIS AllSource 添加了对以下数据类型的支持:
各个数据库和云数据仓库平台对新数据类型提供的支持有所不同。 有关详细信息,请参阅 ArcGIS 中支持的数据库数据类型 。
构建查询图层时,使用特定于数据库的 SQL 语法。 以下是常见的示例: SELECT * FROM Test.myuser.US_States 。 这将生成一个包含 US_States 表中所有行的查询图层。 在地图中,这将显示整个美国。
要了解如何在 SQL 查询中使用变量,请参阅 定义查询图层中的参数 。
定义 SQL 查询后,对其进行验证。 在验证期间,ArcGIS 使用表中返回的第一行属性来确定查询的有效性。
ArcGIS 还使用查询返回的第一行属性来过滤将显示在地图中以满足 ArcGIS 要求的其他行。 例如,ArcGIS 仅支持空间表中的一个空间参考。 默认情况下,如果要素类中的要素使用不同的空间参考 ID (SRID),则查询图层将仅返回与查询返回的第一个要素具有相同 SRID 的行。 同样,ArcGIS 对于每个表仅支持一种几何类型。 默认情况下,只有与查询返回的第一行具有相同几何类型的要素才会显示在地图上。 要使用不同的 SRID 或几何类型,请定义查询图层的空间属性。
唯一标识符是 ArcGIS 用于标识表中各行的一个或多个列。
在验证期间,ArcGIS 将尝试为表标识单个唯一标识符列。 如果找到符合条件的列,则可以将其用于查询图层。 如果未找到唯一标识符或者需要使用不同的唯一标识符,则可以在对话框的下一个面板中对其进行定义。
如果将发布包含查询图层的要素图层,则查询图层唯一标识符字段必须是单个而非空的唯一数据库维护列。
对于包含空间列的要素类或视图,可以定义以下内容,或者使用在验证时 ArcGIS 检测到的默认值:
有时,ArcGIS 可能无法根据为数据库中某些要素设置的当前 SRID 值准确地确定空间参考。 在这种情况下,查询图层将具有未知空间参考,您必须定义一个空间参考。 这不适用于无法定义空间参考的云数据仓库。
如果您要查询的表不包含数十万条记录,则可以 将表拖动到地图上 以自动创建查询图层,如下面的第一节所述。 对于较大的数据集,请 使用 新建查询图层 对话框 来定义查询图层。
在 目录 窗格中通过数据库连接 ( .sde ) 将数据库要素类、表或视图拖动到地图上时, ArcGIS AllSource 将自动创建一个查询图层,用于从该要素类、表或视图中选择所有行和字段。 但是,此操作仅适用于数据库,不适用于企业级地理数据库。
ArcGIS AllSource 在您将图层拖动到地图时,计算该图层的范围。 添加包含大量要素的表时,范围的计算则需要花费一段时间。 如果了解数据范围或想要使用要素类的空间参考范围,而不是等待对范围进行计算,则可以执行此操作。 在 计算范围 对话框上单击相应按钮。 如果单击 输入范围 ,则必须输入包括表中所有要素的有效范围。
ArcGIS AllSource 还将识别第一行的 空间属性 并将这些属性设置为查询图层的空间属性。 将仅在地图中绘制具有这些相同属性的要素。
将图层添加到地图后,可以根据需要 更改查询图层 。
按照以下步骤使用 新建查询图层 对话框在 ArcGIS AllSource 工程的地图中定义查询图层:
将显示 新建查询图层 对话框。
这是将显示在地图 内容 窗格中的名称。
要查看表列表及其列,请选中 表列表 复选框。 您可以双击 表列表 节中的表,将表中的所有列添加到 查询 文本框中并在 查询 文本框中编辑查询。 例如,您可以从查询中删除不想包含的列,并在查询中添加子句以限制查询图层中包含的数据。
验证过程将在数据库中运行查询,以确认查询的结果集是否符合 ArcGIS 所实施的数据建模标准。 只有当查询图层有效时,才会将其添加到地图。
验证规则如下:
如果由于任何原因而导致验证失败,系统将返回一条错误消息以便您修改查询。
如果所使用的空间数据库中的数据执行的标准与 ArcGIS 不同,则验证尤为重要。
地图中的所有要素都需要唯一标识符。 因此,查询图层必须包含一个唯一标识符字段,该字段将包含每个要素的值。 有关详细信息,请参阅 为查询图层选择唯一标识符字段 。
如果选择允许 ArcGIS AllSource 定义空间属性,则这些参数可能已设置完成。
如果 ArcGIS AllSource 定义了空间属性,则接下来的两个步骤不适用。
有关更改查询图层属性的信息,请参阅 修改查询图层 。