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

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

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

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

Иллюстрация

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

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

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

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

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

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

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

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

Параметры

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

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

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

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

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

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

Mosaic Layer; Raster Layer; Table View
Поле соединяемой таблицы

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

Field
Сохранить все целевые объекты
(Дополнительный)

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

  • Отмечено – все записи входного слоя или представления таблицы будут включены в выходные данные. Это также называется внешним соединением. Используется по умолчанию.
  • Не отмечено – только те записи во входных данных, которые соответствуют строке в соединяемой таблице, будут включены в выходные данные. Это также называется внутренним соединением.
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})
ИмяОписаниеТип данных
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

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

ИмяОписаниеТип данных
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 featureclass 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: Да

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