合并 (数据管理)

摘要

将数据类型相同的多个输入数据集合并为新的单个输出数据集。该工具可以合并点、线或面要素类

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

插图

Merge Illustration

用法

语法

Merge_management (inputs, output, {field_mappings})
参数说明数据类型
inputs
[inputs,...]

要合并为新的输出数据集的输入数据集。输入数据集可为点、线或面要素类或是表。所有输入数据集的数据类型必须一致。

Table View
output

包含所有合并后输入数据集的输出数据集。

Feature Class;Table
field_mappings
(可选)

从输入数据中选出的字段及字段内容。“字段映射”窗口将列出每一个唯一输入字段,展开后您将看到所有输入字段的列表。

对于每个“字段映射”,均可添加、重命名或删除输出字段,还可设置诸如数据类型和合并规则等属性。您也可删除出现的输出字段并设置任何输出字段的值的格式。

合并规则用于指定如何将两个或更多个输入字段的值合并为一个输出值。有以下几个合并规则可供使用:

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

Field Mappings

代码示例

Merge 示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何使用“合并”工具。

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

使用“合并”工具可将两个街区要素类中的要素移动到一个单独的数据集中。

# Name: Merge.py
# Description: Use Merge tool to move features from two street
#                    feature classes into a single dataset with field mapping


# import system modules 
import arcpy
from arcpy import env

# Set environment settings
env.workspace = "C:/data"

# Street feature classes to be merged
oldStreets = "majorrds.shp"
newStreets = "Habitat_Analysis.gdb/futrds"

# Create FieldMappings object to manage merge output fields
fieldMappings = arcpy.CreateObject("FieldMappings")

# Create FieldMap objects to add new fields to merge output
fldMap_streetClass = arcpy.CreateObject("FieldMap")
fldMap_streetName = arcpy.CreateObject("FieldMap")

# 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.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 input fields "CLASS" & "IFC" into new output field
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 "Street_Class" and "Street_Name" output fields to FieldMappings object
fieldMappings.AddFieldMap(fldMap_streetName)
fieldMappings.AddFieldMap(fldMap_streetClass)

# Remove all output fields from the field map, 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)

环境

相关主题

许可信息

ArcView: 是
ArcEditor: 是
ArcInfo: 是

7/10/2012