空間結合の追加 (Add Spatial Join) (データ管理)

サマリー

フィーチャクラスの属性を、空間リレーションシップに基づいて別のフィーチャクラスの属性に結合します。 ターゲット フィーチャと、結合フィーチャの結合された属性が結合されます。 この結合は一時的なものです。

詳細については、「空間条件で選択: 図の例」をご参照ください。

使用法

  • 空間結合では、[結合フィーチャ] の値から [ターゲット フィーチャ] の値への行のマッチングが、相対的な空間位置に基づいて行われます。

  • このツールにより、次のフィールドが一時的な結合に作成されます。

    • Join_Count- 各ターゲット フィーチャにマッチする結合フィーチャの数
    • TARGET_FID- ターゲット フィーチャのオブジェクト ID

  • このツールは 1 対多の結合をサポートしていません。 1 対多の結合を実行するには、[空間結合 (Spatial Join)] ツールを使用します。

  • デフォルトでは、結合フィーチャのすべての属性は、ターゲット フィーチャの属性に結合されます。 結合後の出力に含める属性は、[フィールド マップ] パラメーターを使用して定義できます。

  • 出力データセット内のフィールドとそれらのフィールドの内容を管理するには、[フィールド マップ] パラメーターを使用します。

    • フィールドの順序を変更するには、フィールド名を選択して、新しい位置にドラッグします。
    • 出力フィールドのデフォルトのデータ タイプは、最初に検出した (その名前の) 入力フィールドのデータ タイプと同じになります。 データ タイプをいつでも手動で他の任意の有効なデータ タイプに変更できます。
    • 使用できるマージ ルールは、最初、最後、結合、合計、平均、中央値、最頻値、最小、最大、標準偏差、個数です。
    • [結合] マージ ルールを使用している場合、スペース、カンマ、ピリオド、ダッシュなど、区切り文字を指定できます。 スペースを使用する場合は、入力ボックスの先頭にポインターを置き、Space キーを 1 回押してください。
    • 書式設定オプションを使用して、テキスト フィールドの開始位置と終了位置を指定できます。
    • ゼロによる除算が発生するため、1 個しかないデータの標準偏差を計算しないでください。したがって、入力ソースがただ 1 つである場合には、標準偏差オプションを使用すべきではありません。

    スクリプトでフィールドをマッピングする方法の詳細

  • [結合フィーチャのフィールド マップ] パラメーターに指定したマージ ルールは、複数のフィーチャがターゲット フィーチャにマッチしたときに (Join_Count > 1)、結合フィーチャの属性にだけ適用されます。 たとえば、「DEPTH」属性の値に 15.5、2.5、および 3.3 を持つ 3 つのフィーチャが結合され、マージ ルールとして平均が適用される場合、出力フィールドの値は 6.1 になります。 結合フィーチャの NULL 値は統計計算では無視されます。 たとえば、3 つのフィーチャの値が 15.5、<NULL>、および 2.5 である場合、平均は 9.0、個数は 2 になります。

  • [マッチ オプション] パラメーターが [最も近い] または [最も近い (測地線)] に設定されているときに、2 つ以上の結合フィーチャがターゲット フィーチャから同じ距離に存在する場合があります。 この場合は、結合フィーチャのいずれかが、マッチするフィーチャとしてランダムに選択されます (結合フィーチャの Object ID は、この選択に影響しません)。 2 番目、3 番目、または n 番目に近いフィーチャを検索するには、[近接情報テーブルの生成 (Generate Near Table)] ツールを使用します。

    近接性の計算方法の詳細

  • 1 つの結合フィーチャに複数のターゲット フィーチャとの空間リレーションシップがある場合、それはマッチするターゲット フィーチャの数だけカウントされます。 たとえば、あるポイントが 3 つのポリゴン内にある場合、そのポイントはポリゴンにつき 1 回、合計で 3 回カウントされます。

  • [交差する (3D)] および [一定距離内にある (3D)] の空間リレーションシップの使用に関する詳細については、「空間検索の 3D リレーションシップ」をご参照ください。

パラメーター

ラベル説明データ タイプ
ターゲット フィーチャ

