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

您可以在目录窗格中将空间表从数据库连接 (.dbconn) 拖动到地图上以自动创建可在文档数据库中访问数据的查询图层。 或者,可以使用地图选项卡上的添加数据按钮 添加数据ArcGIS Pro 的地图中创建一个查询图层。

提示:

下方介绍了在受支持的文档数据库中为表创建查询图层的说明。 有关创建访问这些源类型的查询图层的说明,请参阅为关系数据库中的数据创建查询图层为云数据仓库中的数据创建查询图层

工作流摘要

下文总结了从支持的文档数据库中创建数据查询图层所必须执行的操作:

  • 连接到数据库 - 您可以在目录窗格中创建数据库连接,将其添加到工程,并从新建查询图层对话框中浏览至连接。 或者,可以通过新建查询图层对话框创建数据库连接。 有关说明,请参阅ArcGIS Pro 连接到 ElasticsearchArcGIS Pro 连接到 OpenSearch
  • 定义查询 - 选择表以及要在查询中包含的字段。 查询图层使用 SQL 语句。 但是,ElasticsearchOpenSearch 不是关系数据库,因此当通过这些数据库中的数据创建查询图层时,仅支持一部分 SQL 语句。 您无法添加链接或关联子句,并且WHERE 子句受限
  • 验证查询 - 验证进程会检查查询语句的语法。 还会使用表中返回的第一行属性来确定查询的有效性。 如果查询语句无效,则无法添加查询图层。
  • 指定唯一标识符 - 地图中的所有要素必须具有唯一标识符。 查询图层必须包含一个唯一标识符字段,该字段将包含每个要素的值。 默认情况下,查询图层使用系统 ID 字段作为各个要素的唯一标识符字段。 如果您倾向于使用其他 ID 字段,则可以进行选择。 如果选择字段,则它必须是包含唯一值的整型字段。
  • 定义几何类型 - 图层的几何类型指示图层是存储点、多点、线还是面要素。 默认情况下,第一行的几何类型用于确定表中存在的几何类型。 因为 ArcGIS 仅支持每个表具有一个几何类型,所以只有该几何类型的要素会绘制在地图上。 您可以指定与查询图层返回的第一行中的类型不同的几何类型。

    例如,如果查询返回的第一行是线要素,则仅会在地图上绘制线要素。 如果表包含面要素,则可以将图层的几何类型定义为面,并且只有查询返回的面要素才会绘制在地图上。

    不支持嵌套几何字段。

支持的 Where 子句格式

从 ArcGIS 查询文档数据库时,并非所有 SQL WHERE 子句语句均受支持。 在访问文档数据库的查询图层中可以使用以下语法:

  • <FIELD_NAME | LITERAL>'<='<FIELD_NAME | LITERAL>
  • <FIELD_NAME | LITERAL>'>='<FIELD_NAME | LITERAL>
  • <FIELD_NAME | LITERAL>'<'<FIELD_NAME | LITERAL>
  • <FIELD_NAME | LITERAL>'>'<FIELD_NAME | LITERAL>
  • <FIELD_NAME | LITERAL>'='<FIELD_NAME | LITERAL>
  • <FIELD_NAME | LITERAL>'<>'<FIELD_NAME | LITERAL>
  • <BOOLEAN EXPRESSION> AND | OR <BOOLEAN EXPRESSION>
  • NOT <BOOLEAN EXPRESSION>
  • <FIELD_NAME> LIKE <STRING>
  • <FIELD_NAME> NOT LIKE <STRING>
  • <FIELD_NAME> IN ( <LITERAL>, <LITERAL>, ... )
  • <FIELD_NAME> NOT IN ( <LITERAL>, <LITERAL>, ... )
  • <FIELD_NAME> BETWEEN <FIELD_NAME | LITERAL> AND <FIELD_NAME | LITERAL>
  • <FIELD_NAME> NOT BETWEEN <FIELD_NAME | LITERAL> AND <FIELD_NAME | LITERAL>

以下语法也受支持;但是,由于受支持的文档数据库不支持字段中的空值,因此使用它们时的返回值与为关系数据库或数据仓库中的表定义相同子句时返回的值略有不同。

  • <FIELD_NAME> IS NULL - 返回指定字段缺失值的行。
  • <FIELD_NAME> IS NOT NULL - 返回指定字段包含某个值的行。

ElasticsearchOpenSearch 中的表创建查询图层

要将访问 ElasticsearchOpenSearch 中数据的查询图层添加到地图,可将表拖动到地图上,或在新建查询图层对话框上定义查询图层。

将表拖动到地图上

目录窗格中将表从数据库连接 (.dbconn) 拖动到地图上时,ArcGIS Pro 会自动创建一个选择表中所有行和字段的查询图层。 它还将系统维护的 _id 字段设置为图层的唯一标识符字段。

ArcGIS Pro 在您将图层拖动到地图时,计算该图层的范围。 ArcGIS Pro 还会识别第一行的几何类型并将其设置为查询图层的几何类型。 只有该几何类型的要素会绘制在地图中。

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

在“新建查询图层”对话框中定义查询

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

  1. 打开要在其中添加查询图层的 ArcGIS Pro 中的地图。
  2. 地图功能区的图层组中,单击添加数据按钮 添加数据 上的箭头,然后从下拉菜单中选择查询图层 添加查询图层

    展开“添加数据”菜单并选择“查询图层”。

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

  3. 执行以下操作之一以指定连接:
    • 如果工程中已存在连接文件 (.dbconn),请从下拉列表中选择此文件。
    • 如果工程中不存在连接,请单击新建数据库连接按钮 新建地理数据库连接 并创建一个连接。 在创建连接后,从下拉列表中选择该连接。
  4. 名称文本框中,指定要创建的查询图层的名称。

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

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

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

    您可以按照上文中所述使用 WHERE,但是其他子句不受支持。

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

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

    验证规则如下:

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

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

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

  8. 当查询通过验证时,单击下一步
  9. 要选择要素内部 ID 字段以外的唯一标识符字段,请选中 ArcGIS 可用作各个字段 ID 的包含唯一值的整型字段旁边的复选框。

    您不是必需选择唯一标识符字段。 如果您未指定字段,则会使用系统 ID 字段。

  10. 注:

    不支持 m 值和 z 值。

    您无法为图层定义空间参考;始终使用 SRID 4326、GCS WGS 1984。

  11. 从下拉菜单中选择几何类型。

    如果您为图层选择了允许 ArcGIS 发现图层的空间属性选项,则此字段可能设置完成。

  12. 如果您在步骤 6 中选择了允许 ArcGIS Pro 发现图层的空间属性选项,请单击完成将查询图层添加到地图中。
  13. 接下来的两个步骤仅在您选择了定义图层的空间属性选项时适用。

  14. 图层范围属性部分中,通过选择以下选项之一来指定查询图层的空间范围:
    • 输入范围 - 单击下一步时,您必须输入范围。 您指定的范围必须有效,并且包含表中的所有要素。
    • 使用地图范围 - 当前地图的范围将用于查询图层范围。 单击下一步查看地图范围值。
    • 使用空间参考范围 - 数据的空间参考范围将用于查询图层范围。 对于某些空间参考,这是整个地球。 单击下一步并查看空间参考范围值。
  15. 完成设置或查看图层范围后,单击完成以将查询图层添加到地图中。

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