基于Android的移动公交辅助导航系统设计与实现

2012-09-21 08:31李代伟
成都信息工程大学学报 2012年5期
关键词:公交线路流程图换乘

文 斌, 李代伟

(成都信息工程学院,四川成都 610225)

0 引言

随着经济和社会的发展,城市化进程进一步加快,城市公交系统也进一步扩大并愈发完善,几乎覆盖了城市的每一个角落。公交车也随之成为许多人出行的主要交通工具。但是越来越复杂的公交线路也使人们很难找到正确的公交信息,并对人们的出行安排造成极大的不便。国外一些发达国家的公交信息查询系统已经发展到一个比较先进的水平,然而由于信息技术起步较迟,相关法律法规及管理不够完善等原因,中国的公交查询系统与国外先进水平相比还有很大差距,国内已有的一些公交信息查询系统或多或少都存在一些不足。因此,设计一个能够准确、快速查询公交信息的系统为外来游客和市民提供准确、快速的公交信息查询服务,使他们能够及时地了解到自己所需要的公交信息,合理规划出行线路,节约出行时间十分必要。同时着眼于未来公交查询系统的发展方向,设计了这个基于Android的公交辅助导航系统。

1 研究基础

1.1 Android系统架构研究

Android手机系统是基于Linux平台的开源手机操作系统,分为4个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux核心层[1]。采用软件堆层(software stack),又名软件叠层的架构,主要分为3部分。底层以Linux内核工作为基础,由C语言开发,只提供基本功能;中间层包括函数库Library和虚拟机(virtual machine),由C++开发,最上层是各种应用软件。Android系统架构由5部分组成,分别是Linux Kernel,Android Runtime,Libraries,Application Framework,Applications[2-3]。

1.2 百度地图API

百度地图应用程序编程接口(Baidu maps Application Programming Interface,百度地图API)是一套由JavaScript语言编写的应用程序接口,能够帮助开发人员在网站中构建功能丰富、交互性强的地图应用程序。百度地图API不仅包含构建地图的基本功能接口,还提供诸如本地搜索、路线规划等数据服务。其中包含了构建地图基本功能的多个接口,提供诸如位置搜索、周边查询、出行路线规划等功能服务。百度地图API服务免费开放,并提供基于移动设备和浏览器的两套API。百度地图移动版API是一套基于移动互联网设备的应用程序接口,支持iOS/Android平台。

2 系统架构设计

2.1 系统总体结构设计

系统主要由3层构成。位于最上端的用户界面层直接与用户交互,负责接收用户查询信息和反馈查询的数据。位于中间层的两个大的模块主要完成系统的查询、分析等逻辑操作,分别同SQLite数据库和百度地图API进行数据交互。位于底层的两个部分,SQLite数据库主要负责存放所有公交信息数据,而百度地图API负责提供用于访问网络服务器的接口,如图1所示[4-5]。

2.2 公交查询算法设计

公交查询算法是系统离线查询功能实现的核心部分,因为它保证了系统能快速、准确的搜索到用户需要查询的公交车乘车信息。

2.2.1 基于线路与站点的直达车搜索算法

直达车搜索目的是找到起止站点之间是否有直接到达而不用换乘的公交线路。搜索算法以线路与站点关系表为基础,其实现流程如图2所示[6]。

为了完成直达车搜索,首先在数据库中建立站点和公交线路关系表以存放公交站点(station)、公交线路(busline)、站点位于公交线路中的第几站(stationnumber)、公交车行驶方向(direction)等数据。在进行直达车搜索时可以将数据源想象成具有相同数据的两张表t1和t2,查询时首先在t1中找到会经过起点站的公交线路,在t2中找到会经过终点站的公交线路,之后判断两条线路的编号是否相同。若不同,则比较下一对数据;若相同再判断终点站是否位于起点站之后(即t2.stationnumber>t1.stationinumber)。若成立,则提取出公交线路,否则返回比较下一对数据。具体判定条件如下:

