需要 Network Analyst 许可。
在本练习中,您的目标将是为运载乘客的车队找到最佳路径,此车队将是乘客从家中出发前往医院赴诊的唯一交通工具。 您将通过以下方式完成此目标:用停靠点对来求解车辆配送 (VRP) 分析,首先将两个停靠点关联并对其进行排序,从而使车辆能够将乘客接往目的地。 此外,您还将使用 VRP 分析图层的其他要素,确保其他要求得以满足。 例如,输入停靠点对的最长行驶时间,这样乘客就不会在行驶中花费太多时间;在停靠点上使用时间窗,以使乘客约会不迟到。 有些乘客需要使用轮椅;您将使用特殊要求选项,来为这些乘客指派配有轮椅升降装置的车辆。 确定路径后,将路径发布到 ArcGIS.com,以便驱动程序可以通过 Navigator 访问它们。
注:
确保已登录到您的 ArcGIS Online 帐户。 可以使用指定的教程网络数据集或使用涵盖分析输入数据地理的网络数据集发布的 ArcGIS Online 或 ArcGIS Enterprise 路径服务作为网络数据源来完成本教程。 如果您使用 ArcGIS Online,则会消耗配额。获取数据
本教程的数据可供下载。
- 请转至数据下载页面。
- 单击下载按钮将文件保存到本地。
- 解压下载的文件。
创建地图
完成以下步骤以创建地图:
- 启动 ArcGIS Pro。
- 通过单击地图模板创建一个新工程。 可以选择性地更改工程的名称和位置。
随即出现具有地图的新工程。
将教程数据添加到工程中
网络数据集是道路系统的智能模型。 其不仅包含道路的位置和属性,而且还包含有关道路如何彼此关联(例如,哪些道路相连、相连的道路之间允许或禁止哪些转弯)的信息及其他影响可能的行驶路线和行驶时间的信息。 VRP 求解程序通过参考网络数据集确定停靠点之间的最短路径。
注:
如果您使用 ArcGIS Online 执行分析,则求解程序将参考存储在 ArcGIS Online 云中的高质量的世界级网络数据集并使用 ArcGIS Online 配额。 您还可以使用存储在本地计算机上的网络数据集或使用自己的网络数据集通过 ArcGIS Enterprise 发布路径服务,并通过企业门户配置服务以在 ArcGIS Pro 中使用。在这组步骤中,将网络数据集添加到地图中。
- 在目录窗格(默认情况下,位于应用程序的右侧)上,右键单击文件夹,然后选择添加文件夹连接 。
随即出现添加文件夹连接对话框。
- 浏览到您放置了教程数据的文件夹,双击 Network Analyst,然后单击教程以选择该文件夹。
- 单击确定。
随即创建一个与教程文件夹之间的连接。
- 在目录窗格中,展开文件夹 > 教程 > SanFrancisco.gdb > Transportation。
- 将 Streets_ND(具有一个网络数据集图标 )拖放到地图上。
网络数据集将被添加到内容窗格以及地图中。
- 根据需要,右键单击内容窗格中的 Streets_ND,然后选择缩放至图层 以查看旧金山地区。
默认情况下,使用流量数据构建的网络数据集将在其被添加到地图后显示当前时间的交通状况。 此网络数据集包括历史流量,因此您可以看到该周当天时间的典型交通状况。 此网络数据集中并非所有道路都包括流量数据,因此默认情况下仅显示包括流量数据的道路。
您可以在网络数据集所覆盖的地区执行网络分析。
查看网络数据集不需要执行分析,因此接下来您要将其隐藏起来。
- 在内容窗格中,取消选中 Streets_ND 以仅显示底图。
- 在目录窗格中,浏览至 Tutorial > SanFrancisco.gdb > Analysis。
- 在目录窗格中,右键单击 CentralDepots 图层,然后选择添加至当前地图。
注:
还可以通过将图层从目录窗格拖动到地图来将图层添加到地图中。
CentralDepots 图层将被添加到内容窗格以及地图中。
接下来,将该文件夹中包含的一个网络数据集添加到地图中。
注:
如果您打算使用 ArcGIS Online 或 ArcGIS Enterprise 路由服务作为网络数据源,则无需将网络数据集添加到地图中。
创建车辆配送图层
车辆配送图层 (VRP) 图层提供设置和求解车辆配送问题所需的结构和属性。 它还包含求解后的结果。
- 在分析选项卡的工作流组中,单击网络分析 > 车辆配送 。
VRP 图层将添加到内容窗格中。 它包括多个保留分析输入和输出的子图层。
路径将参考 San Francisco 网络数据集,因为在创建路径图层时,该网络位于内容窗格中。
注:
要查看或更改将用于创建网络分析图层的网络数据源,可单击分析选项卡工作流组中的网络分析下拉菜单,然后在网络数据源下进行查看。
- 在内容窗格中,单击车辆配送以选择图层组。
VRP 图层选项卡随即显示。
- 单击 VRP 图层以查看选项卡上的设置。
您将使用这些控件定义要生成的 VRP 模型。
提示:
仅当您在内容窗格中选择 VRP 图层后,才会显示 VRP 图层选项卡。 另外,如果您有多个 VRP 图层,则可以单独更改这些图层的设置,或选择多个图层来编辑所有选定图层(如果它们共享相同的网络数据源)的设置。
添加停靠点
教程数据中有一份电子表格。 表格中包含各患者的相关信息,例如患者姓名、家庭地址,患者必须被送往的医院名称和地址,以及车辆必须在哪个时间窗内接到患者等。 下表描述了电子表格中的各个字段:
属性 | 描述 |
---|---|
OrderName1 | 需要接送的患者的姓名 |
PatientAddress | 患者地址 |
OrderName2 | 目的地的唯一名称 |
HospitalAddress | 医院地址 |
PickFrom | 可从 PatientAddress 接到患者的最早时间 |
PickTo | 可从 PatientAddress 接到患者的最晚时间 |
TotalPassengers | 所要接送的乘客的总数 |
MaxTransitTime | 患者可以在车上花费的最长时间 |
SpecialityNames | 指定乘客所需的特殊需求,如轮椅 |
在本示例中,乘客和就诊医院是相互关联的,因为每个顾客都必须前往预先确定的医院。 您可以利用停靠点对来构建此种场景的模型,方式是将患者和医院位置都加载到“停靠点”网络分析类中,并用新停靠点对对象对他们进行关联。
在接下来的步骤中,您将对患者和医院地址进行地理编码,并将生成的点作为停靠点进行加载:
- 在目录窗格中,浏览到教程数据位置,找到 OrderPairs.xls 文件,然后双击它。
OrderPairs.xls 文件将展开,此时可见表 Patients$。
- 右键单击 Patients$ 表并从上下文菜单中单击地理编码表。
地理编码表指导工作流窗格随即出现。 打开页面描述了您将要执行的步骤。
- 单击开始按钮。
- 单击输入定位器参数旁边的浏览按钮,并浏览到教程数据的保存位置,然后选择 SanFranciscoLocator.loc。
- 单击下一步。
- 对于您要进行地理编码的数据位于一个字段中还是多个字段中?问题,从下拉列表中选择一个字段。
- 单击下一步。
- 在数据字段下拉列表中,选择 PatientAddress 字段,然后单击下一步。
您将首先对患者的家庭住址进行地理编码。
- 对于输出字段名称,确保它将 Patient_Geocoded 作为新要素类名称列出。
- 单击下一步。
- 您无需在按类别限制步骤中更新任何内容。 仅需单击完成即可。
- 查看地理编码表地理处理工具中的输入,然后在窗格底部单击运行按钮 。
- 在地理编码已完成弹出窗口中单击否。
您不需要启动重新匹配过程,因为地址名称已完美匹配。 在您自己的工作流中,可能必须进行重新匹配以清理一些地址信息。
- 使用以下更改重复步骤 1 至 13,以对患者预约的医院位置进行地理编码:
- 在步骤 8 中,选择 HospitalAddress。
- 在步骤 9 中,将输出名称字段更改为 DestinationHospitals_Geocoded。
您可以使用上述值更新地理编码表地理处理工具,并重新运行该工具,而无需重新执行整个指导工作流。
- 在内容窗格中,取消选中上述两个地理编码结果图层,以使其在地图视图中不可见。
在接下来的步骤中,将上述图层加载至“停靠点”网络分析类中。
- 在 VRP 图层选项卡的输入数据组中,单击导入停靠点。
随即显示添加位置窗口。
- 确保将输入网络分析图层设置为车辆配送,并将子图层设置为停靠点。
- 单击输入位置下拉箭头并选择 Patients_Geocoded。 这是您在之前的步骤中创建的点要素类,该类已自动添加到地图。
- 在字段映射下,从属性中选择名称,然后在字段名称参数中输入 USER_OrderName1。
- 如果未自动映射,请映射以下字段:
- Description > USER_PatientAddress
- TimeWindowStart > USER_PickFrom
- TimeWindowEnd > USER_PickTo
- PickupQuantity_1 > USER_TotalPassengers
- 在字段映射下,从属性中选择 ServiceTime,然后在默认值参数中输入 2。
加载的所有患者地址位置的服务时间值都将设为 2,该值是指乘客上车所花费的平均时间(以分钟为单位)。
- 在字段映射下,从属性中选择 MaxViolationTime,然后在默认值参数中输入 0。
将所有 MaxViolationTime 属性都设为零之后,VRP 求解程序将仅搜索能够在时间窗内经过停靠点的路径。
- 保留其余参数的默认设置,然后单击确定按钮。
- 重复步骤 16 到 18 并进行以下更改:
- 在步骤 18 中,选择 DestinationHospitals_Geocoded。
- 进行以下字段映射:
- Name > USER_OrderName2
- Description > USER_HospitalAddress
- DeliveryQuantity_1 > USER_TotalPassengers
- 保留其余参数的默认设置,然后单击确定按钮。
注:
如果未安装所需的 Microsoft 驱动程序,则会出现一条错误消息。 了解有关安装驱动程序以处理 Microsoft Excel 文件的详细信息。在 Orders 属性表中共添加了 15 个记录,这些记录将在地图上显示。
注:
Name 属性的值在“停靠点”网络分析类中必须唯一。 在本示例中,许多患者需要前往同一家医院。 因此,如果使用医院地址来获取“停靠点”的 Name 属性值,则 VRP 求解程序会因存在重复的 Name 值而返回错误消息。在 Orders 属性表中共添加了 15 个记录,这些记录将在地图上显示。
添加停靠点对
必须将乘客送往预先确定的医院。 通过向“需求点对”网络分析类中添加对象,您可以添加以下信息:指定患者将被送往哪家医院,以及患者在单向行程中的最长乘车时间。
- 在 VRP 图层选项卡的输入数据组中,从导入选项的下拉列表中单击导入停靠点对。
随即显示添加位置窗口。
您先前已使用此工具从要素类加载停靠点。 现在,您将使用它来将数据从 Excel 文件加载到 OrderPairs 表中。
- 确保将输入网络分析图层设置为车辆配送,并将子图层设置为停靠点对。
- 单击输入位置字段旁边的浏览按钮,并浏览到教程数据的位置以从 OrderPairs.xls 文件内选择 Patients$ 表。
- 验证以下字段映射是否已自动填充:
- FirstOrderName > OrderName1
- SecondOrderName > OrderName2
- MaxTransitTime > MaxTransitTime
- 保留其余参数的默认设置,然后单击确定按钮。
在 OrderPairs 表中总共添加了 15 条记录。
添加站点
物流公司将在三个站点处进行车辆运输工作,站点位置将显示在您先前已添加到地图的 CentralDepots 要素图层中。 现在,您将把这些点要素添加至站点网络分析类中。
- 在 VRP 图层选项卡的输入数据组中,单击导入站点。
随即显示添加位置窗口。
- 确保将输入网络分析图层设置为车辆配送,并将子图层设置为站点。
- 单击输入位置下拉箭头并选择 CentralDepots。
- 在字段映射下,从属性中选择名称,并确保名称可以在字段名称参数中自动映射。
- 保留其余参数的默认设置,然后单击确定按钮。
三个记录随即添加到 Depots 属性表并显示在地图上。
添加路径
物流公司有三辆面包车,最大载客量均为 6。 车辆从站点出发,并在所有行程全部结束后返回站点。 其中在市区接送乘客的一辆车配备了方便轮椅进出的升降装置。
您将添加三条路径,每个车辆一条。 在本部分中,您将使用 Routes 属性表添加路径。 其他选项将使用 添加位置工具导入您已创建的表或使用添加车辆配送路径地理处理工具,其将创建一组具有相同参数的路径。 在这种情况下,我们对每个路径都有足够的设置,最快的方法是将值直接输入到表中。
- 在内容窗格中,右键单击路径并从快捷菜单中选择属性表。
随即显示属性表,其中包含每个路径的输入和输出字段。
- 单击单击以添加新行按钮以添加如下三个路径的信息:
Name StartDepotName EndDepotName Capacity_1 Downtown
Downtown Depot
Downtown Depot
6
North Bay
North Bay Depot
North Bay Depot
6
East Bay
East Bay Depot
East Bay Depot
6
- 单击编辑选项卡,在管理编辑内容组中,单击保存按钮 。
- 单击保存编辑内容对话框上的是。
- 关闭 Routes 属性表。
添加特殊要求
一些被接送的患者坐在轮椅上,但是只有一辆车配备了方便这些患者进出车辆的升降装置。 因此,您将设置一个特殊要求来指示这些患者需要仅通过该路径提供的支持。 如果查看教程数据随附的 Excel 文档,您将看到三名患者需要轮椅可达性:Tony、Tim 和 Bill。另外,市区路径是唯一具有轮椅升降功能的车辆。 在接下来的一组步骤中,您会将值添加到 Order Specialties 和 Route Specialties 属性表以指示此信息。
首先,您将输入停靠点特殊要求信息。
- 在内容窗格中,右键单击停靠点特殊要求并从快捷菜单中选择打开。
随即出现属性表,您可以输入有关带有特殊要求的每个停靠点的信息。
- 单击单击以添加新行按钮以添加信息,如下所示:
OrderName SpecialtyName Tony (Home)
轮椅
Tony (Doctor)
轮椅
Tim (Home)
轮椅
Tim (Doctor)
轮椅
Bill (Home)
轮椅
Bill (Doctor)
轮椅
- 单击编辑选项卡,在管理编辑内容组中,单击保存按钮 。
- 单击保存编辑内容对话框上的是。
- 关闭 Order Specialties 属性表。
- 在内容窗格中,右键单击路径特殊要求并从快捷菜单中选择打开。
随即出现该属性表,您可以输入有关可以为特殊要求提供服务的每条路径的信息。
- 单击单击以添加新行按钮。
- 对于 RouteName,输入 Downtown。
- 对于 SpecialtyName,输入 Wheelchair。
- 单击编辑选项卡,在管理编辑内容组中,单击保存按钮 。
- 单击保存编辑内容对话框上的是。
- 关闭 Route Renewals 属性表。
添加路径区
仅许可该公司所使用的三辆面包车在预定区域内提供服务。 您将添加路径区并将其与车辆或路径相关联。
在本部分中,您将使用创建要素窗格绘制这些区域的边界,但是如果您已经将区域数字化,则可以使用添加位置地理处理工具进行导入。
- 在 VRP 图层选项卡的输入数据组中,单击创建要素 。
创建要素窗格出现,显示与所选 VRP 图层相关联的要素类的模板。
- 在创建要素窗格中,选择车辆配送:路径区。
- 在地图视图上,按如下所示方式对大致覆盖市区的面进行数字化。
- 在内容窗格中,右键单击路径区并从快捷菜单中选择属性表。
将出现该属性表,并且您可以输入有关刚创建的路径区的信息。
- 双击 RouteName 下的第一行以编辑值并输入 Downtown。
这是与该路径区相关联路径的名称。
- 确保 IsHardZone 值设置为 True。
车辆不可为路径区之外的停靠点提供服务。 将此值设置为 True 可确保只将车辆分配给路径区之内的停靠点。
- 重复步骤 3 至 6,新添加两个路径区:一个针对 North Bay,另一个针对 East Bay。
- 单击编辑选项卡,在管理编辑内容组中,单击保存按钮 。
- 单击保存编辑内容对话框上的是。
- 关闭 Route Zones 属性表。
设置车辆配送分析的属性。
接下来,您将为车辆配送分析指定属性。
- 在 VRP 图层选项卡上的出行设置中,确保将模式设置为行驶时间。
此出行模式包括了多种设置,例如 U 形转弯策略、受限制的街道策略以及用于时间和距离成本的值。
- 在出行设置组中,确保已将时间字段单位设置为分钟,已将距离字段单位设置为英里。
- 在默认日期组中,从默认日期类型下拉列表中选择星期。
- 从星期的结果下拉列表中,选择星期一。
- 在输出几何组中,从输出几何线性 Shape 类型下拉列表中选择沿网络。
注:
此输出几何选项仅对路径的显示有影响,而对 VRP 求解程序所得出的结果没有任何作用。
- 在高级组中,单击聚类下拉箭头,然后选择不执行聚类
如果您选择聚类,在求解分析时,空间聚类将自动关闭,且在求解完成时,您将收到以下警告消息“当路径区域不为空时,已禁用停靠点的空间聚类。”
运行分析
运行 VRP 分析,来确定最佳的路径分配。
- 在 VRP 图层选项卡上,单击运行 。
VRP 求解程序会计算各车辆的路径。 各路径均从某一站点始发,车辆接待一名或多名乘客(乘客在车辆上度过的时间应小于在需求点对中指定的 MaxTransitTime 值),到达对应的医院后停车让乘客下车,然后继续接送其他乘客,最终返回至起始站点。 路径所服务的停靠点必须位于为其分配的路径区内。
注:
在 TimeWindowStart 和 TimeWindowEnd 字段中,12/30/1899 将被解释为“今天”。 有关详细信息,请参阅日期和时间。