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

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

求解车辆配送 (VRP) 的输出

  • Routes 要素类
  • Directions 要素类
  • 停靠点表
  • UnassignedStops 表

求解车辆配送 (VRP) 地理处理工具生成以下表和要素类作为输出:停靠点、未分配停靠点、路径和方向。下面各小节描述了输出表和要素类及其对应字段属性。

Routes 要素类

路径线要素类表示车辆配送中的司机、车辆及车辆路径。此输出要素类的默认名称为 Routes,但是可以在求解之前通过更改输出路径名称参数(Python 中的 output_routes_name)更改其名称。

ArcGIS 分配的坐标系与基础网络数据集用于 Routes 要素类的坐标系相同。这可以通过为输出坐标系地理处理环境指定一个数值来控制。

下面列出并描述了 Routes 要素类的字段名称。

字段名说明

ObjectID

系统管理的 ID 字段。

Name

路径的名称。

形状

指示路径形状的几何字段。

使用填充路径线参数(Python 中的 populate_route_lines)可选择是否填充此字段。

执行求解车辆配送 (VRP) 期间,总是用数据创建和填充 Routes 要素类。不过,填充路径线参数(Python 中的 populate_route_lines)允许您选择是否为线要素生成和保存 Shape 字段值。不填充 Shape 字段值能够更快进行求解运算并减小服务器与客户端之间的数据交换量;但是人们通常想在地图上显示路径,因此可能需要填充 Shape 字段。

ViolatedConstraints

该字段包含约束冲突的汇总,并在求解操作之后进行设置。如果因某条路径而导致与约束发生冲突,则可将下列一个冲突或多个冲突的组合分配给该字段。

抢先版本:

表示文本描述的编码值以加括号的形式显示在以下列表中。请注意,编码值是通过将最后一个值增加一倍来增加的几何序列的一部分。可以对要编码的冲突进行各种组合。例如,将“超出容量 (2)”和“硬性路径区 (128)”的组合编码为 130 (2 +128)。

  • 超出 MaxOrderCount (1) - 预分配的停靠点无法分配给路径,因为分配停靠点会超出路径的 MaxOrderCount 字段值所指定的可分配给路径的最大停靠点数。
  • 超出 Capacities (2) - 预分配的停靠点无法分配给路径,因为分配停靠点会超出路径的 Capacities 字段值指定的总路径容量。
  • 超出 MaxTotalTime (4) - 从起始站点到终止站点的行驶时间加上在两个站点的服务和等待时间以及任何休息时间,这几个时间的总和超出了路径的 MaxTotalTime 字段值指定的路径总时间。
  • 超出 MaxTotalTravelTime (8) - 从起始站点到终止站点的行驶时间超出了路径的 MaxTotalTravelTime 字段值指定的路径总行驶时间。
  • 超出 MaxTotalDistance (16) - 从起始站点到终止站点的行驶距离超出了路径的 MaxTotalDistance 字段值指定的路径总行驶距离。
  • 硬性时间窗 (32) - 在与路径关联的起始站点、终止站点或休息点上存在硬性时间窗冲突。
  • 不匹配的特殊要求 (64) - 在目标路径上未找到停靠点所需的特殊要求。
  • 硬性路径区 (128) - 预分配给路径的停靠点未落在硬性路径区内。
  • 超出停靠点对 MaxTransitTime (256) - 存在预分配给路径的停靠点对,而分配该停靠点对中的停靠点会超出停靠点对的 MaxTransitTime 字段值所指定的停靠点对的最长行驶时间。
  • 停靠点对冲突 (512) - 停靠点属于某个停靠点对,但无法分配给预分配的路径。
  • 不能到达 (1024) - 预分配的停靠点位于路径无法到达的网络元素上。
  • 无法插入所需的休息点 (2048) - 在存在预分配的停靠点时,路径的休息点的 sequence 值为空,且在未引入其他冲突的情况下,该休息点不能插入到任何位置。
  • 无法插入所需更新 (4096) - 路径超出其容量并且需要访问货物补给点;然而,在存在预分配的停靠点时,关联的货物补给点的 sequence 值为空,且在未引入其他冲突的情况下,关联的货物补给点不能插入到任何位置。
  • 超出 MaxTravelTimeBetweenBreaks (8192) - 求解程序不能在休息点的 MaxTravelTimeBetweenBreaks 字段所指定的时间内插入休息点。这通常是因为预先为休息点分配了一个顺序,而使得无法在最长行驶时间内到达休息点。

  • 超出休息点 MaxCumulWorkTime (16384) - 求解程序不能在休息点的 MaxCumulWorkTime 字段所指定的时间内插入休息点。这通常是因为预先为休息点分配了一个顺序,而使得无法在最长工作时间内到达休息点。

