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

Краткая информация

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

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

Иллюстрация

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

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

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

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

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

    • Используйте действие, чтобы определить, как значения из одного или нескольких входных наборов данных будут сопоставлены с одним полем в целевом наборе данных.
    • Доступны следующие действия: Первое, Последнее, Соединить, Сумма, Среднее, Медиана, Режим, Минимум, Максимум, Стандартное отклонение и Число.
    • При использовании действия Соединить, вы можете задать разделитель, например, точку или другой символ. Щелкните начало текстового поля Разделитель, чтобы добавить символы-разделители.
    • Стандартное отклонение не является допустимым параметром для одиночных входных значений.
    • Используйте опцию Экспорт Экспорт для сохранения списка полей как файл .fieldmap.
    • Используйте опцию Загрузить Import, чтобы загрузить файл .fieldmap. Векторный слой или набор данных, указанный в файле, должен соответствовать набору данных, используемому в инструменте. Иначе параметр Список полей будет сброшен.
    • Используйте кнопку Фрагмент текста Вырезать в исходных текстовых полях, чтобы выбрать, какие символы из входного значения будут извлечены в целевое поле. Чтобы получить доступ к кнопке Фрагмент текста, наведите курсор на текстовое поле в списке входных полей, затем укажите начальную и конечную позиции символов.
    • Поля также можно сопоставить в скрипте Python.

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

    fieldmappings = arcpy.FieldMappings() 
    fieldmappings.addTable(target) 
    fieldmappings.addTable(input)
  • Этот инструмент не разбивает пространственные объекты в точках пересечений при добавлении их целевому набору данных. Все пространственные объекты из входного класса объектов и целевого класса объектов останутся без изменений после присоединения, даже если пространственные объекты перекрываются. Чтобы скомбинировать, или разбить, геометрию пространственных объектов, используйте инструмент Объединить.

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

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

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

  • Количество присоединяемых строк отображается в сообщениях инструмента и возвращается в выводе Количество присоединенных строк.

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

  • Вы можете использовать этот инструмент для вставки новых и обновления существующих записей в целевой набор данных за одну операцию (аналогично операции UPSERT в базе данных). Используйте параметр Сопоставление полей для обновления, чтобы указать поля входного набора данных, которые будут соответствовать полям целевого набора данных. Для записей со значениями сопоставленных полей все поля целевой записи будут обновлены значениями в полях с теми же именами во входной записи. Количество обновленных строк с совпадающими полями отображается в сообщениях инструмента и будет возвращено в выводе Количество обновленных строк. Геометрия будет обновлена, если стоит отметка Обновить геометрию.

  • У входных и целевых наборов данных могут быть различные пространственные привязки. В этом случае инструмент спроецирует входные объекты в целевую систему координат. Для достижения наилучших результатов укажите подходящее географическое преобразование с помощью параметра среды Географические преобразования. Если целевой набор данных - это слой карты, инструмент может применить преобразование по умолчанию. В Python преобразований по умолчанию нет.

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

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

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

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

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

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

  • Этот инструмент можно использовать непосредственно во внутреннем хранилище данных, на сервере или в базе данных векторных веб-слоев, чтобы обеспечить оптимальную производительность. Для сервисов объектов, ссылающихся на базу геоданных, этот инструмент можно использовать с подключением к базе данных для выполнения операций загрузки больших данных непосредственно в исходную базу данных. Для размещенных сервисов в ArcGIS Enterprise можно использовать операцию append со страницы элемента векторного слоя или из ArcGIS REST API.

    Для достижения оптимальной производительности сервисов пространственных объектов в ArcGIS Online и ArcGIS Enterprise владельцы сервисов и администраторы могут использовать этот инструмент с ArcGIS REST API , если для свойства supportsAppend установлено true. Чтобы пользователи, не являющиеся администраторами, могли использовать этот инструмент с ArcGIS REST API, возможности присоединения сервисов объектов должны быть включены. Для ArcGIS Enterprise размещенные векторные слои или веб-слои, ссылающихся на зарегистрированные данные, должны быть доступны для редактирования с помощью опций Добавить, Удалить или Обновить (что обеспечивает возможность Uploads).
  • Параметр Оптимизировать производительность для сервисов объектов поддерживается только в том случае, если целевой набор данных поддерживает возможности присоединения сервисов объектов. Когда этот параметр отмечен, будет выполнено следующее:

    • Инструмент будет использовать ArcGIS REST API для достижения оптимальной производительности.
    • Параметр Входные наборы данных будет ограничен одним набором данных.
    • Параметры Выражение и Принудительно использовать домены поддерживаться не будут.
    • Параметр Сопоставленные поля для обновления будет ограничен одной парой сопоставленных полей.
    • Все операции обновления и вставки будут учтены в выходном значении Количество присоединенных строк.

    Если инструмент запущен в существующем сеансе редактирования или включена кнопка Включить отмену, параметр Оптимизировать производительность для сервисов объектов не будет использоваться.

    Если отмечен параметр Оптимизировать производительность для сервисов пространственных объектов и значения параметра Поля сопоставления для обновления имеют сопоставленное поле Global ID, значения Global ID будут сохранены. Если поля Global ID не включены, все входные строки будут вставлены и им будут присвоены новые значения Global ID.