(1)约束条件t1.busline=t2.busline是为了保证在两张表中找到的公交线路是同一条。

(2)约束条件t1.direction=t2.direction是为了保证在两张表中搜索到的公交线路方向一致,即同为上行线路或者同为下行线路。

(3)约束条件t1.stationnumber<t2.stationnumber是为了保证用户输入的终点站位于起点站的后面。如果不加这个条件则搜索到的结果当中会出现一种错误的情况,就是系统会告诉用户,除了可以乘坐那条正确的线路之外,还可以乘坐同一趟公交车的返程线路,但由于公交车会先经过用户输入的终点站然后才经过起点站,因此实际上这是一个错误的乘车方案。

2.2.2 基于直达车线路和站点的换乘车搜索算法

现有的换乘算法很多是通过找到所有经过起点站和终点站的公交车线路,然后再比对这些线路当中有没有交叉点(即换乘站点)来确定是否能找到换乘线路,但这样的换乘搜索算法效率较低[7]。系统设计了另外一种优化后的换乘搜索算法,即换乘的线路是由一段又一段的直达车线路组合而成的,前一段的终点站和后一段的起点站相同。通过数据库中建立相关视图可以完成换乘车线路的搜索,其实现流程如图3所示[8]。

为了完成换乘车的搜索,在直达车搜索数据表的基础上建立公交车换乘数据视图,以存放换乘查询所需要的数据,包括起点站(startStop)、终点站(endStop)、公交线路编号(lineID)、起点站与终点站之间的站点数(stop-Count)等数据。换乘线路可以想象成是由一段一段的直达线路连接而成的,在查询时,把建立的视图当成两个存放了相同数据信息的表t3和t4,先在t3中找到startStop为要查询的起点站的数据行对应的公交车线路和t4中endStop为要查询的终点站的数据行所对应的公交车线路,判断t3中公交车线路的endStop与t4中公交车线路的startStop是否相同。若不同则重新查询;若相同在判断两条线路的编码是否相同,若再相同,重新查询,若不同,则返回查询到的公交线路。具体判定条件如下:

图1 系统总体架构

(1)约束条件t3.startStop=‘起点站名称'和t4.endStop=‘终点站名称'是为了保证系统查询到的结果当中起点站和终点站与用户输入的查询数据相匹配。

(2)约束条件t3.endStop=t4.startStop保证前一段直达线路的终点站和下一个直达线路的起点站相同。

(3)约束条件t3.lineID<>t4.lineID保证前一段直达线路的编号应该和后一段直达线路的编号不同。

图2 基于线路与站点的直达车搜索算法流程图

图3 基于直达车线路和站点的换乘车搜索算法流程图

2.2.3 出行线路规划

出行线路规划功能可以帮助用户查询到达目的地的所有直达车或换乘车的车次及中转站点的信息。用户只需要输入起点站和终点站的名称,系统就会根据设计好的工具查询算法以及数据库中的数据为用户设计出一条或几条合适的出行线路,其实现体流程图如图4所示,功能实现如图5所示。

图4 出行线路规划流程图

图5 出行线路规划结果

出行线路规划功能除了可以提供上述服务以外,还可以配合GPS功能为用户提供公交报站服务[9]。服务可以让用户清楚地了解自己搭乘公交车当前所处位置。当用户所搭乘公交车到达换乘站点或目的地站点时还会有相应语音提示以防用户错过站点。其实现流程图如图6所示,功能实现如图7所示。

图6 到站提醒流程图

图7 到站提醒结果

2.2.4 POI搜索

当对目的地信息不明确时,通过兴趣点搜索(Point of Interest Search,POI搜索)解决。只需要输入目的地名称,系统便会向服务器发出请求,在百度地图上显示所有查询信息点位置,用户任选其中一处,在地图上用黑粗线的方式显示出到目的地的路径,其实现流程图如图8所示,功能实现如图9所示。

图8 POI搜索流程图

图9 POI搜索结果