OrderCount

分配给路径的停靠点数。

TotalCost

路径的总体运营成本,是以下字段值的总和:

  • FixedCost
  • RegularTimeCost
  • OvertimeCost
  • DistanceCost

RegularTimeCost

除任何不需支付酬金的休息时间外的规定工作时间的成本。

OvertimeCost

除任何不需支付酬金的休息时间外的加班时间的成本。

DistanceCost

通过将 TotalDistance 和 CostPerUnitDistance 字段值相乘得出的距离成本部分。如果求解之前未指定距离属性,那么此字段值将设置为零。

TotalTime

路径总持续时间。该持续时间包括行驶时间以及在停靠点、站点和中断的服务和等待时间。TotalTime 值等于以下字段值的总和:

  • StartDepotServiceTime
  • EndDepotServiceTime
  • TotalOrderServiceTime
  • TotalBreakServiceTime
  • TotalRenewalServiceTime
  • TotalWaitTime
  • TotalTravelTime

该字段值的单位由时间字段单位参数(Python 中的 time_units)指定。

TotalOrderServiceTime

在路径上的所有停靠点处所用的总服务时间。

该字段值的单位由时间字段单位参数(Python 中的 time_units)指定。

TotalBreakServiceTime

在路径上的所有中断点处所用的总服务时间。

该字段值的单位由时间字段单位参数(Python 中的 time_units)指定。

TotalTravelTime

路径的总行驶时间。

该字段值的单位由时间字段单位参数(Python 中的 time_units)指定。

TotalDistance

路径的总行驶距离。

该字段值的单位由“距离字段单位”参数(Python 的 distance_units)指定。

如果求解之前未指定距离属性,那么此字段值将设置为零。

StartTime

路径的开始时间。路径可能会在起始站点的时间窗打开之前开始,在这种情况下,起始站点处存在一个等待时间。

使用跨越多个时区的流量数据时,该时刻的时区将采用起始站点所处网络元素所在的时区。

EndTime

路径的结束时间。路径在终止站点处完成服务后结束。

使用跨越多个时区的流量数据时,该时刻的时区将采用终止站点所处网络元素所在的时区。

TotalWaitTime

在路径上的所有停靠点、站点和中断处的总等待时间。

该字段值的单位由时间字段单位参数(Python 中的 time_units)指定。

TotalViolationTime

在路径上的所有停靠点和中断处的总冲突时间。

该字段值的单位由时间字段单位参数(Python 中的 time_units)指定。

RenewalCount

对于具有货物补给点的路径,该字段相当于车辆为了进行货物补给(即车辆装卸)而在站点停靠的次数。

TotalRenewalServiceTime

对于具有货物补给点的路径,该字段表示在路径上所有货物补给点所用的总服务时间。

该字段值的单位由时间字段单位参数(Python 中的 time_units)指定。

Directions 要素类

Directions 是一个表示转弯说明的线要素类,帮助司机按照指定的路径驾驶车辆。此输出要素类的默认名称为 Directions,但是可以在求解之前通过更改“输出方向名称”参数(Python 中的 output_directions_name)更改其名称。而且,求解车辆配送 (VRP) 工具总是创建 Directions 要素类;不过,您可以使用“填充方向”参数(Python 中的 populate_directions)选择是否在求解期间使用要素填充要素类。默认情况下不填充。如果您不需要方向指引,则可以大幅减少求解时间及服务器与客户端之间传输的数据量。

