追加 (数据管理)

摘要

将多个输入数据集追加到现有目标数据集。 输入数据集可以是要素类、表格、shapefile、栅格、注记或尺寸注记要素类。

要将输入数据集合并到新的输出数据集中,请使用合并工具。

插图

追加工具图示

使用情况

  • 使用该工具,可将多个数据集中的新要素或其他数据添加至现有数据集。 该工具可将点、线、面要素类、表、栅格、注记要素类或尺寸要素类追加到现有的相同类型数据集中。 例如,可以将多个表附加到现有表,或者可以将多个栅格附加到现有栅格数据集,但不能将线要素类附加到点要素类。

  • 您可以使用字段映射参数控制如何将输入数据集字段中的属性信息传输到目标数据集。 只有在选择使用字段映射协调方案差异作为方案类型参数时,才能使用字段映射参数。

  • 要管理输出数据集中的字段和这些字段的内容,请使用字段映射参数。

    • 要更改字段顺序,请选择一个字段名称并将其拖动到新位置。
    • 输出字段的默认数据类型与其所遇到的第一个名称相同的输入字段的数据类型相同。 您可以随时将该数据类型手动更改为其他任何有效的数据类型。
    • 可以使用以下合并规则:first、last、join、sum、mean、median、mode、minimum、maximum、standard deviation 和 count。
    • 如果使用连接合并规则,则可指定分隔符,例如,空格、逗号、句点和短划线等。 要使用空格,请确保指针位于输入框的起始位置处,然后按一次空格键
    • 您可以使用格式选项来指定文本字段的起始和终止位置。
    • 请勿对单个输入执行标准差计算,因为数字不能被零除,因此标准差不适用于单个输入。

    了解有关在脚本中映射字段的详细信息

  • 向目标数据集添加要素时,此工具不会打断要素。 输入要素类和目标要素类中的所有要素都将在追加后保持原样,即使出现要素相互叠置情况也是如此。 要合并或打断要素几何,请使用联合工具。

  • 如果为字段匹配类型参数选择输入字段必须匹配目标字段,则输入数据集的方案(字段定义)必须与目标数据集的方案相匹配,然后才能追加要素。 如果为字段匹配类型选择使用字段映射协调字段差异,则输入数据集方案(字段定义)不需要与目标数据集相匹配。 但是,如果输入数据集的任何字段与目标数据集的字段不匹配,将不会被映射到目标数据集,除非在字段映射参数中对映射进行了显式设置。 如果为字段匹配类型参数选择方案不匹配时跳过并警告,则输入数据集的方案(字段定义)必须与目标数据集的方案相匹配,然后才能追加要素。 如果输入数据集包含与目标数据集中的字段不匹配的字段,则该输入数据集将被忽略,并会出现警告消息。

  • 由于输入数据集的数据被写入具有预定义方案(字段定义)的现有目标数据集中,因此字段映射参数不允许在目标数据集中添加或移除字段。

  • 如果输入要素类和目标要素类的空间参考不匹配,则输入要素类中的要素将投影到目标要素类所使用的坐标系中。

  • 此工具不会执行边匹配;不会对要素的几何进行任何调整。

  • 可将地图图层用作输入数据集参数值。 如果图层具有选定内容,则只会使用所选记录(要素或表行)。

  • 此工具不能使用具有相同名称的多个输入图层。 要解决此限制,请使用工具对话框浏览按钮来浏览各输入数据集值的完整路径。

  • 要使用子类型参数,目标数据集必须已定义子类型字段且已分配子类型代码。 在子类型参数中,提供子类型描述以将该子类型分配给已追加到目标数据集中的所有新数据。

参数

标注说明数据类型
输入数据集

所含数据将被追加到目标数据集的输入数据集。 输入数据集可以是点、线、面要素类、表、栅格、注记要素类或尺寸要素类。

可将表和要素类组合起来。 如果将要素类追加到表,则将传递属性,但不会移除要素。 如果将表追加到要素类中,则输入表中的行将具有空几何。

Table View; Raster Layer
目标数据集

将追加输入数据集数据的现有数据集。

Table View; Raster Layer
字段匹配类型
(可选)

指定输入数据集的方案是否必须与目标数据集的字段相匹配才能追加数据。

  • 输入字段必须与目标字段匹配输入数据集的字段必须与目标数据集的字段相匹配。 如果字段不匹配,则系统将返回一条错误。
  • 使用字段映射协调字段差异输入数据集的字段不需要与目标数据集的字段相匹配。 如果输入数据集的任何字段与目标数据集的字段不匹配,将不会被映射到目标数据集,除非在字段映射参数中对映射进行了显式设置。
  • 方案不匹配时跳过并警告输入数据集的字段必须与目标数据集的字段相匹配。 如果任何输入数据集包含与目标数据集不匹配的字段,则该输入数据集将被忽略,并会出现警告消息。
String
字段映射
(可选)

控制如何将输入数据集中的属性字段传输或映射到目标数据集。

仅当将字段匹配类型参数设置为使用字段映射协调字段差异时,才能使用此参数。

由于输入数据集追加到具有预定义字段的现有目标数据集,因此无法在字段映射中添加、删除或更改字段类型。 您可以为每个输出字段设置合并规则。

