方法

ArcPy を使用して、ジオデータベースにリレーションシップ クラスが含まれているかどうかを判別する

Last Published: November 26, 2020

サマリー

リレーションシップ クラスは、ArcGIS for Desktop Advanced または Standard ライセンスにより、ジオデータベースに作成できます。 リレーションシップ クラスは、フィーチャクラスとテーブルのオブジェクト間の関連付けを管理します。 ワークスペース内には複数のジオデータベースが存在できるので、ジオデータベース内にリレーションシップ クラスがあるかどうかの手動確認は冗長な作業になる可能性があります。 この記事では、ワークスペース内のすべてのジオデータベースについてリレーションシップ クラスがあるかどうかを、手動ではなく ArcPy を使用して判別する方法を紹介します。

手順

  1. 必要なモジュールをインポートします。
import arcpy from arcpy import env
  1. 目的のワークスペースを指定します。
workspace = env.workspace = r"<workspace_location>"
  1. 指定したワークスペース内のリレーションシップ クラスを検出する関数を作成します。
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))
  1. 関数を呼び出し、リレーションシップ クラスがある場合はその結果を返します。
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()
サンプル結果の画像

記事 ID: 000023985

新しい問題や一般的な問題に対する通知とソリューションの受け取り

新しい AI チャットボットから、要約された回答とビデオソリューションを入手してください。

Esri Support アプリのダウンロード

ArcGIS エキスパートのサポートを受ける

テクニカル サポートへのお問い合わせ

Esri Support アプリのダウンロード

ダウンロード オプションに移動