Выполнить Слияние (Управление данными)
Краткая информация
Комбинирует несколько входных наборов данных одного типа данных в один новый выходной набор данных. Этот инструмент комбинирует точечные, линейные и полигональные классы объектов или таблицы.
Используйте инструмент Геометрическое соединение (Append), чтобы комбинировать входные наборы данных с существующими.
Рисунок
Использование
-
Используйте этот инструмент, чтобы комбинировать наборы данных из нескольких источников в один новый выходной набор данных. Все входные наборы данных должны быть одного типа (т.е. можно объединить несколько классов точечных объектов или несколько таблиц, но нельзя объединять класс линейных объектов с классом полигональных объектов).
-
Все поля в выходном наборе данных и содержание этих полей можно контролировать с помощью элементов управления Список полей (Field Map controls).
-
Этот инструмент не разбивает входные пространственные объекты в точках пересечений. Все пространственные объекты входных классов объектов останутся без изменений после слияния, даже если пространственные объекты перекрываются. Чтобы комбинировать или выравнивать геометрии пространственных объектов, используйте инструмент Объединить (Union).
-
При слиянии классов пространственных объектов выходной набор данных находится в системе координат первого в списке Входных наборов данных (Input Datasets) класса пространственных объектов, если в качестве среды геообработки не установлена Выходная система координат (Output Coordinate System).
-
Этот инструмент не поддерживает классы объектов аннотаций. Используйте инструмент Добавить классы объектов-аннотаций (Append Annotation Feature Classes) для комбинирования классов объектов аннотаций.
Указанный инструмент не поддерживает наборы растровых данных. Используйте инструмент Мозаика в новый растр (Mosaic To New Raster, чтобы объединить несколько растров в новый выходной растр.
Синтаксис
Параметр | Объяснение | Тип данных |
inputs [inputs,...] |
Входные наборы данных, которые будут объединены вместе в новый выходной набор данных. Входными наборами данных могут быть классы точечных, линейных или полигональных объектов или таблицы. Тип данных всех входных наборов данных должен быть соответствующим. | Table View |
output |
Выходной набор данных, который будет содержать все комбинированные входные наборы данных. | Feature Class;Table |
field_mappings (дополнительно) |
Поля и параметры полей входных наборов данных. Все уникальные входные поля перечислены в окне Список полей (Field Map), при расширении которого можно увидеть список местонахождений всех входных полей. В каждом поле списка полей можно добавлять, переименовывать или удалять выходные поля, а также устанавливать свойства, такие как тип данных или правила слияния. Также можно удалять местонахождения выходных полей, а также форматировать любые значения выходных полей. | Field Mappings |
Пример кода
Следующий скрипт окна Python демонстрирует, как использовать инструмент Объединение (Merge).
import arcpy
arcpy.env.workspace = "C:/data"
arcpy.Merge_management(["majorrds.shp", "Habitat_Analysis.gdb/futrds"], "C:/output/Output.gdb/allroads")
Используйте инструмент Объединение (Merge) для перемещения пространственных объектов из двух классов объектов улиц в один набор данных.
# 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.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)