CheckIntersectingFeatures (arcpy.na)

Резюме

Возвращает логическое выражение (Булево), указывающее, является ли количество исходных объектов ребра из заданного набора сетевых данных, которые пересекаются объектами в заданном векторном слое, меньшим или равным заданной предельной величине. Эта функция полезна для ограничения количества объектов, которые могут быть загружены как линейные или полигональные барьеры в слой сетевого анализа.

Обсуждение

Данная функция используется для ограничения числа объектов, которые можно загрузить в подуровни, особенно линейные и полигональные препятствия слоев сетевого анализа. При загрузке полигональных барьеров программному обеспечению требуется найти точку пересечения между объектами полигона и граничными источниками из набора сетевых данных. Этот процесс может быть медленным, если объекты полигона пересекают много источников границ, например границы штатов или округов. Например, при создании службы геообработки, выполняющий анализ маршрутов, может потребоваться ограничение объектов, загружаемых в качестве барьеров полигонов. Для обеспечения разумного времени реагирования службы можно ограничить загрузку полигональных барьеров, если они пересекают более 5000 исходных граничных объектов из сетевого набора данных. Данная функция может использоваться для выполнения подобной проверки.

Синтаксис

CheckIntersectingFeatures (network_dataset_path, feature_layer, {cutoff})
ПараметрОбъяснениеТип данных
network_dataset_path

Переменная, ссылающаяся на путь к каталогу набора сетевых данных. При проверке учитывается каждый граничный источник в наборе сетевых данных. Путь к каталогу набора сетевых данных можно получить, используя свойство dataSource слоя набора сетевых данных или объекта слоя анализа сетевых данных. Также его можно получить, используя свойство catalogPath сетевого набора данных "Описать объект".

String
feature_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")
9/11/2013