ターゲット フィーチャの属性と結合されたフィーチャの属性は、ターゲット フィーチャ レイヤーに結合されます。 ただし、[フィールド マップ] パラメーターを使用して属性のサブセットを定義することができます。

Feature Layer
フィーチャの結合

結合フィーチャの属性は、ターゲット フィーチャの属性に結合されます。 結合された属性の集約に結合操作がどのように影響するかについては、[結合方法] パラメーターの説明をご参照ください。

Feature Layer
結合方法
(オプション)

このパラメーターは非表示であり、サポートされていません。 すべての結合は 1 対 1 の結合として実行されます。

出力フィーチャクラスに出力が作成されるときに 1 対多の結合を実行するには、[空間結合 (Spatial Join)] ツールを使用します。

String
すべてのターゲット フィーチャを保持する
(オプション)

結合フィーチャとの空間リレーションシップがあるターゲット フィーチャのみを保存するか (内部結合)、結合フィーチャとの空間リレーションシップがないターゲット フィーチャも保存するか (外部結合) を指定します。

  • オン - ターゲット フィーチャ レイヤーに含まれるすべてのフィーチャが保存されます。 これがデフォルトです。
  • オフ - 結合フィーチャとの空間リレーションシップがあるターゲット フィーチャ レイヤーに含まれるフィーチャのみが保存されます。
Boolean
フィールド マップ
(オプション)

出力に含まれる属性フィールド、およびそれに対応するフィールド プロパティとソース フィールド。 デフォルトでは、入力のすべてのフィールドが含まれます。

フィールドの追加、削除、名前変更、並べ替えを行うことができ、フィールドのプロパティを変更することもできます。

マージ ルールによって、複数の入力フィールドの値を単一の出力値にマージまたは結合する方法を指定できます。 出力フィールドの値を指定する方法を決定するために使用できるマージ ルールは次のとおりです。

  • 最初 - 入力フィールドの最初の値を使用します。
  • 最後 - 入力フィールドの最後の値を使用します。
  • 結合 - 入力フィールドの値を結合します。
  • 合計 - 入力フィールドの値の合計を計算します。
  • 平均 - 入力フィールドの値の平均を計算します。
  • 中央値 - 入力フィールドの値の中央値を計算します。
  • 最頻値 - 最も頻度が高い値を使用します。
  • 最小 - すべての入力フィールドの値のうちの最小値を使用します。
  • 最大 - すべての入力フィールドの値のうちの最大値を使用します。
  • 標準偏差 - すべての入力フィールドの値に、標準偏差の分類法を使用します。
  • 個数 - 計算に含まれるレコード数を検出します。

Field Mappings
マッチ オプション
(オプション)

