ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • 帮助
  • Sign Out
ArcGIS Desktop

ArcGIS Online

专为贵组织打造的制图平台

ArcGIS Desktop

全面的专业性 GIS

ArcGIS Enterprise

面向企业的 GIS

ArcGIS for Developers

用于构建位置感知应用程序的工具

ArcGIS Solutions

适用于行业的免费模板地图和应用程序

ArcGIS Marketplace

获取适用于组织的应用程序和数据

  • 文档
  • 支持
Esri
  • 登录
user
  • 我的个人资料
  • 登出

ArcMap

  • 主页
  • 入门
  • 地图
  • 分析
  • 管理数据
  • 工具
  • 扩展模块

RouteSolverProperties

  • 摘要
  • 讨论
  • 属性
  • 方法概述
  • 方法
  • 代码示例

摘要

用于访问路径网络分析图层的分析属性。GetSolverProperties 函数用于从路径网络分析图层中获取 RouteSolverProperties 对象。

讨论

RouteSolverProperties 对象提供对路径网络分析图层中所有分析属性的读取和写入权限。该对象可用于修改路径分析图层的分析属性,并且相应的图层可重新求解以确定适合的结果。使用创建路径分析图层地理处理工具可创建新的路径分析图层。通过从新的路径分析图层获取 RouteSolverProperties 对象,可重新对现有图层进行后续分析,而无需每次分析都创建一个新图层,以节省时间。

修改 RouteSolverProperties 对象的属性后,可立即使用其他函数和地理处理工具分析相应图层。无需刷新或更新图层,通过上述对象进行的修改便可生效。

属性

属性说明数据类型
accumulators
(可读写)

用于获取或设置累积为分析一部分的网络成本属性的列表。空列表 [] 表示没有累积成本属性。

String
attributeParameters
(可读写)

用于获取或设置将在分析中使用的参数化属性。该属性返回一个 Python 字典。该字典关键字是由属性名称和参数名称这两个值组成的元组。字典中每个项目的值均为参数值。

参数化的网络属性用于对属性值的某个动态方面进行建模。例如,可使用某个参数对高度限制为 12 英尺的隧道进行建模。在这种情况下,应将以英尺为单位的车辆高度指定为参数值。如果车辆高度超过 12 英尺,此限制条件将评估为 True,从而限制车辆穿越隧道。类似的,桥梁还可以具有一个用来指定重量限制的参数。

尝试修改 attributeParameters 属性不会导致值更新。相反,您应始终使用新的字典对象来设置属性值。以下两个代码块将演示这两种方法的差异。

请勿尝试修改 attributeParameters 属性,这种编码方法不起作用。

solverProps.attributeParameters[('HeightRestriction', 'RestrictionUsage')] = "PROHIBITED"

使用新的字典对象修改 attributeParameters 属性。

params = solverProps.attributeParameters params[('HeightRestriction', 'RestrictionUsage')] = "PROHIBITED"
solverProps.attributeParameters = params
如果网络分析图层没有参数化属性,则该属性将返回 None。

Dictionary
findBestSequence
(可读写)

控制是否重新排序停靠点以查找最优路径。以下是可能值列表:

  • FIND_BEST_ORDER —将重新排序停靠点以查找最佳路径。此选项将路径分析由最短路径问题变为流动推销员问题 (TSP)。值 True 也可用于指定此选项。
  • USE_INPUT_ORDER —将按照输入顺序访问停靠点。值 False 也可用于指定此选项。
String
impedance
(可读写)

用于获取或设置用作阻抗的网络成本属性。当确定最佳路径时,该成本属性最小化。

String
orderingType
(可读写)

控制当 findBestSequence 属性设置为 FIND_BEST_ORDER 时的停靠点顺序。以下是可能值列表:

  • PRESERVE_BOTH —按输入顺序保留第一个和最后一个停靠点作为路径中相应的第一个和最后一个停靠点。
  • PRESERVE_FIRST —按输入顺序保留第一个停靠点作为路径中相应的第一个停靠点,而最后一个停靠点可以被重新排序。
  • PRESERVE_LAST —按输入顺序保留最后一个停靠点作为路径中相应的最后一个停靠点,而第一个停靠点可以被重新排序。
  • PRESERVE_NONE —第一个和最后一个停靠点都可以被重新排序。