ArcGIS 分配的坐标系与基础网络数据集用于 Directions 要素类的坐标系相同。这可以通过为输出坐标系地理处理环境指定一个数值来控制。

下面列出并描述了 Directions 要素类的字段名称。

字段名说明

ObjectID

系统管理的 ID 字段。

形状

指示线形状的几何字段。

RouteName

驾驶操作所应用到的路径的名称。

ArriveTime

每天启动给定驾驶操作的时间。如果路径跨越多天,将显示日期和时间。

类型

此字段适用于想要自定义行驶方向文本的高级用户。 大多数用户可通过忽略此字段并参考 Text 字段来满足其要求。

Type 引用下列两个枚举中的一个常量:esriDirectionsManueverType 或 esriDirectionsStringType。(参见 SubItemType 字段描述,了解 Type 值指代的枚举。)

SubItemType

此字段适用于想要自定义行驶方向文本的高级用户。 大多数用户可通过忽略此字段并参考 Text 字段来满足其要求。

SubItemType 与 Type 配合,以创建 Text 字段中显示的行驶方向。SubItemType 字段可指定 Type 字段是引用 esriDirectionsManueverType 枚举中的常量值还是引用 esriDirectionsStringType 枚举中的常量值。

  • 如果 SubItemType 值为 1,则 Type 值将引用 esriDirectionsManeuverType。
  • 如果 SubItemType 值为 2,则 Type 值将引用 esriDirectionsStringType。

文本

行驶方向的文本描述。

ElapsedTime

当前行驶方向开始到下一行驶方向开始之时,或到上一行驶方向的路径结束之时所经历的时间。

某些行驶方向还额外记录了服务时间、冲突时间等等。在这种情况下,每条记录的经历时间是重复的。如果想要对总经历时间求和,请选择类型值为 1 的记录,然后对这些记录求和。

该字段值的单位由时间字段单位参数(Python 中的 time_units)指定。

DriveDistance

当前行驶方向开始到下一行驶方向开始,或到上一行驶方向的路径结束之时所行驶的距离。

如果行驶方向与下一次行驶方向开始的位置相同,则此值为零。

停靠点表

Stops 表提供了有关在站点、停靠点及休息点停靠的信息。这些信息包括哪些路径包含停靠,到达和离开时间以及停靠顺序。

此输出表的默认名称为 Stops,但是可以在求解之前通过更改输出停靠点名称参数(Python 中的 output_stops_name)更改其名称。

下面列出并描述了 Stops 表中的字段名。

字段名说明

ObjectID

系统管理的 ID 字段。

Name

停靠点的名称。这是输入要素集和记录集中站点、停靠点或休息点的名称的外键。输入要素或记录集由 StopType 字段指定。

PickupQuantities

从停靠点接收的货物量或人员数量。如果停靠点接收多个维度,请用空格分隔每个数量。

此字段的单位不作保存。应当根据输入路径的数量字段及输入停靠点的 PickupQuantities 和 DeliveryQuantities 字段的键入方式来解释这些单位。(所有这些字段都应当使用相同的维度单位和数量进行输入。)

DeliveryQuantities

停靠点接收的货物量或人员数量。如果停靠点接收多个维度,请用空格分隔每个数量。

此字段的单位不作保存。应当根据输入路径的数量字段及输入停靠点的 PickupQuantities 和 DeliveryQuantities 字段的键入方式来解释这些单位。(所有这些字段都应当使用相同的维度单位和数量进行输入。)

StopType

指示停靠点表示站点、停靠点或休息点。

此字段保存编码值,可用以下方式解释:

  • 停靠点 (0)
  • 站点 (1)
  • 休息点 (2)

RouteName

包含停靠的路径的名称。

Sequence

指定路径访问停靠点的相对顺序。

按 RouteName 和顺序字段排序可创建每个路径的有序停靠点列表。

FromPreviousTravelTime