行の一致に使用される条件を指定します。

  • 交差する結合フィーチャのフィーチャは、ターゲット フィーチャと交差するときにマッチします。これがデフォルトです。[検索範囲] パラメーターに距離を指定します。
  • 交差する (3D) 結合フィーチャ内のフィーチャは、そのフィーチャが 3 次元空間 (X,Y,Z) でターゲット フィーチャと交差している場合にマッチします。[検索範囲] パラメーターに距離を指定します。
  • 一定距離内にある結合フィーチャのフィーチャは、ターゲット フィーチャとの距離が指定範囲以内にある場合にマッチします。[検索範囲] パラメーターに距離を指定します。
  • 一定距離内にある (測地線)平面距離ではなく測地距離が使用される以外は、[一定距離内にある] と同じです。データが広大な地理的範囲をカバーする場合や、入力座標系が距離の計算に適さない場合は、このオプションを選択します。
  • 一定距離内にある (3D)結合フィーチャのフィーチャは、3 次元空間において、ターゲット フィーチャとの距離が指定範囲以内にある場合にマッチします。[検索範囲] パラメーターに距離を指定します。
  • 含む結合フィーチャのフィーチャは、ターゲット フィーチャに含まれる場合にマッチします。ターゲット フィーチャは、ポリゴンまたはポリラインである必要があります。このオプションでは、ターゲット フィーチャとしてポイントを指定できません。また、ターゲット フィーチャがポリゴンの場合は、結合フィーチャとしてポリゴンだけを指定できます。
  • 完全に含む結合フィーチャのフィーチャは、ターゲット フィーチャに完全に含まれる場合にマッチします。ポリゴンは、どのフィーチャも完全に含むことができます。ポイントは、どのフィーチャも完全に含むことはできず、ポイントを含むこともできません。ポリラインは、ポリラインとポイントのみを完全に含むことができます。
  • 含む (Clementini)この空間リレーションシップは、結合フィーチャが完全にターゲット フィーチャの境界線上にある (選択フィーチャのどの部分も入力フィーチャの内部または外部にない) 場合、そのフィーチャはマッチしない点を除くと、[完全に含む] と同じ結果になります。Clementini は、境界線ポリゴンは内部と外部を分離するポリゴンであり、ラインの境界線はその端点で、ポイントの境界線は常に空であると定義しています。
  • 含まれる結合フィーチャのフィーチャは、ターゲット フィーチャを含む場合にマッチします。これは [含む] の反対です。このオプションでは、結合フィーチャがポリゴンの場合は、ターゲット フィーチャとしてポリゴンだけを指定できます。ポイントがターゲットの場合にのみ結合フィーチャとしてポイントを指定できます。
  • 完全に含まれる結合フィーチャのフィーチャは、ターゲット フィーチャがそれらに完全に含まれる場合にマッチします。これは [完全に含む] の反対です。
  • 含まれる (Clementini)結合フィーチャのフィーチャ全体が、ターゲット フィーチャの境界線の上にある場合にはフィーチャがマッチしない点を除き、[検索範囲] と同じ結果になります。Clementini は、境界線ポリゴンは内部と外部を分離するポリゴンであり、ラインの境界線はその端点で、ポイントの境界線は常に空であると定義しています。
  • 正確に一致する結合フィーチャのフィーチャは、ターゲット フィーチャと同一である場合にマッチします。結合フィーチャとターゲット フィーチャの両方が、同じシェープ タイプ (ポイントとポイント、ラインとライン、ポリゴンとポリゴン) である必要があります。
  • 境界に接する結合フィーチャのフィーチャは、境界線がターゲット フィーチャと接している場合にマッチします。ターゲット フィーチャおよび結合フィーチャがラインまたはポリゴンであるとき、結合フィーチャの境界線は、ターゲット フィーチャの境界線と接することができるだけで、結合フィーチャのいずれの部分もターゲット フィーチャの境界線と重なることはできません。
  • 線分を共有する結合フィーチャのフィーチャは、ライン セグメントをターゲット フィーチャと共有する場合にマッチします。結合フィーチャおよびターゲット フィーチャは、ラインまたはポリゴンのいずれかである必要があります。
  • アウトラインが横切る結合フィーチャのフィーチャは、その境界線がターゲット フィーチャと交差する場合にマッチします。結合フィーチャおよびターゲット フィーチャは、ラインまたはポリゴンのいずれかである必要があります。結合フィーチャまたはターゲット フィーチャとしてポリゴンが使用される場合には、ポリゴンの境界線 (ライン) が使用されます。ポイントで交差するラインはマッチしますが、線分を共有するラインはマッチしません。
  • 区画の重心が入力フィーチャに含まれる結合フィーチャのフィーチャは、ターゲット フィーチャの中心を含む場合にマッチします。フィーチャの中心を計算するために、ポリゴンとマルチポイントの場合はジオメトリの重心が使用され、ライン入力の場合にはジオメトリの中間点が使用されます。[検索範囲] パラメーターに距離を指定します。
  • 最も近い結合フィーチャのフィーチャのうち、ターゲット フィーチャに最も近いフィーチャがマッチします。詳細については、使用上のヒントをご参照ください。[検索範囲] パラメーターに距離を指定します。
  • 最も近い測地線平面距離ではなく測地距離が使用される以外は、[最近接] と同じです。データが広大な地理的範囲をカバーする場合や、入力座標系が距離の計算に適さない場合は、このオプションを選択します。
  • 最大のオーバーラップ結合フィーチャのフィーチャは、オーバーラップ部分が最大であるターゲット フィーチャとマッチします。
String
検索範囲
(オプション)

