ラベル | 説明 | データ タイプ |
ターゲット フィーチャ | ターゲット フィーチャの属性と結合されたフィーチャの属性は、出力フィーチャクラスに転送されます。 ただし、フィールド マップ パラメーターで属性のサブセットを定義することができます。 | Feature Layer |
フィーチャの結合 | 結合フィーチャの属性は、ターゲット フィーチャの属性に結合されます。 結合された属性の集約に結合操作がどのように影響するかについては、[結合方法] パラメーターの説明をご参照ください。 | Feature Layer |
出力フィーチャクラス | ターゲット フィーチャの属性と結合フィーチャの属性を含む、新しいフィーチャクラス。 デフォルトでは、ターゲット フィーチャのすべての属性と結合されたフィーチャの属性が出力に書き込まれます。 ただし、転送する属性のセットはフィールド マップ パラメーターで定義できます。 | Feature Class |
結合方法 (オプション) | 単一のターゲット フィーチャと同じ空間リレーションシップを持つ複数の結合フィーチャが検出された場合、ターゲット フィーチャと結合フィーチャを出力フィーチャクラスで結合する操作。
| String |
すべてのターゲット フィーチャを保持する (オプション) | 出力フィーチャクラスにすべてのターゲット フィーチャを保存するか (外部結合)、結合フィーチャとの空間リレーションシップが指定されたターゲット フィーチャのみを保存するか (内部結合) を指定します。
| Boolean |
フィールド マップ (オプション) | 出力に含まれる属性フィールド、およびそれに対応するフィールド プロパティとソース フィールド。 デフォルトでは、入力のすべてのフィールドが含まれます。 フィールドの追加、削除、名前変更、並べ替えを行うことができ、フィールドのプロパティを変更することもできます。 マージ ルールによって、複数の入力フィールドの値を単一の出力値にマージまたは結合する方法を指定できます。 出力フィールドの値を指定する方法を決定するために使用できるマージ ルールは次のとおりです。
| Field Mappings |
マッチ オプション (オプション) | 行の一致に使用される条件を指定します。
| String |
検索範囲 (オプション) | ターゲット フィーチャのこの範囲内にある結合フィーチャが、空間結合の対象と見なされます。 検索範囲は、空間リレーションシップが指定されている ([マッチ オプション] パラメーターが [交差する]、[一定距離内にある]、[一定距離内にある (測地線)]、[重心が含まれる]、[最も近い] または [最も近い (測地線)] に設定されている) 場合のみ有効になります。 たとえば、検索範囲に 100 メートルを指定して、[一定距離内にある] 空間リレーションシップを使用すると、ターゲット フィーチャから 100 メートル以内のフィーチャを結合します。 3 つの [一定距離内にある] リレーションシップにおいて、[検索範囲] に値が指定されていない場合は、距離 0 が使用されます。 | Linear Unit |
距離フィールド名 (オプション) | ターゲット フィーチャと最も近い結合フィーチャとの間の距離を含むフィールドの名前。 このフィールドは、出力フィーチャクラスに追加されます。 このパラメーターは、空間リレーションシップが指定されている ([マッチ オプション] が [最も近い] または [最も近い (測地線)] に設定されている) 場合のみ有効になります。 検索範囲内にマッチするフィーチャがない場合は、この値を -1 に指定します。 フィールド名を指定しないと、このフィールドは出力フィーチャクラスに追加されません。 | String |
サマリー
フィーチャクラスの属性を、空間リレーションシップに基づいて別のフィーチャクラスの属性に結合します。 ターゲット フィーチャと、結合フィーチャの結合された属性は、出力フィーチャクラスに書き込まれます。
使用法
空間結合では、[結合フィーチャ] の値から [ターゲット フィーチャ] の値への行のマッチングが、相対的な空間位置に基づいて行われます。
デフォルトでは、結合フィーチャのすべての属性がターゲット フィーチャの属性に追加され、出力フィーチャクラスにコピーされます。 出力に書き込む属性は、[結合フィーチャのフィールド マップ] パラメーターで操作することで定義できます。
出力フィーチャクラスには、2 つの新しいフィールド (Join_Count および TARGET_FID) が追加されます。 Join_Count フィールドは、各ターゲット フィーチャ (TARGET_FID) にマッチする結合フィーチャの数を表します。
[結合方法] パラメーターで [1 対多の結合] が指定されている場合、もう 1 つの新しいフィールド (JOIN_FID) が出力に追加されます。
[結合方法] パラメーターを [1 対多の結合] に設定した場合、各ターゲット フィーチャの出力フィーチャクラスには複数の行が存在する場合があります。 JOIN_FID フィールドを使用すると、どのフィーチャがどのターゲット フィーチャ (TARGET_FID) に結合されるかを判断できます。 JOIN_FID フィールドの値が -1 であれば、指定されたターゲット フィーチャとの空間リレーションシップを持つフィーチャがないことを意味します。
すべての入力ターゲット フィーチャは、次の両方の条件を満たす場合に出力フィーチャクラスに書き込まれます。
- [結合方法] が [1 対 1 の結合] に設定されている。
- [すべてのターゲット フィーチャを保持する] がオンである。
出力データセット内のフィールドとそれらのフィールドの内容を管理するには、[フィールド マップ] パラメーターを使用します。
- フィールドの順序を変更するには、フィールド名を選択して、新しい位置にドラッグします。
- 出力フィールドのデフォルトのデータ タイプは、最初に検出した (その名前の) 入力フィールドのデータ タイプと同じになります。 データ タイプをいつでも手動で他の任意の有効なデータ タイプに変更できます。
- 使用できるマージ ルールは、最初、最後、結合、合計、平均、中央値、最頻値、最小、最大、標準偏差、個数です。
- [結合] マージ ルールを使用している場合、スペース、カンマ、ピリオド、ダッシュなど、区切り文字を指定できます。 スペースを使用する場合は、入力ボックスの先頭にポインターを置き、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 リレーションシップ」をご参照ください。
パラメーター
arcpy.analysis.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 (オプション) | 単一のターゲット フィーチャと同じ空間リレーションシップを持つ複数の結合フィーチャが検出された場合、ターゲット フィーチャと結合フィーチャを出力フィーチャクラスで結合する操作。
| String |
join_type (オプション) | 出力フィーチャクラスにすべてのターゲット フィーチャを保存するか (外部結合)、結合フィーチャとの空間リレーションシップが指定されたターゲット フィーチャのみを保存するか (内部結合) を指定します。
| Boolean |
field_mapping (オプション) | 出力に含まれる属性フィールド、およびそれに対応するフィールド プロパティとソース フィールド。 デフォルトでは、入力のすべてのフィールドが含まれます。 フィールドの追加、削除、名前変更、並べ替えを行うことができ、フィールドのプロパティを変更することもできます。 マージ ルールによって、複数の入力フィールドの値を単一の出力値にマージまたは結合する方法を指定できます。 出力フィールドの値を指定する方法を決定するために使用できるマージ ルールは次のとおりです。
このパラメーターを定義するには、Python で FieldMappings クラスを使用します。 | Field Mappings |
match_option (オプション) | 行の一致に使用される条件を指定します。
| String |
search_radius (オプション) | ターゲット フィーチャのこの範囲内にある結合フィーチャが、空間結合の対象と見なされます。 検索範囲は、空間リレーションシップが指定されている (match_option パラメーターが INTERSECT、WITHIN_A_DISTANCE、WITHIN_A_DISTANCE_GEODESIC、HAVE_THEIR_CENTER_IN、CLOSEST、または CLOSEST_GEODESIC に設定されている) 場合のみ有効になります。 たとえば、検索範囲に 100 メートルを指定して、WITHIN_A_DISTANCE 空間リレーションシップを使用すると、ターゲット フィーチャから 100 メートル以内のフィーチャを結合します。 3 つの WITHIN_A_DISTANCE リレーションシップにおいて、search_radius に値が指定されていない場合は、距離 0 が使用されます。 | Linear Unit |
distance_field_name (オプション) | ターゲット フィーチャと最も近い結合フィーチャとの間の距離を含むフィールドの名前。 このフィールドは、出力フィーチャクラスに追加されます。 このパラメーターは、空間リレーションシップが指定されている (match_option が CLOSEST または CLOSEST_GEODESIC に設定されている) 場合のみ有効になります。 検索範囲内にマッチするフィーチャがない場合は、この値を -1 に指定します。 フィールド名を指定しないと、このフィールドは出力フィーチャクラスに追加されません。 | String |
コードのサンプル
次のスクリプトは、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.analysis.SpatialJoin(target_features, join_features, out_feature_class)
次のスタンドアロン スクリプトは、都市の属性を州に結合するために SpatialJoin 関数を使用する方法を示しています。
# Name: SpatialJoin_Example2.py
# Description: Join attributes of cities to states based on spatial relationships.
# 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.analysis.SpatialJoin(targetFeatures, joinFeatures, outfc, "#", "#", fieldmappings)
環境
ライセンス情報
- Basic: Yes
- Standard: Yes
- Advanced: Yes