空間条件で検索 (Select Layer By Location) (データ管理)

概要

別のデータセットのフィーチャに対する空間リレーションシップに基づいて、フィーチャを選択します。

[入力フィーチャ] パラメーター内の各フィーチャは、[選択フィーチャ] パラメーターのフィーチャに対して評価されます。指定した [リレーションシップ] パラメーターを満たすと、その入力フィーチャが選択されます。

リレーションシップの画面例を含む [空間条件で選択] の詳細

使用法

  • 入力がフィーチャクラスまたはデータセット パスの場合、このツールは、ツールの結果が適用された新しいレイヤーを自動的に作成して返します。

  • 空間リレーションシップを評価する際の座標系は、結果に影響を与えます。ある座標系で交差するフィーチャが、別の座標系では交差しない場合があります。

    • このツールは、空間リレーションシップを [入力フィーチャ] のデータ ソースの座標系で評価します。出力座標系の環境[現在のマップ (レイヤー)] に設定して、現在の表示と同じ座標系を使用します。

  • このツールを使って、同じレイヤー内の他のフィーチャへの空間リレーションシップに基づいて、フィーチャを選択することができます。例については、「レイヤー内の空間リレーションシップに基づいて選択する」をご参照ください。

  • 選択したレコードの数は、[ジオプロセシング履歴] で、[パラメーター] > [個数] の下にリストされます。さらに、[行のカウント (Get Count)] ツールを使用して、選択したレコードの数をカウントできます。Python の場合、選択したレコードの数は、ツールの Result オブジェクトからアクセスすることもできます。

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

  • エンタープライズ ジオデータベースを使用している場合、[インターセクト (DBMS)] 空間リレーションシップ (Python では INTERSECT_DBMS) は [インターセクト] リレーションシップ (Python では INTERSECT) よりパフォーマンスが高くなる場合があります。ただし、この処理は、特定の条件下でのみサポートされます。すべての条件を満たす場合、この空間処理はクライアント上ではなく、エンタープライズ ジオデータベースのデータベース管理システム (DBMS) 内で実行されます。この空間リレーションシップを使用する場合、以下を検討してください。

    • DBMS 内で処理を実行するには、次の要件が必要です。
      • [入力フィーチャ] および [選択フィーチャ] パラメーター値は、同じエンタープライズ ジオデータベース ワークスペースから取得され、同じ空間参照およびジオメトリ格納タイプが含まれる必要があります。
      • 基盤になる DBMS は IBM Db2OraclePostgreSQLSAP HANA、または Microsoft SQL Server です。
      • このオプションでサポートされているジオメトリ格納タイプは、ST_GEOMETRY (Db2OraclePostgreSQLSAP HANA)、PostGIS (PostgreSQL)、SDO_GEOMETRY (Oracle)、MSSQLGeometry および MSSQLGeography (SQL Server) です。DBMS のインストールおよび構成の詳細と、使用できるようにするジオメトリ格納タイプの構成の詳細については、「ジオデータベース管理」をご参照ください。
      • Oracle ST_GEOMETRY を使用する場合は、ST_Geometry にアクセスするように Oracle extproc を構成する必要があります。詳細については、「Oracle の ST_Geometry にアクセスするための extproc の構成」をご参照ください。
      • [検索距離] パラメーターが設定されていません。
      • [選択タイプ] パラメーターの値が [新しい選択] です。
      • ツールを実行する前の選択が、選択セットではなくレイヤー定義クエリを使用して行われています。
    • この空間処理は、処理中に XY 許容値を適用しないで実行されます。DBMS 内で XY 許容値の使用はサポートされていません。このため、XY 許容値が適用されているクライアント上で解析を実行する場合と比較して、返される選択内容が少し異なる可能性があります。クライアント側での処理中に XY 許容値が適用される方法の詳細については、「フィーチャクラスの基礎」をご参照ください。
    • Db2OraclePostgreSQLSAP HANASQL Server のエンタープライズ ジオデータベースがサポートされています。それぞれ、このリレーションシップでサポートされている独自のジオメトリ格納タイプを持ちます。各ジオメトリ格納タイプの注意事項については、DBMS 専用のベンダー ドキュメントをご参照ください。空間処理を実行する際、パフォーマンスとスケーラビリティに影響するストレージに関する制限がある場合があります。

