Присоединить (Управление данными)

Сводка

Присоединяет несколько входных наборов данных к существующему целевому набору данных. Входными наборами данных могут быть классы объектов, таблицы, шейп-файлы, растры, классы объектов аннотаций или объекты-размеры.

Чтобы комбинировать входные наборы данных в новый выходной набор данных, используйте инструмент Слияние.

Иллюстрация

Иллюстрация инструмента Присоединить

Использование

  • Используйте этот инструмент, чтобы добавить пространственные объекты или другие данные из нескольких наборов данных в существующий набор данных. Этот инструмент может присоединять классы точечных, линейных и полигональных пространственных объектов, таблицы, растры, классы пространственных объектов-аннотаций или объектов-размеров к существующему набору данных такого же типа. Например, несколько таблиц можно присоединить к имеющейся таблице, или несколько растров - к существующему набору растровых данных, но нельзя присоединить класс линейных пространственных объектов к точечному классу.

  • Параметр Список полей инструмента Присоединить может использоваться для контроля того, как информация из атрибутивных полей входного набора данных переносится в целевой набор данных. Параметр Список полей можно использовать только в том случае, если для Типа схемы выбрано Использовать Список полей для согласования различий схемы.

  • Все поля в выходном наборе данных и содержание этих полей можно контролировать с помощью Списка полей.

    • Чтобы изменить порядок полей, выберите имя поля и перетащите его в нужное положение.
    • Тип данных по умолчанию для выходного поля будет таким же, как тип данных первого входного поля (того имени), с которым он сталкивается. Вы можете вручную изменить тип данных в любое время на любой другой допустимый тип данных.
    • Применимы следующие правила слияния: первый, последний, соединение, сумма, среднее, медиана, мода, минимум, максимум, стандартное отклонение и количество.
    • Используя правило слияния Соединение, вы можете задать собственный разделитель, например, пробел, запятую, точку, тире и т.д. Чтобы использовать пробел, убедитесь, что курсор мыши находится в начале входного набора и щелкните клавишу пробел один раз.
    • Можно указать начальное и конечное положения текстовых полей, используя опцию формата.
    • Среднеквадратическое отклонение не должно быть использовано для одного входного поля, так как значения нельзя делить на ноль. Поэтому среднеквадратическое отклонение не может применяться для одного входного поля.

    Более подробно о списках полей в скриптах

  • Этот инструмент не разбивает пространственные объекты в точках пересечений при добавлении их целевому набору данных. Все пространственные объекты из входного класса объектов и целевого класса объектов останутся без изменений после присоединения, даже если пространственные объекты перекрываются. Чтобы скомбинировать, или разбить, геометрию пространственных объектов, используйте инструмент Объединить.

  • Если выбрано Входная схема должна соответствовать целевой схеме для Типа схемы (schema_type = "TEST" в Python), схема (определение полей) входного набора данных должна совпадать со схемой целевого набора данных, для того чтобы присоединить объекты. Если выбрано Использовать Список полей для согласования различий схемы (schema_type = "NO_TEST" в Python), схема входного набора данных (определения полей) не должна соответствовать целевому набору данных. Однако поля входных наборов данных, которые не соответствуют полям целевого набора данных, не будут присоединены целевому набору данных, если соответствие не будет специально определено установкой параметра Список полей.

  • Поскольку данные входного набора данных записываются в существующий целевой набор данных, который имеет предопределенную схему (названия и типы полей), параметр Список поля не допускает добавления или удаления полей из целевого набора данных.

  • Если пространственные привязки входного и целевого классов объектов не совпадают, инструмент Присоединить спроецирует пространственные объекты входного класса объектов в систему координат целевого класса объектов.

  • Этот инструмент не выполняет подгонку границ, корректировка геометрии пространственных объектов производиться не будет.

  • Слои карты могут использоваться как Входные наборы данных. Если в слое задана выборка, то инструмент Присоединить использует только выбранные записи (пространственные объекты или строки таблицы).

  • Этот инструмент не может использовать несколько входных слоев с одним именем. Чтобы обойти это ограничение, используйте кнопку просмотра диалогового окна инструмента для вывода полных путей каждого из Входных наборов данных.

  • Чтобы использовать параметр Подтип, целевой набор данных должен иметь заданное поле подтипа и присвоенные коды подтипа. В параметре Подтип задайте описание подтипа, чтобы присвоить этот подтип всем новым данным, которые присоединяются к целевому набору данных.

