优化城市废弃物收集路线
旧金山的一小段路需要重新规划周一的住宅废弃物收集接送路线。 他们有三辆小型双厢卡车,可以装载 450 个垃圾箱到废弃物车厢,325 个垃圾箱到可回收车厢。 废弃物收集求解程序旨在为垃圾车创建路线,在一天内划分单个区域的居住区。
在本教程中,您将使用废弃物收集求解程序来优化旧金山这个地区的周一垃圾车路线。 您将学习如何配置废弃物收集分析图层,根据对当地的了解调整输出,并生成路线报告。
注:
本教程中使用的数据是虚构的,仅用于在上述示例场景中求解。
获取数据
本教程的数据可供下载。
请转至数据下载页面。
单击下载按钮将文件保存到本地。
解压下载的文件。
创建地图
要创建地图,请完成以下步骤:
启动 ArcGIS Pro。
单击地图模板以创建工程。 可以选择性地更改工程的名称和位置。
单击确定。
随即出现具有地图的新工程。
将教程数据添加到工程中
网络数据集是道路系统的智能模型。 其不仅包含道路的位置和属性,而且还包含有关道路如何彼此关联(例如,哪些道路相连、相连的道路之间允许或禁止哪些转弯)的信息及其他影响可能的行驶路线和行驶时间的信息。
注:
废弃物收集求解程序仅可使用 ArcGIS Pro 内部的本地网络数据集,或是依托其 ArcPy 功能运行。 该功能目前在 ArcGIS Online、ArcGIS Enterprise 中无法使用。
要将网络数据集添加到地图,请完成以下步骤:
在目录窗格(默认情况下,位于应用程序的右侧)上,右键单击文件夹,然后选择添加文件夹连接
。随即出现添加文件夹连接对话框。
浏览到您放置了教程数据的文件夹,双击 Network Analyst,然后单击教程以选择该文件夹。
单击确定。
随即创建一个与教程文件夹之间的连接。
接下来,将文件夹中包含的网络数据集添加到地图中。
在目录窗格中,展开 Folders > Tutorial > SanFrancisco.gdb > Transportation。
将 Streets_ND(具有一个网络数据集图标
)拖放到地图上。网络数据集将被添加到内容窗格以及地图中。
在内容窗格中,取消选中 Streets_ND 以仅显示底图。
添加 Houses 要素类
周一需要收集垃圾的住宅区已经被转换成要素类,其中包含每家有多少个废弃物收集箱、回收箱和庭院垃圾箱的信息。 您可以使用地理编码根据您自己的地址数据创建要素类。
在目录窗格中,展开 Folders > Tutorial > SanFrancisco.gdb > Analysis。
将 Houses 要素类拖动到地图上。
该要素类将被添加到内容窗格以及地图中。
在内容窗格中,右键单击 Houses 要素类,然后选择缩放至图层。
创建废弃物收集分析图层
废弃物收集求解程序是车辆配送 (VRP) 求解程序的一个专用版本,其重点是优化使用从单个起始站点调度的垃圾车在单个区域内单日从住宅区收集家庭垃圾的过程。 废弃物收集分析图层允许您配置分析的输入和设置并查看分析结果。 您可以添加有关客户、车辆、司机以及路线的起点和终点位置以及清空垃圾车的更新点位置的信息。 使用与图层相关的废弃物收集选项卡,您可以配置分析设置,例如开始时间和测量单位。 求解分析后,您可以访问输出并生成报告。
要创建废弃物收集分析图层,请完成以下步骤:
在分析选项卡的工作流组中,单击网络分析 > 废弃物收集。
废弃物收集分析图层将添加到内容窗格中。 它包括多个含有分析输入和输出的子图层。
此图层将参考 San Francisco 网络数据集,因为在创建废弃物收集图层时,该网络位于内容窗格中。
注:
要查看或更改用于创建网络分析图层的网络数据源,请在分析选项卡上的工作流组中,单击网络分析下拉菜单并查看网络数据源。 若网络数据源引用的是 ArcGIS Online 或 ArcGIS Enterprise,废弃物收集图层将为灰显状态。
在内容窗格中,单击废弃物收集以选择图层组。
废弃物收集图层选项卡随即出现在应用程序的顶部中央。
点击废弃物收集图层,查看功能区上的可用设置。
您将通过这些设置配置废弃物收集接送路线。
提示:
仅当在内容窗格选中废弃物收集图层或其子图层时,废弃物收集图层选项卡才会显示。 此外,如果存在多个废弃物收集图层,则每个图层都拥有独立的选项卡。 可以单独更改这些图层的设置,或选择多个图层来编辑所有选定图层(如果它们共享相同的网络数据源)的设置。
添加停靠点
停靠点用于指定客户的相关信息。 可以指定每个停靠点的信息,例如预计司机在该位置停留的时间以及最多两个部分需要收集的废弃物量(例如,垃圾填埋场垃圾和回收站)。
要添加停靠点,请完成以下步骤:
在内容窗格中,选择废弃物收集图层以启用选项卡。
单击废弃物收集图层选项卡,然后在输入数据组中,单击导入停靠点
按钮。将打开添加位置对话框。
选择房屋作为输入位置。
在步骤 4 到 7 中,您将执行字段映射。 这是为了确保要素类中的有关房屋的信息正确映射并填充到 Stops 子图层中的匹配字段。 废弃物收集求解程序需要每个停靠点的名称唯一。 此外,您需要映射废弃物和回收站计数。 废弃物将进入车厢 1,因此将映射到
Bins_1字段。 可回收垃圾将进入车厢 2,因此将映射到Bins_2字段。在字段映射下,从属性部分中选择名称。
在字段名称下拉列表中选择 ID。
由于每栋房屋都有唯一的 ID,因此 ID 被映射到 Stops 子图层上的名称字段。
在字段映射中,选择 Bins_1,在字段名称下拉列表中,选择 WasteBins。
在字段映射中,选择 Bins_2,在字段名称下拉列表中,选择 RecycleBins。
在这种情况下,使用家庭拥有的垃圾箱数量来追踪每个部分的数量。 但是,已通过估计重量或体积来追踪。
单击确定。
房屋将添加到 Stops 子图层。

