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

Сводка

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

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

Иллюстрация

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

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

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

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

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

  • В следующих таблицах приведены возможные результаты выполнения соединения с различными входными данными.

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

    Входная таблицаСоединяемая таблицаРезультат

    Входное поле

    Тип

    Присоединить поля

    Значение

    Входное поле

    Тип

    Присоединить поля

    Значение

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

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

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

Синтаксис

arcpy.management.AddJoin(in_layer_or_view, in_field, join_table, join_field, {join_type})
ParameterОбъяснениеТип данных
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

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

NameОбъяснениеТип данных
out_layer_or_view

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

Представление таблицы; Растровый слой; Слой мозаики

Пример кода

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

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

import arcpy
arcpy.env.workspace = "C:/data/Habitat_Analysis.gdb"
veg_joined_table = arcpy.AddJoin_management("vegetation", "HOLLAND95", 
                                            "vegtable", "HOLLAND95")
arcpy.CopyFeatures_management(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.AddJoin_management(inFeatures, joinField, joinTable, 
                                            joinField)
# Select desired features from veg_layer
arcpy.SelectLayerByAttribute_management(veg_joined_table, "NEW_SELECTION", 
                                        expression)
# Copy the layer to a new permanent feature class
arcpy.CopyFeatures_management(veg_joined_table, outFeature)

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

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

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