ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • ヘルプ
  • Sign Out
ArcGIS Desktop

ArcGIS Online

組織のマッピング プラットフォーム

ArcGIS Desktop

完全なプロ仕様の GIS

ArcGIS Enterprise

エンタープライズ GIS

ArcGIS for Developers

位置情報利用アプリの開発ツール

ArcGIS Solutions

各種業界向けの無料のテンプレート マップおよびテンプレート アプリケーション

ArcGIS Marketplace

組織で使えるアプリとデータを取得

  • ドキュメント
  • サポート
Esri
  • サイン イン
user
  • マイ プロフィール
  • サイン アウト

ArcMap

  • ホーム
  • はじめに
  • マップ
  • 解析
  • データ管理
  • ツール
  • エクステンション

空間結合 (Spatial Join)

  • 概要
  • 使用法
  • 構文
  • コードのサンプル
  • 環境
  • ライセンス情報

概要

フィーチャクラスの属性を、空間リレーションシップに基づいて別のフィーチャクラスの属性に結合します。ターゲット フィーチャと、結合フィーチャの結合された属性は、出力フィーチャクラスに書き込まれます。

空間リレーションシップを説明する図の例を表示

使用法

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

  • デフォルトでは、結合フィーチャのすべての属性がターゲット フィーチャの属性に追加され、出力フィーチャクラスにコピーされます。出力に書き込む属性は、[結合フィーチャのフィールド マップ] パラメーターで操作することで定義できます。

  • 2 つの新しいフィールド、Join_Count および TARGET_FID は、常に出力フィーチャクラスに追加されます。Join_Count は、結合フィーチャが各ターゲット フィーチャ (TARGET_FID) と一致する数を示します。

    [結合方法] パラメーターに JOIN_ONE_TO_MANY が指定されている場合、別の新しいフィールド JOIN_FID が出力に追加されます。

  • [結合方法] パラメーターが JOIN_ONE_TO_MANY である場合、各ターゲット フィーチャの出力フィーチャクラスには複数の行が存在する場合があります。JOIN_FID フィールドにより、どのフィーチャがどのターゲット フィーチャ (TARGET_FID) に結合されるかをより簡単に判断できます。JOIN_FID フィールドの値が -1 であれば、指定されたターゲット フィーチャとの空間リレーションシップを持つフィーチャがないことを意味します。

  • すべての入力ターゲット フィーチャは、次の両方の条件を満たす場合にのみ出力フィーチャクラスに書き込まれます。

    • [結合方法] が JOIN_ONE_TO_ONE に設定されている。
    • [すべてのターゲット フィーチャを保持する] をオンにしている (Python の join_type = "KEEP_ALL")。

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

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

    近接性の計算方法の詳細

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

  • 3 次元空間リレーションシップ (INTERSECT_3D および WITHIN_A_DISTANCE_3D) の使用方法の詳細については、「空間検索の 3D リレーションシップ」をご参照ください。

構文

SpatialJoin(target_features, join_features, out_feature_class, {join_operation}, {join_type}, {field_mapping}, {match_option}, {search_radius}, {distance_field_name})
パラメーター説明データ タイプ
target_features

ターゲット フィーチャの属性と結合されたフィーチャの属性は、出力フィーチャクラスに転送されます。ただし、フィールド マップ パラメーターに属性のサブセットを定義することができます。

Feature Layer
join_features

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

Feature Layer
out_feature_class

ターゲット フィーチャの属性と結合フィーチャの属性を含む、新しいフィーチャクラス。デフォルトでは、ターゲット フィーチャのすべての属性と結合されたフィーチャの属性が出力に書き込まれます。ただし、転送する属性のセットはフィールド マップ パラメーターで設定できます。

Feature Class
join_operation
(オプション)

