Значением параметра Входная таблица должен быть векторный слой, представление таблицы или растровый слой с таблицей атрибутов. Если используется путь к данным, слой будет создан при помощи соединения. Соединение всегда будет находиться в слое, а не в данных.
Чтобы сделать постоянное соединение, либо используйте инструмент Соединение полей, либо используйте объединенный слой в качестве входных данных для одного из следующих инструментов: Копировать объекты, Копировать строки, Экспорт объектов или Экспорт таблицы. При сохранении результатов в новый класс объектов или таблицу можно использовать параметр среды Поддержка полноценных имен полей, чтобы контролировать, будут ли имена соединяемых выходных полей уточняться именем таблицы, из которой получено поле. Псевдонимы полей сохраняются из слоя в выходные данные, за исключением случаев, когда выходные данные являются шейп-файлом.
Используйте инструменты Создать слой запроса, Создать представление базы данных или Создать слой запроса агрегации, чтобы оптимизировать производительность соединения и получить дополнительные возможности, когда вы хотите объединить данные многопользовательской базы геоданных или базы данных SQLite.
Если входные данные представлены классом пространственных объектов или путем к набору данных, этот инструмент будет создавать и возвращать новый слой с результатом примененного инструмента.
Если кардинальность один-ко-многим используется при соединении, результат соединения можно увидеть в таблице атрибутов, где сообщение с предупреждением укажет на дублирование поля Object ID. Так как множество инструментов геообработки не поддерживают данные с дублированными Object ID, и результаты анализа таких данных могут быть неожиданными, сначала рекомендуется скопировать слой соединения в новый класс объектов с помощью инструмента Экспорт объектов. Затем используйте новый класс объектов в качестве входных данных для инструментов геообработки.
Дополнительно задайте параметру Операция соединения значение Соединение один-к-первому, чтобы предотвратить дублирование 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 Pro или сохранив его в файл слоя с помощью инструмента Сохранить слой в файл.
Чтобы увидеть результаты соединения, созданного инструментом-скриптом, у инструмента должен быть производный выходной параметр. Точно так же параметр Обновленный входной слой или представление таблицы должен быть установлен в качестве производного выходного параметра в инструменте модели, чтобы можно было увидеть результаты соединения.
В результирующей таблице поля будут иметь префикс с входным именем и точкой (.), а все поля из соединяемой таблицы будут иметь префикс с именем соединяемой таблицы и точкой по умолчанию.
Например, соединение landuse с полями A и B с lookup_tab с полями C и D приведет к созданию слоя или представления таблицы с полями landuse.A, landuse.B, lookup_tab.C и lookup_tab.D.
У слоя должны быть уникальные имена полей. Если входная и присоединяемая таблица называются одинаково и находятся в разных рабочих областях, при выполнении соединения создается плохо определенный слой.
Индексирование входного поля и поля соединения может повысить производительность. Если параметр Индексировать соединяемые поля отмечен, к обоим полям будет добавлен атрибутивный индекс. Либо все присоединяемые поля можно проиндексировать с помощью инструмента Добавить атрибутивный индекс.
Если результаты соединения не полные или не похожи на ожидаемые, проверьте, проиндексированы ли входное поле и поле соединения. Если поля не проиндексированы, попробуйте добавить индекс. Если поля проиндексированы, попробуйте удалить и повторно добавить индекс, чтобы устранить проблемы с индексом. Или отметьте параметр Перестроить индексы полей соединения, чтобы удалить существующие индексы и перестроить их.
-
Если поля входного слоя или представления таблицы были изменены (переименованы или скрыты) с помощью параметра Информация поля в инструменте Создать векторный слой или в инструменте Создать представление таблицы, изменения полей не будут добавлены в выходной соединенный слой или представление таблицы.
Определяющий запрос соединяемой таблицы будет применен ко входному слою или виду таблицы с помощью добавления нового активного запроса. Предыдущий запрос сохраняется и устанавливается в неактивное состояние, чтобы при необходимости запрос можно было отключить из объединенной таблицы. Определяющий запрос можно удалить с помощью инструмента Удалить соединение.
Если в соединяемой таблице есть определяющий запрос, параметр Сохранить все входные записи не будет иметь никакого эффекта. Обновление определяющего запроса вручную путем добавления or OBJECTID is null может исправить это, если это необходимо.
Инструмент Проверить соединение можно использовать для проверки соединения между двумя слоями или таблицами, это позволит определить, есть ли у слоев или таблиц допустимые имя полей и поля Object ID, будут ли в ходе соединения сопоставленные записи, тип кардинальности (один-к-одному или один-ко-многим) и другие свойства соединения.
Для простоты использования кнопка для проверки соединения доступна в диалоговом окне инструмента.
Этот инструмент игнорирует выборки входной и присоединяемой таблиц. Инструмент Соединение полей поддерживает выборку. Чтобы выполнить соединение только с выбранным поднабором, создайте слой выборки и используйте его в качестве входных данных для этого инструмента. Свойства слоя соединения копируются при создании слоя выборки.