Выбрать в слое по расположению (Управление данными)

Краткая информация

Выбирает объекты на основе пространственных отношений с объектами в другом наборе данных или в том же наборе данных.

Каждый объект Входных объектов оценивается с использованием объектов параметра Вспомогательные объекты выборки. Если подходит параметр Отношение, будет выбран входной объект.

Подробнее о Выборе по расположению, включая примеры изображения взаимосвязей

Использование

  • Если входные данные представлены классом пространственных объектов или путем к набору данных, этот инструмент будет автоматически создавать и возвращать новый слой с результатом примененного инструмента.

  • Система координат, в которой оцениваемое пространственное отношение может влиять на результат. Объекты, пересекающиеся в одной системе координат, могут пересекаться или не пересекаться в другой системе.

    • Данный инструмент оценивает пространственные отношения в системе координат источника данных Входных объектов. Выберите для параметра среды Выходная система координат значение Текущая карта [Слои], чтобы использовалась та же система координат, что и при текущем отображении.

  • Для выбора объектов на основе пространственных отношений с другими объектами в том же слое, см. примеры в статье Выбрать на основе пространственного отношения внутри слоя.

  • Число выбранных записей будет перечислено в истории геообработки. Щелкните Параметры > Количество. Дополнительно, инструмент Посчитать строки может использоваться для определения числа выбранных записей. В Python количество выбранных записей также можно получить из объекта Result инструмента.

  • Более подробно об использовании трехмерных пространственных отношений Пересечение 3D и В пределах расстояния 3D (INTERSECT_3D и WITHIN_A_DISTANCE_3D в Python) см. в разделе Выбор трехмерных отношений по расположению.

  • Для параметра Отношения опция Пересечение (СУБД) обеспечивает лучшую производительность, чем опция Пересечение при использовании данных многопользовательских баз геоданных; но оно поддерживается только при соблюдении некоторых условий. Если все условия соблюдены, пространственная операция будет выполнена в СУБД многопользовательской базы геоданных, а не в клиентском приложении. При использовании этого пространственного отношения необходимо учитывать следующее:

    • Чтобы операция была запущена в СУБД, должны быть соблюдены следующие требования:
      • Значения параметров Входные объекты и Вспомогательные объекты выборки относятся к одной и той же рабочей области многопользовательской базы геоданных, и должны иметь одинаковую пространственную привязку и тип хранения геометрии.
      • У пользовательского подключения к базе геоданных должны быть права доступа для создания представления в базе данных, в которой хранится класс объектов.
      • Поддерживаемые типы хранения геометрии для этого параметра: ST_GEOMETRY (IBM Db2, Oracle, PostgreSQL и SAP HANA), PostGIS (PostgreSQL), SDO_GEOMETRY (Oracle), и Geometry и Geography (Microsoft SQL Server). См. раздел Управление базой геоданных для получения информации об установке и настройке СУБД, а также информации о настройке выбранного вами типа хранения геометрии, чтобы он был доступен для использования. См. документацию СУБД для информации о типах хранения геометрии. Возможны ограничения хранения, которые будут влиять на производительность и масштабируемость выполняемых пространственных операций.
      • Если класс объектов в Oracle использует ST_GEOMETRY для хранения пространственных данных, вы должны настроить внешний протокол Oracle для доступа к ST_Geometry. Более подробную информацию см. в разделе Настройка extproc для доступа к ST_Geometry в Oracle.
      • Параметр Расстояние поиска не задан.
      • Параметр Тип выборки установлен на Новую выборку.
      • Существующая выборка перед запуском инструмента сделана с использованием определяющего запроса в слое а не выбранным поднабором.
    • Пространственная операция выполняется без применения допуска x,y в процессе обработки. Использование допуска x,y не поддерживается в СУБД. Вследствие этого результат выборки может немного отличаться от результата операции в клиентском приложении, где используется допуск x,y. См. Классы пространственных объектов. Основные понятия для дополнительной информации о том, как работает допуск x,y при выполнении операции на стороне клиента.

Параметры

ПодписьОписаниеТип данных
Входные объекты

Объекты, оценка которых будет производиться на основе значений параметра Вспомогательные объекты выборки. К этим объектам будет применяться выборка.

Feature Layer; Raster Layer; Mosaic Layer
Отношение
(Дополнительный)

