概要
別のデータセットのフィーチャに対する空間リレーションシップに基づいて、フィーチャを選択します。
[入力フィーチャ] パラメーターの各フィーチャは、[選択フィーチャ] パラメーターのフィーチャに対して評価され、指定した [リレーションシップ] パラメーターを満たすと、その入力フィーチャが選択されます。
使用法
入力がフィーチャクラスまたはデータセット パスの場合、このツールは、ツールの結果が適用された新しいレイヤーを自動的に作成して返します。
空間リレーションシップを評価する際の座標系は、結果に影響を与えます。ある座標系で交差するフィーチャが、別の座標系では交差しない場合があります。
- このツールは、空間リレーションシップを [入力フィーチャ] のデータ ソースの座標系で評価します。出力座標系の環境を [現在のマップ (レイヤー)] に設定して、現在の表示と同じ座標系を使用します。
このツールを使って、同じレイヤー内の他のフィーチャへの空間リレーションシップに基づいて、フィーチャを選択することができます。例については、「レイヤー内での空間検索」をご参照ください。
選択したレコードの数は、[ジオプロセシング履歴] で、[パラメーター] > [個数] の下にリストされます。さらに、[行のカウント (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 Db2、Oracle、PostgreSQL、SAP HANA、または Microsoft SQL Server である。
- [入力フィーチャ] と [選択フィーチャ] は、同じジオメトリ格納タイプの必要があります。
- このオプションでサポートされているジオメトリ格納タイプは、ST_GEOMETRY (Db2、Oracle、PostgreSQL、SAP 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 許容値が適用される方法の詳細については、「フィーチャクラスの基礎」をご参照ください。
- Db2、Oracle、PostgreSQL、SAP HANA、SQL Server のエンタープライズ ジオデータベースがサポートされています。それぞれ、このリレーションシップでサポートされている独自のジオメトリ格納タイプを持ちます。各ジオメトリ格納タイプの注意事項については、DBMS 専用のベンダー ドキュメントをご参照ください。空間処理を実行する際、パフォーマンスとスケーラビリティに影響するストレージに関する制限がある場合があります。
- DBMS 内で処理を実行するには、次の要件が必要です。
構文
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 (オプション) | 評価される空間リレーションシップ。
| String |
select_features (オプション) | [入力フィーチャ] パラメーターのフィーチャは、このレイヤーまたはフィーチャクラスのフィーチャとの関係に基づき、選択対象となります。 | Feature Layer |
search_distance (オプション) | 検索の対象となる指定の距離。このパラメーターは、overlap_type パラメーターを次のいずれかに設定した場合のみ有効です。WITHIN_A_DISTANCE、WITHIN_A_DISTANCE_GEODESIC、WITHIN_A_DISTANCE_3D、INTERSECT、INTERSECT_3D、HAVE_THEIR_CENTER_IN、CONTAINS。 WITHIN_A_DISTANCE_GEODESIC オプションを選択した場合、キロメートルやマイルなどの距離単位を使用します。 | Linear Unit |
selection_type (オプション) | 選択をどのように入力に適用するか、および既存の選択とどのように統合するかを指定します。このツールには、既存の選択を消去するオプションは含まれません。[属性検索 (Select Layer By Attribute)] ツールの CLEAR_SELECTION オプションを使用します。
| String |
invert_spatial_relationship (オプション) | 空間リレーションシップの評価結果を反転するか、そのまま使用するかを指定します。たとえば、このパラメーターを使用すると、交差していないフィーチャまたは別のデータセット内のフィーチャから一定距離内にはないフィーチャのリストをすばやく取得することができます。
| Boolean |
派生した出力
名前 | 説明 | データ タイプ |
out_layer_or_view | 選択が適用された状態の更新された入力。 | フィーチャ レイヤー、モザイク レイヤー |
out_layers_or_views | 更新された入力の名前。 | フィーチャ レイヤー、モザイク レイヤー |
count | 選択したレコードの数。 | Long |
コードのサンプル
次の Python ウィンドウ スクリプトは、イミディエイト モードで SelectLayerByLocation 関数を使用する方法を示しています。
import arcpy
# 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 関数を使用する方法を示したものです。
# 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))
次のスタンドアロン スクリプトは、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"
# Parameter order : in_layer, overlap_type, select_features, search_distance
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, then the
# distance 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,
# then the distance value assumed to be in meters
arcpy.SelectLayerByLocation_management('cities', 'WITHIN_A_DISTANCE_GEODESIC',
'chihuahua', '200')
環境
ライセンス情報
- Basic: はい
- Standard: はい
- Advanced: はい