现在,您将基于正在收集的垃圾箱数量更新服务时间。
在内容窗格中,右键单击 Stops 子图层,然后选择属性表。
在属性表中,右键单击 ServiceTime 字段,然后选择计算字段。
将显示计算字段对话框。
在步骤 11 和 12 中,您将根据要收集的垃圾箱数量计算服务时间,但需要同时考虑废弃物和回收站。 收集每个垃圾箱需要 30 秒,也就是 0.5 分钟。
将 ServiceTime 值设置为 (!Bins_1! + !Bins_2!) * 0.5。
窗口应与以下界面类似:

单击确定。
ServiceTime字段现已使用适当的值填充。关闭属性表。
将车库位置添加到 Depots 子图层
站点是路径在一天中的开始和结束位置。 所有路径都必须在同一位置开始和结束。 在本分析中,车库将被用作站点。 车库的地址可以使用定位窗格进行地理编码。
注:
使用 ArcGIS 世界地理编码服务的添加至要素类选项会消耗积分。 使用提供的定位器不会消耗配额。
要添加车库的位置,请完成以下步骤:
在目录窗格中,浏览至教程数据的位置,右键单击 SanFranciscoLocator.loc,然后单击添加到工程。
单击地图选项卡,在查询组中,单击定位按钮
。
定位窗格随即显示。
单击搜索框旁边的选项下拉箭头。