構文

arcpy.management.SelectLayerByLocation(in_layer, {overlap_type}, {select_features}, {search_distance}, {selection_type}, {invert_spatial_relationship})
パラメーター説明データ タイプ
in_layer
[in_layer,...]

select_features パラメーター値に対して評価されるフィーチャ。これらのフィーチャに選択が適用されます。

Feature Layer; Raster Layer; Mosaic Layer
overlap_type
(オプション)

評価される空間リレーションシップを指定します。

  • INTERSECT入力レイヤー内のフィーチャは、そのフィーチャが選択フィーチャと交差している場合に選択対象になります。これがデフォルトです。
  • INTERSECT_3D入力レイヤー内のフィーチャは、そのフィーチャが 3 次元空間 (X、Y、および Z) で選択しているフィーチャと交差している場合に選択対象になります。
  • INTERSECT_DBMS入力レイヤー内のフィーチャは、そのフィーチャが選択フィーチャと交差している場合に選択対象になります。このオプションは、エンタープライズ ジオデータベースのみに適用されます。すべての要件を満たす場合、選択はクライアント上ではなく、エンタープライズ ジオデータベースの DBMS 内で処理されます (使用上の注意をご参照ください)。このオプションは、クライアント上で選択を処理する場合よりパフォーマンスが向上する場合があります。
  • WITHIN_A_DISTANCE入力レイヤー内のフィーチャは、そのフィーチャが選択フィーチャから指定の距離 (ユークリッド距離) 内にある場合に選択対象になります。search_distance パラメーターを使用して、距離を指定します。
  • WITHIN_A_DISTANCE_3D入力レイヤー内のフィーチャは、そのフィーチャが 3 次元空間で選択フィーチャから指定の距離内にある場合に選択対象になります。search_distance パラメーターを使用して、距離を指定します。
  • WITHIN_A_DISTANCE_GEODESIC入力レイヤー内のフィーチャは、そのフィーチャが選択フィーチャから指定の距離内にある場合に選択対象になります。フィーチャ間の距離は、測地線の式を使用して計算されます。この式は、楕円体の曲率を考慮して、日付変更線と極の近くのデータおよび交差するデータを正確に処理します。search_distance パラメーターを使用して、距離を指定します。
  • CONTAINS入力レイヤー内のフィーチャは、そのフィーチャが選択フィーチャを包含している場合に選択対象になります。
  • COMPLETELY_CONTAINS入力レイヤー内のフィーチャは、そのフィーチャが完全に選択フィーチャを包含している場合に選択対象になります。
  • CONTAINS_CLEMENTINIこの空間リレーションシップは、選択フィーチャが完全に入力フィーチャの境界線上にある (選択フィーチャのどの部分も入力フィーチャの内部または外部にない) 場合、そのフィーチャは選択されない点を除くと、COMPLETELY_CONTAINS と同じ結果になります。CLEMENTINI は、境界線ポリゴンは内部と外部を分離するポリゴンであり、ラインの境界線はその端点で、ポイントの境界線は常に空であると定義しています。
  • WITHIN入力レイヤーのフィーチャは、選択フィーチャに含まれる場合に選択対象になります。
  • COMPLETELY_WITHIN入力レイヤー内のフィーチャは、完全に選択フィーチャに含まれる場合に選択対象になります。
  • WITHIN_CLEMENTINI入力レイヤーのフィーチャ全体が選択レイヤーのフィーチャの境界線の上にある場合にフィーチャが選択対象にならない点を除き、WITHIN と同じ結果になります。CLEMENTINI は、境界線ポリゴンは内部と外部を分離するポリゴンであり、ラインの境界線はその端点で、ポイントの境界線は常に空であると定義しています。
  • ARE_IDENTICAL_TO入力レイヤー内のフィーチャは、そのフィーチャが (ジオメトリ上) 選択フィーチャと一致する場合に選択対象になります。
  • BOUNDARY_TOUCHES入力レイヤー内のフィーチャは、選択フィーチャに接する境界線がある場合に選択対象になります。入力フィーチャがラインまたはポリゴンであるとき、入力フィーチャの境界線は、選択フィーチャの境界線と接することができるだけで、入力フィーチャのいずれの部分も選択フィーチャの境界線と重なることはできません。
  • SHARE_A_LINE_SEGMENT_WITH入力レイヤーのフィーチャは、ライン セグメントを選択フィーチャと共有する場合に選択対象となります。入力フィーチャおよび選択フィーチャは、ラインまたはポリゴンのどちらかでなければなりません。
  • CROSSED_BY_THE_OUTLINE_OF入力レイヤーのフィーチャは、選択フィーチャのアウトラインと交差する場合に選択対象となります。入力フィーチャおよび選択フィーチャは、ラインまたはポリゴンのどちらかでなければなりません。入力レイヤーまたは選択レイヤーとしてポリゴンが使用される場合には、ポリゴンの境界線 (ライン) が使用されます。ポイントで交差するラインは選択されますが、ライン セグメントを共有するラインは選択されません。
  • HAVE_THEIR_CENTER_IN入力レイヤー内のフィーチャは、その中心が選択フィーチャに含まれる場合に選択対象になります。フィーチャの中心を計算するために、ポリゴンとマルチポイントの場合はジオメトリの重心が使用されます。ライン入力の場合には、ジオメトリの中間点が使用されます。