当用户找到了自己想要去的地方后,功能并没有完成,因为他还不知道要怎么到达目的地。POI搜索模块不仅可以为用户搜索到自己的目的地,还可以进一步提供导航服务。用户只需要选择自己要到的目的地,然后点击导航,系统就会为他设计出一个合适的线路并且在地图上显示出来。在使用该功能的时候用户只需要在POI搜索结果页面的下拉菜单中选择目的地,系统自动将用户所在的位置作为出发地,然后向服务器发送查询请求,得到结果后将路线信息显示在另一张地图上。其实现流程图如图10所示,功能实现如图11所示。

图10 POI目的地导航流程图

图11 POI目的地导航结果

3 结束语

在面对庞大的公交网络和错综复杂的公交信息时,基于Android的移动公交辅助导航系统能简单快速的查询城市公交信息。能提供实时的移动的公交线路查询、公交站点查询、出行线路规划3个主要服务。系统具有如下优势:

(1)能提供POI搜索服务,提示相关信息供用户参考。

(2)将离线查询功能和在线查询功能融合在一起,可以相互弥补对方的不足,共同完成公交信息的查询服务,保证了用户在任何时间和任何地点都可以在使用非常节省资源的方式快速找到自己想要的公交信息。

(3)借助移动设备,结合GPS功能通过给语音报站和转乘提示功能,给用户提供了方便。

Android系统网络集成性很高,百度地图Android应用,具备免费语音导航功能,正式切入手机导航市场。而iPhone版和Symbian版均尚未上线语音导航功能。百度导航的重力感应功能、高仿真3D效果显示建筑与道路实景图,更可为用户规划出行道路,并提供全程浏览等。开发的“基于Android的公交辅助导航系统”是为了方便那些乘坐公交车的人群,使他们在乘坐公交车时,及时了解位置,也可以通过公交信息查询、出行线路规划等服务综合了解当时所处的状况,自我进行判断、处理问题。把程序整合到手机设备上主要是利用了移动设备的便携性,为人们的日常生活带来更多的便利。当前搭载Android系统的移动设备已被普遍使用,系统具有良好的应用前景。

[1] 郭宏志.Android应用开发详解[M].北京:电子工业出版社,2010.

[2] 徐光侠,封雷.基于Android和Google Maps的生活辅助系统的设计与实现[J].重庆邮电大学学报(自然科学版),2012,24(2):242-246.

[3] KUMAR S,QADEER M A,GUPTA A.Location based services using android(LBSOID)[C].IEEE.2009 IEEE International Conference on Internet Multimedia ServicesArchitecture and Applications(IMSAA).Bangalore:IEEE Press,2009:1-5.

[4] LI Xu-dong,YAN Gao-shi,TANG Hai.Android Based Wireless Location and Surrounding Search System De-sign[C].2010 Ninth International Symposium on Distributed Computing and Applications to Business Engineering and Science(DCABES).Hong Kong:IEEE Press,2010:421-423.

[5] 廖军,郭达.移动互联网应用趋势——基于Web的终端平台[J].信息通信技术,2010,17(4):20-23.

[6] 陈文磊,肖俊超,董勐.公交线路查询系统算法设计与实现[J].高等函授学报(自然科学版),2008,(3):49-51.

[7] 罗小龙.公交查询算法优化[J].城市勘测,2009,(4):36-37.

[8] 周潜,欧宜贵.公交线路查询算法的设计与实现[J].海南大学学报(自然科学版),2010,(2):105-107.

[9] 刘胜前,陈立定,任志刚.基于Android移动平台和GPS应用服务研究[J].信息技术,2012,(1):82-85.

猜你喜欢
公交线路流程图换乘
天津地铁红旗南路站不同时期换乘客流组织方案研究
基于GIS的公交路线优化设计
专利申请审批流程图
专利申请审批流程图
城市轨道交通车站联合配置短驳道路公交线路的方法
城市轨道交通三线换乘形式研究
宁海县村级权力清单36条
最美公交线路上的“最美司机”
重庆轨道交通换乘站大客流组织探索
北京地铁最复杂换乘点——军博站启用