创建查询图层 (Data Management)
摘要
基于输入的 SQL 选择语句,从 DBMS 表创建查询图层。
用法
-
查询图层仅适用于企业级数据库。对于此工具,文件或个人地理数据库不是有效的输入工作空间。
如果输入的 SQL 查询的结果返回空间列,则输出将为要素图层。如果 SQL 查询没有返回空间列,则输出将为独立表。
此工具所需的连接文件可使用创建数据库连接工具创建。
- 如果 SQL 查询的结果未返回任何行,则输出查询图层将为空,只包含查询返回的列的方案。在这种情况下,如果返回的列包括空间列,则工具将使用以下默认设置创建查询图层:
- 几何类型:POINT
- SRID:1
- 空间参考:NAD1983
然后,在执行工具之前将根据用户的决定更改这些所需值中的任何一个。
对于地理数据,SQL 语句返回的结果中的每条记录都将有一个关联的 SRID(空间参考标识符)。数据库将使用该 SRID 值确定数据的空间参考。SRID 的特定功能区别在各个 DBMS 平台之间有所不同。某些 DBMS 平台支持在同一表中包含多个 SRID 值;ArcGIS 只支持一个值。此工具允许您选择 SRID 值,或默认使用结果集中第一条记录的 SRID。
语法
参数 | 说明 | 数据类型 |
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 |
代码实例
以下 Python 窗口脚本演示了如何在即时模式下使用 MakeQueryLayer 工具。
import arcpy
sr = arcpy.SpatialReference("WGS 1984 UTM Zone 12N")
arcpy.MakeQueryLayer_management("Database Connections/moab.sde",
"Slickrock",
"select * from moabtrails where name = 'slickrock'",
"OBJECTID",
"POLYLINE",
"32611",
sr)
以下独立脚本演示了如何使用 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("Database Connections/moab.sde",
"Single Track",
"select * from moabtrails where type = 'single'",
"UID;name",
"POLYLINE",
"32611",
sr)