String
select_features
(オプション)

[入力フィーチャ] パラメーターのフィーチャは、このレイヤーまたはフィーチャクラスのフィーチャとの関係に基づき、選択対象となります。

Feature Layer
search_distance
(オプション)

検索の対象となる指定の距離。このパラメーターは、overlap_type パラメーターが WITHIN_A_DISTANCEWITHIN_A_DISTANCE_GEODESICWITHIN_A_DISTANCE_3DINTERSECTINTERSECT_3DHAVE_THEIR_CENTER_IN、または CONTAINS のいずれかに設定された場合にのみ有効です。

WITHIN_A_DISTANCE_GEODESIC オプションを選択した場合、キロメートルやマイルなどの距離単位を使用します。

Linear Unit
selection_type
(オプション)

選択をどのように入力に適用するか、および既存の選択とどのように統合するかを指定します。このツールには、既存の選択を消去するオプションは含まれません。[属性検索 (Select Layer By Attribute)] ツールの CLEAR_SELECTION オプションを使用します。

  • NEW_SELECTION結果として得られる選択によって、既存の選択が置換されます。これがデフォルトです。
  • ADD_TO_SELECTION結果として得られる選択が、既存の選択に追加されます。選択が存在しない場合は、NEW_SELECTION オプションと同じです。
  • REMOVE_FROM_SELECTION結果として得られる選択が、既存の選択から削除されます。選択が存在しない場合、このオプションは影響を与えません。
  • SUBSET_SELECTION結果として得られる選択が、既存の選択に統合されます。両方に共通のレコードだけが選択された状態となります。
  • SWITCH_SELECTION選択が切り替えられます。選択されたすべてのレコードが選択から削除され、選択されなかったすべてのレコードが選択に追加されます。このオプションが指定されている場合、select_features および overlap_type パラメーターは無視されます。
String
invert_spatial_relationship
(オプション)

