Значением параметра Входная таблица должен быть векторный слой, представление таблицы или растровый слой с таблицей атрибутов. Если используется путь к данным, слой будет создан при помощи соединения. Соединение всегда будет находиться в слое, а не в данных.
Для создания постоянного соединения примените инструмент Соединение полей или используйте соединенный слой в качестве входных данных для одного из следующих инструментов: Копировать объекты, Копировать строки, Экспорт объектов или Экспорт таблицы. При сохранении результатов в новый класс объектов или таблицу можно использовать параметр среды Поддержка полноценных имен полей, чтобы контролировать, будут ли имена присоединенных выходных полей уточняться именем таблицы, из которой получено поле. Псевдонимы полей сохраняются из слоя в выходные данные, за исключением случаев, когда выходные данные являются шейп-файлом.
Используйте инструменты Создать слой запроса, Создать представление базы данных или Создать слой запроса агрегации, чтобы оптимизировать производительность соединения и получить дополнительные возможности, когда вы хотите объединить данные многопользовательской базы геоданных или базы данных SQLite.
Если входные данные представлены классом пространственных объектов или путем к набору данных, этот инструмент будет создавать и возвращать новый слой с результатом примененного инструмента.
Если кардинальность один-ко-многим используется при соединении, результат соединения можно увидеть в таблице атрибутов, где сообщение с предупреждением укажет на дублирование поля Object ID. Так как множество инструментов геообработки не поддерживают данные с дублированными Object ID, и результаты анализа таких данных могут быть неожиданными, сначала рекомендуется скопировать слой соединения в новый класс объектов с помощью инструмента Экспорт объектов. Затем используйте новый класс объектов в качестве входных данных для инструментов геообработки.
В следующих таблицах приведены возможные результаты выполнения соединения с различными входными данными.
В первой таблице показано соединение один-ко-многим. Сохранение только совпадающих записей не повлияет, так как все записи имеют совпадения.
Входная таблица | Соединяемая таблица | Результат |
---|
Входное поле | Тип | Поле соединения | Значение | Входное поле | Тип | Поле соединения | Значение |
1 | A | 1 | 100 | 1 | A | 1 | 100 |
2 | B | 2 | 200 | 2 | B | 2 | 200 |
| 1 | 300 | 1 | A | 1 | 300 |
2 | 400 | 2 | B | 2 | 400 |
Пример добавления соединения: соединение один ко многим, когда каждая таблица имеет поле Object ID
Во второй таблице используется присоединяемая таблица без поля Object ID; возможно только соединение один-к-первому. Соединение один-к-первому также является единственным возможным, если каждая из таблиц находится в разных рабочих областях. Соединение один-к-первому не учитывает регистр.
Входная таблица | Соединяемая таблица | Результат |
---|
Входное поле | Тип | Поле соединения | Значение | Входное поле | Тип | Поле соединения | Значение |
1 | A | 1 | 100 | 1 | A | 1 | 100 |
2 | B | 2 | 200 | 2 | B | 2 | 200 |
| 3 | 300 | |
4 | 400 |
Пример добавления соединения: соединение типа один-к-первому, когда в какой-либо таблице нет поля Object ID
В последней таблице входная таблица содержит больше записей, чем присоединяемая таблица. При сохранении всех записей будут сохранены все совпадающие записи плюс записи из входной таблицы, которые не совпадают.
Входная таблица | Соединяемая таблица | Результат |
---|
Входное поле | Тип | Поле соединения | Значение | Входное поле | Тип | Поле соединения | Значение |
1 | A | 1 | 100 | 1 | A | 1 | 100 |
2 | B | 2 | 200 | 2 | B | 2 | 200 |
3 | C | 1 | 300 | 1 | A | 1 | 300 |
4 | D | 2 | 400 | 2 | B | 2 | 400 |
| 3 | C | <Null> | <Null> |
4 | D | <Null> | <Null> |
Пример добавления соединения: соединение один-ко-многим, когда каждая таблица содержит поле Object ID и отмечен параметр Сохранить все входные записи.
Входная таблица должна содержать поле Object ID для выполнения соединения один-ко-многим и быть в той же рабочей области.
Записи из соединяемой таблицы могут быть сопоставлены более чем с одной записью, если таблица содержит поле Object ID; в противном случае будет выполнено соединение один-к-первому.
При соединении таблиц опцией по умолчанию является сохранение всех записей. Если запись во входной таблице не имеет соответствия в присоединяемой таблице, этой записи присваиваются пустые значения для всех полей, добавленных к входной таблице из присоединяемой таблицы.
Входная таблица | Соединяемая таблица | Результат |
---|
Входное поле | Тип | Поле соединения | Значение | Входное поле | Тип | Поле соединения | Значение |
1 | A | 1 | 100 | 1 | A | 1 | 100 |
2 | B | 2 | 200 | 2 | B | 2 | 200 |
3 | C | 1 | 300 | 1 | A | 1 | 300 |
4 | D | 2 | 400 | 2 | B | 2 | 400 |
| 3 | C | <Null> | <Null> |
4 | D | <Null> | <Null> |
Если параметр Сохранить все входные записи не отмечен, а запись во входной таблице не имеет соответствия в присоединяемой таблице, эта запись удаляется из итоговых выходных данных. Если входная таблица является атрибутивной таблицей слоя, то объекты слоя, для которых не нашлось соответствующих записей в присоединяемой таблице, на карте показаны не будут.
Входная таблица | Соединяемая таблица | Результат |
---|
Входное поле | Тип | Поле соединения | Значение | Входное поле | Тип | Поле соединения | Значение |
1 | A | 1 | 100 | 1 | A | 1 | 100 |
2 | B | 2 | 200 | 2 | B | 2 | 200 |
| 3 | 300 | |
4 | 400 |
Инструмент Вычислить поле обновит первую запись, обнаруженную при использовании слоя один-ко-многим, и пропустит остальные повторяющиеся записи. При редактировании значений полей присоединенного слоя вручную в виде таблицы последнее внесенное изменение сохраняется.
Такие свойства полей, как псевдонимы, видимость и форматирование чисел, сохраняются и после добавления либо удаления соединения.
Соединение сохраняется только на протяжении существования слоя. Слой можно сохранить, сохраняя сеанс ArcGIS AllSource или при помощи файла слоя, применив инструмент Сохранить слой в файл.
Чтобы увидеть результаты соединения, созданного инструментом-скриптом, инструмент должен включать слой в качестве производного выходного параметра. Аналогично, чтобы увидеть результаты соединения, параметр Обновленный входной слой или представление таблицы должен быть задан как производный выходной параметр в инструменте-модели.
В результирующей таблице поля будут иметь префикс с именем входной таблицы и точкой (.), а все поля из соединяемой таблицы будут иметь префикс с именем соединяемой таблицы и точкой по умолчанию.
Например, присоединение landuse, содержащей поля A иB, к lookup_tab, с полями C и D приведет к созданию слоя или представления таблицы с полями landuse.A, landuse.B, lookup_tab.C и lookup_tab.D.
Имена полей в слое должны быть уникальными. Если входная и присоединяемая таблица называются одинаково и находятся в разных рабочих областях, при выполнении соединения создается плохо определенный слой.
Индексирование входного поля и поля соединения может повысить производительность. Если параметр Индексировать соединяемые поля отмечен, к обоим полям будет добавлен атрибутивный индекс. Или каждое соединяемое поле можно проиндексировать при помощи инструмента Добавить атрибутивный индекс.
Если результаты соединения не полные или не похожи на ожидаемые, проверьте, проиндексированы ли входное поле и поле соединения. Если поля не проиндексированы, попробуйте добавить индекс. Если поля проиндексированы, попробуйте удалить и повторно добавить индекс, чтобы устранить проблемы с индексом. Или отметьте параметр Перестроить индексы полей объединения, чтобы удалить существующие индексы и перестроить их.
-
Если поля входного слоя или представления таблицы были изменены (переименованы или скрыты) при помощи параметра Информация поля в инструментах Создать векторный слой или Создать представление таблицы, эти изменения поля не будут включены в выходной соединенный слой или представление таблицы.
Определяющий запрос присоединяемой таблицы будет применен ко входному слою или представлению таблицы путем добавления нового активного запроса. Предыдущий запрос сохраняется и становится неактивным, чтобы при необходимости запрос можно было отключить в присоединенной таблице. Определяющий запрос можно удалить с помощью инструмента Удалить соединение.
Если в соединяемой таблице есть определяющий запрос, параметр Сохранить все входные записи не будет иметь никакого эффекта. Обновление определяющего запроса вручную путем добавления or OBJECTID is null может исправить это, если это необходимо.
Инструмент Проверить соединение можно использовать для проверки соединения между двумя слоями или таблицами, это позволит определить, есть ли у слоев или таблиц допустимые имя полей и поля Object ID, будут ли в ходе соединения сопоставленные записи, тип кардинальности (один-к-одному или один-ко-многим) и другие свойства соединения.
Для простоты использования кнопка для проверки соединения доступна в диалоговом окне инструмента.
Выборки во входных или присоединяемых таблицах игнорируются инструментом Добавить объединение. Инструмент Соединение полей поддерживает выборку. Чтобы присоединить только выбранный поднабор, создайте слой выборки и используйте его в качестве входных данных для инструмента Добавить соединение. Свойства присоединяемого слоя копируются при создании слоя выборки.