需要 Network Analyst 许可。
可通过 ArcGIS Network Analyst 扩展 使用历史流量信息对在道路上行驶的时间相关速度进行建模。这样,您所预期的行驶时间和抵达时间就会变得非常可靠,并且您实际所花费的行驶时间可能会少于在忽略流量模式情况下所花费的行驶时间。
提示:
Network Analyst 教程数据可在 ArcGIS.com 上找到,其中包含了一个具有流量数据的旧金山地理数据库。研究 SanFrancisco.gdb 中的 Streets 要素类、DailyProfiles 表以及 Streets_DailyProfiles 表,可补充您在本主题中了解的内容。下载和提取数据后,您可在 \Network Analyst\Tutorial\SanFrancisco.gdb 中找到旧金山地理数据库。
注:
流量仅能在地理数据库中进行配置,而在基于 shapefile 的网络数据集中无法配置。
历史流量特性属性
历史流量选项卡用于显示可在支持历史流量的网络数据集上配置的属性。
- 速度 - 如果历史流量数据基于速度,选择速度。
- 行驶时间 - 如果历史流量数据基于时间,选择行驶时间。
- 流量剖析 - 使用以下表可设置流量剖析表的属性:
属性 说明 剖析表
包含流量剖析信息的表的名称。
第一个时间片字段
此属性连同最后一个时间片字段指定查找历史流量剖析表时采用的时间范围。无论何时,若您计算该范围之外的当日时间的路径流量,其倍数都假设为一。在基本没有流量信息的情况下,该假设可加快查找当日各时间的成本。
最后一个时间片字段
详情请参阅第一个时间片字段。
指定每个时间片的持续时间(以分钟为单位)
流量剖析表必须按照一天内的等分时间间隔进行划分。该属性指定了以分钟为单位的间隔长度。
指定第一个时间片的起始时间
该属性用于识别以第一个时间片字段为开始时间时所代表的当日时刻。
例如,如果第一个时间片字段设置为 SpeedFactor_0000(从中午 12:00 开始),则第一个时间片的起始时间将设置为 12 AM。
最后一个时间片结束时间
该属性指定以最后一个时间片字段为结束时间时所代表的当日时刻。会根据时间片字段数以及“每个时间片的持续时间(以分钟为单位)”值自动推算。
- 剖析分配 - 此部分用于将剖析分配给街段并建立基线值。
属性 说明 街道 - 剖析表
包含街道畅通行驶速度(或行驶时间)及街道与流量剖析之间关系的表的名称。
畅通行驶时间字段或畅通行驶速度字段
此属性名称取决于为历史流量数据选择了行驶时间还是速度。此属性指示包含畅通行驶时间的字段,如果数据以速度为依据则指示包含畅通行驶速度的字段。
畅通行驶字段单位
此属性表示在畅通行驶时间字段中指定的字段时间单位,如果数据基于速度,则表示在畅通行驶速度字段中指定的速度单位。
- 星期日字段
- 星期一字段
- 星期二字段
- 星期三字段
- 星期四字段
- 星期五字段
- 星期日字段
- 星期六字段
包含星期日流量、星期一流量等流量剖析 ID 的字段的名称。
创建可在 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(如下图表所绘)来表示每周一的路段行驶时间。
注:
流量剖析(曲线)中的时刻通常表示的是本地时间,即,此处引用的路径边线所处的时区为本地时区。因此,在太平洋标准时间早上 8:00,参考剖析 68 的洛杉矶某条边具有的速度为畅通行驶速度的 40%。在东部时区早上 8:00,指向同一剖析的纽约某条边具有的速度为畅通行驶速度的 40%。
当您使用大量的流量剖析(曲线)时,才可能对行驶时间进行更精确地建模。不过,如果您使用了较少的流量剖析(曲线),则可减少数据所需占用的空间。最终目的是在精度与空间需求之间寻找一个良好的平衡。对于大型街道网络,随处可见数十个甚至上百个流量剖析(曲线),这种情况十分常见。
既然您已选择了一个针对星期一的流量剖析,那么您就需要也针对一周内的其他各天重复该过程。过程汇总如下:
- 观测或计算路段上的畅通行驶速度。(无需重复此步骤,因为无论是星期几,该值都相同。)
- 观测全天某一等时间间隔内的平均行驶速度。
- 将该速度转换为畅通时段行驶速度的比例因子(0 到 1)。(如果直接对行驶时间而非行驶速度进行建模,则比例因子必须大于或等于 1。)
- 选择一个流量剖析(曲线)来表示一周内该天的路段流量。
您要确定流量剖析 68 是否也适用其他所有工作日时的这一路段。我们通常假定这一剖析(曲线)是适用的,因为在所有工作日内,常规流量模式通常都是相同的。不过您很快就会发现,也存在各工作日使用不同的典型剖析(曲线)的情况,例如:星期一、星期二和星期三使用相同的剖析(曲线),而星期四和星期五则共用另一不同的剖析(曲线)。
路段在星期六和星期日的流量低而平稳,因此可选择流量剖析 3(见下图)表示周末的行驶时间。
接下来,在表中存储畅通行驶速度以及路段与流量剖析之间的关系:街道 - 剖析表。下一部分将查看该表及其他所需输入。
在地理数据库中存储数据及关系
如果您要创建一个包含历史流量数据的网络数据集,则在地理数据库中需要一个或多个线要素类以及两个表。线要素类表示街道,必须存储在一个要素数据集中。速度剖析存储在其中一个表中,而路段与速度剖析之间的关系则存储在另一个表中。以下各部分介绍了在网络数据集中设置历史流量所需的项目及字段。
注:
通过在表中存储了唯一标识符的值,即可建立街道与速度(曲线)之间的关系;您无需再创建任何关系类。
街道要素类
各街道要素都有一个唯一标识符:ObjectID 值。街道 - 剖析表通过唯一标识符将街道与其不同的流量剖析相关联。
其他字段或许可在设置历史流量会时派上用场。以下列出了其他字段,稍后将在本主题中予以详细描述。
字段 | 字段名称示例 | 说明 |
---|---|---|
时间无关行驶时间 | FT_Minutes TF_Minutes | 创建网络成本属性以供对使用流量的路径或车辆配送分析中的位置进行排序时使用。 |
工作日行驶时间 | 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 相关联(如下图所示),则要计算上午 11:41 的预期行驶时间,可将街道的畅通行驶时间与剖析的 SpeedFactor_1140 值 (0.889) 相乘。
街道 - 剖析表
街道-剖析表用于标识街道要素、畅通行驶速度(或行驶时间)及一周中每天的关联流量剖析。下表列出了必填字段、字段名称示例、所允许的数据类型及简短描述:
字段 | 字段名称示例 | 数据类型 | 说明 |
---|---|---|---|
边要素类标识符 | 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 值(二者的值相反)判断得知。请注意,其星期日和星期六剖析字段值均为零。这就意味着未收集这两天的数据或未选择这两天的剖析。当估算该路径上星期六或星期日的历史行驶时间时,赋值器将需要回退到在边流量赋值器中定义的次级成本属性。
修改历史流量
按照以下步骤修改网络的历史流量设置:
- 打开网络数据集属性 对话框。
- 单击流量。
随即显示两个选项卡,即历史流量和实时流量。 但是,如果要使用的网络数据集在创建时未配置为支持流量,则这两个选项卡将不可用。
- 单击历史流量选项卡。
- 指定您的历史流量数据是基于速度还是基于行驶时间。
基于行驶时间的流量剖析值必须大于或等于 1,因为 1 表示畅通行驶时间,大于 1 的任何比例因子表示更长的行驶时间。与之相比,当剖析基于行驶速度时,比例因子必须介于 0 与 1 之间,其中 1 表示畅通流量速度。当比例因子接近于零时,速度也接近于零。
- 在流量剖析部分中设置属性。
- 在剖析分配部分中设置属性。
- 单击确定。
更改即会保存到网络数据集中。