Сводка
Выбирает объекты на основе пространственных отношений с объектами в другом наборе данных.
Каждый объект Входных объектов оценивается относительно объектов параметра Вспомогательные объекты выборки. Если подходит параметр Отношение, будет выбран входной объект.
Подробнее о Выборе по расположению, включая примеры изображения взаимосвязей
Использование
Если входные данные представлены классом пространственных объектов или путем к набору данных, этот инструмент будет автоматически создавать и возвращать новый слой с результатом примененного инструмента.
Система координат, в которой оцениваемое пространственное отношение может влиять на результат. Объекты, пересекающиеся в одной системе координат, могут пересекаться или не пересекаться в другой системе.
- Данный инструмент оценивает пространственные отношения в системе координат источника данных Входных объектов. Выберите для параметра среды Выходная система координат значение Текущая карта [Слои], чтобы использовалась та же система координат, что и при текущем отображении.
Этот инструмент может использоваться для выбора пространственных объектов на основе их пространственных отношений к другим объектам в том же слое. Примеры содержатся в разделе Выбрать на основе пространственного отношения в слое.
Число выбранных записей будет указано в истории геообработки в разделе Параметры > Количество. Дополнительно, инструмент Посчитать строки может использоваться для определения числа выбранных записей. В Python количество выбранных записей также можно получить из объекта инструмента Result.
Более подробно об использовании трехмерных пространственных отношений инструментами Пересечение 3D и В пределах расстояния 3D (INTERSECT_3D и WITHIN_A_DISTANCE_3D в Python) см. в разделе Выбор трехмерных отношений по расположению.
Пространственное отношение Пересечение (СУБД) (INTERSECT_DBMS в Python) обеспечивает лучшую производительность, чем отношение Пересечение (INTERSECT в Python) при использовании данных многопользовательских баз геоданных; но оно поддерживается только при соблюдении некоторых условий. Если все условия соблюдены, пространственная операция будет выполнена в СУБД многопользовательской базы геоданных, а не в клиентском приложении. При использовании этого пространственного отношения необходимо учитывать следующее:
- Чтобы операция была запущена в СУБД, должны быть соблюдены следующие требования:
- Значения параметров Входные объекты и Выбор объектов относятся к одной и той же рабочей области многопользовательской базы геоданных, и должны иметь одинаковую пространственную привязку и тип хранения геометрии.
- Используемой СУБД является 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). См. раздел Управление базой геоданных для получения информации об установке и настройке СУБД, а также информации о настройке выбранного вами типа хранения геометрии, чтобы он был доступен для использования.
- Если вы работаете с Oracle ST_GEOMETRY, вы должны настроить внешний протокол Oracle для доступа к ST_Geometry. Более подробную информацию см. в разделе Настройка extproc для доступа к ST_Geometry в Oracle.
- Параметр Расстояние поиска не задан.
- Параметр Тип выборки установлен на Новую выборку.
- Существующая выборка перед запуском инструмента сделана с использованием определяющего запроса в слое а не выбранным поднабором.
- Пространственная операция выполняется без применения допуска x,y в процессе обработки. Использование допуска x,y не поддерживается в СУБД. Вследствие этого результат выборки может немного отличаться от результата операции в клиентском приложении, где используется допуск x,y. См. Классы пространственных объектов. Основные понятия для дополнительной информации о том, как работает допуск x,y при выполнении операции на стороне клиента.
- Поддерживаются многопользовательские базы геоданных в Db2, Oracle, PostgreSQL, SAP HANA и SQL Server. Для каждой имеется собственный тип хранения геометрии, поддерживающий эти отношения. См. документацию СУБД для информации о типах хранения геометрии. Возможны ограничения хранения, которые будут влиять на производительность и масштабируемость выполняемых пространственных операций.
- Чтобы операция была запущена в СУБД, должны быть соблюдены следующие требования:
Синтаксис
arcpy.management.SelectLayerByLocation(in_layer, {overlap_type}, {select_features}, {search_distance}, {selection_type}, {invert_spatial_relationship})
Parameter | Объяснение | Тип данных |
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, or CONTAINS. Если используется опция WITHIN_A_DISTANCE_GEODESIC, необходимо выбирать линейные единицы измерения, например, километры или мили. | Linear Unit |
selection_type (Дополнительный) | Определяет, как выборка будет применяться к входным данным и как она будет комбинироваться с существующей выборкой. Этот инструмент не включает в себя опцию очистки существующей выборки; используйте опцию CLEAR_SELECTION в инструменте Выбрать в слое по атрибуту.
| String |
invert_spatial_relationship (Дополнительный) | Определяет, будет ли использоваться выражение пространственного отношения или противоположное ему выражение. Например, этот параметр может использоваться для быстрого получения списка объектов, которые не пересекают либо не находятся в пределах данного расстояния от объектов другого набора данных.
| Boolean |
Производные выходные данные
Name | Объяснение | Тип данных |
out_layer_or_view | Обновленный входной слой с применением выборки. | Векторный слой; слой мозаики |
out_layers_or_views | Имена обновленных входных слоев | Векторный слой; слой мозаики |
count | Число выбранных записей. | Long |
Пример кода
Пример скрипта окна Python для использования функции SelectLayerByLocation в режиме прямого запуска.
import arcpy
arcpy.SelectLayerByLocation_management("parcel_lyr", "have_their_center_in",
"c:/kamsack.gdb/city_limits")
Пример скрипта окна Python для выполнения функции 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"
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')
Environments
Информация о лицензиях
- Basic: Да
- Standard: Да
- Advanced: Да