SearchRelatedRecords

サマリー

リレーションシップ クラスに定義された関連元と関連先のフィーチャクラスまたはテーブルのリレーションシップに基づいて関連レコードを取得します。

オブジェクトはタプルの反復子を返します。 各タプルには 2 つのアイテムが含まれます。1 つ目のアイテムは関連元テーブルの行 (タプル)、2 つ目のアイテムは関連先テーブルの行 (タプル) です。

説明

SearchRelatedRecords クラスは、for ループを使用して反復処理できます。 レコードが得られる順序は、oids_to_search パラメーターに渡された ObjectID 値の順序と一致しない場合があります。 SearchRelatedRecords オブジェクトは、データ ロックの削除に役立つ with ステートメントもサポートしています。

各テーブルから返される正確なフィールドは、origin_fields パラメーターと destination_fields パラメーターで制御できます。 origin_fields または destination_fields のいずれかを個別に省略することもできますが、どちらか 1 つは引数に指定する必要があります。 これらのパラメーターのいずれかを引数に指定しない場合、もう一方のパラメーターを引数に指定する必要があります。

関連元と関連先のフィーチャクラス Geometry オブジェクト プロパティには、それぞれのフィールドのリストに SHAPE@ トークンを指定することでアクセスできます。 ただし、SHAPE@ トークンを使用して完全なジオメトリにアクセスする操作は、計算上の負荷がかかります。 ポイントの X、Y 座標など、単純なジオメトリ情報のみが必要な場合は、SHAPE@XYSHAPE@ZSHAPE@M などのトークンを使用すると、より高速で効率的なアクセスが実現します。

デフォルトでは、リレーションシップは正方向に読み取られます。 このため、指定した ObjectID 値は関連元テーブルに適用され、関連先テーブルで関連レコードを検索するために使用されます。 方向を反転するには、backward パラメーターを True に設定します。 設定すると、指定した ObjectID 値は関連先テーブルに適用され、関連元テーブルで関連レコードを検索するために使用されるようになります。

指定した ObjectID 値の関連レコードが見つからない場合、そのレコードに対する結果は得られません。

構文

 SearchRelatedRecords (relationship_class, {oids_to_search}, {origin_fields}, {destination_fields}, {backward})
パラメーター説明データ タイプ
relationship_class

The path to the relationship class.

String
oids_to_search
[oids_to_search,...]

A list of ObjectID values that will be used to search for related records.

Use an asterisk (*) instead of a list of ObjectID values to search for all related records.

(デフォルト値は次のとおりです "*")

Integer
origin_fields
[origin_fields,...]

フィールド名のリスト (またはタプル)。 単一フィールドの場合、文字列のリストの代わりに文字列を使用できます。

フィールドのリストの代わりにアスタリスク (*) を使用すると、入力テーブルのすべてのフィールドにアクセスできます (BLOB フィールドは除きます)。 ただし、パフォーマンスとフィールドの順序の信頼性を高めるために、フィールドのリストは実際に必要なフィールドのみに絞り込むことをお勧めします。

その他の情報には、フィールド名の代わりにトークン (OID@ など) を使用してアクセスできます。

If no argument is passed to origin_fields, you must pass an argument to destination_fields.

  • SHAPE@XYフィーチャの重心を表す X 座標と Y 座標の組み合わせ
  • SHAPE@XYZフィーチャの重心を表す XYZ 座標の組み合わせ
  • SHAPE@TRUECENTROIDフィーチャの重心を表す X 座標と Y 座標の組み合わせ SHAPE@XY と同じ値が返されます。
  • SHAPE@Xフィーチャの X 座標 (Double)
  • SHAPE@Yフィーチャの Y 座標 (Double)
  • SHAPE@Zフィーチャの Z 座標 (Double)
  • SHAPE@Mフィーチャの M 値 (Double)
  • SHAPE@JSONジオメトリを表す Esri JSON 文字列
  • SHAPE@WKBOGC ジオメトリの WKB (Well-Known Binary) 表現。 ジオメトリ値の汎用的な表現が、連続的なバイト ストリームとして提供されます。値は bytearray オブジェクトとして返されます。
  • SHAPE@WKTOGC ジオメトリの WKT (Well-Known Text) 表現。 ジオメトリ値の汎用的な表現が、テキスト文字列として提供されます。
  • SHAPE@フィーチャのジオメトリ オブジェクト
  • SHAPE@AREAフィーチャの面積 (Double)
  • SHAPE@LENGTHフィーチャの長さ (Double)
  • CREATED@フィーチャが作成されたときの datetime オブジェクト。 このフィールドは読み取り専用です。
  • CREATOR@フィーチャを作成したユーザー名の文字列。 このフィールドは読み取り専用です。
  • EDITED@フィーチャが最後に編集されたときの datetime オブジェクト。 このフィールドは読み取り専用です。
  • EDITOR@フィーチャを最後に編集したユーザー名の文字列。 このフィールドは読み取り専用です。
  • GLOBALID@フィーチャのユニバーサルに一意な識別子の文字列。 このフィールドは読み取り専用です。
  • OID@Object ID フィールドの値
  • SUBTYPE@サブタイプ コードの整数。

