天地图·福建实时路况服务设计与实现
2013-09-28黄梦龙
黄梦龙
(1.福建省基础地理信息中心,福建 福州 350003)
天地图·福建作为国家天地图的一个省级节点,通过近几年的建设,提供的地理信息越来越丰富。将实时路况信息集成到天地图·福建中,可以进一步丰富地图的应用。通过与实时路况信息采集公司合作,笔者对实时路况信息采集及在天地图·福建中进行集成的相关技术进行了研究,设计开发了实时路况服务及天地图·福建的实时路况展示系统。
1 实时路况服务设计与开发
1.1 设计思路
路况信息可以用文字、广播的方式描述,但是在地图上展示更为直观[1]。目前在地图上展示路况的方式有多种:一种是根据道路的畅通情况,用各种类型的车辆图标等,以不同速度沿道路移动,在拥挤的地方移动速度慢,在畅通的地方移动速度快,该方法对车辆模拟的速度不好控制,不能很好地区分道路的拥挤程度,适用于地图显示比例尺较大的情况;另一种是采用不同的颜色表示道路的拥挤程度,如红色表示拥挤、黄色表示比较拥挤、绿色表示畅通等,这种方法比较直观,是目前比较通用的方法。
为了便于与电子地图的底图集成,可以考虑采用Web地图服务(WMS服务)的方式[2],将道路按照拥挤程度,用不同的符号或颜色绘制,并在底图上叠加展示。与一般地图服务不同的是,一般的地图服务是静态的,而路况信息是不断变化的,需要实时绘制并刷新。另一方面,考虑到路况信息的采集是有一定的时间间隔的,路况在交通流量大的繁华市区变化较快,而在其他路段,路况的变化并不是很频繁,可以借鉴瓦片地图服务(WMTS)的思想[3,4],将路况地图服务以瓦片服务的方式提供,以实现路况地图的缓存,提高服务的性能。基于上述思路,本文设计了实时路况瓦片地图服务,实现了路况信息的发布。
1.2 设计实现
路况服务实现路况信息的采集、入库与处理,并接收客户端请求参数,根据参数生成路况地图瓦片,返回给客户端。
1.2.1 服务操作
实时路况服务设计为瓦片地图服务,提供GetTrafficTile和GetCapabilities 2个操作。
1)GetTrafficTile操作。获取实时路况地图的瓦片,操作的参数和返回结果如表1所示。
表1 GetTrafficTile操作参数及返回结果
2)GetCapabilities操作。用于获取服务的描述信息,以方便服务的使用者。该操作不需要参数,返回结果为以XML格式描述的实时路况服务的相关信息,包括能够提供路况信息的城市列表及每个城市实时路况瓦片服务的坐标范围、坐标原点、瓦片的大小、瓦片级别、各级别的分辨率等。
1.2.2 服务内部实现
服务内部实现包括路况信息接收、处理和路况服务提供。采用数据路况信息数据库、路网数据库和路况瓦片库存储相关信息,如图1所示。
路况信息接收、处理部分利用运行于后台的数据采集处理程序实现,用于获取每个路段的路况,将路况信息更新到路况数据库中,同时记录下每个路段路况变化情况。路况信息由实时路况信息采集公司提供,按一定的时间间隔,更新每个路段的路况信息。路段用唯一的编号表示,并用不同的字母分别表示该路段的通行情况,如拥挤、缓行、畅通等。
图1 实时路况服务内部实现流程图
路况服务部分用于接收客户端的请求,解析请求参数,并返回请求的结果。GetCapabilities操作的请求处理比较简单,只需要返回一段静态的XML文本描述服务相关的元数据信息即可。GetTrafficTile请求的处理较为复杂,需要根据请求的城市代码、瓦片级别、行号与列号计算出瓦片的坐标范围,查询该范围内的路段的路况信息,绘制在地图瓦片上,再返回给客户端。
1.3 路况服务实现相关技术
实时路况服务用于提供各种基于电子地图的路况信息展示,为广大公众出行提供参考。要求对承载路况信息的道路数据进行处理,使之与天地图的基础底图叠加时能够准确套合。而且电子地图的用户数量往往较大,这就要求服务具有较强的处理能力,能满足大量用户并发请求的需要。针对这些问题,实时路况服务在实现时主要从以下几个方面进行了处理。
1.3.1 路网数据处理
由于不同的电子地图提供商所用的数据存在一定的偏差,经过偏移等处理,坐标差异进一步加大。为了保证实时路况服务瓦片地图与天地图·福建的底图道路准确套合,在服务实现时,以路况信息公司的路网数据及道路分段信息为参考,对天地图·福建的路网数据进行改造,制作适用于实时路况服务的路网数据。
1.3.2 面向实时路况信息绘制的路网索引
采用瓦片地图服务的方式提供实时路况服务信息,瓦片的实时渲染速度变得尤其重要。为了在地图瓦片渲染时能够快速找到并读取各瓦片需要绘制的路段信息,除了建立路网的空间索引外,还设计了瓦片–路段索引,记录了经过各级别的每一个瓦片的所有路段的几何信息、路段编号等,从而能够加快路段信息的查找速度和提高渲染速度。
1.3.3 实时路况瓦片地图缓存
瓦片地图服务通过对电子地图预先切片,实现对地图的缓存,提高了地图服务的响应能力以及在客户端显示的效率。由于路况是不断变化的,因此路况地图瓦片需要实时绘制。考虑到路况信息是按一定的时间间隔采集和提供的,且在多数地方路况的变化较缓慢,因此在多用户访问的情况下,可以采用一定的缓存策略,尽量减少路况瓦片的实时绘制。
路况瓦片地图服务的缓存策略主要有以下2个方面:
1)根据路况的时间段是否变化,决定是否重绘路况地图瓦片。路况信息采集时,以一定时间间隔(如dt分钟)将全天24 h划分为若干个时间片,用时间段编号 tid表示,则tid=3 600/dt。在同一天内只要tid没有变化,则路况是相同的。若客户端请求瓦片的时间点的tid与当前瓦片的tid相同,则无需重新绘制,返回前面绘制的瓦片即可。
2)根据经过瓦片路段的路况变化情况决定是否重绘路况地图瓦片。在路况信息接收和处理时,对路段当前时间片的路况与之前时间片的路况进行比较,并记录其变化情况。若请求的路况瓦片所覆盖的路段的路况都未发生变化,则该瓦片也不需要重绘,只需要返回之前绘制的瓦片即可。
2 服务应用实例开发
基于实时路况服务,开发了实时路况展示系统。系统的地图底图采用天地图·福建的矢量地图,开发采用的地图脚本库为开源GIS脚本库OpenLayers。通过对OpenLayers提供的WMTS瓦片地图图层类[5]进行扩展,开发了实时路况的瓦片图层类,用于请求和展示实时路况瓦片地图。
系统实现了地图浏览、实时路况信息展示、市区主干道查询定位、当前繁忙路段查询定位等功能,能够按一定的时间间隔刷新路况瓦片图层和当前的拥堵路段列表。系统实现情况如图2所示。
3 结 语
本文设计开发了实时路况服务,对实时路况服务开发中涉及的相关技术进行了探讨,并基于该服务开发了天地图·福建实时路况系统。除了路况之外,一些突发性交通障碍信息,如车辆事故、道路临时施工封闭等,也是影响公众出行的重要交通因素[6]。在后续的服务开发中,需要增加交通突发性事件信息的查询。立交桥各层之间的连通和重叠关系对导航也起着重要的作用[7],而实时路况的路网数据及路网索引没有考虑道路的上下层关系和连通关系,在高架桥、环岛等需要体现这些关系的地方,路况瓦片绘制时并没有体现出来,这也是需要进一步改进的地方。
图2 天地图·福建实时路况系统示意图
[1]张亮,孙海东,贺勇.车载动态实时可视化交通信息服务系统[J].中南公路工程,2004,29(1):120-122
[2]WMS Tile Caching[EB/OL].http://wiki.osgeo.org/wiki/WMS_Tile_Caching, 2006
[3]Tile Map Service Specification[EB/OL].http://wiki.osgeo.org/wiki/WMS_Tile_Caching, 2006
[4]OpenGIS Web Map Tile Service Implementation Standard,Version 1.0.0.Open Geospatial Consortium Inc.2010.4
[5]OpenLayers API Document[EB/OL].http://dev.openlayers.org/,2012
[6]商蕾,王继峰,栗红强.智能交通综合信息服务系统建设研究[J].交通与计算机,2005,23(6):32-34
[7]成燕辉,谢露蓉.车载导航立交桥的三维数据模型研究[J].武汉大学学报:信息科学版,2005,30(12):1 111-1 114