查询图层是存储在 ArcGIS AllSource 工程地图中的 SQL 查询。 您可通过查询图层访问数据库和云数据仓库中的空间和非空间表和视图。 例如,您可能没有数据库中创建视图的权限,但您希望对要素类中将显示在地图中的数据进行限制。 您可以在地图中创建查询图层,该查询图层将仅从要素类中选择某些字段或值。
提示:
由于查询图层直接使用 SQL 访问数据库,因此数据不必是企业级地理数据库的一部分,但是您可以根据需要为企业级地理数据库表和要素类定义查询图层。
您可以定义 SQL 查询来创建查询图层。 查询将针对您指定的数据库或云数据仓库中的表和视图运行,如果查询包含空间列,则结果集将作为图层添加到地图上;如果查询不包含空间列,则结果集将作为独立表添加到地图上。
定义查询图层的 SQL 查询是一个静态 SQL 语句,每次在地图中显示或使用图层时都会在数据库或数据仓库内部执行 SQL 查询。 这样即可在不复制或捕捉数据的情况下看到最新的信息。 在处理频繁变动的动态信息时,此功能大有用处。 但是,在很多情况下,SQL 语句的某些部分无法提前知晓。 例如,要显示某一地区的合计降雨量,您可能不会提前知晓是按天、周还是月来汇总雨量站的值。 查询图层中的参数可以帮助您使 SQL 语句的组成部分变为动态。
使用查询图层时,请谨记以下信息:
- 特定数据库管理系统和云数据仓库支持查询图层。
- 将表从工程中的数据库拖到地图上时,ArcGIS AllSource 会自动创建一个查询图层,该查询图层将从表中选择所有字段和行。 您可以通过从图层属性修改查询图层定义来更改地图中的可用内容。 但是,如果表中有数百万个要素,请不要将图层拖到地图上。
- 或者,您可以在将数据添加到地图之前定义查询图层。 您必须使用此方法为企业级地理数据库中的数据定义查询图层或为云数据仓库中的数据定义查询图层。
- 查询图层和地图中的任何其他要素图层或独立表一样,所以这些图层可用于作为地理处理工具的输入来显示数据,使用开发人员 API 通过编程方式进行访问,或进行发布。
- 通过数据库连接直接访问时,查询图层是只读的。
- 若要编辑作为查询图层访问的数据库表,请将其共享为 web 要素图层并从门户访问。 查询图层不能包含虚拟列、where 子句或连接。 此外,即使通过 web 要素图层,仍无法编辑访问云数据仓库中数据的查询图层。
- 如果查询图层是基于数据库数据定义的,则可以将数据从查询图层中的数据导出到另一个数据库或企业级地理数据库。