ターゲット フィーチャのこの範囲内にある結合フィーチャが、空間結合の対象と見なされます。 検索範囲は、空間リレーションシップが指定されている ([マッチ オプション] パラメーターが [交差する][一定距離内にある][一定距離内にある (測地線)][重心が含まれる][最も近い] または [最も近い (測地線)] に設定されている) 場合のみ有効になります。 たとえば、検索範囲に 100 メートルを指定して、[一定距離内にある] 空間リレーションシップを使用すると、ターゲット フィーチャから 100 メートル以内のフィーチャを結合します。 3 つの [一定距離内にある] リレーションシップにおいて、[検索範囲] に値が指定されていない場合は、距離 0 が使用されます。

Linear Unit
距離フィールド名
(オプション)

結合に追加するフィールドの名前。ターゲット フィーチャと最も近い結合フィーチャとの間の距離が含まれます。 このパラメーターは、空間リレーションシップが指定された ([マッチ オプション][最も近い] または [最も近い (測地線)] に設定された) 場合のみ有効になります。 検索範囲内にマッチするフィーチャがない場合、このフィールドの値は -1 になります。 フィールド名を指定しないと、このフィールドは結合に追加されません。

String

派生した出力

ラベル説明データ タイプ
更新されたターゲット フィーチャ

更新された入力データセット。

Feature Layer

arcpy.management.AddSpatialJoin(target_features, join_features, {join_operation}, {join_type}, {field_mapping}, {match_option}, {search_radius}, {distance_field_name})
名前説明データ タイプ
target_features

ターゲット フィーチャの属性と結合されたフィーチャの属性は、ターゲット フィーチャ レイヤーに結合されます。 ただし、field_mapping パラメーターを使用して属性のサブセットを定義することができます。

Feature Layer
join_features

結合フィーチャの属性は、ターゲット フィーチャの属性に結合されます。 結合された属性の集約に結合操作がどのように影響するかについては、join_operation パラメーターの説明をご参照ください。

Feature Layer
join_operation
(オプション)

このパラメーターはサポートされていません。 すべての結合は 1 対 1 の結合として実行されます。 Python で位置引数を使用している場合は、None タイプ、空の文字列 ("" または '')、または JOIN_ONE_TO_ONE キーワードを使用します。

出力フィーチャクラスに出力が作成されるときに 1 対多の結合を実行するには、[空間結合 (Spatial Join)] ツールを使用します。

String
join_type
(オプション)

結合フィーチャとの空間リレーションシップがあるターゲット フィーチャのみを保存するか (内部結合)、結合フィーチャとの空間リレーションシップがないターゲット フィーチャも保存するか (外部結合) を指定します。

  • KEEP_ALLターゲット フィーチャ レイヤーに含まれるすべてのフィーチャが保存されます。 これは外部結合と呼ばれます。 これがデフォルトです。
  • KEEP_COMMON結合フィーチャとの空間リレーションシップがあるターゲット フィーチャ レイヤーに含まれるフィーチャのみが保存されます。 これは内部結合と呼ばれます。
Boolean
field_mapping
(オプション)

出力に含まれる属性フィールド、およびそれに対応するフィールド プロパティとソース フィールド。 デフォルトでは、入力のすべてのフィールドが含まれます。

フィールドの追加、削除、名前変更、並べ替えを行うことができ、フィールドのプロパティを変更することもできます。

マージ ルールによって、複数の入力フィールドの値を単一の出力値にマージまたは結合する方法を指定できます。 出力フィールドの値を指定する方法を決定するために使用できるマージ ルールは次のとおりです。

  • 最初 - 入力フィールドの最初の値を使用します。
  • 最後 - 入力フィールドの最後の値を使用します。
  • 結合 - 入力フィールドの値を結合します。
  • 合計 - 入力フィールドの値の合計を計算します。
  • 平均 - 入力フィールドの値の平均を計算します。
  • 中央値 - 入力フィールドの値の中央値を計算します。
  • 最頻値 - 最も頻度が高い値を使用します。
  • 最小 - すべての入力フィールドの値のうちの最小値を使用します。
  • 最大 - すべての入力フィールドの値のうちの最大値を使用します。
  • 標準偏差 - すべての入力フィールドの値に、標準偏差の分類法を使用します。
  • 個数 - 計算に含まれるレコード数を検出します。

このパラメーターを定義するには、PythonFieldMappings クラスを使用します。