単一のターゲット フィーチャと同じ空間リレーションシップを持つ複数の結合フィーチャが検出された場合、ターゲット フィーチャと結合フィーチャの間の結合をどのように処理するかを決定します。

  • JOIN_ONE_TO_ONE —単一のターゲット フィーチャと同じ空間リレーションシップを持つ複数の結合フィーチャが検出された場合、フィールド マップのマージ ルールを使って複数の結合フィーチャの属性が集約されます。たとえば、1 つのポイント (ターゲット フィーチャ) が 2 つの異なるポリゴン (結合フィーチャ) 内にあると検出された場合、出力ポイント フィーチャクラスに渡される前に、2 つのポリゴンの属性が集約されます。1 つのポリゴンの属性値が 3、もう 1 つのポリゴンの属性値が 7 であり、合計のマージ ルールが指定されている場合、出力フィーチャクラスの集約された値は 10 になります。これがデフォルトです。
  • JOIN_ONE_TO_MANY —単一のターゲット フィーチャと同じ空間リレーションシップを持つ複数の結合フィーチャが検出された場合、出力フィーチャクラスにはターゲット フィーチャの複数のコピー (レコード) が含まれます。たとえば、2 つの異なるポリゴン結合フィーチャ内で単一のポイント ターゲット フィーチャが検出された場合には、出力フィーチャクラスにはターゲット フィーチャの 2 つのコピー (一方のポリゴンの属性を持つレコードと、もう一方のポリゴンの属性を持つレコード) が含まれます。
String
join_type
(オプション)

出力フィーチャクラスにすべてのターゲット フィーチャを保存するか (外部結合)、結合フィーチャとの空間リレーションシップが指定されたターゲット フィーチャのみを保存するか (内部結合) を指定します。

  • KEEP_ALL —出力にすべてのターゲット フィーチャが保存されます (外部結合)。これがデフォルトです。
  • KEEP_COMMON — 出力フィーチャクラスに、結合フィーチャとの空間リレーションシップが指定されたターゲット フィーチャのみが保存されます (内部結合)。たとえば、match_option = "WITHIN" を使用して、ポイント フィーチャクラスをターゲット フィーチャに指定し、ポリゴン フィーチャクラスを結合フィーチャに指定した場合、出力フィーチャクラスには、ポリゴン結合フィーチャ内にあるターゲット フィーチャのみが含まれます。結合フィーチャに含まれないターゲット フィーチャは出力から除外されます。
Boolean
field_mapping
(オプション)

出力フィーチャクラスでどの属性フィールドを使用するかを制御します。最初のリストには、ターゲット フィーチャおよび結合フィーチャの両方のすべてのフィールドが含まれます。フィールドの追加、削除、名前の変更や、フィールドのプロパティの変更が可能です。ターゲット フィーチャの選択したフィールドはそのまま転送されますが、結合フィーチャの選択したフィールドは、マージ ルールに従って集約することができます。フィールド マッピングの詳細については、「フィールド マッピング コントロールの使用」と「入力フィールドから出力フィールドへのマッピング」をご参照ください。複数のフィールドと統計情報の組み合わせを指定できます。

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 と同じ結果になります。クレメンティーニは、境界線ポリゴンは内部と外部を分離するポリゴンであり、ラインの境界線はその端点で、ポイントの境界線は常に空であると定義しています。
  • WITHIN —結合フィーチャのフィーチャは、ターゲット フィーチャを含む場合にマッチします。これは CONTAINS の反対です。このオプションでは、結合フィーチャがポリゴンの場合は、ターゲット フィーチャとしてポリゴンだけを指定できます。ポイントがターゲットの場合にのみ結合フィーチャとしてポイントを指定できます。
  • COMPLETELY_WITHIN —結合フィーチャのフィーチャは、ターゲット フィーチャがそれらに完全に含まれる場合にマッチします。これは COMPLETELY_CONTAINS の反対です。
  • WITHIN_CLEMENTINI —結合フィーチャのフィーチャ全体が、ターゲット フィーチャの境界線の上にある場合にはフィーチャがマッチしない点を除き、WITHIN と同じ結果になります。クレメンティーニは、境界線ポリゴンは内部と外部を分離するポリゴンであり、ラインの境界線はその端点で、ポイントの境界線は常に空であると定義しています。
  • 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 と同じです。データが広大な地理的範囲をカバーする場合や、入力座標系が距離の計算に適さない場合は、このオプションを選択します。
String
search_radius
(オプション)

ターゲット フィーチャのこの範囲内にある結合フィーチャが、空間結合の対象と見なされます。検索範囲は、空間リレーションシップ ([マッチ オプション]) の INTERSECT、WITHIN_A_DISTANCE、WITHIN_A_DISTANCE_GEODESIC、HAVE_THEIR_CENTER_IN、CLOSEST または CLOSEST_GEODESIC が指定された場合のみ有効になります。空間リレーションシップ WITHIN_A_DISTANCE で 100 メートルの検索範囲を使用すると、ターゲット フィーチャから 100 メートル以内のフィーチャが結合されます。3 つの WITHIN_A_DISTANCE リレーションシップでは、検索範囲に値が指定されていない場合、0 の距離が使用されます。

