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

摘要

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

使用情况

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

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

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

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

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

    警告:

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

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

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

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

参数

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

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

Feature Layer
输出图层

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

Feature Layer
表达式
(可选)

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

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

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

不使用此参数。

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 运算符组合为输出图层的 where 子句。 例如,如果输入图层具有 ID > 10 的 where 子句,并且将此参数设置为 ID < 20 ,则生成图层的 where 子句将为 ID > 10 AND ID < 20。

SQL Expression
workspace
(可选)

不使用此参数。

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")