为数据库中的数据创建查询图层

您可以将数据库图层拖到地图上以自动创建查询图层,或使用地图选项卡上的添加数据按钮 添加数据 在地图中创建查询图层。

提示:

本页面介绍了如何为数据库中的表创建查询图层。 要访问云数据仓库中的数据,请参阅为云数据仓库中的数据创建查询图层

不支持访问地理数据库系统表的查询图层。

先决条件和工作流

创建查询图层之前,请参阅查询图层的数据库和客户端配置

接下来,阅读以下小节以了解使用新建查询图层对话框为数据库创建查询图层时要遵循的工作流。

连接到数据库

在定义查询图层之前,您必须连接到要查询的数据库。

您可以在目录窗格中创建数据库连接,如 ArcGIS AllSource 中数据库连接所述,将其添加到工程,然后从新建查询图层对话框中浏览到此连接,也可以从新建查询图层对话框创建数据库连接.

定义 SQL 查询

查询文本框中指定 SQL 查询以访问您需要的表或视图中的数据。

您可以在查询文本框中粘贴 SQL 查询,或者,如果您未准备 SQL 查询并且需要查看表列表,请选中表列表框。 您可以双击列表中出现的表和列来构建 SQL 查询,方法是双击或将其从表列表窗口拖到查询文本框中。

数据库中的每一列都具有特定的数据类型。 ArcGIS 可以处理最常用的数据库类型。 但不支持某些不常用的数据库类型。 如果属性列的类型为未知,这表明 ArcGIS 不支持该数据类型。 指定某个查询时,必须在查询中排除数据类型为“未知”的所有列,或者将这些列的数据类型更改为 ArcGIS 支持的数据类型。 有关每种数据库支持的数据类型列表,请参阅 ArcGIS 支持的 DBMS 数据类型

构建查询图层时,使用特定于数据库的 SQL 语法。 以下是常见的示例:SELECT * FROM Test.myuser.US_States。 这将生成一个包含 US_States 表中所有行的查询图层。 在地图中,这将显示整个美国。

要了解如何在 SQL 查询中使用变量,请参阅定义查询图层中的参数

验证 SQL 语句

定义 SQL 查询后,对其进行验证。 在验证期间,ArcGIS 使用表中返回的第一行属性来确定查询的有效性。

ArcGIS 还使用查询返回的第一行属性来过滤将显示在地图中以满足 ArcGIS 要求的其他行。 例如,ArcGIS 仅支持空间表中的一个空间参考。 默认情况下,如果要素类中的要素使用不同的空间参考 ID (SRID),则查询图层将仅返回与查询返回的第一个要素具有相同 SRID 的行。 同样,ArcGIS 对于每个表仅支持一种几何类型。 默认情况下,只有与查询返回的第一行具有相同几何类型的要素才会显示在地图上。 要使用不同的 SRID 或几何类型,请定义查询图层的空间属性。

指定唯一标识符

唯一标识符是 ArcGIS 用于标识表中各行的一个或多个列。

在验证期间,ArcGIS 将尝试为表标识单个唯一标识符列。 如果找到符合条件的列,则可以将其用于查询图层。 如果未找到唯一标识符或者需要使用不同的唯一标识符,则可以在对话框的下一个面板中对其进行定义。

如果将发布包含查询图层的要素图层,则查询图层唯一标识符字段必须是单个而非空的唯一数据库维护列。

定义空间属性(可选)

对于包含空间列的要素类或视图,可以定义以下内容,或者使用在验证时 ArcGIS 检测到的默认值:

  • 几何类型 - 决定图层将存储点、多点、线或面要素。
  • Z 和 M 值 - 这些选项用于确定图层是否包含具有 z 坐标或 m 坐标的要素。
  • 空间参考 - 图层的坐标系和其他相关空间属性。

    有时,ArcGIS 可能无法根据为数据库中某些要素设置的当前 SRID 值准确地确定空间参考。 在这种情况下,查询图层将具有未知空间参考,您必须定义一个空间参考。 这不适用于无法定义空间参考的云数据仓库。

    注:
    为查询图层定义空间参考并不会对数据进行重新投影,而只是定义在 ArcGIS 中绘制查询结果地图时应使用的空间参考。

  • SRID - 这是图层的空间参考标识符,用于确保查询仅返回具有相同空间参考标识符的几何。 如果查询图层不包含空间字段,则 SRID 值将为空。 如果设定了该值,则结果集中将排除所有不包含指定几何 SRID 值的要素。 如果数据库中的数据使用自定义 SRID,则必须在查询图层的空间属性中提供 SRID。 这不适用于云数据仓库。

为数据库表创建查询图层

如果您要查询的表不包含数十万条记录,则可以将表拖动到地图上以自动创建查询图层。 对于较大的数据集,请使用新建查询图层对话框来定义查询图层。

