CheckIntersectingFeatures

描述

指示指定的网络数据集内与指定的要素图层中的要素相交的边源要素的数量是小于还是等于指定中断。如果相交要素的数量小于或等于允许限制,则函数将返回 True。如果相交要素的数量超过允许限制,则函数将返回 False。对于可作为线障碍或面障碍加载到网络分析图层中的要素,该函数有助于限制其数量。

讨论

该函数用于限制可加载到网络分析图层子图层中的要素(尤其是线障碍和面障碍)数量。加载面障碍时,软件需要确定面要素与网络数据集中边源的交点。如果面要素与很多边源(例如州或县边界)相交,此过程可能很慢。例如,当创建一个执行路径分析的地理处理服务时,您可能希望限制加载为面障碍的要素数。为了实现合理的服务响应时间,如果面障碍与超过 5,000 个来自网络数据集的边源要素相交,可以限制面障碍的加载。使用该函数可以轻松地执行此类检查。

语法

CheckIntersectingFeatures (network_dataset_path, feature_layer, {cutoff})
参数说明数据类型
network_dataset_path

输入网络数据集,引用为目录路径、网络数据集图层对象或图层名称。执行检查时,将覆盖该网络数据集中的每个边源。

String
feature_layer

此变量可用于引用目录路径、要素集、图层对象或图层名称,其中包含要测试的与网络数据集边相交的要素。支持 Layer 对象上存在的所有选择集或定义查询,且仅可用于指定要素的某个子集。

Layer
cutoff

执行检查时,将使用整数值作为中断。

(默认值为 5000)

Long
返回值
数据类型说明
Boolean

如果指定与网络数据集中的边源要素相交的要素数小于或等于中断值,则该函数返回 True;否则返回 False

代码示例

CheckIntersectingFeatures 示例(工作流)

该示例显示了在考虑将天气条件作为减速障碍的情况下,如何找到一些商店位置之间的最佳路径。它说明了如何使用 CheckIntersectingFeatures 函数检测要用做面障碍的天气面是否与超过指定数量的来自网络数据集的边源要素相交。如果条件不符,脚本将生成标准错误消息。

import arcpy
from arcpy import env
import os

#Check out the Network Analyst extension license
arcpy.CheckOutExtension("network")

#Set environment settings
output_dir = "C:/Data"
#The NA layer's data will be saved to the workspace specified here
env.workspace = os.path.join(output_dir, "Output.gdb")
env.overwriteOutput = True

#Set up variables
network = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
polygon_barriers = "C:/Data/SanFrancisco.gdb/Analysis/WeatherSlowDownAreas"
stops = "C:/Data/SanFrancisco.gdb/Analysis/Stores"
cutoff = 3000

#Make a feature layer from the catalog path to the shapefile
barriers_layer = arcpy.management.MakeFeatureLayer(polygon_barriers,
                                        "PolygonBarriersLayer").getOutput(0)

#Check if fewer than 3000 edge features are intersected by barrier features
if arcpy.na.CheckIntersectingFeatures(network, barriers_layer, cutoff):
    
    #Proceed with creating a new route layer and loading the barriers
    route_layer = arcpy.na.MakeRouteAnalysisLayer(network, "WeatherRoute",
                                         "Driving Time").getOutput(0)
                                         
    #Get na class names based on the layer
    naClasses = arcpy.na.GetNAClassNames(route_layer, "INPUT")
    
    #Create field mappings for loading barriers as scaled cost polygon barriers
    #with a slow down of 40%
    fieldMappings = arcpy.na.NAClassFieldMappings(route_layer,
                                                  naClasses["PolygonBarriers"])
    fieldMappings["BarrierType"].defaultValue = 1
    #Figure out the layer's impedance attribute
    solver_props = arcpy.na.GetSolverProperties(route_layer)
    impedance = solver_props.impedance
    fieldMappings["Attr_" + impedance].defaultValue = 1.4
    #Load weather polygons as slow down barriers
    arcpy.na.AddLocations(route_layer, naClasses["PolygonBarriers"],
                          polygonBarriers, fieldMappings)
                          
    #Load stops
    arcpy.na.AddLocations(route_layer, naClasses["Stops"], stops)
    
    #Solve the route
    arcpy.na.Solve(route_layer)

else:
    #Return a standard error message if the test fails.
    arcpy.AddIDMessage("ERROR", 30095, "Polygon Barriers", cutoff)

arcpy.AddMessage("Completed")