(デフォルト値は次のとおりです None)

String
destination_fields
[destination_fields,...]

フィールド名のリスト (またはタプル)。 単一フィールドの場合、文字列のリストの代わりに文字列を使用できます。

フィールドのリストの代わりにアスタリスク (*) を使用すると、入力テーブルのすべてのフィールドにアクセスできます (BLOB フィールドは除きます)。 ただし、パフォーマンスとフィールドの順序の信頼性を高めるために、フィールドのリストは実際に必要なフィールドのみに絞り込むことをお勧めします。

その他の情報には、フィールド名の代わりにトークン (OID@ など) を使用してアクセスできます。

If no argument is passed to destination_fields, you must pass an argument to origin_fields.

  • SHAPE@XYフィーチャの重心を表す X 座標と Y 座標の組み合わせ
  • SHAPE@XYZフィーチャの重心を表す XYZ 座標の組み合わせ
  • SHAPE@TRUECENTROIDフィーチャの重心を表す X 座標と Y 座標の組み合わせ SHAPE@XY と同じ値が返されます。
  • SHAPE@Xフィーチャの X 座標 (Double)
  • SHAPE@Yフィーチャの Y 座標 (Double)
  • SHAPE@Zフィーチャの Z 座標 (Double)
  • SHAPE@Mフィーチャの M 値 (Double)
  • SHAPE@JSONジオメトリを表す Esri JSON 文字列
  • SHAPE@WKBOGC ジオメトリの WKB (Well-Known Binary) 表現。 ジオメトリ値の汎用的な表現が、連続的なバイト ストリームとして提供されます。値は bytearray オブジェクトとして返されます。
  • SHAPE@WKTOGC ジオメトリの WKT (Well-Known Text) 表現。 ジオメトリ値の汎用的な表現が、テキスト文字列として提供されます。
  • SHAPE@フィーチャのジオメトリ オブジェクト
  • SHAPE@AREAフィーチャの面積 (Double)
  • SHAPE@LENGTHフィーチャの長さ (Double)
  • CREATED@フィーチャが作成されたときの datetime オブジェクト。 このフィールドは読み取り専用です。
  • CREATOR@フィーチャを作成したユーザー名の文字列。 このフィールドは読み取り専用です。
  • EDITED@フィーチャが最後に編集されたときの datetime オブジェクト。 このフィールドは読み取り専用です。
  • EDITOR@フィーチャを最後に編集したユーザー名の文字列。 このフィールドは読み取り専用です。
  • GLOBALID@フィーチャのユニバーサルに一意な識別子の文字列。 このフィールドは読み取り専用です。
  • OID@Object ID フィールドの値
  • SUBTYPE@サブタイプ コードの整数。

(デフォルト値は次のとおりです None)

String
backward

The directionality of the related record search. Set to False to search the relationship from the origin table to the destination table. Set to True to search the relationship from the destination table to the origin table.

(デフォルト値は次のとおりです False)

Boolean

方法の概要

方法説明
reset ()

Resets the iteration back to the first row.

方法

reset ()

コードのサンプル

SearchRelatedRecords の例 1

SearchRelatedRecords クラスを使用して、一連のパーセルに関連するすべての建物を検索します。

import arcpy

relc = os.path.join(arcpy.env.workspace, "Parcel_Building_Rel")
oids = [2710, 1010]

with arcpy.da.SearchRelatedRecords(relc, oids, origin_fields="APN", destination_fields="BUILDING_NUMBER") as related_records:
    for record in related_records:
        print(record)
SearchRelatedRecords の例 2

SearchRelatedRecords クラスを逆方向に使用して、一連の建物に関連するパーセルを検索します

import arcpy

relc = os.path.join(arcpy.env.workspace, "Parcel_Building_Rel")
oids = [850, 921, 1018, 2301]

with arcpy.da.SearchRelatedRecords(relc, oids, origin_fields="APN", destination_fields="BUILDING_NUMBER", backward=True) as related_records:
    for record in related_records:
        print(record)
SearchRelatedRecords の例 3

SearchRelatedRecords クラスを使用し、トークンを使って属性を取得します。 この例は、いずれかのフィールド パラメーターを省略することで、関連レコードにのみ注目している場合に役立つ場合があることも示しています。

import arcpy

relc = os.path.join(arcpy.env.workspace, "Parcel_Building_Rel")
oids = [2710]

with arcpy.da.SearchRelatedRecords(relc, oids, destination_fields=["OID@", "SHAPE@AREA"]) as related_records:
    for record in related_records:
        print(record)
SearchRelatedRecords の例 4

Python sorted 関数を使用して、SearchRelatedRecords が返すレコードを並べ替えます。 この例では、また oids_to_search パラメーターを省略することで、SearchRelatedRecords クラスがすべての関連レコードを返すことを示しています。

import arcpy

relc = os.path.join(arcpy.env.workspace, "Parcel_Building_Rel")

for record in sorted(arcpy.da.SearchRelatedRecords(relc, origin_fields="APN", destination_fields=["BUILDING_NUMBER", "POPULATION"])):
    print(record)