取消选中所有可用定位器,SanFranciscoLocator 除外。
在搜索框中,输入车库的地址 2159 Chestnut St, San Francisco, CA, 94123,然后按 Enter 键。
在定位窗格中,右键单击选项 A,然后选择添加至要素类。
添加至要素类窗口随即显示,您可以在此处选择要将地址添加到的要素类。
展开废弃物收集站点,选择 Depots 模板,然后单击确定。
在内容窗格中,右键单击 Depots 子图层,然后选择属性表。
属性表中添加了一行,表示唯一的车库位置。 车库的完整地址作为站点的名称。
关闭属性表。
在编辑选项卡上,执行以下操作:清除选择并保存编辑内容。
在选择组中,单击清除
以清除选定的要素。在管理编辑内容组中,单击保存
以保存编辑内容。
关闭定位窗格。
向 Routes 子图层添加信息
路径包含有关车辆和驾驶员的信息。 可以包含关于驾驶员工作日的信息,例如开始工作的时间以及一天内的工作时长。 也可以包含车辆信息,例如容量。
如果此信息已存在于表或要素类中,则可以使用停靠点的添加位置选项将该信息加载到图层中。 但是,如果您只是了解业务约束,则可以将其添加到添加车队配送路线地理处理工具中,以将其添加到表格形式。 在这种情况下,可以使用三条路径,并且它们始于车库位置并终止于车库位置。 还将包括每辆车分别可以在车厢 1 中收集 450 个垃圾桶和在车厢 2 中收集 325 个垃圾桶和回收站。
路径捕获有关车辆和司机的信息。 MaxBins_1、MaxWeight_1、MaxVolume_1、MaxBins_2、MaxWeight_2 和 MaxVolume_2 字段是车辆的约束。 它们表明车辆在需要前往垃圾填埋场或转运站清空垃圾之前可以容纳的最大垃圾量。 如果司机工作日还有时间,则车辆可以收集更多废弃物。 字段 MaxTotalTime 和 MaxTotalDistance 指的是整个路径持续时间的约束。 路径不会超出这里指示的整个工作日的时间或距离。
注:
首先添加站点信息很重要,以便站点名称可用于 Routes 子图层。 StartDepotName 和 EndDepotName 需要与站点的 Name 字段完全匹配。
要向 Routes 子图层添加路径及其他信息,请完成以下步骤:
在内容窗格中,右键单击废弃物收集图层组名称,然后选择缩放至图层以缩放至完整范围。
返回废弃物收集图层选项卡。
在输入数据组中,单击导入路径下拉菜单,然后选择添加路径。
随即显示添加车队配送路线对话框。
设置以下值:
路径数量 - 3
有三辆垃圾车可用,因此这是他们可以发送的最大路径数量。
起始站点名称 - 2159 Chestnut St, San Francisco, CA, 94123
路径必须在车库开始和结束,因此起始站点名称和终止站点名称值都是车库的地址。
您可以从下拉列表中选择起始站点名称,该值必须与 Depots 子图层中
Name字段的值一致。终止站点名称 - 2159 Chestnut St, San Francisco, CA, 94123
您可以从下拉列表中选择终止站点名称,该值必须与 Depots 子图层中
Name字段的值一致。MaxBins_1 - 450
每辆车的车厢 1 最多可以容纳 450 个垃圾桶。 重要的是,用于 MaxBins_1 的部分与用于 Bins_1 的部分相匹配,在本例中是垃圾箱的数量。
MaxBins_2 - 325
每辆车的车厢 2 最多可以容纳 325 个垃圾桶。 重要的是,用于 MaxBins_2 的部分与用于 Bins_2 的部分相匹配,在本例中是回收站的数量。
单击确定以运行工具。
三条路径随即添加到 Routes 子图层。
调整出行模式
对于废弃物收集来说,调整出行模式以适应卡车的能力和驾驶政策非常重要。 通常,这些卡车的驾驶限制比普通人驾驶车辆的驾驶限制更少,例如可以穿过大门或在私人道路上行驶。 在这种情况下,网络只有两个限制:单行道和转弯限制。 您将保留这些限制,但将调整 U 形转弯策略。 该区域内的卡车只允许在尽头街道掉头。
在废弃物收集图层功能区中的出行设置部分,单击右下角的启动器按钮
。这将打开图层属性页面,其中出行模式为活动选项卡。
展开** U 形转弯**部分。
从下拉列表中选择死胡同,然后单击确定。
这会将功能区上的出行模式调整为**<行驶时间>**。 括号表示的是自定义的出行模式。 还可以在网络数据集本身上设置出行模式,以允许使用标准出行模式进行分析。
设置分析参数并运行分析
现在您将设置路径的开始时间和最长总时间以及停靠点的收集模式。 可以分别为每条路径和每个停靠点设置这三个值,但由于它们对于此分析而言是同质的,因此很容易将它们设置为图层功能区上的默认参数。
在废弃物收集图层功能区的时间部分,将默认路线当日起始时间设置为上午 6:00。
此外,在时间部分,将最长总时间设置为 360。
图层的时间单位仍设置为默认值分钟。 因此这将每日最长工作时间设置为 360 分钟或 6 小时。
在高级部分中,将收集模式下拉菜单设置为单侧收集。
这表示该路径将一次性收集街道一侧的所有物品,然后在不同时间返回该街区,收集街道另一侧的所有物品。 即使对于单行道也是如此,只不过单行道不会沿着街道的每个方向行驶,而是会继续遵循所需的车流,但会指示应在哪一侧路边进行收集,并且街道的两侧将分别收集。
在分析组中,单击运行。
废弃物收集求解。 停靠点被分配到路径,符号系统更新为创建路线并按照默认颜色比例显示分配的停靠点。

检查单行道
有两个街区是单行道。 在当前设置下,这些街区将被遍历两次,分别收集每个路边的废弃物。 在某些情况下,同时收集两个街边是有意义的,只需沿街行驶一次。 为此,您将使用 Stops CollectionMode 属性字段来指示您只想一起收集这些街区的两侧。
如果 Streets_ND 网络数据集图层不在内容窗格中,请再次添加。
选中图层以使其可见。
右键单击 Streets_ND,然后选择符号系统。
选择符号化网络数据集图层的边线选项。

