插图
使用方法
使用该工具可将多个源中的数据集合并到新的单个输出数据集。所有输入要素类必须具有相同的几何类型。例如,点要素类之间可以合并,但线要素类却无法同面要素类合并。
表和要素类可在单一输出数据集中合并。输出类型由第一个输入确定。如果第一个输入是要素类,则输出将是要素类,如果第一个输入是表,则输出将是表。如果将表合并到要素类中,则输入表中的行将具有空几何。
您可以使用字段映射来控制输出数据集中所有字段以及各字段中的内容。
- 要更改字段顺序,请选择一个字段名称并将其拖动到首选位置。
- 输出字段的默认数据类型与其所遇到的第一个名称相同的输入字段的数据类型相同。您可以随时将该数据类型手动更改为其他任何有效的数据类型。
- 可以使用以下合并规则:first、last、join、sum、mean、median、mode、minimum、maximum、standard deviation 和 count。
- 如果使用连接合并规则,则可指定分隔符,例如,空格、逗号、句点和短划线等。要使用空格,请确保指针位于输入框的起始位置处,然后按一次空格键。
- 您可以使用格式选项来指定文本字段的起始和终止位置。
- 请勿对单个输入执行标准差计算,因为数字不能被零除,因此标准差不适用于单个输入。
该工具不会分割或更改来自输入数据集的几何。即使出现要素重叠,输入数据集中的所有要素在输出数据集中也将保持不变。要合并或打断要素几何,请使用联合工具。
合并要素类时,如果没有设置输出坐标系地理处理环境,则输出数据集将使用输入数据集列表中第一个要素类的坐标系。
此工具不支持注记要素类。使用追加注记要素类工具来合并注记要素类。
此工具不支持栅格数据集。使用镶嵌至新栅格工具可将多个栅格合并为新的输出栅格。
语法
Merge(inputs, output, {field_mappings}, {add_source})
参数 | 说明 | 数据类型 |
inputs [inputs,...] | 要合并为新的输出数据集的输入数据集。输入数据集可为点、线或面要素类或表。输入要素类必须全部具有相同的几何类型。 表和要素类可在单一输出数据集中合并。输出类型由第一个输入确定。如果第一个输入是要素类,则输出将是要素类,如果第一个输入是表,则输出将是表。如果将表合并到要素类中,则输入表中的行将具有空几何。 | Table View |
output | 包含所有合并后输入数据集的输出数据集。 | Feature Class;Table |
field_mappings (可选) | 控制输出中要包含的属性字段。默认情况下,将包括输入的所有字段。 可以添加、删除、重命名和重新排序字段,且可以更改其属性。 合并规则用于指定如何将两个或更多个输入字段的值合并或组合为一个输出值。有多种合并规则可用于确定如何用值填充输出字段。
在 Python 中,您可使用 FieldMappings 类来定义此参数。 | Field Mappings |
add_source (可选) | 指定是否将源信息添加到新文本字段 MERGE_SRC 中的输出数据集中。MERGE_SRC 字段中的值用于指示作为输出中每条记录的源的输入数据集路径或图层名称。
| Boolean |
代码示例
以下 Python 窗口脚本演示了如何使用 Merge 函数。
import arcpy
arcpy.env.workspace = "C:/data"
arcpy.Merge_management(["majorrds.shp", "Habitat_Analysis.gdb/futrds"],
"C:/output/Output.gdb/allroads", "", "ADD_SOURCE_INFO")
使用 Merge 功能可将两个街区要素类中的要素移动到一个单独的数据集中。
# Name: Merge.py
# Description: Use Merge to move features from two street
# feature classes into a single dataset with field mapping
# import system modules
import arcpy
# Set environment settings
arcpy.env.workspace = "C:/data"
# Street feature classes to be merged
oldStreets = "majorrds.shp"
newStreets = "Habitat_Analysis.gdb/futrds"
addSourceInfo = "ADD_SOURCE_INFO"
# Create FieldMappings object to manage merge output fields
fieldMappings = arcpy.FieldMappings()
# Add all fields from both oldStreets and newStreets
fieldMappings.addTable(oldStreets)
fieldMappings.addTable(newStreets)
# Add input fields "STREET_NAM" & "NM" into new output field
fldMap_streetName = arcpy.FieldMap()
fldMap_streetName.addInputField(oldStreets, "STREET_NAM")
fldMap_streetName.addInputField(newStreets, "NM")
# Set name of new output field "Street_Name"
streetName = fldMap_streetName.outputField
streetName.name = "Street_Name"
fldMap_streetName.outputField = streetName
# Add output field to field mappings object
fieldMappings.addFieldMap(fldMap_streetName)
# Add input fields "CLASS" & "IFC" into new output field
fldMap_streetClass = arcpy.FieldMap()
fldMap_streetClass.addInputField(oldStreets, "CLASS")
fldMap_streetClass.addInputField(newStreets, "IFC")
# Set name of new output field "Street_Class"
streetClass = fldMap_streetClass.outputField
streetClass.name = "Street_Class"
fldMap_streetClass.outputField = streetClass
# Add output field to field mappings object
fieldMappings.addFieldMap(fldMap_streetClass)
# Remove all output fields from the field mappings, except fields
# "Street_Class", "Street_Name", & "Distance"
for field in fieldMappings.fields:
if field.name not in ["Street_Class", "Street_Name", "Distance"]:
fieldMappings.removeFieldMap(fieldMappings.findFieldMapIndex(field.name))
# Since both oldStreets and newStreets have field "Distance", no field mapping
# is required
# Use Merge tool to move features into single dataset
uptodateStreets = "C:/output/Output.gdb/allroads"
arcpy.Merge_management([oldStreets, newStreets], uptodateStreets, fieldMappings,
addSourceInfo)
环境
许可信息
- Basic: 是
- Standard: 是
- Advanced: 是