Field Mappings
match_option
(オプション)

行の一致に使用される条件を指定します。

  • INTERSECT結合フィーチャのフィーチャは、ターゲット フィーチャと交差するときにマッチします。これがデフォルトです。search_radius パラメーターに距離を指定します。
  • INTERSECT_3D 結合フィーチャ内のフィーチャは、そのフィーチャが 3 次元空間 (X,Y,Z) でターゲット フィーチャと交差している場合にマッチします。search_radius パラメーターに距離を指定します。
  • WITHIN_A_DISTANCE結合フィーチャのフィーチャは、ターゲット フィーチャとの距離が指定範囲以内にある場合にマッチします。search_radius パラメーターに距離を指定します。
  • WITHIN_A_DISTANCE_GEODESIC平面距離ではなく測地距離が使用される以外は、WITHIN_A_DISTANCE と同じです。データが広大な地理的範囲をカバーする場合や、入力座標系が距離の計算に適さない場合は、このオプションを選択します。
  • WITHIN_A_DISTANCE_3D結合フィーチャのフィーチャは、3 次元空間において、ターゲット フィーチャとの距離が指定範囲以内にある場合にマッチします。search_radius パラメーターに距離を指定します。
  • CONTAINS結合フィーチャのフィーチャは、ターゲット フィーチャに含まれる場合にマッチします。ターゲット フィーチャは、ポリゴンまたはポリラインである必要があります。このオプションでは、ターゲット フィーチャとしてポイントを指定できません。また、ターゲット フィーチャがポリゴンの場合は、結合フィーチャとしてポリゴンだけを指定できます。
  • COMPLETELY_CONTAINS結合フィーチャのフィーチャは、ターゲット フィーチャに完全に含まれる場合にマッチします。ポリゴンは、どのフィーチャも完全に含むことができます。ポイントは、どのフィーチャも完全に含むことはできず、ポイントを含むこともできません。ポリラインは、ポリラインとポイントのみを完全に含むことができます。
  • CONTAINS_CLEMENTINIこの空間リレーションシップは、結合フィーチャが完全にターゲット フィーチャの境界線上にある (選択フィーチャのどの部分も入力フィーチャの内部または外部にない) 場合、そのフィーチャはマッチしない点を除くと、COMPLETELY_CONTAINS と同じ結果になります。Clementini は、境界線ポリゴンは内部と外部を分離するポリゴンであり、ラインの境界線はその端点で、ポイントの境界線は常に空であると定義しています。
  • WITHIN結合フィーチャのフィーチャは、ターゲット フィーチャを含む場合にマッチします。これは CONTAINS の反対です。このオプションでは、結合フィーチャがポリゴンの場合は、ターゲット フィーチャとしてポリゴンだけを指定できます。ポイントがターゲットの場合にのみ結合フィーチャとしてポイントを指定できます。
  • COMPLETELY_WITHIN結合フィーチャのフィーチャは、ターゲット フィーチャがそれらに完全に含まれる場合にマッチします。これは COMPLETELY_CONTAINS の反対です。
  • WITHIN_CLEMENTINI結合フィーチャのフィーチャ全体が、ターゲット フィーチャの境界線の上にある場合にはフィーチャがマッチしない点を除き、WITHIN と同じ結果になります。Clementini は、境界線ポリゴンは内部と外部を分離するポリゴンであり、ラインの境界線はその端点で、ポイントの境界線は常に空であると定義しています。
  • ARE_IDENTICAL_TO結合フィーチャのフィーチャは、ターゲット フィーチャと同一である場合にマッチします。結合フィーチャとターゲット フィーチャの両方が、同じシェープ タイプ (ポイントとポイント、ラインとライン、ポリゴンとポリゴン) である必要があります。
  • BOUNDARY_TOUCHES結合フィーチャのフィーチャは、境界線がターゲット フィーチャと接している場合にマッチします。ターゲット フィーチャおよび結合フィーチャがラインまたはポリゴンであるとき、結合フィーチャの境界線は、ターゲット フィーチャの境界線と接することができるだけで、結合フィーチャのいずれの部分もターゲット フィーチャの境界線と重なることはできません。
  • SHARE_A_LINE_SEGMENT_WITH結合フィーチャのフィーチャは、ライン セグメントをターゲット フィーチャと共有する場合にマッチします。結合フィーチャおよびターゲット フィーチャは、ラインまたはポリゴンのいずれかである必要があります。
  • CROSSED_BY_THE_OUTLINE_OF結合フィーチャのフィーチャは、その境界線がターゲット フィーチャと交差する場合にマッチします。結合フィーチャおよびターゲット フィーチャは、ラインまたはポリゴンのいずれかである必要があります。結合フィーチャまたはターゲット フィーチャとしてポリゴンが使用される場合には、ポリゴンの境界線 (ライン) が使用されます。ポイントで交差するラインはマッチしますが、線分を共有するラインはマッチしません。
  • HAVE_THEIR_CENTER_IN結合フィーチャのフィーチャは、ターゲット フィーチャの中心を含む場合にマッチします。フィーチャの中心を計算するために、ポリゴンとマルチポイントの場合はジオメトリの重心が使用され、ライン入力の場合にはジオメトリの中間点が使用されます。search_radius パラメーターに距離を指定します。
  • CLOSEST結合フィーチャのフィーチャのうち、ターゲット フィーチャに最も近いフィーチャがマッチします。詳細については、使用上のヒントをご参照ください。search_radius パラメーターに距離を指定します。
  • CLOSEST_GEODESIC平面距離ではなく測地距離が使用される以外は、CLOSEST と同じです。データが広大な地理的範囲をカバーする場合や、入力座標系が距離の計算に適さない場合は、このオプションを選択します。
  • LARGEST_OVERLAP結合フィーチャのフィーチャは、オーバーラップ部分が最大であるターゲット フィーチャとマッチします。
