连接字段 (数据管理)

摘要

基于公用属性字段将一个表的内容永久连接到另一个表。 输入表将被更新,从而包含连接表中的字段。 您可以选择连接表中的哪些字段将添加到输入表。

使用情况

  • 根据输入连接字段连接表字段参数的值,输入表值中的记录将与连接表值中的记录进行匹配。 或者,也可以在连接期间从要追加至输入表值的连接表值中选择特定字段。

  • 输入表值可为要素类(包括 shapefile)或表。

  • 连接过程中,输入表值中的所有字段均将被保留。 或者,也可以从连接表值中选择要添加到输出中的特定字段。 可以使用传输字段参数来添加这些字段。

  • 连接表值中的记录可以与输入表值中的多个记录相匹配。

  • 如果在可选传输字段参数中未选择任何字段,则连接表值中的所有字段均将被连接到输出中。 要更改字段名称、别名或属性,请将传输方法参数设置为使用字段映射

  • 可基于文本、日期或数值等字段类型进行连接。

  • 基于文本字段的连接区分大小写。

  • 只要数值相等,不同数值格式的字段也可以被连接。 例如,浮点类型的字段可以连接到短整型字段。

  • 当连接到输入表时,将不会传输连接表中具有“全局 ID”类型或“对象 ID”类型的字段。

    输入连接字段值与连接表字段值的名称可以不同。

  • 如果连接字段的名称与输入表中某字段的名称相同,为使名称唯一,被连接字段的名称将追加 _1(或 _2、_3 等)。

  • 如果针对传输方法参数指定了选择传输字段选项并且连接表字段参数值中的字段值不唯一,则将仅使用第一次出现的各值。 要考虑非第一次出现的值(一对多连接),请将传输方法参数设置为使用字段映射。 要执行一对多连接,输入表参数值必须具有“对象 ID”字段,并且与连接表参数值位于同一工作空间中。

  • 要管理输出数据集中的字段和这些字段的内容,请使用字段映射参数。

    • 要更改字段顺序,请选择一个字段名称并将其拖动到新位置。
    • 输出字段的默认数据类型与其所遇到的第一个名称相同的输入字段的数据类型相同。 您可以随时将该数据类型手动更改为其他任何有效的数据类型。
    • 可以使用以下合并规则:first、last、join、sum、mean、median、mode、minimum、maximum、standard deviation 和 count。
    • 如果使用连接合并规则,则可指定分隔符,例如,空格、逗号、句点和短划线等。 要使用空格,请确保指针位于输入框的起始位置处,然后按一次空格键
    • 您可以使用格式选项来指定文本字段的起始和终止位置。
    • 请勿对单个输入执行标准差计算,因为数字不能被零除,因此标准差不适用于单个输入。

    了解有关在脚本中映射字段的详细信息

  • 当使用连接合并规则指定了字段映射参数时,如果值不唯一,则无法确保连接值的顺序与连接表字段参数的行顺序一致。 例如,如果将三个 ANIMAL 属性值为 mouse、cat 和 dog 的要素连接起来,结果未必是 mouse、cat 和 dog。

  • 验证连接工具可用于验证两个图层或表之间的连接,以确定图层或表是否具有有效的字段名称和对象 ID 字段,该连接是否生成匹配记录,该连接是一对一还是一对多连接,以及其他连接属性。

    该工具的对话框上有一个用于验证连接的按钮,以方便用户的使用。

参数

标注说明数据类型
输入表

连接表将要连接到的表或要素类。

Mosaic Layer; Raster Layer; Table View
输入连接字段

连接将基于的输入表中的字段。

Field
连接表

将连接到输入表的表。

Mosaic Layer; Raster Layer; Table View
连接表字段

连接表中的字段,其中包含连接所依据的值。

Field
传输字段
(可选)

来自连接表的、将基于输入表和连接表之间的连接传输至输入表的字段。

Field
传输方法
(可选)

指定如何将连接字段和字段类型传输到输出。

  • 选择传输字段连接表中的字段和字段类型将传输到输出。 这是默认设置。
  • 使用字段映射从连接表到输出的字段和字段类型的传输将由字段映射参数控制。
String
字段映射
(可选)