从路径的上一个停靠点到当前停靠点所经历的行程时间。

该字段值的单位由时间字段单位参数(Python 中的 time_units)指定。

FromPreviousDistance

沿着路径从上一个停靠点到当前停靠点的距离。

该字段值的单位由“距离字段单位”参数(Python 的 distance_units)指定。

ArriveCurbApproach

指示车辆到达停靠点时路边通道位于车辆哪一侧。

DepartCurbApproach

指示车辆离开停靠点时路边通道位于车辆哪一侧。

ArriveTime

路径每天到达停靠点的时间。

使用时区配置网络数据集时,时间值对应于停靠点所在的时区;否则,其将与求解分析的电脑上配置的时区对应。

DepartTime

路径每天离开停靠点的时间。

使用时区配置网络数据集时,时间值对应于停靠点所在的时区;否则,其将与求解分析的电脑上配置的时区对应。

ArriveTimeUTC

路径每天到达停靠点的时间。时间值以协调世界时间 (UTC) 形式给出。

如果未在网络数据集中配置时区,此字段为空。

DepartTimeUTC

路径每天离开停靠点的时间。时间值以协调世界时间 (UTC) 形式给出。

如果未在网络数据集中配置时区,此字段为空。

WaitTime

在停靠点的等待时间或短暂停留时间。例如,如果路径必须在停靠点等待时间窗打开,将会产生一个等待时间。

ViolationTime

从停靠点的时间窗结束到路径车辆到达所经历的时间间隔。

显示停靠点

很明显,“停靠点”表不是要素类,这就是说无法通过在地图中添加此表来查看停靠点的位置。相反,需要采取额外的步骤才能在地图上显示停靠点。(下面提供了相关操作指导。) 如果需要在地图上显示路径的停靠点,这种设计似乎并不必要而且困难;但是,请记住此工具的用途是创建 VRP web 服务。同样地,输出的设计也尽可能精细,从而最大程度减少服务器处理和数据传输。尽管如此,输出不会太精细;输出仍然提供了将停靠点显示为点要素所需的基本信息。

例如,要查看停靠点发生停靠的位置,将“停靠点”表与原始“停靠点”要素集(用作输入)链接。您可以通过 Stops 表的 StopType 和 Name 字段及停靠点要素集的名称字段来选择和合并这些数据集。您可以使用类似方法查看在站点发生停靠的位置。

提示:

求解车辆配送 (VRP) 创建多个输入要素集,包括停靠点要素集和站点要素集。随着工具的求解,这些内存中的要素集将从 ArcMap 移除。不过,您也可以将它们添加回来。为此,请执行以下步骤:

  1. 从地理处理菜单打开结果窗口。
  2. 在结果窗口中,导航到您想要查看的要素集操作的结果。
  3. 展开合适的求解车辆配送 (VRP) 结果。
  4. 展开输入。
  5. 右键单击您想要查看的要素集,然后选择添加至显示。要素集将显示在地图及内容列表中。
  6. 或者,单击内容列表窗口上的按源列出按钮,查看数据的存储位置。

与停靠点和站点不同,休息点并不与输入要素集关联。所以,您需要使用不同方法来显示它们。可以在分析中生成方向,选择表示要素的线,然后使用要素折点转点工具将其转换成点。

UnassignedStops 表

UnassignedStops 表列出了任何路径都无法访问的停靠点。此表还说明了停靠点无法访问的原因,以便进行必要的更改来修复这一问题。

此输出表的默认名称为 Stops,但是可以在求解之前通过更改输出未分配的停靠点名称参数 (output_unassigned_stops_name) 更改其名称。

下面列出并描述了“停靠点”表中的字段名。

字段名说明

ObjectID

系统管理的 ID 字段。

StopType

指示停靠点表示站点、停靠点或休息点。此字段保存编码值,可用以下方式解释:

  • 停靠点 (0)
  • 站点 (1)
  • 休息点 (2)

Name

停靠点的名称。

这是输入要素集和记录集中站点、停靠点或休息点的名称的外键。输入要素或记录集由 StopType 字段指定。