选中绘制边,从要使用的符号系统下拉菜单中选择约束条件状态。
切换到符号化网络数据集图层的流量线选项。
取消选中绘制流量。
在我们研究区域的东北部,Moulton St 显示单行道箭头,表明这是一条单行道,行驶方向为从东向西。 同样,向南两条街的 Pixley St 是一条单行道,行驶方向是从西向东。 查看 RouteLines 子图层中的收集边序列,可以看到这两条街道都被遍历了两次,一次在街道右侧收集,一次在街道左侧收集。
按照以下步骤选择这两条街道边上的所有停靠点:
选择一条街道边上的一个停靠点并记下
SourceOID。对另一边重复相同操作。
打开 Stops 子图层的属性表,然后单击按属性选择
。按属性选择对话框随即显示。
根据上面提到的两条街道的
SourceOID设置查询,以便选择这两条街道两侧的停靠点。
两条单行道上的停靠点均被选中。

右键单击
CollectionMode字段,然后选择计算字段。在表达式类型下拉菜单中,选择 Arcade 并设置以下查询:
DomainCode($feature, 'CollectionMode', 'Both sides')这是两侧的编码值属性域。 确保正在使用选择,因此只有这两个边缘上的停靠点才会被赋予两侧的收集模式。 这些停靠点将与两侧一起收集,其余停靠点在属性表中是空值,使用默认停靠点收集模式设置为单侧收集。 您可以通过打开 Stops 子图层的属性表并双击
CollectionMode的字段行来检查属性域值。
在分析组中,单击运行返回分析。 检查这些街道的收集方式是如何变化的。

在内容窗格中,取消选中 Streets_ND 网络数据集图层。
将更新点添加到模型
对于废弃物收集,通常会让垃圾车前往垃圾填埋场或转运站,清空车辆后再继续行驶。 这被建模为更新点和路线中途站。
将转运站添加到 Renewals 子图层。
单击地图选项卡,在查询组中,单击定位按钮
。
定位窗格随即显示。
在搜索文本框中,输入转运站地址,ALANA WAY, BRISBANE, CA, 94005,然后按 Enter 键。
在定位窗格中,右键单击选项 A,然后选择添加至要素类。
添加至要素类窗口随即显示,您可以在此处选择要将地址添加到的要素类。
展开废弃物收集:更新点,选择 Renewals 模板,然后单击确定。
在内容窗格中,右键单击 Renewals 子图层,然后选择属性表。
属性表中添加了一行,表示唯一的转运站位置。 转运站的完整地址已作为更新点的名称。
将
Name字段内的值,从上一步添加的完整地址修改为 TransferStation。关闭属性表。
在编辑选项卡上,清除选择并保存编辑内容。
关闭定位窗格。
在 Routes 和 Renewals 之间添加连接。 为此,您将使用 Routes 子图层中的路线名称以及
RenewalName和ServiceTime字段的特定值来填充 Route Renewals 子图层。在废弃物收集图层功能区的输入数据部分中,选择导入更新点下拉菜单并选择导入路线中途站。
将打开添加位置对话框。
对于输入位置,选择废弃物收集/路径。
对于字段映射,请执行以下操作:
将 RouteName 映射至名称
对于 RenewalName,设置 TransferStation 的默认值。 其拼写和大小写必须与 Renewals 子图层中的
Name字段完全匹配。对于 ServiceTime,设置默认值 20,表示卡车卸载需要 20 分钟。
单击确定。
减少路径容量以要求更新点并解决
尽管在正常情况下不会这样做,但在这里这样做只是为了展示更新点的用途。
在内容窗格中,右键单击 Routes 子图层,然后选择属性表。
在属性表中,右键单击
MaxBins_1字段,然后选择计算字段。将显示计算字段对话框。
设置
MaxBins_1 = 225。单击确定。
三条路径的
MaxBins_1字段均更新为 225。关闭属性表。
在废弃物收集图层选项卡的时间部分中,将最长总时间设置为 480,以考虑往返转运站的额外时间。
在分析组中,单击运行。
废弃物收集求解。 右键单击 Stops 子图层,然后选择缩放至图层。 停靠点被分配到路径,符号系统更新为创建路线并按照默认颜色比例显示分配的停靠点。

在废弃物收集图层功能区的报告部分,单击路径报告按钮。

将报表导出为 PDF 地理处理工具打开。
运行工具以生成报表的
.pdf文件。
在目录窗格的报告部分,可以找到复制的报表文件。 要自定义报表文件,您可以从这里打开报表并使用报表的全部功能。 或者选择计算机上的位置来保存文件并运行地理处理工具来查看报表 .pdf 文件。