String
outputPathShape
(可读写)

用于获取或设置求解程序输出的路径要素的形状类型。以下是可能值列表:

  • TRUE_LINES_WITH_MEASURES —输出路径将具有基础网络源的精确形状。而且,输出还包括线性参考的路径测量值。测量值从第一个停靠点增加并将记录到达指定位置的累积阻抗。
  • TRUE_LINES_WITHOUT_MEASURES —输出路径将具有基础网络源的精确形状。
  • STRAIGHT_LINES —输出路径形状为两个停靠点之间的一条直线。
  • NO_LINES —将不会为输出路径生成任何形状。
String
restrictions
(可读写)

用于获取或设置适用于分析的约束属性的列表。空列表 [] 表示没有约束属性用于分析。

String
solverName
(只读)

返回被用于获取求解程序属性对象的网络分析图层所引用的求解程序的名称。从 Route Solver 对象访问时,该属性始终返回字符串值 RouteSolverProperties。

String
streetDirectionsProperties
(可读写)

为 StreetDirectionsProperties 提供读写访问,使您可自定义路径图层的方向输出。

Object
timeOfDay
(可读写)

用于获取或设置此路径的开始日期和时间。路径开始时间通常用于查找阻抗属性随当日时间变化的路径。例如,开始时间 9 a.m. 可用于查找被认为是高峰时段流量的路径。可以用值 None 指定不应使用任何日期和时间。

可使用以下日期来指定一周中的每一天,而无需使用特定的日期:

  • 今天 - 12/30/1899
  • 星期日 - 12/31/1899
  • 星期一 - 1/1/1900
  • 星期二 - 1/2/1900
  • 星期三 - 1/3/1900
  • 星期四 - 1/4/1900
  • 星期五 - 1/5/1900
  • 星期六 - 1/6/1900

例如,要指定路径从星期二 5:00 p.m. 开始,则请将值指定为 datetime.datetime(1900, 1, 2, 17,0,0)。

timeZoneUsage 参数指定该日期和时间是 UTC 还是首个停靠点所在时区。

DateTime
timeZoneUsage
(可读写)

指定 timeOfDay 参数的时区。

  • GEO_LOCAL —timeOfDay 参数采用首个停靠点所在的时区。
  • UTC —timeOfDay 参数采用协调世界时间 (UTC)。如果您想要在指定时间内(如现在)求解分析问题,但不确定设施点或请求点所在的时区,请选择此选项。

当求解一个跨多个时区的路径分析并设置起始时间时,orderingType 不可设置为 PRESERVE_NONE。起始位置和时区必须固定。

String
timeZoneUsageForTimeFields
(可读写)

指定输入数据中日期时间字段的时区,例如用于时间窗的字段。

  • GEO_LOCAL —停靠点时间窗的日期和时间采用停靠点所在时区。
  • UTC —停靠点时间窗的日期和时间采用协调世界时间 (UTC)。
String
uTurns
(可读写)

用于获取或设置策略,该策略指示交汇点处的 U 形转弯在求解程序处理停靠点之间的遍历期间可如何出现。以下是可能值列表:

  • ALLOW_UTURNS —无论在交汇点处有几条连接的边,均允许 U 形转弯。
  • NO_UTURNS —在所有交汇点处均禁止 U 形转弯,不管交汇点原子价如何。不过请注意,即使已选择该设置,在网络位置仍允许 U 形转弯;但是也可以通过设置个别网络位置的 CurbApproach 属性来禁止 U 形转弯。
  • ALLOW_DEAD_ENDS_ONLY —除仅有一条相邻边的交汇点(死角)外,其他交汇点均禁止 U 形转弯。
  • ALLOW_DEAD_ENDS_AND_INTERSECTIONS_ONLY —在恰好有两条相邻边相遇的交汇点处禁止 U 形转弯,但是交叉点(三条或三条以上相邻边的交汇点)和死角(仅有一条相邻边的交汇点)处允许。通常,网络在路段中间有多余的交汇点。此选项可防止车辆在这些位置出现 U 形转弯。
