表转关系类 (数据管理)
摘要
从源表、目标表和关系表创建属性关系类。
用法
-
此工具可在数据库中创建一个包含关系表的所选属性字段的表。这些字段用于存储不属于源类或目标类的关系自身的属性。例如,在宗地数据库中,宗地与所有者之间可能具有一个关系类,其中所有者“拥有”宗地,同时宗地“归”所有者所有。该关系的属性可以是所有权的百分比。
-
简单或对等关系是数据库中彼此独立存在的两个或多个对象之间的关系。例如,在铁路网络中,可能存在拥有一个或多个相关信号灯的铁路交叉点。但是,铁路交叉点上可以没有信号灯,并且存在信号灯的铁路网络上也可以没有铁路交叉点。简单关系可拥有一对一、一对多或多对多基数。
-
在复杂关系中,一个对象的生存时间控制着与其相关的对象的生存时间。例如,电线杆支撑变压器,同时变压器要安装在电线杆上。删除电线杆后,删除消息即会被传递到与之相关的变压器,然后这些变压器将被从变压器要素类中删除。复合关系始终为一对多关系。
-
前向和后向路径标注用于在从一个对象导航到另一个对象时描述关系。前向路径标注用于在从源类导航至目标类时描述关系。在杆式变压器示例中,前向路径标注可以是:电线杆支撑变压器。后向路径标注用于在从目标类导航至源类时描述关系。在杆式变压器示例中,后向路径标注可以是:变压器安装在电线杆上。
-
也可在 ArcCatalog 中创建关系类。方法是:从地理数据库的快捷菜单中选择菜单项新建 > 关系类。
-
属性字段参数的添加字段按钮仅在“模型构建器”中使用。在模型构建器中,如果先前的工具尚未运行或其派生数据不存在,则可能不会使用字段名称来填充属性字段参数。添加字段按钮可用于添加所需字段,以便您可以完成表转关系类对话框并继续构建模型。
语法
参数 | 说明 | 数据类型 |
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,...] | 包含将被添加到关系类的属性值的字段。 | 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)