练习 8:查找能够为需求点对提供服务的最佳路径
在本练习中,您的目标将是为运载乘客的车队找到最佳路径,此车队将是乘客从家中出发前往不同医院赴诊的唯一交通工具。您将通过以下方式完成此目标:用需求点对来求解车辆配送 (VRP) 分析,首先将两个停靠点关联并对其进行排序,从而使车辆能够将乘客接往正确的目的地。此外,您还可以使用 VRP 分析图层的其他要素确保其他要求得以满足。例如,您将输入需求点对间的最长行驶时间,以避免乘客在路上花费过多时间。您将对停靠点使用时间窗,以避免乘客错过预约的赴诊时间。有些乘客需要使用轮椅;您将使用特殊要求(在车上专门设置轮椅升降装置)来满足这些乘客的需求。确定该路径后,可以生成转向说明,并将该路径以电子形式分发给驾驶员,或打印后交给驾驶员。
Network Analyst 教程中本练习和其他练习所使用的数据可在 ArcGIS.com 中找到。数据下载完成后,可将其解压缩到所需位置。但是最好将其解压到 C:\arcgis\ArcTutor,因为本教程将此路径视作数据的默认位置。
准备视图
- 如果在 ArcMap 中打开了 Exercise08.mxd,请跳至步骤 6。
- 单击开始 > 所有程序 > ArcGIS > ArcMap 10.2.2 启动 ArcMap。
-
在 ArcMap - 启动 对话框中,单击现有地图 > 浏览更多。
将弹出打开 ArcMap 文档 对话框。
-
浏览至 C:\ArcGIS\ArcTutor\Network Analyst\Tutorial。
这是本教程数据的默认安装位置。
-
双击 Exercise08.mxd。
将在 ArcMap 中打开该地图文档。
-
启用 ArcGIS Network Analyst 扩展模块。
-
单击自定义 > 扩展模块。
将打开扩展模块 对话框。
- 选中 Network Analyst。
- 单击关闭。
-
单击自定义 > 扩展模块。
-
单击自定义 > 工具条 > Network Analyst。
Network Analyst 工具条被添加到 ArcMap 中。
-
在 Network Analyst 工具条上,单击 Network Analyst 窗口按钮 。
打开可停靠的 Network Analyst 窗口。
如果未显示 Network Analyst 工具条,则需要添加该工具条。
如果未显示 Network Analyst 窗口,则需要添加该窗口。
可以停靠或取消停靠 Network Analyst 窗口。
创建车辆配送 (VRP) 分析图层
-
在 Network Analyst 工具条上,单击 Network Analyst,然后单击新建多路径派发(VRP)。
多路径派发 (VRP) 分析图层即被添加到 Network Analyst 窗口中。网络分析类(停靠点、站点、路径、站点访问、中断、路径区、路径种子点、路径更新、特点、停靠点对、点障碍、线障碍和面障碍)为空。
分析图层也将被添加到内容列表 窗口中。
添加特殊要求
物流公司拥有三辆面包车。其中在市区行驶的一辆面包车配备了供轮椅进出的装置。您将把“轮椅”添加为特殊要求,以保证将需要此特殊要求的停靠点分配到具有轮椅升降装置的路径上。
-
在 Network Analyst 窗口中,右键单击特殊要求 (0),然后单击添加项目。
新特殊要求 Item 1 会被添加至 Network Analyst 窗口中的特殊要求类下。并将打开该新特殊要求的属性 窗口。
-
在属性 窗口中,输入 Wheelchair 作为 Name 的值。
- 单击确定。
添加停靠点
教程数据中有一份电子表格。表格中包含各患者的相关信息,例如患者姓名、家庭地址;患者必须被送往的医院名称和地址;以及车辆必须在哪个时间窗内接到患者等等。下表描述了电子表格中的各个字段:
属性 |
描述 |
---|---|
OrderName1 |
需要接送的患者的姓名 |
PatientAddress |
患者地址 |
OrderName2 |
目的地的唯一名称 |
HospitalAddress |
医院地址 |
PickFrom |
可从 PatientAddress 接到患者的最早时间 |
PickTo |
可从 PatientAddress 接到患者的最晚时间 |
TotalPassengers |
所要接送的乘客的总数 |
MaxTransitTime |
患者可以在车上花费的最长时间 |
SpecialtyNames |
指定乘客所需的特殊需求,如轮椅 |
在本示例中,乘客和就诊医院是相互关联的,因为每个顾客都必须前往预先确定的医院。您可以利用需求点对来构建此种情景的模型,方法是将患者和医院位置都加载到“停靠点”网络分析类中,并用新需求点对对象对他们进行关联。
在接下来的步骤中,您将对患者和医院地址进行地理编码,并将生成的点作为停靠点进行加载。
-
单击文件 > 添加数据 > 地理编码 > 对地址进行地理编码。
将打开选择要使用的地址定位器 对话框。
- 单击 SanFranciscoLocator。
SanFranciscoLocator 将被添加至 Exercise08.mxd 中。
-
单击确定。
将打开对地址进行地理编码:SanFranciscoLocator 对话框。
-
单击地址表下拉列表旁的浏览按钮 。
将打开选择包含地址的表 对话框。
-
单击查找范围下拉列表,然后选择主页 - 教程。
将要添加的表以 Excel 电子表格形式存储在 Network Analyst 教程数据中。
- 双击 OrderPairs.xls。
-
双击 Patients$。
Patients 工作表将被添加至地址表下拉列表中。
- 在街道或交叉点下拉列表中,选择 PatientAddress。
-
单击输出 shapefile 或要素类文本框旁的浏览按钮 。
将在 Exercise08.mxd 的原始位置打开保存数据 对话框。
- 单击查找范围下拉列表,然后选择主页 - 教程。
-
单击保存类型下拉列表,然后选择文件和个人地理数据库要素类。
更新文件和工作空间列表。
- 双击 SanFrancisco.gdb。
-
删除 Name 文本框的名称,然后输入 Patients。
Patients 将成为输出要素类的名称。
-
单击保存。
输出 shapefile 或要素类文本框(位于对地址进行地理编码:SanFranciscoLocator 对话框中)更新,以显示新的输出路径。
-
单击确定。
将打开地理编码地址 对话框,并显示 15 个地址全部匹配。
-
单击关闭。
地理编码地址将被作为点要素图层地理编码结果:Patients 添加到地图文档。
-
重复步骤 1–16 加载患者的目标医院,但需要做出如下更改:
- 在步骤 8 中,将街道或交叉点设置为 HospitalAddress。
-
在步骤 13 中,在名称文本框中输入 DestinationHospitals。
内容列表窗口中现在应该有两个要素图层,即地理编码结果:DestinationHospitals 和地理编码结果:Patients。
- 在内容列表 窗口中,取消选中上述两个地理编码结果图层,以使其在地图视图中不可见。
-
在 Network Analyst 窗口中,右键单击停靠点 (0),然后选择加载位置。
将打开加载位置 对话框。
- 选择地理编码结果:Patients(从加载自下拉列表中选择)。
-
配置位置分析属性部分中列出的属性,以便其按照如下子步骤所指定的方式从“地理编码结果:Patients”图层中复制字段值。(下幅图会高亮显示这些变动。)
- 将 Name 属性映射到 OrderName1 字段。
- 将 Description 属性映射到 PatientAddress 字段。
- 将 TimeWindowStart1 属性映射到 PickFrom 字段。
- 将 TimeWindowEnd1 属性映射到 PickTo 字段。
- 将 PickupQuantities 属性映射到 TotalPassengers 字段。
- 确保 SpecialtyNames 属性自动与 SpecialtyNames 字段相匹配。
-
在 ServiceTime 属性对应的默认值下输入 2。
加载的所有患者地址位置的 ServiceTime 属性值都将设为 2,该值是指乘客上车所花费的平均时间(以分钟为单位)。
-
在 MaxViolationTime1 属性对应的默认值下输入 0。
将所有 MaxViolationTime1 属性都设为零之后,VRP 求解程序将仅搜索能够在时间窗内经过停靠点的路径。
-
单击确定。
加载了十五个停靠点。这些停靠点会显示在地图视图和 Network Analyst 窗口中。
-
在 Network Analyst 窗口中,右键单击停靠点 (15),然后选择加载位置。
将打开加载位置 对话框。
- 选择地理编码结果:DestinationHospitals(从加载自下拉列表中选择)。
-
配置位置分析属性部分中列出的属性,以使其按照如下子步骤所指定的方式从“地理编码结果:DestinationHospitals”图层中复制字段值。(下幅图会高亮显示这些变动。)
-
将 Name 属性映射到 OrderName2 字段。
请注意,Name 属性的值在“停靠点”网络分析类中必须唯一。在本示例中,有许多患者需要前往同一家医院。因此,如果使用医院地址来获取“停靠点”的 Name 属性值,则 VRP 求解程序会因存在重复的 Name 值而返回错误消息。
- 将 Description 属性映射到 HospitalAddress 字段。
- 将 DeliveryQuantities 属性映射到 TotalPassengers 字段。
- 确保 SpecialtyNames 属性自动与 SpecialtyNames 字段相匹配。
-
将 Name 属性映射到 OrderName2 字段。
-
在 ServiceTime 属性对应的默认值下输入 2。
-
单击确定。
将有三十个停靠点出现在 Network Analyst 窗口的“停靠点”网络分析类下,并显示在地图上的车辆配送 (VRP) 图层中。
在接下来的步骤中,您将把上述图层加载至“停靠点”网络分析类中。
可以在加载位置对话框的位置分析属性部分指定“地理编码结果:Patients”图层的哪些属性中包含 Network Analyst 将在此车辆配送 (VRP) 中引用的值。
添加需求点对
必须将乘客送往预先确定的医院。通过向“需求点对”网络分析类中添加对象,您可以添加以下信息:指定患者将被送往哪家医院,以及患者在单向行程中的最长乘车时间。
-
在 Network Analyst 窗口中,右键单击需求点对 (0),然后选择加载位置。
将打开加载位置 对话框。
- 单击加载自下拉列表旁的浏览按钮 。
-
单击查找范围下拉列表,然后选择主页 - 教程。
将要添加的表以 Excel 电子表格形式存储在 ArcGIS Network Analyst 扩展模块 教程数据中。
- 双击 OrderPairs.xls。
-
双击 Patients$。
Patients 表将被添加至加载位置 对话框的加载自下拉列表中。
-
配置位置分析属性部分中列出的属性,以使其按照如下子步骤所指定的方式从 Patients$ 表中提取字段值。
- 将 FirstOrderName 属性映射到 OrderName1 字段。
- 将 SecondOrderName 属性映射到 OrderName2 字段。
- 确保 MaxTransitTime 属性自动与 MaxTransitTime 字段相匹配。
-
单击确定。
将有十五个需求点对列在 Network Analyst 窗口的需求点对网络分析类下。
添加站点
物流公司将在三个站点处进行车辆运输工作,站点位置在 ArcMap 的 CentralDepots 要素图层中已有显示。现在,您将把这些点要素添加至“站点”网络分析类中。
-
在 Network Analyst 窗口中,右键单击 站点 (0),然后选择加载位置。
将打开加载位置 对话框。
- 从加载自下拉列表中选择 CentralDepots。
-
在位置分析属性部分中,确保名称属性自动与名称字段相匹配。
-
单击确定。
将有三个站点列在 Network Analyst 窗口的站点网络分析类下,并显示在地图的车辆配送 (VRP) 图层中。
添加路径
物流公司有三辆面包车,每辆车最多可乘坐六名乘客。车辆从站点出发,并在所有行程全部结束后返回站点。其中在市区接送乘客的一辆车配备了方便轮椅进出的升降装置。
您将添加三条路径(每辆车一条),并设置市区车辆的属性,以使其具有 Wheelchair 这一特殊要求。
-
在 Network Analyst 窗口,右键单击路径 (0),然后选择添加项目。
新路径 Item1 将被添加至“路径”网络分析类中,并将打开该路径的属性 窗口。
-
在该属性 窗口中,按下表所示方式指定路径的属性,保持其他属性的默认值不变。表中的“描述”列中解释了特定值的用途。
属性
值
描述
名称
Downtown
路径名称。
StartDepotName
Downtown Depot
车辆从位于市区的站点出发。
EndDepotName
Downtown Depot
车辆行驶完整条路径后返回至市区中的站点。
容量
6
车辆一次最多可容纳六名乘客。
SpecialtyNames
Wheelchair(选中 Wheelchair 以将其设置为值。)
车辆配备可供轮椅进出的装置。
-
单击确定。
新路径 Downtown 将列在 Network Analyst 窗口中。
-
重复步骤 1–3 添加另两条路径,以表示在 North Bay 和 East Bay 区域运转的车辆。对于这两条新路径,请使用下表中的属性,而不要使用步骤 2 中列出的属性。
属性
值
名称
North Bay
StartDepotName
North Bay Depot
EndDepotName
North Bay Depot
容量
6
属性
值
名称
East Bay
StartDepotName
East Bay Depot
EndDepotName
East Bay Depot
容量
6
请注意,这些车辆并未配备可供轮椅进出的装置。
Network Analyst 窗口在路径网络分析类中列出了三个路径对象。
添加路径区
物流公司所使用的三辆面包车只能为预先确定的区域中的停靠点提供服务。您将添加路径区并将其与车辆/路径相关联。
- 在 Network Analyst 窗口中,选择路径区 (0)。
- 在 Network Analyst 工具条上,单击创建网络位置工具 。
-
在地图视图上,按如下所示方式对大致覆盖市区的面进行数字化。
单击可添加折点;双击可完成面。
新路径区 Graphic Pick 1 将被添加至 Network Analyst 窗口的路径区类中。 -
在 Network Analyst 窗口中,双击新路径区对象 Graphic Pick 1。
将打开该路径区的属性 窗口。
-
按下表所示方式设置路径区的属性。
属性
值
描述
RouteName
Downtown
与此路径区相关联的路径的名称。
IsHardZone
True
车辆不可为路径区之外的停靠点提供服务。将此值设置为 True 可确保只将车辆分配给路径区之内的停靠点。
-
重复步骤 1-6 以添加另外两个路径区:一个针对 North Bay,另一个针对 East Bay。
地图和 Network Analyst 窗口中应包含三个路径区对象。
设置分析属性
接下来,您将为车辆配送 (VRP) 分析指定属性。
-
单击 Network Analyst 窗口中的分析图层属性按钮。
将打开图层属性 对话框。
- 单击分析设置选项卡。
-
确保将时间属性下拉列表设置为驾车时间(分钟)。
VRP 求解程序将使用此属性来计算停靠点与站点间基于时间的成本。
-
确保未在距离属性下拉列表中选择任何值。
由于您并没有使用任何基于距离的成本参数(如 CostPerUnitDistance 或 MaxTotalDistance),因此无需设置距离属性。
- 将默认日期设置为星期。在星期下拉列表中,选择星期一。
-
由于仅以车辆可乘坐的乘客总数来衡量车辆容量,因此请确保将容量计数设置为 1。
如果以车辆可容纳的乘客总数及可容纳轮椅的最大数目衡量车辆容量,则应将“容量计数”设置为 2。
-
保持其他属性的默认选项不变。
- 单击确定。
运行该程序以求解
-
在 Network Analyst 工具条上,单击求解按钮 。
VRP 求解程序会计算各车辆的路径。在车上各路径上从某一站点出发,接到一名或多名乘客(乘客在车辆上花费的时间需小于需求点对中指定的 MaxTransitTime 值)后,对应的医院处停车让乘客下车,然后继续接送其他乘客,最终返回至起始站点。路径所服务的停靠点必须位于为其分配的路径区内。
确定路径中的转弯说明
-
在 Network Analyst 工具条上,单击指示窗口按钮 。
将打开指示 对话框。
- 您也可以选择将车辆配送 (VRP) 作为图层文件 (<filename>.lyr) 导出到磁盘中,以便将其加载至其他地图文档中。
- 退出 ArcMap 而不保存任何更改。