Задает оцениваемое пространственное отношение.

  • ПересечениеОбъекты во входном слое будут выбраны, если они пересекаются со вспомогательным объектом выборки. Это значение по умолчанию
  • Пересечение 3DОбъекты во входном слое будут выбраны, если они пересекаются со вспомогательным объектом выборки в трехмерном пространстве (x, y и z).
  • Пересечение (СУБД)Объекты во входном слое будут выбраны, если они пересекаются со вспомогательным объектом выборки.Эта опция применяется только для многопользовательских баз геоданных. Выборка будет выполнена в СУБД многопользовательской базы геоданных, а не в клиентском приложении, если соблюдены все требования (см. советы по использованию инструмента).Эта опция может повысить производительность, в сравнении с выполнением выборки на стороне клиента.
  • В пределах расстоянияОбъекты во входном слое будут выбраны, если они находятся в пределах указанного расстояния (используется Евклидово расстояние) от выбирающего объекта. Используйте параметр Расстояние поиска для указания расстояния.
  • В пределах геодезического расстоянияОбъекты во входном слое будут выбраны, если они находятся в пределах указанного расстояния от вспомогательного объекта выборки. Расстояние между объектами будет вычислено геодезически, т.е. с учетом кривизны поверхности Земли и корректной обработкой данных, расположенных вокруг линий перемены дат и в приполярных областях. Используйте параметр Расстояние поиска для указания расстояния.
  • В пределах расстояния 3DОбъекты во входном слое будут выбраны, если они находятся в пределах указанного расстояния от вспомогательного объекта выборки в трехмерном пространстве. Используйте параметр Расстояние поиска для указания расстояния.
  • СодержитОбъекты во входном векторном слое будут выбраны, если содержат объект вспомогательного слоя выборки.
  • Полностью содержитОбъекты во входном векторном слое будут выбраны, если они полностью содержат объект вспомогательного слоя выборки.
  • Содержит по КлементиниЭто пространственное отношение дает те же результаты, что и опция Cодержит, за исключением ситуаций, когда вспомогательный объект выборки находится целиком на границе входного объекта (ни одна часть не находится внутри или за пределами); в этом случае объект не будет выбираться.Клементини определяет границу полигона, как линию, разделяющую внешнюю и внутреннюю области полигона, границу линии – как её конечную точку, а граница точки всегда является пустой.
  • ВнутриОбъекты во входном векторном слое будут выбраны, если они находятся внутри объектов вспомогательного слоя выборки.
  • Полностью в пределахОбъекты во входном векторном слое будут выбраны, если они находятся полностью внутри объектов вспомогательного слоя выборки.
  • Внутри по КлементиРезультат идентичен опции Внутри за исключением случаев, когда весь объект во входном векторном слое находится на границе объекта слоя выборки - тогда объект не выбирается.Клементини определяет границу полигона, как линию, разделяющую внешнюю и внутреннюю области полигона, границу линии – как её конечную точку, а граница точки всегда является пустой.
  • ИдентичныОбъекты во входном векторном слое будут выбраны, если они идентичны (геометрически) объектам вспомогательного слоя выборки.
  • Касаются границыОбъекты во входном слое будут выбраны, если их границы соприкасаются со вспомогательным объектом выборки. Если входные объекты являются линиями или полигонами, граница входного объекта может только касаться границы выделенного объекта, и ни одна часть входного объекта не может пересекать границу выделенного.
  • Имеют общий линейный сегмент сОбъекты во входном слое будут выбраны, если они имеют общий линейный сегмент со вспомогательным объектом выборки. Входные объекты и вспомогательные объекты выборки должны быть линией или полигоном.
  • Пересекается границейОбъекты во входном слое будут выбраны, если они пересекаются внешней линией вспомогательного объекта выборки. Входные и вспомогательные объекты выборки должны быть линиями или полигонами. Если полигоны используются для входных данных или выбранных слоев, будет использоваться граница (линия) полигона. Будут выбраны линии, которые пересекаются в точке, а не те, которые образуют общий линейный сегмент.
  • Имеют центр внутриОбъекты во входном слое будут выбраны, если их центр попадает в пределы вспомогательного объекта выборки. Центр объекта вычисляется следующим образом: для полигонального и мультиточечного объекта используется его геометрический центроид, а для линии используется ее геометрическая середина.
String
Вспомогательные объекты выборки
(Дополнительный)

Объекты во Входных объектах будут выбираться на основе их отношения к пространственным объектам из этого слоя или класса пространственных объектов.

Feature Layer
Расстояние поиска
(Дополнительный)

Расстояние, в пределах которого будет проводиться поиск. Этот параметр действителен, только если для параметра Отношение установлено одно из следующих значений: В пределах расстояния, В пределах геодезического расстояния, В пределах расстояния 3D, Пересекает, Пересекает в 3D, Имеют центр внутри или Содержит.

Если выбран параметр В пределах геодезического расстояния, следует применять линейные единицы измерения, например, километры или мили.

Linear Unit
Тип выборки
(Дополнительный)

Определяет, как выборка будет применяться к входным данным и как она будет комбинироваться с существующей выборкой. Этот инструмент не включает в себя опцию очистки существующей выборки; используйте инструмент Выбрать в слое по атрибуту с Типом выборки, установленном на опцию Очистить текущую выборку.

  • Новая выборкаРезультирующая выборка заменит любую существующую выборку. Это значение по умолчанию
  • Добавить к текущей выборкеРезультирующая выборка добавится к существующей выборке. Если выполненной ранее выборки нет, данная опция работает так же, как опция Новая выборка.
  • Удалить из текущей выборкиРезультирующая выборка удалится из существующей выборки. Если выборки нет, операция не будет иметь действия.
  • Выбрать поднабор из текущей выборки.Результирующая выборка будет комбинирована с существующей выборкой. Выбранными останутся только те записи, которые являются общими для обеих выборок.
  • Переключить текущую выборкуВыборка переключится. Все записи, которые были выбраны, удалятся из выборки, а все ранее невыбранные записи станут выбранными.При выборе этой опции игнорируются параметры Вспомогательные объекты выборки и Отношения.
