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

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

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

Записи из значения параметра Соединяемая таблица сопоставляются с записями в значении параметра Входная таблица. Сопоставление происходит, когда значения входного поля и поля соединения равны. Соединение является временным.

Иллюстрация

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

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

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

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

  • Используйте инструменты Создать слой запроса, Создать представление базы данных или Создать слой запроса агрегации, чтобы оптимизировать производительность соединения и получить дополнительные возможности, когда вы хотите объединить данные многопользовательской базы геоданных или базы данных 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 Pro или при помощи файла слоя, применив инструмент Сохранить слой в файл.

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

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

    Например, присоединение landuse, содержащей поля A иB, к lookup_tab, с полями C и D приведет к созданию слоя или представления таблицы с полями landuse.A, landuse.B, lookup_tab.C и lookup_tab.D.

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

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

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

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

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

  • Если в соединяемой таблице есть определяющий запрос, параметр Сохранить все входные записи не будет иметь никакого эффекта. Обновление определяющего запроса вручную путем добавления or OBJECTID is null может исправить это, если это необходимо.

  • Инструмент Проверить соединение можно использовать для проверки соединения между двумя слоями или таблицами, это позволит определить, есть ли у слоев или таблиц допустимые имя полей и поля Object ID, будут ли в ходе соединения сопоставленные записи, тип кардинальности (один-к-одному или один-ко-многим) и другие свойства соединения.

    Для простоты использования кнопка для проверки соединения доступна в диалоговом окне инструмента.

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

Параметры

ПодписьОписаниеТип данных
Входная таблица

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

Mosaic Layer; Raster Layer; Table View
Входное поле

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

Field
Соединяемая таблица

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

Mosaic Layer; Raster Layer; Table View
Соединение полей

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

Field
Сохранить все входные записи
(Дополнительный)

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

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

Указывает, будут ли индексы атрибутов таблицы добавлены для входного поля и поля соединения.

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

Указывает, будут ли существующие индексы входного поля и поля соединения удалены и перестроены.

  • Отмечено – существующие индексы будут удалены и будет добавлен новый индекс.
  • Не отмечено – существующие индексы не будут удалены или перестроены. Используется по умолчанию.
Boolean

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

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

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

Table View; Raster Layer; Mosaic Layer

arcpy.management.AddJoin(in_layer_or_view, in_field, join_table, join_field, {join_type}, {index_join_fields}, {rebuild_index})
ИмяОписаниеТип данных
in_layer_or_view

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

Mosaic Layer; Raster Layer; Table View
in_field

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

Field
join_table

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

Mosaic Layer; Raster Layer; Table View
join_field

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

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

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

  • KEEP_ALLВсе записи входного слоя или представления таблицы будут включены в выходные данные. Это также называется внешним соединением. Используется по умолчанию.
  • KEEP_COMMONТолько те записи во входных данных, которые соответствуют строке в соединяемой таблице, будут включены в выходные данные. Это также известно как внутреннее соединение.
Boolean
index_join_fields
(Дополнительный)

Указывает, будут ли индексы атрибутов таблицы добавлены для входного поля и поля соединения.

  • INDEX_JOIN_FIELDSОба поля будут проиндексированы. Если у таблицы имеется индекс, новый индекс не добавляется.
  • NO_INDEX_JOIN_FIELDSИндексы не добавляются. Используется по умолчанию.
Boolean
rebuild_index
(Дополнительный)

Указывает, будут ли индексы входного поля и поля соединения удалены и перестроены.

  • REBUILD_INDEXСуществующие индексы будут удалены и будет добавлен новый индекс.
  • NO_REBUILD_INDEXСуществующие индексы не будут удалены или перестроены. Используется по умолчанию.
Boolean

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

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

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

Table View; Raster Layer; Mosaic Layer

Пример кода

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

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

import arcpy
arcpy.env.workspace = "C:/data/Habitat_Analysis.gdb"
veg_joined_table = arcpy.management.AddJoin("vegetation", "HOLLAND95", 
                                            "vegtable", "HOLLAND95")
arcpy.management.CopyFeatures(veg_joined_table, "vegjoin")
AddJoin, пример 2 (автономный скрипт)

Этот автономный скрипт описывает функцию AddJoin как часть рабочего процесса для присоединения таблицы к классу пространственных объектов с последующим извлечением определенных пространственных объектов.

# Name: AttributeSelection.py
# Purpose: Join a table to a feature class and select the desired attributes

# Import system modules
import arcpy

# Set environment settings
arcpy.env.workspace = "C:/data/Habitat_Analysis.gdb"
# The qualifiedFieldNames environment is used by Copy Features when persisting 
# the join field names.
arcpy.env.qualifiedFieldNames = False

# Set local variables
inFeatures = "vegtype"
joinTable = "vegtable"
joinField = "HOLLAND95"
expression = "vegtable.HABITAT = 1"
outFeature = "vegjoin"

# Join the feature layer to a table
veg_joined_table = arcpy.management.AddJoin(inFeatures, joinField, joinTable, 
                                            joinField)

# Select desired features from veg_layer
arcpy.management.SelectLayerByAttribute(veg_joined_table, "NEW_SELECTION", 
                                        expression)

# Copy the layer to a new permanent feature class
result = arcpy.management.CopyFeatures(veg_joined_table, outFeature)

# See field names and aliases
resultFields = arcpy.ListFields(result)
print([field.name for field in resultFields])
print([field.aliasName for field in resultFields])

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

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

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