需要 Network Analyst 许可。
通过 ArcGIS Network Analyst 扩展模块,您可使用历史流量信息来构建在道路上行驶的基于时间的速度模型。这样,您所预期的行驶时间和抵达时间就会变得非常可靠,并且您实际所花费的行驶时间可能会少于在忽略流量模式情况下所花费的行驶时间。
创建可在 Network Analyst 中使用的历史流量数据
即使您从第三方获取了数据,最好也要详细了解历史流量数据的创建过程,以便您可在网络数据集中对其进行合理配置。该部分概述了 Network Analyst 所采用的模型。
由于流量数据可捕捉到行驶速度的持续起伏情况,所以某条边的每一行驶方向都会因每天时间的不同而出现成本随之变化。这与典型的成本属性不同,典型的成本属性仅允许每个边方向有一个值。
可以使用多种不同的方法对每个边方向构建多个成本模型。要了解 Network Analyst 使用特殊模型的原因,就必须了解最直接的构建流量模型的方法可能具有的缺点。
Network Analyst 为何不能对历史流量进行建模
存储历史流量数据的一种方法是针对每条边创建一系列成本。这些成本表示一周内每天的不同时间的流量速度。例如,以 1 小时为间隔一周可划分为 168 个独立单元。这意味着每条边都需要 168 个成本属性来表示一周时间内流量的变化趋势。如果将时间跨度缩短至 5 分钟的间隔以提供更好的时态分辨率,则每条边将需要 2,016 个成本属性。存储所有这些唯一值会占用很大的空间,特别是对于大型网络而言。此外,由于许多街道在一天中都会产生相同的成本,所以存在许多不必要的重复数据。鉴于上述原因,对于 Network Analyst 来说,这种建模方式是不可行的。
Network Analyst 如何对历史流量进行建模
ArcGIS 使用规一化模型来最小化流量数据,用于取代存储每个要素的所有流量信息的操作。也就是说,ArcGIS 并未存储各要素的 168 或 2016 个成本属性,而只是创建一个关联表来保存该信息。表中的每一行包含一天中各时间间隔的速度或行驶时间(可选)。一行对应一个流量剖析,表示速度在一天之中的变化过程。例如,如果许多二级、时速限制为 35 英里/小时的街道,其一天中的行驶速度变化一致,则可在流量剖析表中创建单独一行,来表示这些动态变化,并使所有这些街道都指向同一行或流量剖析。下面您将看到进一步的优化流量剖析,以便在一天中,即使道路的速度限制发生变化,但只要遵循同一流量模式,也可参照相同的流量剖析。
为更好地理解该流量模型,假设在一周中(从星期一开始),您需要使用该模型来记录和存储单行线的行驶速度。首先,您要确定畅通情况下的行驶速度,该速度是在无其他流量阻碍车辆移动的情况下,车辆的行驶速度。请根据您的需要确定畅通行驶的速度,不过该速度通常是速度限制函数,或者在没有其他车辆时,观测到某些车辆驶过的平均速度。假设您选择将观测到的车辆平均速度作为畅通行驶速度,并将畅通行驶速度规定为 70 英里/小时。
接下来,您可以按照相等的时间间隔或时间段进行全天观测。您所选择的时间间隔确定了您的数据的时态分辨率。您可选择时间间隔为 1 小时、10 分钟等。假设您选择以 5 分钟为时间间隔。您的观测值将以畅通行驶速度的比例因子来记录。将该比例因子限制在 0 到 1 范围内。例如,假定在上午 8:00,您观测到车辆行驶速度为 28 英里/小时。这是畅通行驶速度的 0.4 倍。在下午 5:00,车辆的平均行驶速度为 60 英里/小时,它大约是畅通行驶速度的 0.85 倍。在夜里 11:00,道路上几乎没有车辆,它们的平均行驶速度为 70 英里/小时,这与畅通行驶速度相等 - 该比例因子为 1。
当天的观测完成后,您需要参照一张流量剖析表并选择一种与观测到的全天相对速度变化最匹配的流量剖析曲线。
可选择流量剖析 68(如下图表所绘)来表示每周一的路段行驶时间。
您或许可以同时选择多个流量剖析(曲线)以供进一步的深入分析。当您使用大量的流量剖析(曲线)时,才可能对行驶时间进行更精确地建模。不过,如果您使用了较少的流量剖析(曲线),则可减少数据所需占用的空间。最终目的是在精度与空间需求之间寻找一个良好的平衡。对于大型街道网络,随处可见数十个甚至上百个流量剖析(曲线),这种情况十分常见。
既然您已选择了一个针对星期一的流量剖析,那么您就需要也针对一周内的其他各天重复该过程。下面是对整个过程的回顾:
- 观测或计算路段上的畅通行驶速度。(无需重复此步骤,因为无论是星期几,畅通行驶时间都相同。)
- 观测全天某一等时间间隔内的平均行驶速度。
- 将该速度转换为畅通时段行驶速度的比例因子(0 到 1)。(如果直接对行驶时间建模而非行驶速度,则比例因子必须大于或等于 1。)
- 选择一个流量剖析(曲线)来表示一周内该天的路段流量。
您要确定流量剖析 68 是否也适用其他所有工作日时的这一路段。我们通常假定这一剖析曲线是适用的,因为在所有工作日内,常规流量模式通常都是相同的。不过您很快就会发现,也存在各工作日使用不同的典型剖析(曲线)的情况,例如:星期一、星期二和星期三使用相同的剖析(曲线),而星期四和星期五则共用另一不同的剖析(曲线)。
一般情况下,各条路段在星期六和星期日的交通流量低而平稳,因此您可选择“流量剖析曲线 3”(见下图)来表示周末的行驶时间。
接下来,在表中存储畅通行驶速度以及路段与流量剖析之间的关系:街道 - 剖析”连接表。下一部分将查看该表及其他所需输入。
在地理数据库中存储数据及关系
如果您要创建一个包含历史流量数据的网络数据集,则在地理数据库中需要一个或多个线要素类以及两个表。线要素类表示街道,必须存储在一个要素数据集中。速度剖析存储在其中一个表中,而路段与速度剖析之间的关系则存储在另一个表中。以下各部分介绍了在网络数据集中设置历史流量所需的项目及字段。
街道要素类
各街道要素都有一个唯一标识符:ObjectID 值。“街道-剖析连接表”通过唯一标识符在街道与其各种流量剖析之间建立关系。
其他字段或许可在设置历史流量时派上用场。以下列出了其他字段,稍后将在本主题中予以详细描述。
字段 | 字段名称示例 | 说明 |
---|---|---|
时间中立的行驶时间 | FT_Minutes TF_Minutes | 在一个加入了流量的路径分析或车辆配送 (VRP) 分析中对位置进行排序时,则可使用该字段创建一个网络成本属性 |
工作日行驶时间 | FT_WeekdayMinutes TF_WeekdayMinutes | 当某路段不存在一个与某工作日关联的历史流量剖析时,则可使用该字段创建一个网络成本属性 (时间中立的行驶时间也经常用作特定于工作日的行驶时间) |
周末行驶时间 | FT_WeekendMinutes TF_WeekendMinutes | 当某路段不存在与星期六或星期日相关联的流量剖析(曲线)时,则可使用该字段创建一个网络成本属性 |
时区 | TimeZoneID | 当某路径网覆盖了多个时区时,则需要用该字段来创建一个时区网络属性 |
剖析表
流量剖析表中的每条记录都包含唯一的标识符和多个用于存储每天不同时间的畅通行驶速度比例因子的字段。因为要将每天的时间分割为多个相等的时间间隔或时间段,因此您需要对 24 小时进行等分。例如,如果某时间段的长度为 5 分钟,则有 288 个字段(12:00–12:05 a.m. 对应一个字段,12:05–12:10 a.m. 对应一个,依此类推)。
在 Network Analyst 教程数据中,旧金山地理数据库中包含了以 5 分钟为时间段的全天剖析。SpeedFactor_0000 字段包含午夜到 12:05 a.m. 的畅通行驶速度比例因子。SpeedFactor_1140 字段包含 11:40 a.m. 到 11:45 a.m. 的倍数。当街道要素与剖析关联时,即可获得全天任意时间的预期行驶时间。例如,如果街道与剖析 16 关联(如下图所示),您就可将街道畅通行驶时间与剖析的 SpeedFactor_1140 值 (0.889) 相乘,计算出 11:41 a.m. 时刻的预期行驶时间。
街道-剖析连接表
“街道-剖析”连接表可识别街道要素、畅通行驶速度(或行驶时间)及其所关联的一周中每天的流量剖析。下表列出了必填字段、字段名称示例、所允许的数据类型及简短描述:
字段 | 字段名称示例 | 数据类型 | 说明 |
---|---|---|---|
边要素类标识符 | EdgeFCID 必须将该字段命名为 EdgeFCID。 | 长整型 | 标识用于存储街道要素的要素类。 |
边要素标识符 | EdgeFID 必须将该字段命名为 EdgeFID。 | 长整型 | 标识街道要素。 |
边的起始位置 | EdgeFrmPos 必须将该字段命名为 EdgeFrmPos。 | 双精度型 | 与 EdgeToPos 结合使用,识别行驶方向或街道某侧。零(即 0)表明由线要素的数字化方向定义其起始位置。一(即 1)表明其另一侧位置。 例如:EdgeFrmPos 值为 0 同时 EdgeToPos 值为 1 标识了线要素的右侧(假定右侧通行)。在同一记录中列出的流量剖析则表示了街道右侧的流量。 任意十进制数都指定了沿要素数字化方向的某个位置,因此,在利用融合网络工具对各边进行融合之后,仍可保持正确的街道剖析。 |
边的终止位置 | EdgeToPos 必须将该字段命名为 EdgeToPos。 | 双精度型 | 与 EdgeFrmPos 结合使用,识别行驶方向或街道某侧。 |
基本速度字段 或 基本行驶时间字段 | BaseSpeedKPH 或 FreeflowMinutes | 浮点型或双精度 | 畅通行驶速度。或者,畅通行驶时间。 作为基本速度字段,它可表示千米/小时或英里/小时。作为基本行驶时间字段,它可表示天数、小时数、分钟数或秒数。 |
星期日的剖析字段 | Profile_1 SundayProfile | 短整型或长整型 | 对于由 EdgeFCID、EdgeFID、EdgeFrmPos 及 EdgeToPos 识别的街道部分,可最好地表示出星期日流量模式的剖析表的对象 ID。 |
星期一的剖析字段 | Profile_2 MondayProfile | 短整型或长整型 | 可最好地表示出星期一流量的剖析表的对象 ID。 |
星期二的剖析字段 | Profile_3 TuesdayProfile | 短整型或长整型 | 可最好地表示出星期二流量的剖析表的对象 ID。 |
星期三的剖析字段 | Profile_4 WednesdayProfile | 短整型或长整型 | 可最好地表示出星期三流量的剖析表的对象 ID。 |
星期四的剖析字段 | Profile_5 ThursdayProfile | 短整型或长整型 | 可最好地表示出星期四流量的剖析表的对象 ID。 |
星期五的剖析字段 | Profile_6 FridayProfile | 短整型或长整型 | 可最好地表示出星期五流量的剖析表的对象 ID。 |
星期六的剖析字段 | Profile_7 SaturdayProfile | 短整型或长整型 | 可最好地表示出星期六流量的剖析表的对象 ID。 |
下图中标题为 Streets_DailyProfiles 的表是一个“街道-剖析”连接表示例。字段 PROFILE_1 表示星期日的剖析字段;PROFILE_7 表示星期六的剖析字段;PROFILE_2 到 PROFILE_6(未显示)表示星期一到星期五的剖析字段。
请参见选中的记录 (ObjectID 111)。它将一周内每天的剖析与街道要素(对象 ID 为 28803)的“自-至”侧相关联。通过 EdgeFrmPos 及 EdgeToPos 值来识别街道的“自-至”方向,这两个值分别为零(即 0)和一(即 1)。流量剖析 12 表示了星期日和星期六街道的“自-至”侧的流量曲线,因为 PROFILE_1 和 PROFILE_7 字段的值都是。SPFREEFLOW 字段表明了在畅通行驶的条件下,沿“自-至”方向的路段的行驶速度。
现在查看前两条记录。第一条记录(对象 ID 109)存储了“至-自”方向上路段的剖析,第二条记录(对象 ID 110)则存储了相反方向上同一路段的剖析。这一点可以从 EdgeFCID 和 EdgeFID 值(二者的值相同)以及 EdgeFrmPos 和 EdgeToPos 值(二者的值相反)判断得知。另请注意,它们的星期日和星期六的剖析字段值均为零。这就意味着未收集这两天的数据或未选择这两天的剖析。当估算该路径上星期六或星期日的历史行驶时间时,赋值器将需要回退到在边流量赋值器中定义的次级成本属性。