描述
基于输入的 SQL 选择语句,从 DBMS 表创建查询图层。
使用方法
查询图层仅适用于企业级数据库。对于此工具,文件或个人地理数据库不是有效的输入工作空间。
该工具创建的图层是临时图层,如果不保存此图层,或者使用复制行或复制要素通过创建副本对数据进行持久化,则该图层在会话结束后将不会继续存在。
如果输入的 SQL 查询的结果返回空间列,则输出将为要素图层。如果 SQL 查询没有返回空间列,则输出将为独立表。
此工具所需的连接文件可使用创建数据库连接工具创建。
如果 SQL 查询的结果未返回任何行,则输出查询图层将为空,只包含查询返回的列的方案。在这种情况下,如果返回的列包括空间列,则工具将使用以下默认设置创建查询图层:
- 几何类型 - 点
- SRID - 1
- 空间参考 - NAD1983
然后,您需要确定在执行工具之前是否应更改这些值中的任何一个。
对于地理数据,SQL 语句返回的结果中的每条记录都将有一个关联的空间参考标识符 (SRID)。数据库将使用该 SRID 值确定数据的空间参考。SRID 的特定功能区别在各个 DBMS 平台之间有所不同。某些 DBMS 平台支持在同一表中包含多个 SRID 值;ArcGIS 只支持一个值。此工具允许您选择 SRID 值,或默认使用结果集中第一条记录的 SRID。
语法
arcpy.management.MakeQueryLayer(input_database, out_layer_name, query, {oid_fields}, {shape_type}, {srid}, {spatial_reference})
参数 | 说明 | 数据类型 |
input_database | 包含要查询的数据的数据库连接文件。 | Workspace |
out_layer_name | 要创建的要素图层或表视图的输出名称。 | String |
query | 定义要向数据库发出的选择查询的 SQL 语句。 | String |
oid_fields [oid_fields,...] (可选) | SELECT 列表的 SELECT 语句中的一个或多个字段,可用于生成动态的唯一行标识符。 | String |
shape_type (可选) | 指定查询图层的形状类型。在输出查询图层中只会使用查询结果集中与指定形状类型匹配的那些记录。工具验证将尝试根据结果集中的第一条记录设置此属性。如果形状类型不是所需的输出形状类型,则执行工具之前可对此进行更改。如果查询结果集未返回几何字段,则忽略此参数。
| String |
srid (可选) | 返回几何查询的空间参考标识符 (SRID) 值。在输出查询图层中只会使用查询结果集中与指定 SRID 值匹配的那些记录。工具验证将尝试根据结果集中的第一条记录设置此属性。如果 SRID 值不是所需的输出 SRID 值,则执行工具之前可对此进行更改。如果查询结果集未返回几何字段,则忽略此参数。 | String |
spatial_reference (可选) | 输出查询图层将使用的坐标系。工具验证将尝试根据结果集中的第一条记录设置此属性。如果坐标系不是所需的输出坐标系,则执行工具之前可对此进行更改。如果查询结果集未返回几何字段,则忽略此参数。 | Spatial Reference |
派生输出
名称 | 说明 | 数据类型 |
out_layer | 输出查询图层。 | 表视图 |
代码示例
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)
环境
许可信息
- Basic: 是
- Standard: 是
- Advanced: 是