输出中将包括的具有相应字段属性和源字段的属性字段。 默认情况下,将包括输入的所有字段。

可以添加、删除、重命名和重新排序字段,且可以更改其属性。

合并规则用于指定如何将两个或更多个输入字段的值合并或组合为一个输出值。 以下合并规则可用于确定如何用值填充输出字段。

  • First - 使用输入字段的第一个值。
  • Last - 使用输入字段的最后一个值。
  • Join - 串连(连接)输入字段的值。
  • Sum - 计算输入字段值的总和。
  • Mean - 计算输入字段值的平均值。
  • Median - 计算输入字段值的中值。
  • Mode - 使用具有最高频率的值。
  • Min - 使用所有输入字段值中的最小值。
  • Max - 使用所有输入字段值中的最大值。
  • Standard deviation - 对所有输入字段值使用标准差分类方法。
  • Count - 查找计算中所包含的记录数。

Field Mappings

派生输出

标注说明数据类型
更新的输入表

已更新的输入数据集。

Table View; Raster Layer; Mosaic Layer

arcpy.management.JoinField(in_data, in_field, join_table, join_field, {fields}, {fm_option}, {field_mapping})
名称说明数据类型
in_data

连接表将要连接到的表或要素类。

Mosaic Layer; Raster Layer; Table View
in_field

连接将基于的输入表中的字段。

Field
join_table

将连接到输入表的表。

Mosaic Layer; Raster Layer; Table View
join_field

连接表中的字段,其中包含连接所依据的值。

Field
fields
[fields,...]
(可选)

来自连接表的、将基于输入表和连接表之间的连接传输至输入表的字段。

Field
fm_option
(可选)

指定如何将连接字段和字段类型传输到输出。

  • NOT_USE_FM连接表中的字段和字段类型将传输到输出。 这是默认设置。
  • USE_FM从连接表到输出的字段和字段类型的传输将由 field_mapping 参数控制。
String
field_mapping
(可选)

输出中将包括的具有相应字段属性和源字段的属性字段。 默认情况下,将包括输入的所有字段。

可以添加、删除、重命名和重新排序字段,且可以更改其属性。

合并规则用于指定如何将两个或更多个输入字段的值合并或组合为一个输出值。 以下合并规则可用于确定如何用值填充输出字段。

  • First - 使用输入字段的第一个值。
  • Last - 使用输入字段的最后一个值。
  • Join - 串连(连接)输入字段的值。
  • Sum - 计算输入字段值的总和。
  • Mean - 计算输入字段值的平均值。
  • Median - 计算输入字段值的中值。
  • Mode - 使用具有最高频率的值。
  • Min - 使用所有输入字段值中的最小值。
  • Max - 使用所有输入字段值中的最大值。
  • Standard deviation - 对所有输入字段值使用标准差分类方法。
  • Count - 查找计算中所包含的记录数。

Python 中,您可使用 FieldMappings 类来定义此参数。

Field Mappings

派生输出

名称说明数据类型
out_layer_or_view

已更新的输入数据集。

Table View; Raster Layer; Mosaic Layer

代码示例

JoinField 示例 1(Python 窗口)

以下 Python 窗口脚本演示了如何在即时模式下使用 JoinField 函数。

import arcpy
arcpy.env.workspace = "C:/data/data.gdb"
arcpy.management.JoinField("zion_park", "zonecode", "zion_zoning", "zonecode", 
                           ["land_use", "land_cover"])
JoinField 示例 2(独立脚本)

该独立 Python 脚本显示了用于将表连接到要素类的 JoinField 函数,并且连接中仅包含表中的两个字段。

# PermanentJoin.py
# Purpose: Join two fields from a table to a feature class 

# Import system modules
import arcpy

# Set the current workspace 
arcpy.env.workspace = "c:/data/data.gdb"

# Set the local parameters
inFeatures = "zion_park"
joinField = "zonecode"
joinTable = "zion_zoning"
fieldList = ["land_use", "land_cover"]

# Join two feature classes by the zonecode field and only carry 
# over the land use and land cover fields
arcpy.management.JoinField(inFeatures, joinField, joinTable, joinField, 
                           fieldList)