合并 (数据管理)

摘要

可将多个输入数据集合并为新的单个输出数据集。 此工具可合并点、线或面要素类或者表。

使用追加工具可将输入数据集合并到现有数据集。

插图

合并工具图示

使用情况

  • 使用该工具可将多个源中的数据集合并到新的单个输出数据集。 所有输入要素类必须具有相同的几何类型。 例如,点要素类之间可以合并,但线要素类却无法同面要素类合并。

    表和要素类可在单一输出数据集中合并。 输出类型由第一个输入确定。 如果第一个输入为要素类,则输出将为要素类。 如果第一个输入为表,则输出将为表。 如果将表合并到要素类中,则输入表中的行将具有空几何。

  • 使用字段匹配模式参数指定如何将输入数据集中的字段传输到输出数据集。 默认情况下,工具会自动将同名字段匹配映射,并在输出中保留输入中特有的字段。 选择使用字段映射协调字段差异选项时,需使用字段映射参数。 如果所有输入数据集的模式相同,可以选择仅使用第一个数据集方案选项来提高性能。

  • 使用字段映射参数管理输出数据集中的字段及其内容。

    • 您可以向字段列表中添加和移除字段,重新排序字段列表,并重命名字段。
    • 输出字段的默认数据类型与它遇到的第一个输入字段(具有相同名称的字段)的数据类型相同。 可以将数据类型更改为其他有效的数据类型。
    • 使用操作确定如何将一个或多个输入字段的值合并到单个输出字段中。 可用的操作包括第一个最后一个串连求和平均值中位数众数最小值最大值标准差计数
    • 当使用串连操作时,可以指定分隔符,例如逗号或其他字符。 单击分隔符文本框的开始部分以添加分隔符。
    • 单个输入值不支持标准差选项。
    • 使用导出选项 导出 将字段映射另存为 .fieldmap 文件。
    • 使用加载选项 Import 加载 .fieldmap 文件。 文件中指定的要素图层或数据集必须与工具中使用的数据集相匹配。 否则,将重置字段映射参数。
    • 对于文本源字段,使用分割文本按钮 剪切,可以选择从输入值中提取到输出字段的字符。 要访问分割文本按钮,需将鼠标悬停在输入字段列表中的文本字段上,然后指定起始和结束字符位置。
    • 还可以Python 脚本中映射字段。

  • 该工具不会分割或更改来自输入数据集的几何。 即使出现要素重叠,输入数据集中的所有要素在输出数据集中也将保持不变。 要合并或打断要素几何,请使用联合工具。

  • 合并要素类时,如果没有设置输出坐标系环境,则输出数据集将使用输入数据集参数中指定的第一个要素类的坐标系。

  • 此工具不支持注记要素类。 使用追加注记要素类工具来合并注记要素类。

  • 此工具不支持栅格数据集。 使用镶嵌至新栅格工具可将多个栅格合并为新的输出栅格。

参数

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

要合并为新的输出数据集的输入数据集。 输入数据集可为点、线或面要素类或表。 输入要素类必须全部具有相同的几何类型。

表和要素类可在单一输出数据集中合并。 输出类型由第一个输入确定。 如果第一个输入为要素类,则输出将为要素类。 如果第一个输入为表,则输出将为表。 如果将表合并到要素类中,则输入表中的行将具有空几何。

Table View
输出数据集

将包含所有组合输入数据集的输出数据集。

Feature Class;Table
字段映射
(可选)

使用字段映射来协调多个数据集之间的方案差异并匹配属性字段。 输出默认包含输入数据集中的所有字段。

使用字段映射来添加、删除、重命名和重新排序字段,以及更改其他字段属性。

字段映射还可以用于将两个或多个输入字段的值合并为单个输出字段。

Field Mappings
将源信息添加到输出
(可选)

指定是否将源信息添加到输出数据集的新 MERGE_SRC 文本字段中。 MERGE_SRC 字段中的值用于指示作为输出中每条记录的源的输入数据集路径或图层名称。

  • 未选中 - 源信息将不会添加到 MERGE_SRC 字段中的输出数据集。 这是默认设置。
  • 选中 - 源信息将添加到 MERGE_SRC 字段中的输出数据集。
Boolean
字段匹配模式
(可选)

指定如何将输入数据集中的字段传输到输出数据集。

  • 自动生成合并自所有输入的字段同名字段会自动匹配映射到输出。 在输出中保留输入中特有的字段。 这是默认设置。
  • 使用字段映射协调字段差异输出字段根据字段映射参数值确定。
  • 仅使用第一个数据集方案将使用第一个输入数据集的方案。 当所有输入数据集的方案相同时,可以使用此模式。
String

arcpy.management.Merge(inputs, output, {field_mappings}, {add_source}, {field_match_mode})
名称说明数据类型
inputs
[inputs,...]

要合并为新的输出数据集的输入数据集。 输入数据集可为点、线或面要素类或表。 输入要素类必须全部具有相同的几何类型。

表和要素类可在单一输出数据集中合并。 输出类型由第一个输入确定。 如果第一个输入为要素类,则输出将为要素类。 如果第一个输入为表,则输出将为表。 如果将表合并到要素类中,则输入表中的行将具有空几何。

Table View
output

将包含所有组合输入数据集的输出数据集。

Feature Class;Table
field_mappings
(可选)

使用字段映射来协调多个数据集之间的方案差异并匹配属性字段。 输出默认包含输入数据集中的所有字段。

使用字段映射来添加、删除、重命名和重新排序字段,以及更改其他字段属性。

字段映射还可以用于将两个或多个输入字段的值合并为单个输出字段。

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

Field Mappings
add_source
(可选)

指定是否将源信息添加到输出数据集的新 MERGE_SRC 文本字段中。 MERGE_SRC 字段中的值用于指示作为输出中每条记录的源的输入数据集路径或图层名称。

  • NO_SOURCE_INFO源信息将不会添加到 MERGE_SRC 字段中的输出数据集。 这是默认设置。
  • ADD_SOURCE_INFO源信息将添加到 MERGE_SRC 字段中的输出数据集。
Boolean
field_match_mode
(可选)

指定如何将输入数据集中的字段传输到输出数据集

  • AUTOMATIC同名字段会自动匹配映射到输出。 在输出中保留输入中特有的字段。 这是默认设置。
  • MANUAL_EDIT输出字段根据 field_mappings 参数值确定。
  • USE_FIRST_SCHEMA将使用第一个输入数据集的方案。 当所有输入数据集的方案相同时,可以使用此模式。
String

代码示例

Merge 示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何使用 Merge 函数:

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.management.Merge(["majorrds.shp", "Habitat_Analysis.gdb/futrds"], 
                       "C:/output/Output.gdb/allroads", "", "ADD_SOURCE_INFO")
Merge 示例 2(独立脚本)

使用 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.management.Merge([oldStreets, newStreets], uptodateStreets, fieldMappings, 
                       addSourceInfo)

许可信息

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

相关主题