创建要素图层 (数据管理)

摘要

根据输入要素类或图层文件创建要素图层。 创建的图层是临时图层,如果不将此图层保存到磁盘或保存地图文档,该图层在会话结束后将不复存在。

使用情况

  • 可使用保存至图层文件工具将临时要素图层保存为图层文件或使用复制要素工具将此图层保存为新要素类。

  • 不支持复杂要素类(如注记和维度)。

  • 如果使用了 SQL 表达式但却没有返回任何内容,则输出为空。

  • 字段名将通过指定输入工作空间来进行验证。因此,如果输入是地理数据库要素类,而输出工作空间是文件夹,则字段名可能会被截断,这是由于 shapefile 属性的名称最多只能具有十个字符。

  • 可以使用字段信息参数的比率选项设置分割策略。 当将要素图层用作工具的输入且在处理中分割输入要素图层的几何时,分割策略就会生效。 将分割几何发送到输出后,会计算输出属性值与输入属性值的比率。 如果启用了比率选项,执行叠加操作时,对于任一要素的分割都将按照输入要素属性值的一定比率来生成输出要素的属性值。 输出值将根据输入要素几何被分割的比率得出。 例如,如果输入几何被分割成相等的两部分,则每个新要素的属性值都等于输入要素属性值的一半。 比率策略仅适用于数值字段类型。

    默认值为“无”(未选中)。 这意味着两个最终所得要素的属性使用原始对象的属性值副本。

    警告:

    地理处理工具不支持地理数据库要素类或表字段分割策略。

  • 使用 模型构建器 创建工具时,需要确保此工具的输入数据变量未被标记为中间。 如果输入被标记为中间,则在运行模型后不会删除此输入,而且也不会将输出图层添加到显示。

  • 在模型中,可为创建要素图层工具的输出变量分配一个图层文件,以便从该文件应用所创建图层的符号设置。 当所创建的图层以模型或脚本工具输出参数的形式返回到地图时,系统将保留图层文件中的符号系统,但不保留标注属性。 但是,如果通过(模型中的)创建要素图层工具创建的图层保存为永久数据(要素类或 shapefile),且永久数据以输出参数的形式返回地图,则系统将正确应用图层文件的标注属性。

  • 如果输入要素参数值为图层,则输入的符号系统、选择和定义查询将传输到输出图层

参数

标注说明数据类型
输入要素

用于创建新图层的输入要素类或图层。 复杂要素类(如注记和尺寸)不是有效输入。

Feature Layer
输出图层

要创建的要素图层的名称。 新创建的图层可用作任何可接受要素图层作为输入的地理处理工具的输入。

Feature Layer
表达式
(可选)

用于选择要素子集的 SQL 表达式。

如果输入是具有现有定义查询的图层并且使用此参数指定了 where 子句,则两个 where 子句都将与输出图层的 AND 运算符组合。 例如,如果输入图层有一个 ID > 10 的 where 子句并且此参数设置为 ID < 20,则生成图层的 where 子句将为 ID > 10 AND ID < 20。

SQL Expression
工作空间或要素数据集
(可选)

用于验证字段名的输入工作空间。如果输入是地理数据库表,而输出工作空间是 dBASE 表,则字段名可能会被截断,这是由于 dBASE 字段名最多只能具有十个字符。

Workspace; Feature Dataset
字段信息
(可选)

输入中的字段将被重命名并在输出中可见。 可以指定分割策略。

Field Info

arcpy.management.MakeFeatureLayer(in_features, out_layer, {where_clause}, {workspace}, {field_info})
名称说明数据类型
in_features

用于创建新图层的输入要素类或图层。 复杂要素类(如注记和尺寸)不是有效输入。

Feature Layer
out_layer

要创建的要素图层的名称。 新创建的图层可用作任何可接受要素图层作为输入的地理处理工具的输入。

Feature Layer
where_clause
(可选)

用于选择要素子集的 SQL 表达式。有关 SQL 语法的详细信息,请参阅帮助主题在 ArcGIS 中使用的查询表达式的 SQL 参考

如果输入是具有现有定义查询的图层并且使用此参数指定了 where 子句,则两个 where 子句都将与输出图层的 AND 运算符组合。 例如,如果输入图层有一个 ID > 10 的 where 子句并且此参数设置为 ID < 20,则生成图层的 where 子句将为 ID > 10 AND ID < 20。

SQL Expression
workspace
(可选)

用于验证字段名的输入工作空间。如果输入是地理数据库表,而输出工作空间是 dBASE 表,则字段名可能会被截断,这是由于 dBASE 字段名最多只能具有十个字符。

Workspace; Feature Dataset
field_info
(可选)

输入中的字段将被重命名并在输出中可见。 可以指定分割策略。

Field Info

代码示例

MakeFeatureLayer 示例 1(Python 窗口)

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

import arcpy

arcpy.env.workspace = "C:/data/input"
arcpy.management.MakeFeatureLayer("parcels.shp", "parcels_lyr")
MakeFeatureLayer 示例 2(独立脚本)

以下独立脚本演示了如何使用 MakeFeatureLayer 函数来创建可供 SelectLayerByLocationSelectLayerByAttribute 函数使用的图层。

# Name: makefeaturelayer_example_2.py
# Description:  Uses MakeFeatureLayer with custom field info as input to Intersect

# Import system modules
import arcpy
from arcpy import env

# Set overwrite option
arcpy.env.overwriteOutput = True

# Set data path
cityboundaries = "C:/data/City.gdb/boundaries"
countyboundaries = "C:/data/City.gdb/counties"

# Get the fields from the input
fields= arcpy.ListFields(cityboundaries)

# Create a fieldinfo object
fieldinfo = arcpy.FieldInfo()

# Iterate through the input fields and add them to fieldinfo
for field in fields:
    if field.name == "POPULATION":
        # Set the Population to have a ratio split policy
        fieldinfo.addField(field.name, field.name, "VISIBLE", "RATIO")
    else:
        fieldinfo.addField(field.name, field.name, "VISIBLE", "NONE")

# Make a layer from the feature class
arcpy.MakeFeatureLayer_management(cityboundaries, "city_boundaries_lyr", fieldinfo)

# Intersect cities and counties, splitting city population proportionally by county
arcpy.Intersect_analysis([["city_boundaries_lyr"],[countyboundaries]], "memory/intersected_city_counties")