ViolatedConstraints

该字段包含约束冲突的汇总,并在求解操作之后进行设置。如果某个约束存在冲突,则可将下列一个或多个冲突的组合分配给该字段。

抢先版本:

表示文本描述的编码值以加括号的形式显示在以下列表中。请注意,编码值是通过将最后一个值增加一倍来增加的几何序列的一部分。可以对要编码的冲突进行各种组合。例如,将“超出容量 (2)”和“硬性路径区 (128)”的组合编码为 130 (2 +128)。

  • 超出 MaxOrderCount (1) - 预分配的停靠点无法分配给路径,因为分配停靠点会超出路径的 MaxOrderCount 字段值所指定的可分配给路径的最大停靠点数。
  • 超出 Capacities (2) - 预分配的停靠点无法分配给路径,因为分配停靠点会超出路径的 Capacities 字段值指定的总路径容量。
  • 超出 MaxTotalTime (4) - 从起始站点到终止站点的行驶时间加上在两个站点的服务和等待时间以及任何休息时间,这几个时间的总和超出了路径的 MaxTotalTime 字段值指定的路径总时间。
  • 超出 MaxTotalTravelTime (8) - 从起始站点到终止站点的行驶时间超出了路径的 MaxTotalTravelTime 字段值指定的路径总行驶时间。
  • 超出 MaxTotalDistance (16) - 从起始站点到终止站点的行驶距离超出了路径的 MaxTotalDistance 字段值指定的路径总行驶距离。
  • 硬性时间窗 (32) - 在与路径关联的起始站点、终止站点或休息点上存在硬性时间窗冲突。
  • 不匹配的特殊要求 (64) - 在目标路径上未找到停靠点所需的特殊要求。
  • 硬性路径区 (128) - 预分配给路径的停靠点未落在硬性路径区内。
  • 超出停靠点对 MaxTransitTime (256) - 存在预分配给路径的停靠点对,而分配该停靠点对中的停靠点会超出停靠点对的 MaxTransitTime 字段值所指定的停靠点对的最长行驶时间。
  • 停靠点对冲突 (512) - 停靠点属于某个停靠点对,但无法分配给预分配的路径。
  • 不能到达 (1024) - 预分配的停靠点位于路径无法到达的网络元素上。
  • 无法插入所需的休息点 (2048) - 在存在预分配的停靠点时,路径的休息点的 sequence 值为空,且在未引入其他冲突的情况下,该休息点不能插入到任何位置。
  • 无法插入所需更新 (4096) - 路径超出其容量并且需要访问货物补给点;然而,在存在预分配的停靠点时,关联的货物补给点的 sequence 值为空,且在未引入其他冲突的情况下,关联的货物补给点不能插入到任何位置。
  • 超出 MaxTravelTimeBetweenBreaks (8192) - 求解程序不能在休息点的 MaxTravelTimeBetweenBreaks 字段所指定的时间内插入休息点。这通常是因为预先为休息点分配了一个顺序,而使得无法在最长行驶时间内到达休息点。

  • 超出休息点 MaxCumulWorkTime (16384) - 求解程序不能在休息点的 MaxCumulWorkTime 字段所指定的时间内插入休息点。这通常是因为预先为休息点分配了一个顺序,而使得无法在最长工作时间内到达休息点。

Status

该字段受到下面列出值的属性域的约束(括号中是它们的编码值)。

  • 正常 (0) - 成功对网络位置进行了评估。
  • 元素不可穿越 (3) - 网络位置所在的网络元素不可穿越。网络元素受到约束属性限制时可能会发生这种情况。
  • 字段值无效 (4) - 网络位置的字段值落在分析图层的编码属性域或范围属性域之外。例如,应该填写正数的位置可能存在负数。
  • 未到达 (5) - 无法通过求解程序到达网络位置。

相关主题

  • 求解车辆配送
  • 车辆配送 (VRP) 分析

ArcGIS Desktop

  • 主页
  • 文档
  • 支持

ArcGIS 平台

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

关于 Esri

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