描述
基于公共字段将图层连接到另一图层或表。支持带有栅格属性表的要素图层、表视图和栅格图层。
连接表参数中的记录与输入表参数中的记录相匹配。输入连接字段值与连接表字段值相等时,即表示匹配。此连接是临时性连接。
插图
使用方法
输入表参数值可以是带有属性表的要素图层、表视图或栅格图层。如果使用数据路径,则将使用连接创建图层。连接始终驻留在图层中,而不是与数据一起。
要进行永久连接,使用连接字段工具或将连接的图层用作以下工具之一的输入:复制要素、复制行、要素类转要素类或表转表。将结果保存到新的要素类或表时,可使用限定的字段名环境控制是否使用该字段来自的表的名称限定连接的输出字段名。
如果输入为要素类或数据集路径,则此工具将自动创建并返回应用了该工具结果的新图层。
下表包含使用各种输入执行连接的一些可能结果。
第一个表显示了一对多连接。仅保留匹配的记录不会造成任何影响,因为所有记录都具有匹配项。
输入表 连接表 结果 输入字段
类型
连接字段
值
输入字段
类型
连接字段
值
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 会话或使用将图层保存至文件工具将其保存到图层文件。
在生成的输入表中,字段将以输入的名称和句点 (.) 为前缀,默认情况下,连接表中的所有字段都将以连接表名称加上句点作为前缀。
- 例如,将带有 A 和 B 字段的 landuse 连接到带有 C 和 D 字段的 lookup_tab,将得到带有以下字段的图层或表视图:landuse.A、landuse.B、lookup_tab.C 和 lookup_tab.D。
通过对输入表以及连接基于的连接表中的字段建立索引,可以提高性能。可使用添加属性索引工具对字段进行索引。
如果使用创建要素图层或创建表视图工具的字段信息参数对输入图层或表视图的字段进行了修改(重命名或隐藏),则这些字段修改内容将不会在输出连接图层或表视图中得以体现。
验证连接工具可用于验证两个图层或表之间的连接,以确定图层或表是否具有有效的字段名称和对象 ID 字段,但前提是该连接生成匹配记录,是一对一或一对多连接,以及其他连接属性。
该工具的对话框上有一个用于验证连接的按钮,以方便用户的使用。
在图层中进行的任何选择不会用于添加连接工具,但会用于添加字段工具。
语法
arcpy.management.AddJoin(in_layer_or_view, in_field, join_table, join_field, {join_type})
参数 | 说明 | 数据类型 |
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 (可选) | 指定是否仅将输入中与连接表内的记录相匹配的记录包括在输出中。
| Boolean |
派生输出
名称 | 说明 | 数据类型 |
out_layer_or_view | 已更新的输入数据集。 | 表视图;栅格图层;镶嵌图层 |
代码示例
以下 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 函数,用于将表连接到要素类,然后提取所需要素。
# 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: 是