创建查询图层 (数据管理)

摘要

基于输入的 SQL 选择语句,从 DBMS 表创建查询图层。

使用情况

  • 查询图层仅适用于企业级数据库。 文件地理数据库不是此工具的有效输入工作空间。

  • 该工具创建的图层是临时图层,如果不保存此工程,或者使用复制行复制要素通过创建副本对数据进行持久化,则该图层在会话结束后将不会继续存在。

  • 如果输入的 SQL 查询的结果返回空间列,则输出将为要素图层。 如果 SQL 查询没有返回空间列,则输出将为独立表。

  • 此工具所需的连接文件可使用创建数据库连接工具创建。

  • 如果 SQL 查询的结果未返回任何行,则输出查询图层将为空,只包含查询返回的列的方案。 在这种情况下,如果返回的列包括空间列,则工具将使用以下默认设置创建查询图层:

    • 几何类型 - 点
    • SRID - 1
    • 空间参考 - NAD1983

    然后,您需要确定在运行该工具之前是否应更改这些值中的任何一个。

  • 对于地理数据,SQL 语句返回的结果中的每条记录都将有一个关联的空间参考标识符 (SRID)。 数据库将使用该 SRID 值确定数据的空间参考。 SRID 的特定功能区别在各个 DBMS 平台之间有所不同。 某些 DBMS 平台支持在同一表中包含多个 SRID 值。 ArcGIS 仅支持一个值。 此工具允许您选择 SRID 值,或默认使用结果集中第一条记录的 SRID。

参数

标注说明数据类型
输入数据库连接

包含要查询的数据的数据库连接文件。

Workspace
输出图层名称

要创建的要素图层或表视图的输出名称。

String
查询

定义要在数据库中运行的选择查询的 SQL 语句。

注:

此字符串在启用其余控件之前必须通过验证。 在您单击此输入框以外的位置时,验证将被触发。 验证过程将在数据库中运行查询,并验证 SQL 查询的结果是否符合 ArcGIS 所实施的数据建模标准。 如果验证失败,工具将返回一条警告。 唯一例外的是 模型构建器,在这种情况下,如果输入为派生的数据,则不会触发验证。

验证规则如下:

  • SQL 查询的结果只能包含一个空间字段。
  • SQL 查询的结果只能包含一个空间参考。
  • SQL 查询的结果必须只有一种实体类型,例如,点、多点、线或面。
  • SQL 查询的结果不能包含 ArcGIS 不支持的任何字段类型。 ArcGIS 字段数据类型介绍了 ArcGIS 支持的字段类型。

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

String
唯一标识符字段
(可选)

SELECT 列表的 SELECT 语句中的一个或多个字段,可用于生成动态的唯一行标识符。

String
形状类型
(可选)

指定查询图层的形状类型。 在输出查询图层中只会使用查询结果集中与指定形状类型匹配的那些记录。 工具验证将尝试根据结果集中的第一条记录设置此属性。 如果形状类型不是正确的输出形状类型,则运行该工具之前可对此进行更改。 如果查询结果集未返回几何字段,则忽略此参数。

  • 输出查询图层将使用点几何。
  • 多点输出查询图层将使用多点几何。
  • 输出查询图层将使用面几何。
  • 折线输出查询图层将使用折线几何。
String
SRID
(可选)

返回几何查询的空间参考标识符 (SRID) 值。 在输出查询图层中只会使用查询结果集中与指定 SRID 值匹配的那些记录。 工具验证将尝试根据结果集中的第一条记录设置此属性。 如果 SRID 值不是正确的输出 SRID 值,则运行该工具之前可对此进行更改。 如果查询结果集未返回几何字段,则忽略此参数。

String
坐标系
(可选)

输出查询图层将使用的坐标系。 工具验证将尝试根据结果集中的第一条记录设置此属性。 如果形状类型不是正确的输出坐标系,则运行该工具之前可对此进行更改。 如果查询结果集未返回几何字段,则忽略此参数。

Spatial Reference
定义图层的空间属性
(可选)

指定图层的空间属性定义的方式。

验证过程中,系统将为查询图层设定维数、几何类型、空间参考、SRID 以及唯一标识符属性。 这些值取决于查询返回的第一行。 要手动定义这些属性,而不是使用查询表的工具来获取这些属性,默认情况下需选中此参数。

  • 选中 - 手动定义图层的空间属性。 这是默认设置。
  • 未选中 - 图层属性将根据查询中返回的第一行确定。
Boolean
坐标包含 M 值
(可选)

指定图层是否具有 m 值。

  • 选中 - 图层将包含 m 值。
  • 未选中 - 图层将不包含 m 值。 这是默认设置。
Boolean
坐标包含 Z 值
(可选)

指定图层是否包含 z 值。

  • 选中 - 图层将包含 z 值。
  • 未选中 - 图层将不包含 z 值。 这是默认设置。
Boolean
范围
(可选)

图层的范围。 仅当选中定义图层的空间属性参数(Python 中的 spatial_properties = DEFINE_SPATIAL_PROPERTIES)时,才会使用此参数。 范围必须包括表中的所有要素。

  • 当前显示范围 地图视图 - 范围基于活动地图或场景。 仅在存在活动地图时,才可使用此选项。
  • 图层范围 Layer - 范围基于活动地图图层。 使用下拉列表选择可用图层,或使用所有图层中数据的范围选项获取所有活动地图图层(不包括底图)的组合范围。 仅在存在具有图层的活动地图时,才可使用此选项。
  • 浏览 浏览 - 范围基于现有数据集。
  • 重置范围 重置 - 将范围重置为默认值。
  • 手动输入坐标 - 坐标必须是数值,并且与活动地图的坐标系相匹配。

    地图可能使用不同的显示单位

