空間結合(Spatial Join) (解析)

サマリ

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

使用法

構文

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

ターゲット フィーチャの属性と結合されたフィーチャの属性は、出力フィーチャクラスに転送されます。ただし、フィールド マップ パラメータに属性のサブセットを定義することができます。ターゲット フィーチャには、ArcGIS によってサポートされるあらゆる空間データ ソースを使用できます。

Feature Layer
join_features

結合フィーチャの属性は、ターゲット フィーチャの属性に結合されます。結合された属性の集約に結合操作がどのように影響するかについては、[結合方法] パラメータの説明をご参照ください。結合フィーチャには、ArcGIS によってサポートされるあらゆる空間データ ソースを使用できます。

Feature Layer
out_feature_class

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

Feature Class
join_operation
(オプション)

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

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

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

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

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

Field Mappings
match_option
(オプション)

行の一致に使用される条件を定義します。次のような一致オプションがあります。

  • INTERSECTS:結合フィーチャのフィーチャは、ターゲット フィーチャと交差するときにマッチします。これがデフォルトです。
  • CONTAINS: 結合フィーチャのフィーチャは、ターゲット フィーチャに含まれる場合にマッチします。このオプションでは、ターゲット フィーチャとしてポイントを指定できません。また、ターゲット フィーチャがポリゴンの場合は、結合フィーチャとしてポリゴンだけを指定できます。
  • WITHIN: 結合フィーチャのフィーチャは、ターゲット フィーチャを含む場合にマッチします。このオプションでは、結合フィーチャとしてポイントを指定できません。また、結合フィーチャがポリゴンの場合は、ターゲット フィーチャとしてポリゴンだけを指定できます。
  • CLOSEST: 結合フィーチャのフィーチャのうち、ターゲット フィーチャに最も近いフィーチャがマッチします。2 つ以上の結合フィーチャが、ターゲット フィーチャから同じ距離に存在する場合があります。この場合は、結合フィーチャのいずれかが、マッチするフィーチャとしてランダムに選択されます。
String
search_radius
(オプション)

ターゲット フィーチャのこの範囲内にある結合フィーチャが、空間結合の対象と見なされます。検索範囲は、[マッチ オプション] に INTERSECTS または CLOSEST が指定された場合のみ有効になります。検索範囲に 100 メートルを指定して、[マッチ オプション] に INTERSECTS を指定すると、結合フィーチャがターゲット フィーチャの 100 メートル以内にある場合に、結合フィーチャの属性がターゲット フィーチャに転送されます。検索範囲に 100 メートルを指定して、[マッチ オプション] に CLOSEST を指定すると、結合フィーチャがターゲット フィーチャの 100 メートル以内にあり、ターゲット フィーチャに最も近い場合に、結合フィーチャの属性がターゲット フィーチャに転送されます。

Linear unit
distance_field_name
(オプション)

出力フィーチャクラスに追加するフィールドの名前。ターゲット フィーチャと最も近い結合フィーチャの間の距離が含まれます。このオプションは、[マッチ オプション] で CLOSEST が指定されている場合にのみ有効です。出力フィールドが必要ない場合は、このパラメータは空のままで構いません。

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)

環境

関連項目

ライセンス情報

ArcView: はい
ArcEditor: はい
ArcInfo: はい

7/10/2012