Make Feature Layer (数据管理)
摘要
根据输入要素类或图层文件创建要素图层。该工具创建的图层是临时图层,如果不将此图层保存到磁盘或保存地图文档,该图层在会话结束后将不会继续存在。
用法
-
此工具不支持复杂要素类(如注记和尺寸)。
-
除非使用保存至图层文件工具将在 ArcCatalog 中创建的图层保存为图层文件,否则无法在 ArcMap 中使用这些图层。
如果使用了 SQL 表达式但却没有返回任何内容,则输出为空。
可以使用字段信息控件为字段名指定新名称。此控件的第二列列出来自输入的现有字段名。要对某字段重新命名,请单击字段名,然后输入一个新字段名。
在后续工具中将采用字段信息控件中定义的新字段名。但是,如果此工具是模型中的最后一个工具,则将从磁盘的源数据中获取字段名。要保留新字段名,必须使用复制行或复制要素工具将新图层写出到新数据。
字段名将通过指定输入工作空间来进行验证。因此,如果输入是地理数据库要素类,而输出工作空间是文件夹,则字段名可能会被截断,这是由于 shapefile 属性的名称最多只能具有十个字符。可以使用字段信息控件查看和更改新名称。
通过使用字段信息控件的可见属性,可使字段的子集在新图层中不可用。控件的第三列提供了一个下拉选项,用于指定字段在新图层中是显示还是隐藏。默认值为 TRUE。选择 FALSE 将隐藏字段。如果新建的图层是后续处理过程或工具的输入,则不能在工作流中使用隐藏的字段。如果将输出保存到磁盘,则只有列出的可见字段将显示在新数据中。
-
可以使用字段信息控件的使用比率策略选项设置分割策略。每当将要素图层用作工具的输入且在处理中分割输入要素图层的几何时,分割策略就会生效。将分割几何发送到输出后,会计算输出属性值与输入属性值的比率。如果启用了使用比率策略选项,每次分割叠加操作中的要素时都将按输入要素属性值的一定比率生成输出要素的属性值。输出值将根据输入要素几何被分割的比率得出。例如,如果输入几何被分割为相等的两部分,则每个新要素的属性值都等于输入要素属性值的一半。“使用比率策略”仅适用于数值字段类型。
默认值为 NONE(未选中)。这意味着两个最终所得要素的属性使用原始对象的属性值副本。
警告:地理处理工具不支持地理数据库要素类或表字段分割策略。
-
使用模型构建器创建工具时,需要确保此工具的输入数据变量未被标记为中间。如果输入被标记为中间,则在从输入对话框运行模型后不会删除此输入,而且也不会将输出图层添加到显示。
语法
参数 | 说明 | 数据类型 |
in_features |
用于创建新图层的输入要素类或图层。复杂要素类(如注记和尺寸)不是此工具的有效输入。 | Feature Layer |
out_layer |
要创建的要素图层的名称。新创建的图层可用作任何可接受要素图层作为输入的地理处理工具的输入。 | Feature Layer |
where_clause (可选) |
用于选择要素子集的 SQL 表达式。表达式的语法会因数据源的不同而稍有不同。例如,如果要查询文件或 ArcSDE 地理数据库、shapefile 或 coverage,字段名需用双引号: "MY_FIELD" 如果要查询个人地理数据库,需将字段用方括号括起: [MY_FIELD] 在 Python 中,字符串用成对的单引号或双引号括起。要创建含有引号的字符串(常见于 SQL 表达式中的 WHERE 子句),可以对引号进行转义(使用反斜线)或对字符串使用三重引号。例如,如果所需的 WHERE 子句为 "CITY_NAME" = 'Chicago' 可以将整个字符串用双引号括起,然后如下所示对内部双引号进行转义: " \"CITY_NAME\" = 'Chicago' " 或者可以将整个字符串用单引号括起,然后如下所示对内部单引号进行转义: ' "CITY_NAME" = \'Chicago\' ' 或者不进行转义,而将整个字符串用三重引号括起: """ "CITY_NAME" = 'Chicago' """ 有关 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 from arcpy import env # 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()