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

サマリー

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

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

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

使用法

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

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

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

  • 同じレイヤー内の他のフィーチャに対する空間リレーションシップに基づいてフィーチャを選択するには、「レイヤー内の空間リレーションシップに基づいて選択する」の例をご参照ください。

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

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

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

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

パラメーター

ラベル説明データ タイプ
入力フィーチャ

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

Feature Layer; Raster Layer; Mosaic Layer
リレーションシップ
(オプション)

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

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

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

Feature Layer
検索距離
(オプション)

検索の対象となる距離。 このパラメーターは、[リレーションシップ] パラメーターを [一定距離内にある][一定距離内にある (測地線)][一定距離内にある (3D)][交差する][交差する (3D)][重心が含まれる]、または [含む] に設定した場合のみ有効です。

[一定距離内にある (測地線)] オプションを選択した場合は、キロメートルやマイルなどの距離単位を使用します。

Linear Unit
選択するタイプ
(オプション)

選択をどのように入力に適用するか、および既存の選択とどのように統合するかを指定します。 このツールには、既存の選択を消去するオプションは含まれません。選択を消去するには、[選択タイプ] パラメーターが [現在の選択セットを解除] に設定された [属性検索 (Select Layer By Attribute)] ツールを使用します。

  • 新しい選択結果として得られる選択によって、既存の選択が置換されます。 これがデフォルトです。
  • 現在の選択に追加結果として得られる選択が、既存の選択に追加されます。 選択が存在しない場合は、[新規選択] オプションと同じです。
  • 現在の選択から削除結果として得られる選択が、既存の選択から削除されます。 選択が存在しない場合、このオプションは影響を与えません。
  • 現在の選択からサブセットを選択結果として得られる選択が、既存の選択に統合されます。 両方に共通のレコードだけが選択された状態になります。
  • 現在の選択の切り替え選択が切り替えられます。 選択されたすべてのレコードが選択から削除され、選択されなかったすべてのレコードが選択に追加されます。このオプションを選択すると、[選択フィーチャ] および [リレーションシップ] パラメーターは無視されます。
String
空間リレーションシップの反転
(オプション)

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

  • オフ - クエリ結果が使用されます。 これがデフォルトです。
  • オン - 逆のクエリ結果が使用されます。 [選択タイプ] パラメーターが設定されている場合、選択が既存の選択と統合される前に反転します。
Boolean

派生した出力

ラベル説明データ タイプ
選択を使用したレイヤー

選択が適用された状態の最初の入力。

Feature Layer; Mosaic Layer
出力レイヤー名

選択が適用された状態のすべての入力を含む複数値パラメーター。

この出力パラメーターをモデルで使用して、[マージ (Merge)] ツールなど、複数値の入力を使用するツールに接続します。

Feature Layer; Mosaic Layer
個数

選択したレコードの数。

複数の [入力フィーチャ] パラメーター値がある場合、個数は入力と同じ順序になります。

Long

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この空間リレーションシップは、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
(オプション)

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

  • 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

選択が適用された状態の最初の入力。

Feature Layer; Mosaic Layer
out_layers_or_views

選択が適用された状態のすべての入力を含む複数値パラメーター。

この出力パラメーターをモデルで使用して、[マージ (Merge)] ツールなど、複数値の入力を使用するツールに接続します。

Feature Layer; Mosaic Layer
count

選択したレコードの数。

複数の in_features パラメーター値がある場合、個数は入力と同じ順序になります。

Long

コードのサンプル

SelectLayerByLocation の例 1 (Python ウィンドウ)

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

import arcpy
arcpy.management.SelectLayerByLocation("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.management.SelectLayerByLocation('cities', 'INTERSECT', 
                                                          'chihuahua')

# From the previous selection, select a subset of cities that have 
# population > 10,000
arcpy.management.SelectLayerByAttribute(chihuahua_cities, 
                                        'SUBSET_SELECTION', 
                                        '"population" > 10000')

# If features matched criteria, write them to a new feature class
matchcount = int(arcpy.management.GetCount(chihuahua_cities)[0]) 

if matchcount == 0:
    print('no features matched spatial and attribute criteria')
else:
    arcpy.management.CopyFeatures(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.management.SelectLayerByLocation('cities', 'WITHIN_A_DISTANCE', 
                                       'chihuahua', '1.5 Miles')
arcpy.management.SelectLayerByLocation('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.management.SelectLayerByLocation('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.management.SelectLayerByLocation('cities', 'WITHIN_A_DISTANCE_GEODESIC', 
                                       'chihuahua', '200')