Параметры

ПодписьОписаниеТип данных
Входные наборы данных

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

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

Table View; Raster Layer
Целевой набор данных

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

Table View; Raster Layer
Тип сопоставления полей
(Дополнительный)

Определяет, должны ли для присоединения данных поля входных наборов данных соответствовать полям целевого набора.

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

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

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

Список полей также может использоваться для объединения значений из одного или нескольких входных полей в одно выходное.

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

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

String
Выражение
(Дополнительный)

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

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

SQL Expression
Сопоставленные поля для обновления
(Дополнительный)

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

Value Table
Обновление геометрии
(Дополнительный)

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

  • Отмечено — геометрия целевого набора данных будет обновлена, если значения полей параметра Поля сопоставления для обновления совпадают.
  • Не отмечено — геометрия обновлена не будет. Используется по умолчанию.
Boolean
Принудительно использовать домены
(Дополнительный)

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

  • Отмечено — домены полей целевого набора данных будут принудительно использованы. Если значение входного поля выходит за пределы определения домена целевого поля, запись будет вставлена, но значение входного поля станет Null. Если указаны соответствующие поля для обновления, целевое поле обновлено не будет. Сообщения инструмента будут содержать предупреждение с указанием строк, в которых невозможно записать значения выходных полей.
  • Не отмечено — домены полей целевого набора данных принудительно применяться не будут. Используется по умолчанию.
Boolean
Оптимизировать производительность для сервисов пространственных объектов
(Дополнительный)

Указывает, будет ли оптимизирована производительность, если целевым набором данных является сервис объектов ArcGIS Online или ArcGIS Enterprise. Этот параметр активен только в том случае, если целевой набор данных поддерживает оптимизацию.

  • Отмечено — производительность инструмента будет оптимизирована, если целевым набором данных является сервис объектов с включенной возможностью Присоединить. Оптимизация использует обработку на стороне сервера, при которой входные данные отправляются в API Присоединить сервиса объектов и загружаются в набор данных асинхронно. Если этот параметр поддерживается, он будет отмечен по умолчанию. Когда параметр отмечен, параметры Выражение и Принудительно использовать домены не поддерживаются, а использование параметра Поля сопоставления для обновления ограничено одним входным набором данных и одной парой полей.
  • Не отмечено — производительность инструмента не будет оптимизирована, если целевым является сервис объектов.
Boolean

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

ПодписьОписаниеТип данных
Обновленный целевой набор данных

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

Table View; Raster Layer
Количество присоединенных строк

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

Если отмечен параметр Оптимизировать производительность для сервисов объектов и указано значение параметра Поля сопоставления для обновления, будут учитываться все операции обновления и вставки

Long
Количество обновленных строк

Количество обновленных строк в целевом наборе данных.

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

Long

arcpy.management.Append(inputs, target, {schema_type}, {field_mapping}, {subtype}, {expression}, {match_fields}, {update_geometry}, {enforce_domains}, {feature_service_mode})
ИмяОписаниеТип данных
inputs
[inputs,...]

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

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

Table View; Raster Layer
target

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

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

Определяет, должны ли для присоединения данных поля входных наборов данных соответствовать полям целевого набора.

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

Параметр списка полей управляет переносом или отображением полей из входных наборов данных в целевой набор данных. Он используется только когда для параметра schema_type задано NO_TEST.

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

Список полей также может использоваться для объединения значений из одного или нескольких входных полей в одно выходное.

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

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

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

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

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

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

SQL Expression
match_fields
[[target_field, input_field],...]
(Дополнительный)

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

Value Table
update_geometry
(Дополнительный)

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

  • UPDATE_GEOMETRYГеометрия целевого набора данных будет обновлена, если значения полей параметра match_fields совпадают.
  • NOT_UPDATE_GEOMETRYГеометрия вычисляться не будет. Используется по умолчанию.