String
useHierarchy
(可读写)

当执行分析时控制等级属性的使用。以下是可能值列表:

  • USE_HIERARCHY — 使用等级属性进行分析。使用等级的结果是,求解程序更偏好高等级的边而不是低等级的边。分等级求解的速度更快,并且可用于模拟驾驶员在可能的情况下选择在高速公路而非地方道路上行驶(即使行程可能更远)的偏好。仅当 Network Analyst 图层引用的网络数据集具有等级属性时,此选项才适用。值 True 也可用于指定此选项。
  • NO_HIERARCHY —不使用等级属性进行分析。如果不使用等级属性,则会为网络数据集生成精确的路径。值 False 也可用于指定此选项。
String
useTimeWindows
(可读写)

控制是否在停靠点处使用时间窗。以下是可能值列表:

  • USE_TIMEWINDOWS —路径将在停靠点处使用时间窗。如果在时间窗之前到达停靠点,则在时间窗打开前将会有一段等待时间。如果在时间窗之后到达停靠点,将会出现时间窗冲突。当计算路径时,最小阻抗抵消了总的时间窗冲突。仅当指定为 impedance 属性值的网络成本属性使用时间单位时,此选项才适用。值 True 也可用于指定此选项。
  • NO_TIMEWINDOWS —路径将在停靠点处忽略时间窗。值 False 也可用于指定此选项。
注:

该属性已被维护以实现向后兼容性,但在 ArcGIS Pro 中被忽略。如果时间窗口被填充,ArcGIS Pro 中的路径图层将始终使用时间窗口

String

方法概述

方法说明
applyTravelMode (travel_mode)

根据出行模式对象更新网络分析图层的分析属性。随后可对更新的网络分析图层进行求解以完成分析。

方法

applyTravelMode (travel_mode)
参数说明数据类型
travel_mode

该变量引用一个源自网络数据集的出行模式对象。可通过调用 arcpy.na.GetTravelModes 函数获得出行模式对象的列表。

Object

创建网络分析图层后,将为其分配所有分析属性的默认值。可使用从网络分析图层获得的求解程序属性对象更新各个分析属性。出行模式存储了一组预定义的分析设置,用于帮助执行特定分析,例如,步行时间出行模式存储了执行基于时间的步行分析所需的分析设置。

使用 applyTravelMode 方法,可一次性应用在一个出行模式中定义的所有分析设置。在分析属性完成更新后,可对网络分析图层进行求解以完成分析。

如果在更新求解程序属性时出错,例如,当提供的出行模式所引用的属性在当前网络数据集中不存在,或不再适用于创建求解程序属性对象的相应网络分析图层所使用的网络数据集时,不会产生任何异常。此方法将成功执行,但当您尝试求解此类网络分析图层时会出现错误。

如果 travel_mode 参数不引用出行模式对象或字符串,则将产生 TypeError 异常。如果 travel_mode 参数引用字符串并且该字符串无法在内部转换成出行模式对象的有效字符串表示,将产生 ValueError 异常。

代码示例

RouteSolverProperties 示例 1(Python 窗口)

此脚本显示如何将阻抗属性更新为“旅行时间”成本属性、指定“分钟”和“米”成本属性作为累积属性以及使用当前时间作为路径的开始时间。它假设已经在新地图文档中根据旧金山地区的教程网络数据集创建名为 Route 的路径网络分析图层。

#Get the route layer object from a layer named "Route" in the table of contents
routeLayer = arcpy.mapping.Layer("Route")

#Get the route solver properties object from the route layer
solverProps = arcpy.na.GetSolverProperties(routeLayer)

#Update the properties for the route layer using the route solver properties object
solverProps.impedance = "TravelTime"
solverProps.accumulators = ["Meters", "Minutes"]
#Only set the time component from the current date time as time of day
solverProps.timeOfDay = datetime.datetime.now().time()
RouteSolverProperties 示例 2(工作流)