将表拖动到地图上

目录窗格中根据数据库连接将数据库要素类、表或视图拖动到地图上时,ArcGIS AllSource 将自动创建一个查询图层,用于从该要素类、表或视图中选择所有行和字段。 但是,此操作仅适用于数据库,不适用于企业级地理数据库。

ArcGIS AllSource 在您将图层拖动到地图时,计算该图层的范围。 添加包含大量要素的表时,范围的计算则需要花费一段时间。 如果了解数据范围或想要使用空间参考的范围,而不是等待对范围进行计算,则可以执行此操作。 在计算范围对话框上单击相应按钮。 如果单击输入范围,则必须输入包括表中所有要素的有效范围。

计算范围的备用方法

将图层添加到地图后,可以根据需要更改查询图层

定义查询

按照以下步骤使用新建查询图层对话框在 ArcGIS AllSource 工程的地图中定义查询图层:

  1. 打开要在其中添加查询图层的 ArcGIS AllSource 中的地图。
  2. 单击地图功能区上的添加数据按钮 添加数据 并从下拉列表中选择查询图层按钮 添加查询图层

    将显示新建查询图层对话框。

  3. 使用以下方法之一指定连接:
    • 如果工程中已存在连接文件 (.sde),请从下拉列表中选择此文件。
    • 如果工程中不存在连接,请选择“新建数据库连接”按钮 新建地理数据库连接 并创建一个连接。
  4. 名称文本框中,为将创建的查询指定一个名称。

    这是将显示在地图内容窗格中的名称。

  5. 查询文本框中输入或粘贴一个 SQL 查询。

    要查看表列表及其列,请选中表列表复选框。 您可以双击表列表节中的表,将表中的所有列添加到查询文本框中并在查询文本框中编辑查询。 例如,您可以从查询中删除不想包含的列,并在查询中添加子句以限制查询图层中包含的数据。

  6. 选择如何定义图层的空间属性。
    • 选择允许 ArcGIS 发现图层的空间属性(默认选项)以允许 ArcGIS AllSource 使用查询返回的第一行的空间属性。 验证 SQL 语句时,ArcGIS AllSource 发现了这些属性。
    • 如果您希望图层包含空间属性与第一行不同的要素,请选择定义图层的空间属性
  7. 您必须验证查询语法是否正确以及 ArcGIS 是否可以使用该查询。 单击验证以启动验证过程。

    验证将在数据库中执行查询,并检查查询的结果集是否符合 ArcGIS 所实施的数据建模标准。 只有当查询图层有效时,才会将其添加到地图。

    验证规则如下:

    • 结果集最多只能包含一个空间字段。
    • 结果集最多只能包含一个空间参考。
    • 结果集必须只有一种 shape 类型。
    • 结果集不得包含 ArcGIS 任何不支持的字段类型。

    如果由于任何原因而导致验证失败,系统将返回一条错误消息以便您修改查询。

    如果所使用的空间数据库中的数据执行的标准与 ArcGIS 不同,则验证尤为重要。

  8. 当查询通过验证时,单击下一步

    连接到数据库并为新查询图层定义 SQL 查询。

  9. 为查询图层选择唯一标识符字段或使用 ArcGIS AllSource 选择的字段。

    地图中的所有要素都需要唯一标识符。 因此,查询图层必须包含一个唯一标识符字段,该字段将包含每个要素的值。 有关详细信息,请参阅为查询图层选择唯一标识符字段

  10. 选择几何类型和空间参考。

    如果选择允许 ArcGIS AllSource 为您确定空间属性,则可能对这些参数进行相应设置。

    1. 从下拉菜单中选择几何类型。
    2. 单击坐标系按钮 坐标系 选择数据使用的空间参考的坐标系,或从现有数据集导入空间参考。 请记住,这不会重新投影数据。

    为空间参考指定唯一 ID、几何类型和坐标系。

  11. 如果您在步骤 6 中选择允许 ArcGIS AllSource 定义空间属性,请单击完成以将查询图层添加到地图。
  12. 如果您在步骤 6 中选择定义图层的空间属性,则上述对话框中将显示一个附加部分。 在此部分(图层范围属性)中,您必须通过选择以下选项之一来指定查询图层的空间范围:
    • 输入范围 - 单击下一步时,您必须输入范围。 您指定的范围必须有效,并且包含表中的所有要素。
    • 使用地图范围 - 当前地图的范围将用于查询图层范围。 单击下一步查看地图范围值。
    • 使用空间参考范围 - 数据的空间参考范围将用于查询图层范围。 对于某些空间参考,这是整个地球。 单击下一步并查看空间参考范围值。
  13. 完成设置或查看图层范围后,单击完成以将查询图层添加到地图中。

有关更改查询图层属性的信息,请参阅修改查询图层

相关主题