Краткая информация
Возвращает логическое выражение (Булево), указывающее, является ли количество исходных объектов ребра из заданного набора сетевых данных, которые пересекаются объектами в заданном векторном слое, меньшим или равным заданной предельной величине. Если число пересекающихся объектов меньше или равно допустимому лимиту, функция возвращает True. Если число пересекающихся объектов превышает допустимый лимит, функция возвращает False. Эта функция полезна для ограничения количества объектов, которые могут быть загружены как линейные или полигональные барьеры в слой сетевого анализа.
Описание
Данная функция используется для ограничения числа объектов, которые можно загрузить в подуровни, особенно линейные и полигональные препятствия слоев сетевого анализа. При загрузке полигональных барьеров программному обеспечению требуется найти точку пересечения между объектами полигона и граничными источниками из набора сетевых данных. Этот процесс может быть медленным, если объекты полигона пересекают много источников границ, например границы штатов или округов. Например, при создании службы геообработки, выполняющий анализ маршрутов, может потребоваться ограничение объектов, загружаемых в качестве барьеров полигонов. Для обеспечения разумного времени реагирования службы можно ограничить загрузку полигональных барьеров, если они пересекают более 5000 исходных граничных объектов из сетевого набора данных. Данная функция может использоваться для выполнения подобной проверки.
Синтаксис
CheckIntersectingFeatures (network_dataset_path, feature_layer, {cutoff})
Параметр | Объяснение | Тип данных |
network_dataset_path | Переменная, ссылающаяся на путь к каталогу набора сетевых данных. При проверке учитывается каждый граничный источник в наборе сетевых данных. Путь к каталогу набора сетевых данных можно получить, используя свойство dataSource слоя набора сетевых данных или объекта слоя анализа сетевых данных. Также его можно получить из свойства catalogPath объекта сетевого набора данных Describe. Для этого параметра также допустимо значение объекта слоя сетевого набора данных. | String |
feature_layer | Переменная, задающая путь к каталогу, набору объектов, объекту слоя или к имени слоя, содержащего объекты, которые вы хотите проверить на пересечения с ребрами сетевого набора данных. Любой набор выделения или запрос на определения в объекте Layer учитывается и может использоваться для указания поднабора объектов. | Layer |
cutoff | Целое значение, используемое для урезания при выполнении проверки. (Значение по умолчанию — 5000) | Long |
Значение отраженного сигнала
Тип данных | Объяснение |
Boolean | Если указанные объекты, пересекающиеся с граничными объектами источникам из сетевого набора данных, имеют значения, меньшие или равные значению обрезки, функция выводит результат True; в противном случае она выводит результат False. |
Пример кода
Пример CheckIntersectingFeatures (рабочий процесс)
В этом примере показано, как найти наилучший маршрут между несколькими магазинами с учетом погодных условий, замедляющих скорость движения. В нем показано использование функции CheckIntersectingFeatures для того, чтобы убедиться, что погодные полигоны, используемые в качестве барьеров полигонов, не пересекают более чем указанное число граничных объектов сетевого набора данных. Если условие не выполняется, сценарий выводит стандартное сообщение об ошибке.
import arcpy
#Set up the environment
arcpy.env.overwriteOutput = True
arcpy.CheckOutExtension("network")
#Set up variables
networkDataset = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
polygonBarriers = "C:/Data/WeatberSlowDownAreas.shp"
stops = "C:/Data/SanFrancisco.gdb/Analysis/Stores"
cutoff = 3000
impedanceAttribute = "TravelTime"
outputLayer = "C:/Data/WeatherRoute.lyr"
#Make a feature layer from the catalog path to the shapefile
barriersLayer = arcpy.management.MakeFeatureLayer(polygonBarriers,
"PolygonBarriersLayer").getOutput(0)
#Check if edge features intersected by barrier features are less than 3000
if arcpy.na.CheckIntersectingFeatures(networkDataset, barriersLayer, cutoff):
#Proceed with creating a new route layer and loading the barriers
routeLayer = arcpy.na.MakeRouteLayer(networkDataset, "WeatherRoute",
impedanceAttribute).getOutput(0)
#Get na class names based on the layer
naClasses = arcpy.na.GetNAClassNames(routeLayer, "INPUT")
#Create field mappings for loading barriers as scaled cost polygon barriers
#with a slow down of 40%
fieldMappings = arcpy.na.NAClassFieldMappings(routeLayer,
naClasses["PolygonBarriers"])
fieldMappings["BarrierType"].defaultValue = 1
fieldMappings["Attr_" + impedanceAttribute].defaultValue = 1.4
#Load weather polygons as slow down barriers
arcpy.na.AddLocations(routeLayer, naClasses["PolygonBarriers"],
polygonBarriers, fieldMappings)
#Load stops
arcpy.na.AddLocations(routeLayer, naClasses["Stops"], stops)
#Solve the route
arcpy.na.Solve(routeLayer)
#Save the solved layer as a layer file
arcpy.management.SaveToLayerFile(routeLayer, outputLayer)
else:
#Return a standard error message if the test fails.
arcpy.AddIDMessage("ERROR", 30095, "Polygon Barriers", cutoff)
arcpy.AddMessage("Completed")