Boolean
enforce_domains
(Дополнительный)

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

  • ENFORCE_DOMAINSДомены полей целевого набора данных будут принудительно использованы. Если значение входного поля выходит за пределы определения домена целевого поля, запись будет вставлена, но значение входного поля станет Null. Если указаны соответствующие поля для обновления, целевое поле обновлено не будет. Сообщения инструмента будут содержать предупреждение с указанием строк, в которых невозможно записать значения выходных полей.
  • NO_ENFORCE_DOMAINSДомены полей целевого набора данных не будут принудительно использованы. Используется по умолчанию.
Boolean
feature_service_mode
(Дополнительный)

Указывает, будет ли оптимизирована производительность, если целевым набором данных является сервис объектов ArcGIS Online или ArcGIS Enterprise. Этот параметр активен только в том случае, если целевой набор данных поддерживает оптимизацию.

  • USE_FEATURE_SERVICE_MODEПроизводительность инструмента будет оптимизирована, если целевым набором данных является сервис объектов с включенной возможностью Присоединить. Оптимизация использует обработку на стороне сервера, при которой входные данные отправляются в API Присоединить сервиса объектов и загружаются в набор данных асинхронно. Если этот параметр поддерживается, он будет отмечен по умолчанию. Когда параметр отмечен, параметры expression и enforce_domains не поддерживаются, а использование параметра match_fields ограничено одним входным набором данных и одной парой полей.
  • NO_FEATURE_SERVICE_MODEПроизводительность инструмента не будет оптимизирована, если целевым является сервис объектов.
Boolean

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

ИмяОписаниеТип данных
output

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

Table View; Raster Layer
appended_row_count

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

Если значение параметра feature_service_mode равно USE_FEATURE_SERVICE_MODE и указано значение параметра match_fields, то будут учитываться все операции обновления и вставки.

Long
updated_row_count

Количество обновленных строк в целевом наборе данных.

Количество обновленных строк не будет предоставлено для целевых наборов данных сервисов объектов, если значение параметра feature_service_mode равно USE_FEATURE_SERVICE_MODE.

Long

Пример кода

Append, пример 1 (окно Python)

Пример скрипта окна Python для использования функции Append в режиме прямого запуска.

import arcpy
arcpy.env.workspace = "C:/data"
arcpy.management.Append(["north.shp", "south.shp", "east.shp", "west.shp"], 
                        "wholecity.shp", "TEST")
Append, пример 2 (окно Python)

Пример скрипта окна Python для использования функции Append с параметрами match_fields и update_geometry в режиме прямого запуска.

import arcpy
arcpy.env.workspace = "C:/data/zoning.gdb"
arcpy.management.Append("Zoning_update_2040", "Zoning_2020", "TEST", 
                        match_fields=[["ZONEID", "ZONEID"]], update_geometry="UPDATE_GEOMETRY")
Append, пример 3 (автономный скрипт)

Скрипт, демонстрирующий выполнение функции Append.

# Name: Append.py
# Description: Use the Append tool to combine several polygon feature classes

# Import system modules 
import arcpy
import os

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

# Set local variables
outLocation = "C:/data/output.gdb"
outName = "MA_towns.shp"
schemaType = "NO_TEST"
fieldMappings = ""
subtype = ""

# Process: Append to an existing "amherst" polygon feature class
target = os.path.join(outLocation, "amherst")

# All polygon FCs in the workspace are MA town FCs, you want to append these
# to the target FC. The list will resemble ["amherst", "hadley", "pelham",
# "coldspring"]

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(target)

# Add input fields for the town name to 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", "TOWNNAME")
fldMap.addInputField("hadley", "NAME")
fldMap.addInputField("pelham", "TOWN_NAME")
fldMap.addInputField("coldspring", "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 for the POPULATION field
fldMap = arcpy.FieldMap()
fldMap.addInputField("amherst","POPULATION")
fldMap.addInputField("hadley","POP")
fldMap.addInputField("pelham","POP_2010")
fldMap.addInputField("coldspring","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 to the target feature class
arcpy.management.Append(fcList, os.path.join(outLocation, "amherst"), schemaType, 
                        fieldMappings, subtype)

Параметры среды

Особые случаи

Сохранить Global ID

Для инструмента Присоединить этот параметр среды используется только для данных многопользовательских баз геоданных и работает только с данными, содержащими поле Global ID с уникальными индексами. Если у этого поля уникального индекса нет, инструмент может выдать ошибку. Для добавления уникального индекса в поле Global ID можно использовать инструмент Добавить атрибутивный индекс.

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

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

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

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