标注 | 说明 | 数据类型 |
输入关系类 | 基于对象 ID 的关系类,将迁移到基于全局 ID 的关系类。 源要素类和目标要素类或表必须具有现有 GlobalID 字段。 | Relationship Class |
派生输出
标注 | 说明 | 数据类型 |
迁移的关系类 | 已更新的关系类。 | Relationship Class |
用于将基于对象 ID 的关系类迁移到基于全局 ID 的关系类。
此工具可将基于对象 ID 的现有关系类修改为基于全局 ID 的关系类,从而满足运行时地理数据库的要求。
在使用此工具之前,输入关系类参数值中使用的源要素类或表必须具有 GlobalID 字段。 同时,目标类也必须具有一个 GlobalID 字段。
现有输入关系类必须基于 ObjectID 字段。 数据无法启用存档。
此工具支持将版本化和非版本化的数据作为输入。
在 ArcGIS Desktop 中创建的关联要素的注记必须首先使用升级数据集工具进行升级。
建议您创建数据的备份副本用作此工具的输入。
标注 | 说明 | 数据类型 |
输入关系类 | 基于对象 ID 的关系类,将迁移到基于全局 ID 的关系类。 源要素类和目标要素类或表必须具有现有 GlobalID 字段。 | Relationship Class |
标注 | 说明 | 数据类型 |
迁移的关系类 | 已更新的关系类。 | Relationship Class |
arcpy.management.MigrateRelationshipClass(in_relationship_class)
名称 | 说明 | 数据类型 |
in_relationship_class | 基于对象 ID 的关系类,将迁移到基于全局 ID 的关系类。 源要素类和目标要素类或表必须具有现有 GlobalID 字段。 | Relationship Class |
名称 | 说明 | 数据类型 |
out_relationship_class | 已更新的关系类。 | Relationship Class |
以下 Python 窗口脚本演示了如何在即时模式下使用 MigrateRelationshipClass 函数。
arcpy.MigrateRelationshipClass_management(r'C:\Data\Relationships.gdb\OneToMany')
以下脚本演示了如何在独立脚本中使用 MigrateRelationshipClass 函数。
# Name: MigrateRelationshipClass_Example.py
# Description: Migrate an ObjectID-based relationship class to a GlobalID-based
# relationship class. This script lists the ObjectID-based relationships classes
# in a workspace, checks for GlobalIDs in the origin, then runs the tool
# Import system modules
import arcpy
# Set local variables
workspace = r'C:\Data\Relationships.gdb'
# List all of the relationship classes within the given workspace
rc_list = [c.name for c in arcpy.Describe(workspace).children if c.datatype == "RelationshipClass"]
# Build a list of relationship classes which have an OBJECTID based origin class key
rc_migrate = []
for rc in rc_list:
rc_path = workspace + "\\" + rc
rc_desc = arcpy.Describe(rc_path)
for item in rc_desc.OriginClassKeys:
if "OBJECTID" in item:
rc_migrate.append(rc_path)
# Check that the origin feature classes have Global Ids
rc_final = []
for rel in rc_migrate:
originfc = workspace + "\\" + arcpy.Describe(rel).originClassNames[0]
if arcpy.ListFields(originfc,"","GlobalID"):
rc_final.append(rel)
print("Adding {0} to the list to migrate. \n".format(rel.rsplit("\\",1)[1]))
else:
print("{0} must have Global Ids to migrate relationship class.\n".format(originfc.rsplit("\\",1)[1]))
# Pass the list of valid relationship classes into the Migrate Relationship tool
print("Passing valid relationship classes into the Migrate Relationship Class tool.\n")
for rel_class in rc_final:
print("Migrating {0}... \n".format(rel_class.rsplit("\\",1)[1]))
arcpy.MigrateRelationshipClass_management(rel_class)
print(arcpy.GetMessages() + "\n")