Linear unit
distance_field_name
(オプション)

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

String

コードのサンプル

SpatialJoin (空間結合) の例 1 (Python ウィンドウ)

次のスクリプトは、Python ウィンドウで SpatialJoin (空間結合) 関数を使用する方法を示しています。

import arcpy

target_features = "C:/data/usa.gdb/states"
join_features = "C:/data/usa.gdb/cities"
out_feature_class = "C:/data/usa.gdb/states_cities"

arcpy.SpatialJoin_analysis(target_features, join_features, out_feature_class)
SpatialJoin (空間結合) の例 2 (スタンドアロン スクリプト)

次のスタンドアロン スクリプトは、都市の属性を州に結合するために SpatialJoin (空間結合) 関数を使用する方法を示しています。

# Name: SpatialJoin_Example2.py
# Description: Join attributes of cities to states based on spatial relationships.
# Requirements: os module

# Import system modules
import arcpy
import os

# Set local variables
workspace = r"C:\gpqa\mytools\spatialjoin\usa.gdb"
outWorkspace = r"C:\gpqa\mytools\spatialjoin\output.gdb"
 
# Want to join USA cities to states and calculate the mean city population
# for each state
targetFeatures = os.path.join(workspace, "states")
joinFeatures = os.path.join(workspace, "cities")
 
# Output will be the target features, states, with a mean city population field (mcp)
outfc = os.path.join(outWorkspace, "states_mcp2")
 
# Create a new fieldmappings and add the two input feature classes.
fieldmappings = arcpy.FieldMappings()
fieldmappings.addTable(targetFeatures)
fieldmappings.addTable(joinFeatures)
 
# First get the POP1990 fieldmap. POP1990 is a field in the cities feature class.
# The output will have the states with the attributes of the cities. Setting the
# field's merge rule to mean will aggregate the values for all of the cities for
# each state into an average value. The field is also renamed to be more appropriate
# for the output.
pop1990FieldIndex = fieldmappings.findFieldMapIndex("POP1990")
fieldmap = fieldmappings.getFieldMap(pop1990FieldIndex)
 
# Get the output field's properties as a field object
field = fieldmap.outputField
 
# Rename the field and pass the updated field object back into the field map
field.name = "mean_city_pop"
field.aliasName = "mean_city_pop"
fieldmap.outputField = field
 
# Set the merge rule to mean and then replace the old fieldmap in the mappings object
# with the updated one
fieldmap.mergeRule = "mean"
fieldmappings.replaceFieldMap(pop1990FieldIndex, fieldmap)
 
# Delete fields that are no longer applicable, such as city CITY_NAME and CITY_FIPS
# as only the first value will be used by default
x = fieldmappings.findFieldMapIndex("CITY_NAME")
fieldmappings.removeFieldMap(x)
y = fieldmappings.findFieldMapIndex("CITY_FIPS")
fieldmappings.removeFieldMap(y)
 
#Run the Spatial Join tool, using the defaults for the join operation and join type
arcpy.SpatialJoin_analysis(targetFeatures, joinFeatures, outfc, "#", "#", fieldmappings)

環境

  • 現在のワークスペース
  • テンポラリ ワークスペース
  • 出力座標系
  • 地理座標系変換
  • 範囲
  • M 座標精度
  • M 許容値
  • 出力データの M ドメイン
  • 出力データの XY ドメイン
  • 出力データの Z ドメイン
  • 出力データに M 値を含む
  • 出力データのデフォルト Z 値
  • 出力データに Z 値を含む
  • XY 座標精度
  • XY 許容値
  • Z 座標精度
  • Z 許容値

ライセンス情報

  • Basic: はい
  • Standard: はい
  • Advanced: はい

関連トピック

  • [オーバーレイ] ツールセットの概要
  • フィーチャ タイプ別の空間リレーションシップ
  • 空間検索: 図の例

ArcGIS Desktop

  • ホーム
  • ドキュメント
  • サポート

ArcGIS プラットフォーム

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

Esri について

  • 会社概要
  • 採用情報
  • Esri ブログ
  • ユーザ カンファレンス
  • デベロッパ サミット
Esri
ご意見・ご感想をお寄せください。
Copyright © 2020 Esri. | プライバシー | リーガル