此脚本显示如何找出一组停靠点间的最短路径(距离)和最快路径(旅行时间)并在地理数据库中将每个路径另存为要素类。它说明如何只创建一个路径图层实例并使用 RouteSolverProperties 对象将阻抗属性改为所需结果。

import arcpy

#Set up the environment
arcpy.env.overwriteOutput = True
arcpy.CheckOutExtension("network")

#Set up variables
networkDataset = "C:/Data/SanFrancisco.gdb/Transportation/Streets_ND"
stops = "C:/Data/SanFrancisco.gdb/Analysis/Stores"
fastestRoute = "C:/Data/SanFrancisco.gdb/FastestRoute"
shortestRoute = "C:/Data/SanFrancisco.gdb/ShortestRoute"

#Make a new route layer using travel time as impedance to determine fastest route
routeLayer = arcpy.na.MakeRouteLayer(networkDataset, "StoresRoute",
                                     "TravelTime").getOutput(0)

#Get the network analysis class names from the route layer
naClasses = arcpy.na.GetNAClassNames(routeLayer)

#Get the routes sublayer from the route layer
routesSublayer = arcpy.mapping.ListLayers(routeLayer, naClasses["Routes"])[0]

#Load stops
arcpy.na.AddLocations(routeLayer, naClasses["Stops"], stops)

#Solve the route layer
arcpy.na.Solve(routeLayer)

#Copy the route as a feature class
arcpy.management.CopyFeatures(routesSublayer, fastestRoute)

#Get the RouteSolverProperties object from the route layer to modify the
#impedance property of the route layer.
solverProps = arcpy.na.GetSolverProperties(routeLayer)

#Set the impedance property to "Meters" to determine the shortest route.
solverProps.impedance = "Meters"

#Resolve the route layer
arcpy.na.Solve(routeLayer)

#Copy the route as a feature class
arcpy.management.CopyFeatures(routesSublayer, shortestRoute)

arcpy.AddMessage("Completed")
ApplyTravelMode 示例 3(工作流)

此脚本显示基于“货运时间”出行模式查找路径的方法。

#Import modules
import os
import arcpy

#Define variables
workspace = "C:/data/SanDiego.gdb"
output_folder = "C:/data/output"
nds = os.path.join(workspace, "Transportation", "Streets_ND")
stops = os.path.join(workspace, "TruckStops")
analysis_layer_name = "TruckRoute"

#Set environment variables
arcpy.env.overwriteOutput = True

#Check out the network analyst extension
arcpy.CheckOutExtension("network")

#Create a new closest facility analysis layer
make_layer_result = arcpy.na.MakeRouteLayer(nds, analysis_layer_name, "TravelTime")
analysis_layer = make_layer_result.getOutput(0)

#Add stops to the analysis layer using default field mappings         
sub_layer_names = arcpy.na.GetNAClassNames(analysis_layer)
stops_layer_name = sub_layer_names["Stops"]
arcpy.na.AddLocations(analysis_layer, stops_layer_name, stops, "#", "#")

#Get the Trucking Time travel mode from the network dataset
travel_modes = arcpy.na.GetTravelModes(nds)
trucking_mode = travel_modes["Trucking Time"]

#Apply the travel mode to the analysis layer
solver_properties = arcpy.na.GetSolverProperties(analysis_layer)
solver_properties.applyTravelMode(trucking_mode)

#Solve the analysis layer and save the result as a layer file          
arcpy.na.Solve(analysis_layer)

output_layer = os.path.join(output_folder, analysis_layer_name + ".lyr")
arcpy.management.SaveToLayerFile(analysis_layer, output_layer, "RELATIVE")

arcpy.AddMessage("Completed")

相关主题

  • 路径分析

ArcGIS Desktop

  • 主页
  • 文档
  • 支持

ArcGIS 平台

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

关于 Esri

  • 关于我们
  • 招贤纳士
  • Esri 博客
  • 用户大会
  • 开发者峰会
Esri
分享您的想法。
Copyright © 2019 Esri. | 隐私政策 | 法律声明