Синтаксис

Append(inputs, target, {schema_type}, {field_mapping}, {subtype}, {expression})
ParameterОбъяснениеТип данных
inputs
[inputs,...]

Входные наборы данных, данные которых будут присоединены к целевым наборам данных. Входные наборы данных могут быть классами точечных, линейных или полигональных объектов, таблицами, растрами, классами объектов аннотаций или классами объектов измерений.

Таблицы и классы объектов можно комбинировать. Если класс пространственных объектов добавляется к таблице, атрибуты будут перенесены, но объекты будут удалены. Если таблица присоединяется к классу объектов, у строк выходной таблицы будет нулевая геометрия.

Table View; Raster Layer
target

Существующий набор данных, к которому будут присоединены данные входного набора данных.

Table View; Raster Layer
schema_type
(Дополнительный)

Устанавливает, должна ли схема (названия и типы полей) входных наборов данных соответствовать схеме целевого набора данных, чтобы данные были присоединены.

  • TESTСхема входных данных (определения полей) должна соответствовать схеме целевого набора данных. Если схемы не соответствуют, будет выдаваться ошибка.
  • NO_TESTСхема входных данных (определения полей) не должна соответствовать схеме целевого набора данных. Поля входных наборов данных, которые не соответствуют полям целевого набора данных, не будут сопоставлены целевому набору данных, если соответствие не будет специально определено установкой параметра Список полей.
String
field_mapping
(Дополнительный)

Контролирует, как атрибутивные поля входных наборов данных переносятся или сопоставляются в целевом наборе данных.

Этот параметр можно использовать только в случае, если для параметра schema_type указано значение NO_TEST.

Поскольку данные входного набора данных присоединены к существующему целевому набору данных с предопределенной схемой (определением полей), поля могут быть добавлены или удалены из целевого набора данных. Вы можете задать правила слияния для каждого выходного поля.

Правила слияния позволяют вам определить, каким образом значения из нескольких входных полей будут слиты или объединены в одно выходное значение. Имеется несколько правил слияния, которые можно использовать для определения способа присвоения значений выходным полям.

  • Первое – используется первое значение входного поля.
  • Последнее – используется последнее значение входного поля.
  • Соединение – соединение (объединение) значений входных полей.
  • Сумма – вычисление суммы значений входных полей.
  • Среднее – вычисление среднего по значениям входных полей.
  • Медиана – вычисление медианы (середины) по значениям входных полей.
  • Мода – использование значения, встречающегося с наибольшей частотой.
  • Минимум – использование наименьшего из всех значений входных полей.
  • Максимум – использование наибольшего из всех значений входных полей.
  • Среднеквадратическое отклонение – использование классификации методом среднеквадратического отклонения для всех значений входных полей.
  • Число – Определение числа записей, входящих в расчет.

В Python можно использовать класс FieldMappings для определения этого параметра.

Field Mappings
subtype
(Дополнительный)

Описание подтипа, которое будет присвоено всем новым данным, которые присоединяются к целевому набору данных.

String
expression
(Дополнительный)

SQL-выражение, использованное для выбора поднабора записей входного набора данных. Если указано несколько наборов данных, выражение будет применено ко всем. Если во входном наборе данных отсутствуют записи, удовлетворяющие выражению, ни одна запись не будет присоединена к целевому набору.

Более подробно о синтаксисе SQL см. Справочник по SQL для выражений запросов, применяемых в ArcGIS.

SQL Expression

Производные выходные данные

NameОбъяснениеТип данных
output

Обновленный целевой набор данных.

Представление таблицы; растровый слой

Пример кода

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 into
emptyFC = arcpy.CreateFeatureclass_management(outLocation, outName, "POLYGON", 
                                              "amherst.shp")
# All polygon FCs in the workspace are MA town shapefiles, we 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 into 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 into the empty feature class
arcpy.Append_management(fcList, os.path.join(outLocation, emptyFC), schemaType, 
                        fieldMappings, subtype)

Информация о лицензиях

  • Basic: Да
  • Standard: Да
  • Advanced: Да

Связанные разделы