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