添加连接 (数据管理)
摘要
基于公用字段将图层连接到另一图层或表(其中“图层”是指带有栅格属性表的要素图层、表视图或栅格图层)。
连接表中的记录与输入图层名称中的记录相匹配。输入连接字段值与输出连接字段值相等时,即表示匹配。此连接是临时性连接。
插图
用法
-
输入必须是带有属性表的要素图层、表视图或栅格图层;不能是要素类或表。
-
如果输出连接字段中的值不唯一,则仅会使用第一次出现的各个值。
-
连接仅在会话期间有效。要保存连接以便将其用于另一会话中,请使用保存图层至文件工具将图层保存到图层文件中。此方法仅适用于图层,表视图不能使用此方式进行保存。
要进行永久连接,可考虑使用连接字段工具。另一种使连接永久化的方法是将连接要素图层保存到新要素类中或将连接表视图保存到新表中。
-
此工具不仅在 ArcMap 中可用,还可用于 ArcCatalog 及脚本中的图层和表视图中。创建要素图层工具可从要素类中创建图层,创建表视图工具可从输入表或要素类中创建表视图。
-
连接表可以是以下任意一种类型的表:地理数据库表(ArcSDE、文件或个人)、dBASE 文件、INFO 表或 OLE DB 表。
-
输入图层或表视图必须有 ObjectID 字段。连接表不必包含 ObjectID 字段。
-
通过对输入图层或表视图以及基于连接的连接表中的字段建立索引,可以提高性能。可通过添加属性索引工具或通过右键单击 ArcCatalog 中的输入并使用对话框添加索引到所需字段来完成此操作。
-
在生成的图层或表视图中,输入图层或表视图中的字段将以输入的名称和句点 (.) 为前缀,默认情况下,连接表中的所有字段都将以连接表名称加上句点作为前缀。
- 例如,将带有“A”和“B”字段的“landuse”连接到带有“C”和“D”字段的“lookup_tab”,将得到带有以下字段的图层或表视图:“landuse.A”、“landuse.B”、“lookup_tab.C”和“lookup_tab.D”。
- 对于 coverage 要素类和 INFO 表,表和字段名称分隔符是冒号 (:) 而不是句点。
-
可使用复制要素或复制行工具将添加连接的结果保存到新的要素类中。当使用这些复制工具保存结果时,可以使用限定的字段名环境控制是否使用字段来源表的名称限定连接输出字段名称。
-
连接表中的记录可以与输入图层或表视图中的多个记录相匹配。
-
如果使用创建要素图层或创建表视图工具的字段信息参数对输入图层或表视图的字段进行了修改(重命名或隐藏),则这些对字段进行的修改将不会在输出连接图层或表视图中得以体现。
-
连接表名称不能以数字开头。
语法
参数 | 说明 | 数据类型 |
in_layer_or_view |
连接表将连接的图层或表视图。 | Mosaic Layer; Raster Catalog Layer; Raster Layer; Table View |
in_field |
连接基于的输入图层或表视图中的字段。 | Field |
join_table |
将连接到输入图层或表视图的图表或表视图。 | Mosaic Layer; Raster Catalog Layer; Raster Layer; Table View |
join_field |
连接表中的字段,包含连接将基于的值。 | Field |
join_type (可选) |
指定如何处理输入中与连接表中的记录相匹配的记录。
| Boolean |
代码示例
以下 Python 窗口脚本演示了如何在即时模式下使用 AddJoin 函数。
import arcpy from arcpy import env env.workspace = "C:/data" arcpy.MakeFeatureLayer_management ( "Habitat_Analysis.gdb/vegtype", "veg_layer") arcpy.AddJoin_management( "veg_layer", "HOLLAND95", "vegtable.dbf", "HOLLAND95") arcpy.CopyFeatures_management( "veg_layer", "Habitat_Analysis.gdb/vegjoin")
该独立脚本显示了作为工作流一部分的 AddJoin 函数,用于将表连接到要素类,然后提取所需要素。
# Name: AttributeSelection.py # Purpose: Join a table to a featureclass and select the desired attributes # Author: ESRI # Import system modules import arcpy from arcpy import env try: # Set environment settings env.workspace = "C:/data" env.qualifiedFieldNames = False # Set local variables inFeatures = "Habitat_Analysis.gdb/vegtype" layerName = "veg_layer" joinTable = "vegtable.dbf" joinField = "HOLLAND95" expression = "vegtable.HABITAT = 1" outFeature = "Habitat_Analysis.gdb/vegjoin" # Create a feature layer from the vegtype featureclass arcpy.MakeFeatureLayer_management (inFeatures, layerName) # Join the feature layer to a table arcpy.AddJoin_management(layerName, joinField, joinTable, joinField) # Select desired features from veg_layer arcpy.SelectLayerByAttribute_management(layerName, "NEW_SELECTION", expression) # Copy the layer to a new permanent feature class arcpy.CopyFeatures_management(layerName, outFeature) except Exception, e: # If an error occurred, print line number and error message import traceback, sys tb = sys.exc_info()[2] print "Line %i" % tb.tb_lineno print e.message