需要 Network Analyst 许可。
在本练习中,您将在地理数据库中,使用圣地亚哥的街道、转弯和路标要素新建一个网络数据集。该网络数据集同样将包含历史流量数据(以及可选的实时流量数据),这样就可以查看一天中不同时间的行驶速度,并求解时间相关的网络问题。
要完成本教程练习并使用功能完整的网络数据集(可处理实时流量),您需要注册数据提供商所提供的实时流量源。之后,数据提供商会为您提供访问流量源的用户名和密码。您可在更新流量数据地理处理工具中输入用户凭据,从流量源读取数据并将它转换为 Network Analyst 可读取的格式。目前,Network Analyst 支持的数据供应商为 HERE 和 TomTom。
在本练习的最后一组步骤中,您将学习如何在 ArcMap 中可视化流量。下一个教程练习(练习 11)对根据动态流量速度求解网络分析的方法进行了说明。
创建存储实时流量文件(DTF 文件)的文件夹
启用实时流量的网络数据集依赖于来自数据提供商的持续流量文件源,以获取最新的行驶速度。在本教程练习的稍后部分,您将运行地理处理工具从流量源生成实时流量文件,称为动态流量格式 (DTF) 文件。但是现在您需要创建一个空文件夹来存储这些文件,以便在创建网络数据集时可以将其指向该文件夹。
- 打开 Windows 资源管理器。
- 在您具有读写权限的位置创建一个文件夹,命名为 TrafficFiles。例如,您可能希望在 C:\Data 创建文件夹,则完整路径为 C:\Data\TrafficFiles。
接下来,您需要创建网络数据集并将其指向 TrafficFiles 文件夹,以便网络可获得最新的行驶速度。尽管现在文件夹为空,您仍可按照固定间隔运行地理处理工具以获取 DTF 文件并对它们进行更新。
创建网络数据集
- 启动 ArcCatalog。
- 启用 ArcGIS Network Analyst 扩展模块。
- 单击自定义 > 扩展模块。
将打开扩展模块 对话框。
- 选中 Network Analyst。
- 单击关闭。
- 单击自定义 > 扩展模块。
- 在标准工具条上单击连接到文件夹按钮 。
将打开连接到文件夹对话框。
- 浏览至含有 Network Analyst 教程数据的文件夹。
教程数据的默认存储位置是 C:\ArcGIS\ArcTutor\Network Analyst\Tutorial。
- 单击确定。
文件夹的快捷方式将添加到文件夹连接下的目录树中。
- 在目录树中,展开 \ArcTutor\Network Analyst\Tutorial > Exercise10 > SanDiego.gdb。
- 单击 Transportation 要素数据集。
在 ArcCatalog 的内容选项卡上列出了要素数据集中的要素类。
- 右键单击 Transportation 要素数据集并单击新建 > 网络数据集。
将打开新建网络数据集向导。
- 输入 SanDiego_ND 作为网络数据集的名称。
- 单击下一步。
- 选中 Streets 要素类并将其作为网络数据集的源。
- 单击下一步。
- 单击是在网络中构建转弯模型。
- 选中 RestrictedTurns 以将其选作转弯要素源。
- 单击下一步。
将显示有关配置连通性的信息。本情况中因为您使用的是默认设置,所以无需在此更改任何设置。
- 单击下一步。
- 此数据集具有高程字段,因此请确保选择使用高程字段选项。为街道源的“自”端选择 F_ZLEV,而为“至”端选择 T_ZLEV。
- 单击下一步。
- 实时交通流量:街道-TMC 表部分,确保表设置为 Streets_TMC,而 TMC 字段设置为 TMC。
- 单击流量源位置来选择属性。
选项按钮显示在属性的右侧。
- 单击选项按钮。
将弹出实时流量源位置对话框。它可用于指定以下三个选项的其中之一:此时未参考任何流量源(无),文件夹中会包括 DTF 文件(文件夹)或者地理处理服务会提供网络数据集实时流量数据。
- 单击文件夹,然后单击“浏览”按钮。
将弹出实时流量源位置文件夹对话框。
- 浏览并单击您在本练习前两步中创建的 TrafficFiles 文件夹,例如 C:\Data\TrafficFiles。(请注意,您可以使用通用命名约定(即 UNC)路径引用该文件夹。如果您计划在本地计算机网络上共享多个网络数据集,则此项会很有帮助。)
- 单击确定。
实时流量源位置对话框显示了 TrafficFiles 文件夹路径。
- 单击文件夹文本框中显示的文件夹路径的末尾,并输入 \v1。
完整路径应与以下路径类似:C:\Data\TrafficFiles\v1。
- 单击确定。
TrafficFiles 文件夹会出现在新建网络数据集 向导的流量源位置属性中。
- 单击下一步。
将出现显示所有当前网络属性的页面。
- 单击 TravelTime 属性从而选择该属性,然后单击赋值器。
将弹出赋值器对话框。
- 单击源值选项卡。
- 按 Ctrl 键,然后单击以 Streets 开头的两行来选择这两行。
- 右键单击任意一行,然后选择值 > 属性。
将出现边流量赋值器对话框。
- 单击工作日下拉列表,然后选择分钟。
- 单击周末下拉列表,然后选择分钟。
- 单击确定。
将关闭边流量赋值器对话框。
- 从属性下拉列表中选择 WeekdayFallbackTravelTime,并检查源值选项卡中的属性。针对 WeekendFallbackTravelTime 重复此步骤。
请注意两组街道源的赋值器都将读取同一个 Minutes 字段。这就是您要移除这两个网络属性而在边流量赋值器中使用 Minutes 网络属性的原因。
- 单击确定关闭赋值器对话框。
- 在新建网络数据集向导中,单击 WeekdayFallbackTravelTime 然后单击移除。
- 单击 WeekendFallbackTravelTime 然后单击移除。
可以在此向导页面上配置历史和实时流量数据。设置实时流量数据需要配置历史流量数据。
地理数据库 SanDiego 中包含了两个存储历史流量数据的表:Patterns 和 Streets_Patterns。
Patterns 表用作网络数据集的剖析表。每个剖析都将描述一天中行驶速度每隔 15 分钟的变化情况。
Streets_Patterns 表用作街道-剖析表。表中的记录将边源要素与 Patterns 表中的剖析进行链接。可在一周中的每一天为源要素的每个数字化方向指定典型剖析。将街道源要素与流量剖析进行链接,可描述一整周中街道的不同流量速度。
Patterns 表中的行驶速度与畅通行驶的速度相关联,这样具有不同畅通行驶速度的许多不同源要素可共享同一个剖析。此设计将存储要求降到最低。
街道-TMC 表配合实时流量数据使用。它将源要素与标准流量消息通道 (TMC) 代码进行链接,而这些代码则依次与 DTF 文件中存储的实时行驶速度相关联。DTF 文件专门为读取和了解网络数据集而设计。更新流量数据工具通过连接到数据提供程序的流量源、读取数据进而将数据转换为 DTF 来创建 DTF 文件。在本练习稍后的部分,您将运行此工具并将输出文件存储在您创建的 TrafficFiles 文件夹中。
ArcGIS Network Analyst 扩展模块 会识别表的方案并自动在向导中配置本页面的历史流量部分。它还可以配置实时流量部分的表格,但流量源位置属性除外。
首次下载流量数据时,会向 TrafficFiles 文件夹中添加名为 v1 的文件夹。您需将其添加至所示的文件夹路径。
向导将根据您提供的一些数据来创建若干个成本属性。将根据源要素数据中名称相似的属性自动创建 Minutes 和 Meters。TravelTime 属性将根据您在新建网络数据集向导的流量页面中填写的信息进行创建。将创建 WeekdayFallbackTravelTime 和 WeekendFallbackTravelTime 属性来支持 TravelTime 属性。这些网络属性中的每一种都具有确定属性值的赋值器。TravelTime 属性具有边流量赋值器,您将在下组步骤中进行检查。
注意系统会列出赋值顺序。因为您已配置实时流量,赋值器首先将通过查找 TrafficFiles 文件夹中的相关 DTF 文件来尝试在实时流量数据中检索行程成本。由于现在文件夹为空,赋值器会回退到历史流量。类似的,如果给定时间或街道的实时流量不可用,网络数据集会尝试使用下一个最佳选项:历史流量。如果历史流量数据不可用,则基于在一周中哪一天查询数据情况的不同,行程成本将在成本属性(在工作日或周末属性中指定)中进行检索。
然而对于此数据集,WeekdayFallbackTravelTime 和 WeekendFallbackTravelTime 的赋值器都将从 Minutes 成本属性中提取值,这说明这两个回退属性没有真正按工作日和周末进行分解。要更清楚地阐明这些值是相同的这样一种事实,您将更改工作日和周末以直接从 Minutes 进行读取,然后从网络数据集中移除 WeekdayFallbackTravelTime 和 WeekendFallbackTravelTime 属性。
配置时区属性
Network Analyst 需要一个时区属性将来自实时流量数据的日期和时间值正确转换为本地时区值。在本练习中已为您创建时区属性;当满足以下条件时将自动创建时区属性:
创建网络数据集时所在的地理数据库包含一个时区表,该表是含有名为 MSTimeZone 的文本字段的表。
在边源要素类中具有名为 TimeZoneID 的整型字段,或在时区表中正好具有一条记录。
当 Network Analyst 在边源上发现 TimeZoneID 字段时,它就会创建字段赋值器,因为 TimeZoneID 应含有将边源要素与时区表中列出的时区的 ObjectID 相关联的整数值。
如果未发现 TimeZoneID 字段,但发现在时区表中正好有一条记录,则 Network Analyst 可创建指向该时区记录的默认赋值器。当您的整个研究区域都包含在一个时区中时,这将很有用。
圣地亚哥网络数据集完全包含在同一个时区内。在以下步骤中,您将检查 Network Analyst 配置该数据集的时区网络属性的方法。
- 右键单击 TimeZoneID 属性以显示快捷菜单,然后单击关联时区表。
将出现用来表示 TimeZones 已选中的其他快捷菜单。TimeZones 为具有 MSTimeZone 文本字段的表名。Network Analyst 已识别该字段,因此自动将时区网络属性与该表关联。
- 按 Esc 键两次退出这两个快捷菜单。
- 选择 TimeZoneID,然后单击赋值器。
将弹出赋值器对话框。在源值选项卡上未定义赋值器,因为街道要素类没有 TimeZoneID 字段。
- 单击默认值选项卡。
每种源要素类型都将列在各自的行中。边行表示所有边都将分配到求值结果为 1 的常量赋值器,这与 TimeZones 表中唯一一条记录的对象 ID 值相符。该记录的 MSTimeZone 值为太平洋标准时间,因此此赋值器保证此网络数据集中的所有边将标记为处于太平洋标准时区。
- 单击取消关闭赋值器对话框。
构建网络数据集
- 单击下一步。
您可以设置一个或多个出行模式,但此练习中不需要出行模式。
- 单击下一步。
- 单击是设置方向。
- 单击下一步。
- 单击构建服务区索引复选框。
- 单击下一步。
将显示所有设置的汇总信息供您查看。
- 单击完成。
将出现进度条,显示 Network Analyst 正在创建网络数据集。
- 单击是。
将启动“构建网络数据集”进度条;构建过程结束后它会消失。
新的网络数据集 SanDiego_ND 已添加到圣地亚哥地理数据库。系统交汇点要素类 SanDiego_ND_Junctions 也已添加。
创建网络后,系统问您是否要构建它。构建过程会确定哪些网络元素是互相连接的,并填充网络数据集属性。必须先构建网络才能对其执行网络分析。
实时流量源
您已创建并构建了网络数据集。现在您可装配一种机制,将实时流量数据自动下载到 TrafficFiles 文件夹中。您创建的网络数据集设置为在 TrafficFiles 文件夹中查找当前的行驶速度。在以下各小节中,您将使用在 TrafficFiles 文件夹中生成 DTF 文件的地理处理模型工具创建 Python 脚本以运行该模型,然后创建 Windows 计划程序任务来定期运行脚本。这将为您的网络数据集提供新的实时流量数据供应。
获取数据提供商帐户
要从数据提供商下载流量数据,需要具有用户名和密码。如要使用功能全面的网络数据集(可处理实时流量)完成本教程练习,您需联系一名支持的数据提供商并设置帐户。目前,Network Analyst 支持的数据供应商为 HERE 和 TomTom。
并非所有提供商均覆盖相同的区域,并且许多区域并不在实时流量的覆盖范围内。因此为网络数据集选择数据提供商时,需考虑该提供商是否覆盖您的研究区域。更新流量数据地理处理工具中支持的两个数据提供商均具有圣地亚哥地区的流量信息,因此您可设置任何一个提供商的帐户来完成本教程练习。
打开模型工具
假设您已收到访问流量源所需的凭据,那么接下来打开运行更新流量数据的地理处理模型工具,并输入以下信息:
- 您的数据提供商
- 您的用户名和密码
- 提供圣地亚哥流量数据的数据提供商所在的区域
- 在目录树中,展开 \ArcTutor\Network Analyst\Tutorial > Exercise10 > TrafficTools.tbx。
- 右键单击下载流量数据地理处理模型并选择编辑。
在模型构建器中打开下载流量数据工具。
- 双击更新流量数据。
出现更新流量数据工具对话框。
- 单击显示帮助,在侧面板中查看参数特定文档。
- 填写工具对话框。将以下子步骤和侧面板帮助作为参考。
- 对于提供商,选择您获取数据访问凭据时所联系的数据提供商。
- 对于用户名,指定您通过数据提供商所设置的用户名。
- 对于密码,指定您通过数据提供商所设置的密码。
- 对于区域,选择覆盖加利福尼亚州圣地亚哥的区域。
- 对于流量数据输出文件夹,指定您在本教程练习第一部分中所创建的 TrafficFiles 文件夹的路径。例如,C:\Data\TrafficFiles。
- 对于以分钟为单位的预期更新间隔,指定下载新的流量文件前所经过的时间间隔。
换句话说,您希望多久更新一次流量速度? 该属性的常见值为 5、10 或 15 分钟。请确保间隔的设置频率不高于提供商更新数据的间隔;否则您会将相同的数据下载多次。
- 对于以分钟为单位的文件最长保留期限,指定自动删除流量文件之前所经过的时间间隔。文件的默认保留时间为 12 小时(720 分钟)。
您可能希望保留特定时间的实时流量速度的记录。文件的存储时间由您而定,但是它们会占用磁盘空间,并随着时间的推移逐步累积,大面积的区域累积速度更快。
- 单击确定。
工具对话框关闭,模型已更新。现在,输入、工具和输出参数具有颜色填充。
- 单击保存按钮并关闭下载流量数据模型构建器窗口。
运行 Python 脚本
在本节中,您将运行一个 Python 脚本,它调用您在上一节中所配置的地理处理模型。脚本的名称为 DownloadTraffic.py。
运行 Python 脚本或地理处理模型所产生的结果是相同的:运行更新流量数据,并在 TrafficFiles 文件夹中创建 DTF 文件。必须具有 Python 脚本,因为在本练习的下一节中,您将使用 Windows 任务计划程序按照固定时间间隔来下载流量数据。Windows 任务计划程序无法直接执行地理处理模型,因为模型工具需要在 ArcGIS Desktop 环境下运行;但是,任务计划程序可以执行 .py (Python) 文件,因为它们可从操作系统直接运行。
您将从命令提示符运行脚本,以便报告出现的任何错误消息。
- 单击开始 > 所有程序 > 附件 > 命令提示符。
- 执行以下子步骤以在命令提示符窗口中打开包含 DownloadTraffic.py 文件的文件夹。文件的默认路径为 C:\ArcGIS\ArcTutor\Network Analyst\Tutorial\Exercise10。
- 输入您要将 DownloadTraffic.py 复制到其中的驱动器名称,输入冒号,然后按 Enter 键。
例如,如果文件在 C: 盘的文件夹中,则输入 C:。
- 输入 cd,再输入空格以及包含 DownloadTraffic.py 文件的文件夹路径,然后按 Enter 键。
示例:cd C:\ArcGIS\ArcTutor\Network Analyst\Tutorial\Exercise10。
- 输入您要将 DownloadTraffic.py 复制到其中的驱动器名称,输入冒号,然后按 Enter 键。
- 输入文件名 DownloadTraffic.py,然后按 Enter 键运行脚本。
设置 Windows 计划程序任务
现在,您可在 Windows 任务计划程序中设置任务,从而每隔五分钟运行一次 Python 脚本并下载最新的实时流量数据。
- 单击开始,在 Windows 搜索框中输入 Task Scheduler,然后按 Enter 键打开 Windows 任务计划程序。
- 单击任务计划程序库。
- 在操作窗格中单击创建基本任务。
打开创建基本任务向导。
- 输入任务的名称,还可以输入任务的描述,例如,在名称中输入 DownloadTraffic,在描述中输入按照固定时间间隔下载流量,以支持 ArcGIS 网络数据集。
- 单击下一步。
将显示任务触发器页面。
- 在您希望何时启动任务?下,单击一次。
尽管目标是每五分钟运行一次任务,但是此选项不可用。现在先选择一次,稍后您便可修改任务属性,以便在指定的分钟数(而非天或周)之后运行任务。
- 单击下一步。
随即显示一次页面。
- 指定开始下载流量数据的日期和时间。在大多数情况下,使用当前时间。
- 单击下一步。
随即显示操作页面。
- 在您希望任务执行哪些操作?下,单击启动程序。
- 单击下一步。
将显示启动程序页面。
- 单击程序/脚本文本框旁的“浏览”,选择可执行的 Python 解释程序 (python.exe)。
当您使用命令行运行脚本时已提及了该文件,它通常位于以下位置:C:\Python27\ArcGIS10.1\python.exe。
- 在添加实际参数文本框中,输入 DownloadTraffic.py 文件的完整文件夹路径并使用双引号 (") 将路径括起来。
示例:"C:\ArcGIS\ArcTutor\Network Analyst\Tutorial\Exercise10\DownloadTraffic.py"
- 单击下一步。
将显示摘要页面。
- 选中单击“完成”时,打开此任务的“属性”对话框。
- 单击完成。
将显示具有任务属性的对话框。
- 单击触发器选项卡。
- 单击一次触发器并单击编辑。
将出现编辑触发器对话框。
- 在高级设置框中,选中重复任务间隔,然后从下拉列表中选择与您在 DownloadTrafficData 模型工具中所设置的以分钟为单位的预期更新间隔参数相同的值。
该属性的常用值为 5 分钟,但是也常使用 10 和 15 分钟。
- 从持续时间下拉列表中选择无期限。或者,选择其他持续时间,以确保任务在某个时间期限后停止。
- 单击确定。
编辑触发器对话框关闭。
- 您进行的属性设置适用于大多数用户,但是您还应该考虑对话框中的其他可用属性,检查它们是否阻碍任务运行。例如,如果您正在使用未接电源的便携式计算机,您应该单击条件选项卡,并取消选择仅当接入交流电源时才启动任务。
- 单击确定。
任务属性对话框将关闭。
- 进行测试以确定流量源是否设置正确,等待一段时间并确保 DownloadTrafficData 工具的输出流量数据文件夹参数中所指定的文件夹位置下具有新的流量文件。如果您使用了之前建议的文件夹位置,则您可在 C:\Data\TrafficFiles\v1 中找到流量文件;这些流量文件的后缀均为 .dtf。
- 关闭任务计划程序。
在运行 DownloadTraffic 脚本时,将出现一个黑色窗口并保持打开。脚本完成后,将在您指定的输出流量数据文件夹中创建新的流量文件。在再次运行脚本并且流量文件在输出文件夹中存在的时间超过更新流量数据工具的以分钟为单位的文件最长保留期限参数中所指定的时间之前,流量文件将一直存在。如果流量文件的存在时间超过最大期限,则删除文件。
在任务计划程序中禁用并重新启用 DownloadTraffic 任务。
在不使用本教程练习时,您可能想阻止运行任务和脚本。本节中的步骤可供您参考,但是如果您要继续进行本练习的剩余部分或练习 11,则先不要完成这些步骤。
- 单击开始,在 Windows 搜索框中输入 Task Scheduler,然后按 Enter 键打开 Windows 任务计划程序。
- 单击任务计划程序库。
- 在任务列表中找到 DownloadTraffic 任务。右键单击它并选择禁用。
创建并构建网络数据集后,可设置地理处理模型来下载实时流量数据并隐藏您的用户名和密码。通过 Python 文件运行模型来确保其可以从操作系统直接运行,从而可通过 Windows 任务计划程序来运行。最后,您在任务计划程序中创建任务来定期运行脚本。这样一来,便可持续提供网络数据集可访问的最新流量数据(DTF 文件)。
可视化流量数据
您的圣地亚哥网络数据集已准备好在地图中显示实时流量状况。
- 单击 ArcMap 按钮。
- 如果 ArcMap - 启动对话框出现,则单击取消。
- 单击添加数据按钮 。
- 浏览至您刚刚创建并构造的 SanDiego_ND 网络数据集。
- 单击 SanDiego_ND 来选择它,然后单击添加。
将弹出添加网络图层对话框。
- 单击否仅添加网络数据集。
网络数据集图层将添加到内容列表和地图显示。将在地图上绘制当前行驶速度。绿色表示畅通行驶流量。黄色、橙色和红色表示相对于每条街道的畅通行驶速度的依次变慢的流量速度。因为流量根据畅通行驶速度进行绘制,而不是按照绝对速度进行绘制,所以当前行驶速度和通畅行驶速度为 25 英里每小时的居住区街道将以绿线进行显示,而当前行驶速度为 25 英里每小时的主干道将以红色进行显示(如果主干道的畅通行驶速度快很多时,如 65 英里每小时)。
在默认情况下,ArcMap 将绘制当前日期和时间的流量状况。对于具有实时流量的边,这意味着您采用此时的流量状况。具有历史数据而不是实时数据的边,将按照此时可能的情形显示一周中该天的流量状况。(在圣地亚哥的深夜或凌晨,地图中所有流量可能会显示为绿色。)
可选择过滤出历史流量数据,从而仅查看通过更改接下来的步骤中描述的图层属性,与实时流量数据建立当前关联的那些边。
- 右键单击内容列表中的 SanDiego_ND 图层,然后选择属性。
- 单击符号系统选项卡。
- 选中仅显示实时流量,然后单击确定。
根据历史数据渲染的流量会从仅留下具有实时流量数据的边的地图中进行过滤。
- 重复之前的三步将再次看到历史记录和实时流量。
- 在工具工具条上,单击时间滑块按钮 。
将出现时间滑块对话框。
- 应启用此滑块。指向在地图上启用/禁用时间按钮,如果显示为在地图上启用时间,则单击此按钮。
- 单击时间滑块条并将其拖动到要查看流量的时间和日期;或者,在时间滑块文本框中键入该信息,然后按 Enter。
如果需要的时间和日期不在当前时间范围内,则需要更改以下子步骤中描述的时间范围。
- 单击时间滑块窗口中的选项按钮。
- 单击时间范围选项卡。
- 从将完整时间范围限制到下拉列表中选择 <未定义>。
- 更改开始时间和结束时间值,从而让目标时间和日期位于界限内。
- 单击确定。
- 将时间滑块设置为目标时间和日期。
流量模式通常根据当地时间而有所不同。如果没有在操作系统上设置的时区中,而是在其他时区中观察流量数据,则可能想要设置时间滑块的时区引用从而与正查看的地图区域的时区引用相匹配。这样可在每次调整到时间滑块之前,避免心理上的转换时间。
要更改时间滑块的时区设置,请遵照以下子步骤。
- 单击时间滑块窗口中的选项按钮。
- 单击时间显示选项卡。
- 在时区下拉列表中选择正查看的区域的时区。
- 如果该区域采用夏时制,则请单击按夏时制调整。
- 单击确定。
使用如下所示的时间滑块可查看不同时间和日期的行驶速度。
现在,您已在地图上看到了实时流量状况,您可能希望根据这些状况来执行网络分析求解;例如,您可能希望立即查找最快捷的行驶路径或服务区。练习 11 将介绍如何实现这一目的。