ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • 帮助
  • Sign Out
ArcGIS Desktop

ArcGIS Online

专为贵组织打造的制图平台

ArcGIS Desktop

全面的专业性 GIS

ArcGIS Enterprise

面向企业的 GIS

ArcGIS Developers

用于构建位置感知应用程序的工具

ArcGIS Solutions

适用于行业的免费模板地图和应用程序

ArcGIS Marketplace

获取适用于组织的应用程序和数据

  • 文档
  • 支持
Esri
  • 登录
user
  • 我的个人资料
  • 登出

ArcMap

  • 主页
  • 入门
  • 地图
  • 分析
  • 管理数据
  • 工具
  • 扩展模块

表转关系类

  • 描述
  • 使用方法
  • 语法
  • 代码示例
  • 环境
  • 许可信息

描述

从源表、目标表和关系表创建属性关系类。

使用方法

  • 此工具可在数据库中创建一个包含关系表的所选属性字段的表。这些字段用于存储不属于源类或目标类的关系自身的属性。例如,在宗地数据库中,宗地与所有者之间可能具有一个关系类,其中所有者“拥有”宗地,同时宗地“归”所有者所有。该关系的属性可以是所有权的百分比。

  • 简单或对等关系是数据库中彼此独立存在的两个或多个对象之间的关系。例如,在铁路网络中,可能存在拥有一个或多个相关信号灯的铁路交叉点。但是,铁路交叉点上可以没有信号灯,并且存在信号灯的铁路网络上也可以没有铁路交叉点。简单关系可拥有一对一、一对多或多对多基数。

  • 在复杂关系中,一个对象的生存时间控制着与其相关的对象的生存时间。例如,电线杆支撑变压器,同时变压器要安装在电线杆上。删除电线杆后,删除消息即会被传递到与之相关的变压器,然后这些变压器将被从变压器要素类中删除。复合关系始终为一对多关系。

  • 前向和后向路径标注用于在从一个对象导航到另一个对象时描述关系。前向路径标注用于在从源类导航至目标类时描述关系。在杆式变压器示例中,前向路径标注可以是:电线杆支撑变压器。后向路径标注用于在从目标类导航至源类时描述关系。在杆式变压器示例中,后向路径标注可以是:变压器安装在电线杆上。

  • 也可在 ArcCatalog 中创建关系类。方法是:从地理数据库的快捷菜单中选择菜单项新建 > 关系类。

  • 属性字段参数的添加字段按钮仅在“模型构建器”中使用。在模型构建器中,如果先前的工具尚未运行或其派生数据不存在,则可能不会使用字段名称来填充属性字段参数。添加字段按钮可用于添加所需字段,以便您可以完成表转关系类对话框并继续构建模型。

语法

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

要在源表和目标表之间创建的关联类型。

  • SIMPLE —在这种关联类型中,每个对象都彼此独立(父-父关系)。这是默认设置。
  • COMPOSITE —在这种关联类型中,一个对象的生存时间控制着与其相关的对象的生存时间(父-子关系)。
String
forward_label

从源表/要素类遍历到目标表/要素类时描述该关系的标注。

String
backward_label

从目标表/要素类遍历到源表/要素类时描述该关系的标注。

String
message_direction

消息在此关系所关联的对象之间进行传递时的方向。例如,在电线杆与变压器的关系中,当电线杆被删除时,会向与之相关的变压器对象发送一条消息,以告知它们该电线杆已被删除。

  • NONE —不传递任何消息。这是默认设置。
  • FORWARD —将消息从源表传递到目标表。
  • BACKWARD —将消息从目标表传递到源表。
  • BOTH —将消息从源表传递到目标表,然后再从目标表传递到源表。
String
cardinality

源表和目标表之间的关系基数。

  • ONE_TO_ONE —源表/要素类中的每个对象都可与目标表/要素类中的零个或一个对象相关联。这是默认设置。
  • ONE_TO_MANY —源表/要素类中的每个对象都可与目标表/要素类中的多个对象相关联。
  • MANY_TO_MANY —源表/要素类中的多个对象都可与目标表/要素类中的多个对象相关联。
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

代码示例

TableToRelationshipClass 示例(Python 窗口)

以下 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")
TableToRelationshipClass 示例(独立脚本)

在宗地要素类与包含所有者信息的表之间创建属性关系类。

# 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)

环境

  • 自动提交
  • 当前工作空间

许可信息

  • Basic: 否
  • Standard: 是
  • Advanced: 是

相关主题

  • “关系类”工具集概览
  • 关系类属性

ArcGIS Desktop

  • 主页
  • 文档
  • 支持

ArcGIS

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS
  • ArcGIS Developer
  • ArcGIS Solutions
  • ArcGIS Marketplace

关于 Esri

  • 关于我们
  • 招贤纳士
  • Esri 博客
  • 用户大会
  • 开发者峰会
Esri
分享您的想法。
Copyright © 2021 Esri. | 隐私政策 | 法律声明