添加连接 (数据管理)

摘要

基于公共字段将图层连接到另一图层或表。 支持带有栅格属性表的要素图层、表视图和栅格图层。

连接表参数中的记录与输入表参数中的记录相匹配。 输入连接字段值与连接表字段值相等时,即表示匹配。 此连接是临时连接。

插图

添加连接工具图示

使用情况

  • 输入表参数值可以是带有属性表的要素图层、表视图或栅格图层。 如果使用数据路径,则将使用连接创建图层。 连接始终驻留在图层中,而不是与数据一起。

  • 要进行永久连接,使用连接字段工具或将连接的图层用作以下工具之一的输入:复制要素复制行要素类转要素类表转表。将结果保存到新的要素类或表时,可使用限定的字段名环境控制是否使用该字段来自的表的名称限定连接的输出字段名。

  • 如果输入为要素类或数据集路径,则此工具将自动创建并返回应用了该工具结果的新图层。

  • 下表包含使用各种输入执行连接的一些可能结果。

    第一个表显示了一对多连接。 仅保留匹配的记录不会造成任何影响,因为所有记录都具有匹配项。

    输入表连接表结果

    输入字段

    类型

    连接字段

    输入字段

    类型

    连接字段

    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

    添加连接示例:一对多连接(如果每个表都具有“对象 ID”字段)

    第二个表使用没有“对象 ID”的连接表;只能进行一对一连接。

    输入表连接表结果

    输入字段

    类型

    连接字段

    输入字段

    类型

    连接字段

    1

    A

    1

    100

    1

    A

    1

    100

    2

    B

    2

    200

    2

    B

    2

    200

    3

    300

    4

    400

    添加连接示例:一对一连接(如果这两个表都没有“对象 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

    <空>

    <空>

    4

    D

    <空>

    <空>

    添加连接示例:一对多连接(如果每个表都具有“对象 ID”字段并且选中保留所有目标要素参数)

    输入表必须具有“对象 ID”字段才能执行一对多连接。

  • 如果连接表具有“对象 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

    <空>

    <空>

    4

    D

    <空>

    <空>

    使用仅保留匹配记录选项时,如果目标表中的某条记录在连接表中没有匹配项,则该记录将从生成的目标表中移除。 如果目标表是某一图层的属性表,则未连接数据的要素将不会显示在地图上。

    输入表连接表结果

    输入字段

    类型

    连接字段

    输入字段

    类型

    连接字段

    1

    A

    1

    100

    1

    A

    1

    100

    2

    B

    2

    200

    2

    B

    2

    200

    3

    300

    4

    400

  • 添加或移除连接时,将保留字段属性,例如别名、可见性和数字格式设置。

  • 输入表允许一次进行一个连接。

  • 连接仅在图层持续时间内有效。 要保留图层,可通过保存 ArcGIS Pro 会话或使用将图层保存至文件工具将其保存到图层文件。

    要查看在脚本工具中创建的连接的结果,该工具必须将图层作为派生的输出参数。 同样,必须将更新的输入表参数设置为模型工具中的派生的输出参数,以查看连接结果。

  • 在生成的输入表中,字段将以输入的名称和句点 (.) 为前缀,默认情况下,连接表中的所有字段都将以连接表名称加上句点作为前缀。

    • 例如,将包含 AB 字段的 landuse 连接到包含 CD 字段的 lookup_tab,将得到包含以下字段的图层或表视图:landuse.Alanduse.Blookup_tab.Clookup_tab.D

  • 通过对输入表以及连接基于的连接表中的字段建立索引,可以提高性能。 如果已选中创建连接字段索引参数,则将向两个连接字段添加属性索引。 或者,可以使用添加属性索引工具为每个连接字段建立索引。

  • 如果使用创建要素图层创建表视图工具的字段信息参数对输入图层或表视图的字段进行了更改(重命名或隐藏),则输出连接图层或表视图中不会包含这些字段更改。

  • 连接表的定义查询将应用于输入图层或表视图。 可以使用移除连接工具来移除定义查询,也可从图层中手动移除定义查询。

  • 验证连接工具可用于验证两个图层或表之间的连接,以确定图层或表是否具有有效的字段名称和对象 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.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: 是

相关主题