Skip To Content

Выбрать в слое по расположению

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

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

Каждый объект в параметре Входные объекты сравнивается с объектами из параметра Выбирающие объекты; если параметр Отношение совпадает, входной объект выбирается.

Графические примеры отношений

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

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

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

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

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

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

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

Синтаксис

SelectLayerByLocation_management (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).
  • WITHIN_A_DISTANCEОбъекты во входном слое будут выбраны, если они находятся в пределах указанного расстояния (используется Евклидово расстояние) от выбирающего объекта. Используйте параметр search_distance для указания расстояния.
  • WITHIN_A_DISTANCE_3DОбъекты во входном слое будут выбраны, если они находятся в пределах указанного расстояния от вспомогательного объекта выборки в трехмерном пространстве. Используйте параметр search_distance для указания расстояния.
  • WITHIN_A_DISTANCE_GEODESICОбъекты во входном слое будут выбраны, если они находятся в пределах указанного расстояния от вспомогательного объекта выборки. Расстояние между объектами будет рассчитываться по геодезической формуле, которая учитывает кривизну сфероида и корректно рассматривает данные около и на линии перемены дат, а также на полюсах. Используйте параметр search_distance для указания расстояния.
  • CONTAINSОбъекты во входном слое будут выбраны, если они содержат вспомогательный объект выборки.
  • COMPLETELY_CONTAINSОбъекты во входном слое будут выбраны, если они полностью содержат вспомогательный объект выборки.
  • CONTAINS_CLEMENTINIЭто пространственное отношение дает те же результаты, что и COMPLETELY_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_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
(Дополнительный)

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

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

Векторный слой; слой мозаики
out_layers_or_views

Имена обновленных входных слоев

Векторный слой; слой мозаики
count

Число выбранных записей.

Long

Пример кода

SelectLayerByLocation, пример 1 (окно Python)

Пример скрипта окна 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, пример 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.SelectLayerByLocation_management('cities', 'INTERSECT', 
                                                          'chihuahua')
# Within the previous selection, subselect 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))

Информация о лицензиях

  • Basic: Да
  • Standard: Да
  • Advanced: Да

Связанные разделы