方法
リレーションシップ クラスは、ArcGIS for Desktop Advanced または Standard ライセンスにより、ジオデータベースに作成できます。 リレーションシップ クラスは、フィーチャクラスとテーブルのオブジェクト間の関連付けを管理します。 ワークスペース内には複数のジオデータベースが存在できるので、ジオデータベース内にリレーションシップ クラスがあるかどうかの手動確認は冗長な作業になる可能性があります。 この記事では、ワークスペース内のすべてのジオデータベースについてリレーションシップ クラスがあるかどうかを、手動ではなく ArcPy を使用して判別する方法を紹介します。
import arcpy from arcpy import env
workspace = env.workspace = r"<workspace_location>"
def detectRelationship(): rc_list = [c.name for c in arcpy.Describe(workspace).children if c.datatype == "RelationshipClass"] rc_list # List the names, origin, and destination of the relationship class for rc in rc_list: rc_path = workspace + "\\" + rc des_rc = arcpy.Describe(rc_path) origin = des_rc.originClassNames destination = des_rc.destinationClassNames print ("Relationship Class: %s \n Origin: %s \n Desintation: %s" %(rc, origin, destination))
detectRelationship()
以下のコードと画像は、完全なスクリプトと実行結果を示します。
import arcpy from arcpy import env workspace = env.workspace = r"C:\Users\USER\Desktop\Test_case" def detectRelationship(): rc_list = [c.name for c in arcpy.Describe(workspace).children if c.datatype == "RelationshipClass"] rc_list for rc in rc_list: rc_path = workspace + "\\" + rc des_rc = arcpy.Describe(rc_path) origin = des_rc.originClassNames destination = des_rc.destinationClassNames print ("Relationship Class: %s \n Origin: %s \n Desintation: %s" %(rc, origin, destination)) detectRelationship()
ArcGIS エキスパートのサポートを受ける
Esri Support アプリのダウンロード