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

摘要

基于输入的 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 - 范围基于活动地图图层。 使用下拉列表选择可用图层,或使用所有图层中数据的范围选项获取所有活动地图图层(不包括底图)的组合范围。 仅在存在具有图层的活动地图时,才可使用此选项。

    每个地图图层具有以下选项:

    • 所有要素 全选 - 图层中所有要素的范围。
    • 选定要素Area from Selected Features - 图层中选定要素的范围。
    • 可见要素 Extent Indicator - 图层中可见要素的范围。
      注:

      选定要素 Area from Selected Features可见要素 Extent Indicator 选项中的范围仅适用于要素图层。

  • 浏览 浏览 - 范围基于现有数据集。
  • 剪贴板 粘贴 - 可在剪贴板中复制和粘贴范围。
    • 复制范围 复制 - 将范围坐标和坐标系复制到剪贴板。
    • 使用粘贴范围 粘贴 - 从剪贴板粘贴范围坐标和(可选)坐标系。 如果剪贴板值不包含坐标系,则范围将使用地图的坐标系。
    注:

    将使用与 ArcPy Extent 对象相同的格式和顺序从剪贴板中复制和粘贴范围坐标:x-min、y-min、x-max、y-max 和空间参考。

  • 重置范围 重置 - 将范围重置为默认值。
  • 手动输入坐标 - 坐标必须是数值,并且与活动地图的坐标系相匹配。
    警告:

    地图可能使用与输入的坐标不同的显示单位。 不支持使用主方向(N、S、E、W)。 在南纬和西经坐标中使用负号。

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)

相关主题