标注 | 说明 | 数据类型 |
源表 | 将与目标表关联的表或要素类。 | Table View |
目标表 | 将与源表关联的表或要素类。 | Table View |
输出关系类 | 将创建的关系类。 | Relationship Class |
关系类型 | 指定在源表和目标表之间创建的关联类型。
| String |
前向路径标注 | 描述从源表或要素类到目标表或要素类遍历时的关系的标注。 | String |
后向路径标注 | 描述从目标表或要素类到源表或要素类遍历时的关系的标注。 | String |
消息方向 | 指定消息在此关系所关联的对象之间进行传递时的方向。 例如,在电线杆和变压器之间的关系中,当电线杆被删除时,它会向其相关的变压器对象发送消息,通知电线杆已被删除。
| String |
基数 | 指定源和目标之间关系的基数。
| String |
关系表 | 包含将添加到关系类的属性的表。 | Table View |
属性字段 | 字段名称,此字段包含将添加到关系类的属性值。 字段必须存在于关系表参数值中。 | Field |
源主键 | 将用于创建关系的源表中的字段。 | String |
源外键 | 关系表中的字段名称,引用源表或要素类中的主键字段。 对于基于表的关系类,这些值用于填充关系类中的关系,因此不能为空。 | String |
目标主键 | 将用于创建关系的目标表中的字段。 | String |
目标外键 | 关系表中的字段,引用目标表或要素类中主键字段。 对于基于表的关系类,这些值用于填充关系类中的关系,因此不能为空。 | String |
摘要
通过源表、目标表和关系表创建属性关系类。
使用情况
此工具可在数据库中创建一个包含关系表的所选属性字段的表。 这些字段存储不属于源类或目标类的关系的属性。 例如,在宗地数据库中,宗地与所有者之间可能具有一个关系类,其中所有者拥有宗地,同时宗地归所有者所有。 该关系的属性可以是所有权的百分比。
简单或对等关系是数据库中彼此独立存在的两个或多个对象之间的关系。 例如,在铁路网络中,可能存在拥有一个或多个相关信号灯的铁路交叉点。 但是,铁路交叉点上可以没有信号灯,并且存在信号灯的铁路网络上也可以没有铁路交叉点。 简单关系可拥有一对一、一对多或多对多基数。
在复杂关系中,一个对象的生存时间控制着与其相关的对象的生存时间。 例如,电线杆支撑变压器,而变压器安装在电线杆上。 删除电线杆后,删除消息即会被传递到与之相关的变压器,然后这些变压器将被从变压器要素类中删除。 复合关系始终是一对多关系。
前向和后向路径标注用于在从一个对象导航到另一个对象时描述关系。 前向路径标注用于在从源类导航至目标类时描述关系。 在杆式变压器示例中,前向路径标注可以是:电线杆支撑变压器。 后向路径标注用于在从目标类导航至源类时描述关系。 在杆式变压器示例中,后向路径标注可以是:变压器安装在电线杆上。
参数
arcpy.management.TableToRelationshipClass(origin_table, destination_table, out_relationship_class, relationship_type, forward_label, backward_label, message_direction, cardinality, relationship_table, attribute_fields, origin_primary_key, origin_foreign_key, destination_primary_key, destination_foreign_key)
名称 | 说明 | 数据类型 |
origin_table | 将与目标表关联的表或要素类。 | Table View |
destination_table | 将与源表关联的表或要素类。 | Table View |
out_relationship_class | 将创建的关系类。 | Relationship Class |
relationship_type | 指定在源表和目标表之间创建的关联类型。
| String |
forward_label | 描述从源表或要素类到目标表或要素类遍历时的关系的标注。 | String |
backward_label | 描述从目标表或要素类到源表或要素类遍历时的关系的标注。 | String |
message_direction | 指定消息在此关系所关联的对象之间进行传递时的方向。 例如,在电线杆和变压器之间的关系中,当电线杆被删除时,它会向其相关的变压器对象发送消息,通知电线杆已被删除。
| String |
cardinality | 指定源和目标之间关系的基数。
| String |
relationship_table | 包含将添加到关系类的属性的表。 | Table View |
attribute_fields [attribute_fields,...] | 字段名称,此字段包含将添加到关系类的属性值。 字段必须存在于 relationship_table 参数值中。 | Field |
origin_primary_key | 将用于创建关系的源表中的字段。 | String |
origin_foreign_key | 关系表中的字段名称,引用源表或要素类中的主键字段。 对于基于表的关系类,这些值用于填充关系类中的关系,因此不能为空。 | String |
destination_primary_key | 将用于创建关系的目标表中的字段。 | String |
destination_foreign_key | 关系表中的字段,引用目标表或要素类中主键字段。 对于基于表的关系类,这些值用于填充关系类中的关系,因此不能为空。 | String |
代码示例
以下 Python 窗口脚本演示了如何使用 TableToRelationshipClass 函数。
import arcpy
arcpy.env.workspace = "C:/data/Montgomery.gdb"
arcpy.TableToRelationshipClass_management("owners", "Parcels", "ownersParcels_RelClass",
"SIMPLE", "Owns", "Is Owned By", "BACKWARD",
"MANY_TO_MANY", "owners", ["OWNER_PERCENT", "DEED_DATE"],
"OBJECTID", "owner_id", "OBJECTID", "parcel_id")
在宗地要素类和包含所有者信息的表之间创建属性关系类。
# Name: TableToRelationshipClass.py
# Description: Create an attributed relationship class between parcels
# feature class and table with owner information
# Author: ESRI
# import system modules
import arcpy
from arcpy import env
# Set environment settings
env.workspace = "C:/data"
# Copy owners.dat to file gdb table, since both tables to be related
# must be in the same database
ownerDat = "owners.dat"
ownerTbl = "Montgomery.gdb/owners"
arcpy.CopyRows_management(ownerDat, ownerTbl)
# Create attributed relationship class between 'parcel' parcel layer
# and 'owner' table with additional parcel owner information
parcel = "Montgomery.gdb/Parcels"
relClass = "Montgomery.gdb/parcelowners_RelClass"
forLabel = "Owns"
backLabel = "Is Owned By"
attributeFields = ["OWNER_PERCENT", "DEED_DATE"]
originPK = "OBJECTID"
originFK = "owner_ID"
destinationPK = "OBJECTID"
destinationFK = "parcel_ID"
arcpy.TableToRelationshipClass_management(ownerTbl, parcel, relClass, "SIMPLE",
forLabel, backLabel, "BACKWARD", "MANY_TO_MANY",
ownerTbl, attributeFields, originPK, originFK,
destinationPK, destinationFK)