方法

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 サポート AI チャットボットを使用して問題を迅速に解決します。

今すぐチャットを開始

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

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

今すぐチャットを開始

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