插图
使用方法
使用该工具,可将多个数据集中的新要素或其他数据添加至现有数据集。该工具可将点、线、面要素类、表、栅格、注记要素类或尺寸要素类追加到现有的相同类型数据集中。例如,可将多个表追加到现有表中,或将多个栅格追加到现有栅格数据集中,但是不能将线要素类追加至点要素类中。
追加工具中的字段映射参数可用于控制如何将输入数据集字段中的属性信息传输到目标数据集。只有在选择使用字段映射协调方案差异作为方案类型时,才能使用字段映射参数。
您可以使用字段映射来控制输出数据集中所有字段以及各字段中的内容。
- 要更改字段顺序,请选择一个字段名称并将其拖动到首选位置。
- 输出字段的默认数据类型与其所遇到的第一个名称相同的输入字段的数据类型相同。您可以随时将该数据类型手动更改为其他任何有效的数据类型。
- 可以使用以下合并规则:first、last、join、sum、mean、median、mode、minimum、maximum、standard deviation 和 count。
- 如果使用连接合并规则,则可指定分隔符,例如,空格、逗号、句点和短划线等。要使用空格,请确保指针位于输入框的起始位置处,然后按一次空格键。
- 您可以使用格式选项来指定文本字段的起始和终止位置。
- 请勿对单个输入执行标准差计算,因为数字不能被零除,因此标准差不适用于单个输入。
向目标数据集添加要素时,此工具不会打断要素。输入要素类和目标要素类中的所有要素都将在追加后保持原样,即使出现要素相互叠置情况也是如此。要合并或打断要素几何,请使用联合工具。
如果选择输入方案必须匹配目标方案作为方案类型(Python 中为 schema_type = "TEST"),则输入数据集的方案(字段定义)必须与目标数据集的方案相匹配,然后才能追加要素。如果选择使用字段映射协调方案差异(Python 中为 schema_type = "NO_TEST"),则输入数据集的方案(字段定义)不必与目标数据集的方案相匹配。但是,如果输入数据集的任何字段与目标数据集的字段不匹配,将不会被映射到目标数据集,除非在字段映射参数中对映射进行了显式设置。
由于输入数据集的数据被写入具有预定义方案(字段定义)的现有目标数据集中,因此字段映射参数不允许在目标数据集中添加或移除字段。
如果输入要素类和目标要素类的空间参考不匹配,追加工具会将输入要素类中的要素投影到目标要素类所使用的坐标系中。
此工具不执行边匹配,即不会对要素的几何进行调整。
可将地图图层用作输入数据集。如果图层具有选定内容,则追加工具只会使用所选记录(要素或表行)。
此工具不能使用具有相同名称的多个输入图层。要解决此限制,请使用工具对话框浏览按钮来浏览各输入数据集的完整路径。
要使用子类型参数,目标数据集必须已定义子类型字段且已分配子类型代码。在子类型参数中,提供子类型描述以将该子类型分配给已追加到目标数据集中的所有新数据。
语法
Append(inputs, target, {schema_type}, {field_mapping}, {subtype}, {expression})
参数 | 说明 | 数据类型 |
inputs [inputs,...] | 所含数据将被追加到目标数据集的输入数据集。输入数据集可以是点、线、面要素类、表、栅格、注记要素类或尺寸要素类。 可将表和要素类组合起来。如果将要素类追加到表,则将传递属性,但不会移除要素。如果将表追加到要素类中,则输入表中的行将具有空几何。 | Table View; Raster Layer |
target | 将追加输入数据集数据的现有数据集。 | Table View; Raster Layer |
schema_type (可选) | 指定输入数据集的方案(字段定义)是否必须与目标数据集的方案相匹配才能追加数据。
| String |
field_mapping (可选) | 控制如何将输入数据集中的属性字段传输并映射到目标数据集。 仅在 schema_type 参数设置为 NO_TEST 时才能使用此参数。 由于输入数据集的数据被追加到具有预定义方案(字段定义)的现有目标数据集中,因此不允许在目标数据集中添加或移除字段。可以为每个输出字段设置合并规则。 合并规则用于指定如何将两个或更多个输入字段的值合并或组合为一个输出值。有多种合并规则可用于确定如何用值填充输出字段。
在 Python 中,您可使用 FieldMappings 类来定义此参数。 | Field Mappings |
subtype (可选) | 要分配给已追加到目标数据集中的所有新数据的子类型描述。 | String |
expression (可选) | 用于选择输入数据集记录子集的 SQL 表达式。如果指定了多个输入数据集,将根据表达式对它们进行评估。如果没有与输入数据集表达式匹配的记录,将不会向目标追加该数据集的记录。 有关 SQL 语法的详细信息,请参阅在 ArcGIS 中使用的查询表达式的 SQL 参考。 | SQL Expression |
派生输出
名称 | 说明 | 数据类型 |
output | 已更新的目标数据集。 | 表视图;栅格图层 |
代码示例
以下 Python 窗口脚本演示了如何在即时模式下使用 Append 函数。
import arcpy
arcpy.env.workspace = "C:/data/"
arcpy.Append_management(["north.shp", "south.shp", "east.shp", "west.shp"],
"wholecity.shp", "TEST")
以下脚本演示了如何使用 Append 函数。
# Name: Append.py
# Description: Use the Append tool to combine several shapefiles
# import system modules
import arcpy
import os
# Set environment settings
arcpy.env.workspace = "C:/data"
# Set local variables
outLocation = "C:/Output"
outName = "MA_towns.shp"
schemaType = "NO_TEST"
fieldMappings = ""
subtype = ""
# Process: Create a new empty feature class to append shapefiles into
emptyFC = arcpy.CreateFeatureclass_management(outLocation, outName, "POLYGON",
"amherst.shp")
# All polygon FCs in the workspace are MA town shapefiles, we want to append
# these to the empty FC. The list will resemble ["amherst.shp", "hadley.shp",
# "pelham.shp", "coldspring.shp"]
fcList = arcpy.ListFeatureClasses("", "POLYGON")
# Create FieldMappings object to manage merge output fields
fieldMappings = arcpy.FieldMappings()
# Add the target table to the field mappings class to set the schema
fieldMappings.addTable(emptyFC)
# Add input fields for the town name into TOWNNAME field that matches the
# target dataset since each input dataset has a different field name for
# this info
fldMap = arcpy.FieldMap()
fldMap.addInputField("amherst.shp","TOWNNAME")
fldMap.addInputField("hadley.shp","NAME")
fldMap.addInputField("pelham.shp","TOWN_NAME")
fldMap.addInputField("coldspring.shp","TOWN")
# Set name of new output field "TOWNNAME"
townName = fldMap.outputField
townName.name, townName.aliasName, townName.type = "TOWNNAME", "TOWNNAME", "TEXT"
fldMap.outputField = townName
# Add output field to field mappings object
fieldMappings.addFieldMap(fldMap)
# Do the same thing for the POPULATION field
fldMap = arcpy.FieldMap()
fldMap.addInputField("amherst.shp","POPULATION")
fldMap.addInputField("hadley.shp","POP")
fldMap.addInputField("pelham.shp","POP_2010")
fldMap.addInputField("coldspring.shp","POP")
# Set name of new output field "POPULATION"
pop = fldMap.outputField
pop.name, pop.aliasName, pop.type = "POPULATION", "POPULATION", "LONG"
fldMap.outputField = pop
# Add output field to field mappings object
fieldMappings.addFieldMap(fldMap)
# Process: Append the feature classes into the empty feature class
arcpy.Append_management(fcList, os.path.join(outLocation, emptyFC), schemaType,
fieldMappings, subtype)
许可信息
- Basic: 是
- Standard: 是
- Advanced: 是