合并规则用于指定如何将两个或更多个输入字段的值合并或组合为一个输出值。 有多种合并规则可用于确定如何用值填充输出字段。

  • First - 使用输入字段的第一个值。
  • Last - 使用输入字段的最后一个值。
  • Join - 串连(连接)输入字段的值。
  • Sum - 计算输入字段值的总和。
  • Mean - 计算输入字段值的平均值。
  • Median - 计算输入字段值的中值。
  • Mode - 使用具有最高频率的值。
  • Min - 使用所有输入字段值中的最小值。
  • Max - 使用所有输入字段值中的最大值。
  • Standard deviation - 对所有输入字段值使用标准差分类方法。
  • Count - 查找计算中所包含的记录数。

Field Mappings
子类型
(可选)

将分配给追加到目标数据集的所有新数据的子类型描述。

String
表达式
(可选)

用于选择输入数据集记录子集的 SQL 表达式。 如果指定了多个输入数据集,将使用表达式对它们进行评估。 如果没有与输入数据集表达式匹配的记录,将不会向目标追加该数据集的记录。

有关 SQL 语法的详细信息,请参阅在 ArcGIS 中使用的查询表达式的 SQL 参考

SQL Expression

派生输出

标注说明数据类型
更新的目标数据集

已更新的目标数据集。

Table View; Raster Layer

arcpy.management.Append(inputs, target, {schema_type}, {field_mapping}, {subtype}, {expression})
名称说明数据类型
inputs
[inputs,...]

所含数据将被追加到目标数据集的输入数据集。 输入数据集可以是点、线、面要素类、表、栅格、注记要素类或尺寸要素类。

可将表和要素类组合起来。 如果将要素类追加到表,则将传递属性,但不会移除要素。 如果将表追加到要素类中,则输入表中的行将具有空几何。

Table View; Raster Layer
target

将追加输入数据集数据的现有数据集。

Table View; Raster Layer
schema_type
(可选)

指定输入数据集的方案是否必须与目标数据集的字段相匹配才能追加数据。

  • TEST输入数据集的字段必须与目标数据集的字段相匹配。 如果字段不匹配,则系统将返回一条错误。
  • NO_TEST输入数据集的字段不需要与目标数据集的字段相匹配。 如果输入数据集的任何字段与目标数据集的字段不匹配,将不会被映射到目标数据集,除非在字段映射参数中对映射进行了显式设置。
  • TEST_AND_SKIP输入数据集的字段必须与目标数据集的字段相匹配。 如果任何输入数据集包含与目标数据集不匹配的字段,则该输入数据集将被忽略,并会出现警告消息。
String
field_mapping
(可选)

控制如何将输入数据集中的属性字段传输或映射到目标数据集。

仅在 schema_type 参数设置为 NO_TEST 时才能使用此参数。

由于输入数据集追加到具有预定义字段的现有目标数据集,因此无法在字段映射中添加、删除或更改字段类型。 您可以为每个输出字段设置合并规则。

合并规则用于指定如何将两个或更多个输入字段的值合并或组合为一个输出值。 有多种合并规则可用于确定如何用值填充输出字段。

  • First - 使用输入字段的第一个值。
  • Last - 使用输入字段的最后一个值。
  • Join - 串连(连接)输入字段的值。
  • Sum - 计算输入字段值的总和。
  • Mean - 计算输入字段值的平均值。
  • Median - 计算输入字段值的中值。
  • Mode - 使用具有最高频率的值。
  • Min - 使用所有输入字段值中的最小值。
  • Max - 使用所有输入字段值中的最大值。
  • Standard deviation - 对所有输入字段值使用标准差分类方法。
  • Count - 查找计算中所包含的记录数。

Python 中,您可使用 FieldMappings 类来定义此参数。

Field Mappings
subtype
(可选)

将分配给追加到目标数据集的所有新数据的子类型描述。

String
expression
(可选)

用于选择输入数据集记录子集的 SQL 表达式。 如果指定了多个输入数据集,将使用表达式对它们进行评估。 如果没有与输入数据集表达式匹配的记录,将不会向目标追加该数据集的记录。

有关 SQL 语法的详细信息,请参阅在 ArcGIS 中使用的查询表达式的 SQL 参考

SQL Expression

派生输出

名称说明数据类型
output

已更新的目标数据集。

Table View; Raster Layer

代码示例

Append 示例 1(Python 窗口)

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

import arcpy
arcpy.env.workspace = "C:/data/"
arcpy.Append_management(["north.shp", "south.shp", "east.shp", "west.shp"], 
                        "wholecity.shp", "TEST")
Append 示例 2(独立脚本)

以下脚本演示了如何使用 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 to
emptyFC = arcpy.CreateFeatureclass_management(outLocation, outName, "POLYGON", 
                                              "amherst.shp")

# All polygon FCs in the workspace are MA town shapefiles, you 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 to 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 to the empty feature class
arcpy.Append_management(fcList, os.path.join(outLocation, emptyFC), schemaType, 
                        fieldMappings, subtype)

环境

特殊情况

保留全局 ID

对于追加工具而言,此环境仅适用于企业级地理数据库数据,且仅作用于拥有含唯一索引的全局 ID 字段的数据。 若全局 ID 字段不具有唯一索引,则此工具可能无法使用。 要赋予全局 ID 字段一个唯一索引,可使用添加属性索引工具。

许可信息

  • Basic: 是
  • Standard: 是
  • Advanced: 是

相关主题