String
Инвертировать пространственные отношения
(Дополнительный)

Определяет, будет ли использоваться выражение пространственного отношения или противоположное ему выражение. Например, этот параметр может использоваться для быстрого получения списка объектов, которые не пересекают либо не находятся в пределах данного расстояния от объектов другого набора данных.

  • Не отмечено – будет использован результат запроса. Это значение по умолчанию
  • Отмечено – результат запроса будет инвертирован. Если используется параметр Тип выборки, до того, как выборка будет объединена с существующими выборками, произойдет ее инвертирование.
Boolean

Производные выходные данные

ПодписьОписаниеТип данных
Слой с выборкой

Первые входные данные с примененной выборкой.

Feature Layer; Mosaic Layer
Имя выходного слоя

Многозначный параметр, содержащий все входные данные с применением выборки.

Используйте этот выходной параметр в модели для подключения к инструменту с возможностью добавления нескольких входных данных, такому как инструмент Слияние.

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Объекты во входном слое будут выбраны, если они пересекаются со вспомогательным объектом выборки в трехмерном пространстве (x, y и z).
  • INTERSECT_DBMSОбъекты во входном слое будут выбраны, если они пересекаются со вспомогательным объектом выборки.Эта опция применяется только для многопользовательских баз геоданных. Выборка будет выполнена в СУБД многопользовательской базы геоданных, а не в клиентском приложении, если соблюдены все требования (см. советы по использованию инструмента).Эта опция может повысить производительность, в сравнении с выполнением выборки на стороне клиента.
  • WITHIN_A_DISTANCEОбъекты во входном слое будут выбраны, если они находятся в пределах указанного расстояния (используется Евклидово расстояние) от выбирающего объекта. Используйте параметр search_distance для указания расстояния.
  • WITHIN_A_DISTANCE_3DОбъекты во входном слое будут выбраны, если они находятся в пределах указанного расстояния от вспомогательного объекта выборки в трехмерном пространстве. Используйте параметр search_distance для указания расстояния.
  • WITHIN_A_DISTANCE_GEODESICОбъекты во входном слое будут выбраны, если они находятся в пределах указанного расстояния от вспомогательного объекта выборки. Расстояние между объектами будет вычислено геодезически, т.е. с учетом кривизны поверхности Земли и корректной обработкой данных, расположенных вокруг линий перемены дат и в приполярных областях. Используйте параметр search_distance для указания расстояния.
  • CONTAINSОбъекты во входном векторном слое будут выбраны, если содержат объект вспомогательного слоя выборки.
  • COMPLETELY_CONTAINSОбъекты во входном векторном слое будут выбраны, если они полностью содержат объект вспомогательного слоя выборки.
  • CONTAINS_CLEMENTINIЭто пространственное отношение дает те же результаты, что и опция CONTAINS, за исключением ситуаций, когда вспомогательный объект выборки находится целиком на границе входного объекта (ни одна часть не находится внутри или за пределами); в этом случае объект не будет выбираться.Клементини определяет границу полигона, как линию, разделяющую внешнюю и внутреннюю области полигона, границу линии – как её конечную точку, а граница точки всегда является пустой.
  • WITHINОбъекты во входном векторном слое будут выбраны, если они находятся внутри объектов вспомогательного слоя выборки.
  • COMPLETELY_WITHINОбъекты во входном векторном слое будут выбраны, если они находятся полностью внутри объектов вспомогательного слоя выборки.
  • WITHIN_CLEMENTINIРезультат идентичен опции WITHIN за исключением случаев, когда весь объект во входном векторном слое находится на границе объекта слоя выборки - тогда объект не выбирается.Клементини определяет границу полигона, как линию, разделяющую внешнюю и внутреннюю области полигона, границу линии – как её конечную точку, а граница точки всегда является пустой.
  • 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_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
(Дополнительный)

Определяет, как выборка будет применяться к входным данным и как она будет комбинироваться с существующей выборкой. Этот инструмент не включает в себя опцию очистки существующей выборки; используйте инструмент Выбрать в слое по атрибуту с selection_type, установленном на опцию 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

Первые входные данные с примененной выборкой.

Feature Layer; Mosaic Layer
out_layers_or_views

Многозначный параметр, содержащий все входные данные с применением выборки.

Используйте этот выходной параметр в модели для подключения к инструменту с возможностью добавления нескольких входных данных, такому как инструмент Слияние.

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 (автономный скрипт)

Пример скрипта окна 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.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 (автономный скрипт)

Следующий автономный скрипт показывает различные варианты использования опций WITHIN_A_DISTANCE и WITHIN_A_DISTANCE_GEODESIC параметра overlap_type с параметром 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')