空間リレーションシップの評価結果が使用されるか、反対の結果が使用されるかを指定します。たとえば、このパラメーターを使用すると、交差していないフィーチャまたは別のデータセット内のフィーチャから一定距離内にはないフィーチャのリストを取得することができます。

  • NOT_INVERTクエリ結果が使用されます。これがデフォルトです。
  • INVERT逆のクエリ結果が使用されます。selection_type パラメーターを使用すると、選択フィーチャが既存のフィーチャと統合される前に選択が反転します。
Boolean

派生した出力

名前説明データ タイプ
out_layer_or_view

選択が適用された状態の更新された入力。

フィーチャ レイヤー、モザイク レイヤー
out_layers_or_views

更新された入力の名前。

フィーチャ レイヤー、モザイク レイヤー
count

選択したレコードの数。

Long

コードのサンプル

SelectLayerByLocation (空間検索) の例 1 (Python ウィンドウ)

次の Python ウィンドウ スクリプトは、イミディエイト モードで SelectLayerByLocation 関数を使用する方法を示しています。

import arcpy
arcpy.SelectLayerByLocation_management("parcel_lyr", "have_their_center_in", 
                                       "c:/kamsack.gdb/city_limits")
SelectLayerByLocation (空間検索) の例 2 (スタンドアロン スクリプト)

次のスタンドアロン スクリプトは、位置と属性検索に基づいてフィーチャを新しいフィーチャクラスに抽出するために、ワークフローで SelectLayerByLocation 関数を使用する方法を示したものです。

# Description: Extract features to a new feature class based on a 
#              location and an attribute query
# Import arcpy and set path to data
import arcpy
arcpy.env.workspace = "c:/data/mexico.gdb"
# Make a layer and select cities that overlap the chihuahua polygon
chihuahua_cities = arcpy.SelectLayerByLocation_management('cities', 'INTERSECT', 
                                                          'chihuahua')
# From the previous selection, select a subset of cities that have 
# population > 10,000
arcpy.SelectLayerByAttribute_management(chihuahua_cities, 
                                        'SUBSET_SELECTION', 
                                        '"population" > 10000')
# If features matched criteria, write them to a new feature class
matchcount = int(arcpy.GetCount_management(chihuahua_cities)[0]) 
if matchcount == 0:
    print('no features matched spatial and attribute criteria')
else:
    arcpy.CopyFeatures_management(chihuahua_cities, 'chihuahua_10000plus')
    print('{0} cities that matched criteria written to {0}'.format(
        matchcount, chihuahua_10000plus))
SelectLayerByLocation (空間検索) の例 3 (スタンドアロン スクリプト)

次のスタンドアロン スクリプトは、overlap_type パラメーターの WITHIN_A_DISTANCE オプションと WITHIN_A_DISTANCE_GEODESIC オプションの、search_distance パラメーターでのさまざまな用途を示します。

# Description: Select features within a distance
# Import arcpy and set path to data
import arcpy
arcpy.env.workspace = r"c:\data\mexico.gdb"
arcpy.SelectLayerByLocation_management('cities', 'WITHIN_A_DISTANCE', 
                                       'chihuahua', '1.5 Miles')
arcpy.SelectLayerByLocation_management('cities', 'WITHIN_A_DISTANCE_GEODESIC', 
                                       'chihuahua', '200 Kilometers')
# When using WITHIN_A_DISTANCE, if distance units are not specified, the 
# distance value is assumed to be in the units of the input dataset's coordinate 
# system
arcpy.SelectLayerByLocation_management('cities', 'WITHIN_A_DISTANCE', 
                                       'chihuahua', '200')
# When using WITHIN_A_DISTANCE_GEODESIC, if distance units are not specified, 
# the distance value is assumed to be in meters
arcpy.SelectLayerByLocation_management('cities', 'WITHIN_A_DISTANCE_GEODESIC', 
                                       'chihuahua', '200')

ライセンス情報

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

関連トピック