描述
根据输入要素类或图层文件创建要素图层。该工具创建的图层是临时图层,如果不将此图层保存到磁盘或保存地图文档,该图层在会话结束后将不会继续存在。
使用方法
此工具不支持复杂要素类(如注记和尺寸)。
如果使用了 SQL 表达式但却没有返回任何内容,则输出为空。
字段名将通过指定输入工作空间来进行验证。因此,如果输入是地理数据库要素类,而输出工作空间是文件夹,则字段名可能会被截断,这是由于 shapefile 属性的名称最多只能具有十个字符。
可以使用字段信息控件的比率选项设置分割策略。每当将要素图层用作工具的输入且在处理中分割输入要素图层的几何时,分割策略就会生效。将分割几何发送到输出后,会计算输出属性值与输入属性值的比率。如果启用了比率选项,执行叠加操作时,对于任一要素的分割都将按照输入要素属性值的一定比率来生成输出要素的属性值。输出值将根据输入要素几何被分割的比率得出。例如,如果输入几何被分割成相等的两部分,则每个新要素的属性值都等于输入要素属性值的一半。比率策略仅适用于数值字段类型。
默认值为“无”(未选中)。这意味着两个最终所得要素的属性使用原始对象的属性值副本。
警告:
此地理处理工具不支持地理数据库要素类或表字段分割策略。
使用 ModelBuilder 创建工具时,需要确保此工具的输入数据变量未被标记为中间。如果输入被标记为中间,则在从输入对话框运行模型后不会删除此输入,而且也不会将输出图层添加到显示。
在模型中,可为创建要素图层工具的输出变量分配一个图层文件,以便从该文件应用所创建图层的符号设置。当所创建的图层以模型或脚本工具输出参数的形式返回到地图时,系统将保留图层文件中的符号系统,但不保留标注属性。但是,如果将通过(模型中的)创建要素图层工具创建的图层保存为永久数据(要素类或 shapefile),且永久数据以输出参数的形式返回地图,则系统会正确应用图层文件的标注属性。
语法
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 参考。 | SQL Expression |
workspace (可选) | 用于验证字段名的输入工作空间。如果输入是地理数据库表,而输出工作空间是 dBASE 表,则字段名可能会被截断,这是由于 dBASE 字段名最多只能具有十个字符。 | Workspace; Feature Dataset |
field_info (可选) | 可用于查看和隐藏输出图层中的一部分字段。可以指定分割策略。有关详细信息,请参阅用法。 | Field Info |
代码示例
以下 Python 窗口脚本演示了如何在即时模式下使用 MakeFeatureLayer 函数。
import arcpy
arcpy.env.workspace = "C:/data/input"
arcpy.MakeFeatureLayer_management("parcels.shp", "parcels_lyr")
以下独立脚本演示了如何使用 MakeFeatureLayer 创建可供 SelectLayerByLocation 和 SelectLayerByAttribute 工具使用的图层。
# Name: ExtractFeaturesByLocationAndAttribute.py
# Description: Extracts features to a new feature class based on a location and an attribute query.
# Import system modules
import arcpy
# Set overwrite option
arcpy.env.overwriteOutput = True
# Put in error trapping in case an error occurs when running tool
try:
# Make a layer from the feature class
arcpy.MakeFeatureLayer_management("C:/data/mexico.gdb/cities","cities_lyr")
# Select all cities that overlap the chihuahua polygon
arcpy.SelectLayerByLocation_management("cities_lyr", "INTERSECT", "c:/data/mexico.gdb/chihuahua", "", "NEW_SELECTION")
# Within the selection (done above) further select only those cities that have a population >10,000
arcpy.SelectLayerByAttribute_management("cities_lyr", "SUBSET_SELECTION", "POPULATION > 10000")
# Write the selected features to a new featureclass
arcpy.CopyFeatures_management("cities_lyr", "c:/data/mexico.gdb/chihuahua_10000plus")
except:
print(arcpy.GetMessages())
环境
许可信息
- Basic: 是
- Standard: 是
- Advanced: 是