String
search_radius
(オプション)

ターゲット フィーチャのこの範囲内にある結合フィーチャが、空間結合の対象と見なされます。 検索範囲は、空間リレーションシップが指定されている (match_option パラメーターが INTERSECTWITHIN_A_DISTANCEWITHIN_A_DISTANCE_GEODESICHAVE_THEIR_CENTER_INCLOSEST、または CLOSEST_GEODESIC に設定されている) 場合のみ有効になります。 たとえば、検索範囲に 100 メートルを指定して、WITHIN_A_DISTANCE 空間リレーションシップを使用すると、ターゲット フィーチャから 100 メートル以内のフィーチャを結合します。 3 つの WITHIN_A_DISTANCE リレーションシップにおいて、search_radius に値が指定されていない場合は、距離 0 が使用されます。

Linear Unit
distance_field_name
(オプション)

結合に追加するフィールドの名前。ターゲット フィーチャと最も近い結合フィーチャとの間の距離が含まれます。 このパラメーターは、空間リレーションシップが指定された (match_optionCLOSEST または CLOSEST_GEODESIC に設定された) 場合にのみ有効になります。 検索範囲内にマッチするフィーチャがない場合、このフィールドの値は -1 になります。 フィールド名を指定しないと、このフィールドは結合に追加されません。

String

派生した出力

名前説明データ タイプ
out_feature_class

更新された入力データセット。

Feature Layer

コードのサンプル

AddSpatialJoin の例 1 (スタンドアロン スクリプト)

次の Python スクリプトは、スタンドアロン スクリプトで AddSpatialJoin 関数を使用する方法を示しています。

import os
import arcpy
arcpy.env.overwriteOutput = True

# Create hexagons
out_gdb = arcpy.env.scratchGDB
hex_fc = os.path.join(out_gdb, 'out_fc_hex_2')

arcpy.management.GenerateTessellation(
    hex_fc, '-10823285.769168 4836611.80759869 -10781728.9441187 4856999.87422328', 
    'HEXAGON', '17269676,2624 Unknown', arcpy.SpatialReference(3857))

# Create 2 random points in each hexagon
count_pts = 2
pts_fc = arcpy.management.CreateRandomPoints(
    out_gdb, 'out_fc_crp_2', constraining_feature_class=hex_fc, 
    number_of_points_or_field=count_pts)[0]

# Join the point attributes based on points within the hexagons
result = arcpy.management.AddSpatialJoin(
    hex_fc, pts_fc, None, None, 'CID', 'COMPLETELY_CONTAINS')
)