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

ライセンス レベル:BasicStandardAdvanced

サマリ

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

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

リレーションシップの図の例

使用法

構文

SelectLayerByLocation_management (in_layer, {overlap_type}, {select_features}, {search_distance}, {selection_type})
パラメータ説明データ タイプ
in_layer

選択フィーチャに対して評価されるフィーチャを含むレイヤ。このレイヤに選択が適用されます。入力として、ArcMap のコンテンツ ウィンドウのレイヤ、または [フィーチャ レイヤの作成(Make Feature Layer)] ツールを使って ArcCatalog またはスクリプトに作成されたレイヤを指定できます。ディスク上のフィーチャクラスへのパスを入力として指定することはできません。

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

評価される空間リレーションシップ。

  • INTERSECT入力レイヤ内のフィーチャは、そのフィーチャが選択フィーチャと交差している場合に選択対象になります。これがデフォルトです。
  • INTERSECT_3D入力レイヤ内のフィーチャは、そのフィーチャが 3 次元空間(X、Y、および Z)で選択しているフィーチャと交差している場合に選択対象になります。
  • WITHIN_A_DISTANCE入力レイヤ内のフィーチャは、そのフィーチャが選択フィーチャから指定の距離内にある場合に選択対象になります。[選択距離] パラメータに距離を指定します。
  • WITHIN_A_DISTANCE_3D入力レイヤ内のフィーチャは、そのフィーチャが 3 次元空間で選択フィーチャから指定の距離内にある場合に選択対象になります。[選択距離] パラメータに距離を指定します。
  • CONTAINS入力レイヤ内のフィーチャは、そのフィーチャが選択フィーチャを包含している場合に選択対象になります。入力フィーチャはポリゴンである必要があります。
  • COMPLETELY_CONTAINS入力レイヤ内のフィーチャは、そのフィーチャが完全に選択フィーチャを包含している場合に選択対象になります。入力フィーチャはポリゴンである必要があります。
  • CONTAINS_CLEMENTINIこの空間リレーションシップは COMPLETELY_CONTAINS と同じ結果になりますが、例外が 1 つあります。選択しているフィーチャが完全に入力フィーチャの境界上にある場合(どの部分も境界の内部または外部にない場合)、そのフィーチャは選択されません。 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入力レイヤ内のフィーチャは、その中心が選択フィーチャに含まれる場合に選択対象になります。フィーチャの中心は、次のように計算されます。ポリゴンとマルチポイントの場合は、ジオメトリの重心を使用します。ライン入力の場合は、ジオメトリの中間点を使用します。
  • CONTAINED_BYWITHIN と同じ結果が返されます。CONTAINED_BY は、ArcGIS 9.3 よりも前のリリースで構築されたモデルおよびスクリプトとの下位互換性をサポートするために、維持されています。
String
select_features
(オプション)

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

Feature Layer
search_distance
(オプション)

このパラメータは、[リレーションシップ] パラメータが [WITHIN_A_DISTANCE]、[WITHIN_A_DISTANCE_3D]、[INTERSECT]、[INTERSECT_3D]、[HAVE_THEIR_CENTER_IN]、[CONTAINS]、または [WITHIN] のいずれかに設定されている場合のみ、有効になります。

Linear unit
selection_type
(オプション)

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

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

コードのサンプル

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

次の Python ウィンドウ スクリプトは、SelectLayerByLocation(空間検索)関数をイミディエイト モードで使用する方法を、例を挙げて示したものです。

import arcpy

# First, make a layer from the feature class
arcpy.MakeFeatureLayer_management("c:/kamsack.gdb/parcel", "parcel_lyr")

# Then add a selection to the layer based on location to features in another feature class 
arcpy.SelectLayerByLocation_management ("parcel_lyr", "have_their_center_in", "c:/kamsack.gdb/city_limits")
SelectLayerByLocation(空間検索)の例 2(スタンドアロン スクリプト)

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

# Name: ExtactFeaturesByLocationAndAttribute.py
# 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 which overlap the chihuahua polygon
arcpy.MakeFeatureLayer_management('cities', 'cities_lyr') 
arcpy.SelectLayerByLocation_management('cities_lyr', 'intersect', 'chihuahua')
 
# Within the previous selection sub-select cities which have population > 10,000
arcpy.SelectLayerByAttribute_management('cities_lyr', 
                                        'SUBSET_SELECTION', '"population" > 10000')

# If features matched criteria write them to a new feature class
matchcount = int(arcpy.GetCount_management('cities_lyr').getOutput(0)) 
if matchcount == 0:
    print('no features matched spatial and attribute criteria')
else:
    arcpy.CopyFeatures_management('cities_lyr', 'chihuahua_10000plus')
    print('{0} cities that matched criteria written to {0}'.format(
                                                  matchcount, chihuahua_10000plus))

環境

関連トピック

ライセンス情報

ArcGIS for Desktop Basic: ○
ArcGIS for Desktop Standard: ○
ArcGIS for Desktop Advanced: ○
7/28/2014