Extent

派生输出

标注说明数据类型
输出图层

输出查询图层。

Table View

arcpy.management.MakeQueryLayer(input_database, out_layer_name, query, {oid_fields}, {shape_type}, {srid}, {spatial_reference}, {spatial_properties}, {m_values}, {z_values}, {extent})
名称说明数据类型
input_database

包含要查询的数据的数据库连接文件。

Workspace
out_layer_name

要创建的要素图层或表视图的输出名称。

String
query

定义要向数据库发出的选择查询的 SQL 语句。

String
oid_fields
[oid_fields,...]
(可选)

SELECT 列表的 SELECT 语句中的一个或多个字段,可用于生成动态的唯一行标识符。

String
shape_type
(可选)

指定查询图层的形状类型。 在输出查询图层中只会使用查询结果集中与指定形状类型匹配的那些记录。 工具验证将尝试根据结果集中的第一条记录设置此属性。 如果形状类型不是正确的输出形状类型,则运行该工具之前可对此进行更改。 如果查询结果集未返回几何字段,则忽略此参数。

  • POINT输出查询图层将使用点几何。
  • MULTIPOINT输出查询图层将使用多点几何。
  • POLYGON输出查询图层将使用面几何。
  • POLYLINE输出查询图层将使用折线几何。
String
srid
(可选)

返回几何查询的空间参考标识符 (SRID) 值。 在输出查询图层中只会使用查询结果集中与指定 SRID 值匹配的那些记录。 工具验证将尝试根据结果集中的第一条记录设置此属性。 如果 SRID 值不是正确的输出 SRID 值,则运行该工具之前可对此进行更改。 如果查询结果集未返回几何字段,则忽略此参数。

String
spatial_reference
(可选)

输出查询图层将使用的坐标系。 工具验证将尝试根据结果集中的第一条记录设置此属性。 如果形状类型不是正确的输出坐标系,则运行该工具之前可对此进行更改。 如果查询结果集未返回几何字段,则忽略此参数。

Spatial Reference
spatial_properties
(可选)

指定图层的空间属性定义的方式。

验证过程中,系统将为查询图层设定维数、几何类型、空间参考、SRID 以及唯一标识符属性。 这些值取决于查询返回的第一行。 要手动定义这些属性,而不是使用查询表的工具来获取,请使用此参数的默认值。

  • DEFINE_SPATIAL_PROPERTIES手动定义图层的空间属性。 这是默认设置。
  • DO_NOT_DEFINE_SPATIAL_PROPERTIES图层属性将根据查询中返回的第一行确定。
Boolean
m_values
(可选)

指定图层是否包含 m 值。

  • INCLUDE_M_VALUES图层包含 m 值。
  • DO_NOT_INCLUDE_M_VALUES图层不包含 m 值。 这是默认设置。
Boolean
z_values
(可选)

指定图层是否包含 z 值。

  • INCLUDE_Z_VALUES图层将包含 z 值。
  • DO_NOT_INCLUDE_Z_VALUES图层将不包含 z 值。 这是默认设置。
Boolean
extent
(可选)

图层的范围。 仅当选中定义图层的空间属性参数(Python 中的 spatial_properties = DEFINE_SPATIAL_PROPERTIES)时,才会使用此参数。 范围必须包括表中的所有要素。

  • MAXOF - 将使用的所有输入的最大范围。
  • MINOF - 将使用的所有输入共用的最小范围。
  • DISPLAY - 范围与可见显示范围相等。
  • 图层名称 - 将使用指定图层的范围。
  • Extent 对象 - 将使用指定对象的范围。
  • 以空格分隔的坐标字符串 - 将使用指定字符串的范围。 坐标按 x-min、y-min、x-max、y-max 的顺序表示。
Extent

派生输出

名称说明数据类型
out_layer

输出查询图层。

Table View

代码示例

MakeQueryLayer 示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何在即时模式下使用 MakeQueryLayer 函数。

import arcpy

sr = arcpy.SpatialReference("WGS 1984 UTM Zone 12N")

arcpy.MakeQueryLayer_management("Connections/moab.sde",
                                "Slickrock",
                                "select * from moabtrails where name = 'slickrock'",
                                "OBJECTID",
                                "POLYLINE",
                                "32611",
                                sr)
MakeQueryLayer 示例 2(独立脚本)

以下独立脚本演示了如何使用 MakeQueryLayer 函数。

# Name: MakeQueryLayer.py
# Description: Creates an output query layer based on a where clause.
#   This example shows how to create a spatial reference object using the
#   name of a coordinate system. It also demonstrates how to use two fields
#   to generate a dynamic unique row identifier for the query layer.


# Import system modules
import arcpy

# Create the spatial reference for the output layer.
sr = arcpy.SpatialReference("WGS 1984 UTM Zone 12N")

# Run the tool
arcpy.MakeQueryLayer_management("Connections/moab.sde",
                                "Single Track",
                                "select * from moabtrails where type = 'single'",
                                "UID;name",
                                "POLYLINE",
                                "32611",
                                sr)