APP下载

校园公交定位与调度服务系统的设计与实现

2017-11-17程付超梅恩

电脑与电信 2017年9期
关键词:公交系统身份验证乘车

程付超 梅恩

(成都大学,四川成都610106)

校园公交定位与调度服务系统的设计与实现

程付超 梅恩

(成都大学,四川成都610106)

针对高校校园公交运营中存在的乘车难问题,设计并实现了一种“校园公交定位与调度服务系统”,通过手机实现对乘车人和车辆的实时定位,以此为基础为乘车人提供车辆定位、到达预测、预约叫车、校园导航等服务,从而解决校内乘车难问题。同时,为调度人员和公交驾驶员提供乘车人位置显示和播报、车辆状态查询、实时消息通信等服务,为车辆调度提供辅助决策,提高车辆运营效率。经测试,本文系统工作正常,能够达到设计目的。

校园公交;定位服务;调度服务

1 引言

校园公交(也叫校园摆渡车),是一种面向高校学生和教职员工的校园内部客运乘用车辆。由于国内高校校园的扩张,很多学校都在校内引入了校园公交,以方便学生和教职员工上下课及日常出行等。校园公交一般使用电动乘用车进行运营,行驶线路相对比较灵活,采用随招随停,按次收费的运营方式,受到高校学生的欢迎。而随着高校的进一步扩建,校园公交线路也在不断延伸。以成都学院为例,校园公交单程长度已超过3公里,加上来回路线变化,线路总长接近10公里,这样的路线跨度,给乘车人等车带来了较大的难度。据前期调查统计,在上下课高峰期之外的时间段(高峰期一般会有针对性的车辆调度),乘车人平均等车时间往往长达20-30分钟。经过分析,其原因主要在于,非高峰期校园公交一般采用坐满发车的机制,车出发之后已经坐满,导致线路中途乘车变得非常困难。同时,在校园公交始发站和终点站,往往又有闲置车辆在排队等待,导致车辆运营效率降低。

针对目前校园公交运营中的上述问题,本文设计了一种校园公交定位与调度服务系统(简称校园公交系统),综合运用移动互联、位置服务、卫星定位、语音播报等技术,研发面向乘车人、驾驶员和调度人员的不同APP终端,通过手机实现对乘车人和车辆的实时定位,并以此为基础为乘车人提供车辆定位、到达预测、预约叫车、校园导航等服务,从而解决校内乘车难问题。同时,还能够为调度人员和公交驾驶员提供乘车人位置显示和播报、车辆状态查询、实时消息通信等服务,进而为车辆调度提供辅助决策,提高车辆运营效率。

2 系统设计

2.1 系统服务模式

本文设计的校园公交系统服务模式如图1所示。

图1 校园公交系统服务模式

(1)乘车人APP,是面向高校学生和教职员工等乘车人的客户端APP软件,运行在乘车人手机上,主要功能包括公交位置显示、到达时间预测、预约叫车、校园导航、消息查看、乘车记录查询等。

(2)驾驶员APP,是面向校园公交驾驶员的客户端APP软件,运行在驾驶员手机上,主要功能包括调度信息播报、乘车人信息播报、载客人数设置及紧急情况处理备忘等功能。

(3)调度人员APP,是面向校园公交调度人员的客户端APP,运行在手机或平板电脑上,主要功能包括校园内公交位置显示、校园内所有乘车人位置显示、驾驶员信息管理、车辆信息管理、调度信息发送等。

(4)服务系统后台,为了支撑前述三个面向不同用户群体的APP正常运行,系统还需要对服务系统后台进行研发,具体包括数据存储系统、业务处理模块、前后端交互接口等。

(5)后台管理Web端,为系统管理员提供服务,功能包括用户账号管理、数据存储管理、全局消息发布、APP版本管理、商业化数据分析等。

2.2 总体架构

根据业务流程,项目组对校园公交系统总体架构进行了设计,如图2。

图2 校园公交系统总体架构图

校园公交系统逻辑上由三个层次构成,分别是应用服务层、业务逻辑层和数据支撑层。其中,应用服务层可以认为是校园公交系统的前端,而业务逻辑层和数据支撑层属于系统后台。

(1)应用服务层:分为三个APP和一个Web终端,面向各类用户直接提供服务。

(2)业务逻辑层:用于处理提供服务所需的各种业务逻辑,包括登录注册、车辆定位、用户叫车、校园导航、车辆信息管理、用户信息管理、位置搜索、消息收发、历史记录管理、历史数据分析等。

(3)数据支撑层:包括数据库系统、文件系统及数据访问接口,为上层业务逻辑模块和APP等提供数据支持。

2.3 前端APP设计

2.3.1 APP界面设计

针对各APP的功能和业务流,对界面布局、配色、图标、字体及操作方式等进行设计,如图3。

图3 校园公交系统部分APP界面标记图

2.3.2 APP业务模块设计

按照功能和业务流程,分别对乘车人APP、驾驶员APP和调度人员APP进行功能模块划分,如图4所示。

图4 校园公交系统APP业务模块设计

2.4 后台系统设计

从数据存储、前后端通信及业务模块三个方面对后台系统进行设计,并对后台管理Web端进行专门设计。

2.4.1 数据存储设计

校园公交系统的数据存储系统主要包括数据库系统、文件系统和数据访问接口三部分。

(1)数据库系统:主要用于存储系统中的结构化数据,比如车辆信息、驾驶员信息、乘车人信息、位置信息和叫车信息等。

(2)文件系统:用于存储非结构化数据,比如语音消息、用户头像图片等。

(3)数据访问接口:用于向业务模块提供数据读写接口,采用两层封装的思路,首先针对数据库系统和文件系统分别设计底层访问接口,再结合业务功能进行二次封装,保证接口的可用性和易用性。

2.4.2 前后端通信接口设计

校园公交系统中不同功能对于前后端通信具有不同的要求,需要从客户端请求和服务器推送两个方面考虑通信接口问题。

(1)客户端请求:对于客户端主动发起的数据通信请求,拟采用超文本传输协议(HTTP)作为前后端通信协议,并使用JSON(JavaScript Object Notation)为载体定义通信数据格式,实现前后端数据的高效可靠传输。

(2)服务器推送:对于服务器发起的数据传输请求,使用基于长连接的多线程并发推送框架Workerman,实现对多客户端的高并发数据推送。

2.4.3 后台业务模块设计

按照校园公交系统的功能和业务流程,分别对后台服务模块和管理Web端进行设计,对后台管理端页面进行划分,并分别设计各页面的功能,如图5所示。

图5 后台业务模块设计

2.5 关键技术

2.5.1 多客户端数据并发推送

为了方便乘客和调度管理人员随时查看车辆的准确位置,校园公交系统需要实现对位置数据的实时推送。由于位置数据的推送具有多对多的特点(从多个驾驶员APP推送到多个乘车人APP和调度人员APP),对数据实时并发吞吐量要求较高,成为系统实现上的一个技术难点。为了解决这个问题,项目组先后使用并验证了三种不同技术。

(1)轮询。在研发初期,项目组采用轮询的方式实现位置数据的共享。具体方法为:驾驶员APP定时发送位置信息到服务器;服务器将数据存储到数据库中;乘车人APP和调度人员APP定时调用数据。此方案实现较容易,开发难度低,但经过实际测试,此方案运行过程中,服务器系统大量资源用于执行随机I/O读写操作,造成整体数据吞吐量极低,故弃用此方案。

(2)第三方推送平台。在查阅技术资料之后,项目组改用第三方推送服务平台进行位置数据的推送,车辆位置数据从驾驶员APP传送到服务器上存储到内存中,然后直接通过第三方平台推送给APP。经过实际测试,此方案解决了服务器端I/O操作频繁的问题,提高了数据吞吐量,但第三方平台在数据量较大的情况下存在比较明显的数据推送延迟,往往达到几秒,十几秒甚至几十秒,导致位置数据传到时,车辆位置已经发生了较大的改变,影响了位置数据的准确性,项目组经过慎重考虑,最终放弃了此方案。

(3)长连接开发框架。最后,项目组在深入理解了基于长连接的多线程并发开发框架技术之后,采用Workerman框架实现了多客户端间的数据并发推送。在此方案下:

①驾驶员APP通过长连接将位置数据异步推送到服务器上;

②服务器通过触发机制,直接将接收到的位置数据按组转发给乘车人和调度人员。

在此过程中,基本不涉及任何的I/O操作,因此性能较高,数据异步接收,并同步转发,实现了位置数据在多客户端间并发推送。后续开发中,乘车人位置数据也采用类似的方式进行处理。

2.5.2 车辆行进方向显示

车辆行进方向的显示在滴滴打车和优步这类打车应用APP中得到了很好的解决,其方法比较巧妙:

(1)在下达订单前,周边车辆的位置和朝向都仅仅是一个很不准确的大概值,不具有太高的参考价值;

(2)在下达订单后,乘车人和车辆的关系变成一对一服务模式,车辆位置和朝向会变得比较准确,但也存在一定延迟。

但在本文设计的校园公交系统中,由于乘客和车辆是一种多对多的服务模式,校园内所有同方向车辆的具体位置和当前朝向,对乘车人都具有较高的参考价值,因此,提高车辆行进方向显示的准确性就成为了提升用户体验的一个重要方面。为了解决这一问题,项目组先后采用了两种方法:

(1)通过地图SDK计算。在项目研发初期,项目组采用地图SDK自带的方向判断API进行车辆行进方向的判断和显示,但经过实际测试,这种方式显示出的车辆方向与实际行进方向几乎完全无关,项目组不得不考虑其他方式。

(2)通过经纬度坐标计算。为了保证准确性,项目组采用车辆最近两次位置的经纬度坐标连线的方向作为当前车辆的近似行进方向。具体计算方法是:

①记录当前车辆位置的经纬度数据;

②当下一次位置数据到达的时候,根据两点的经纬度坐标系,建立两点间的直线方程,并通过勾股定理计算连线与正北方向的偏移角度,将这个角度发送到APP作为车辆行进的方向。

此算法在实际测试中,有时候车辆角度会呈90度偏转,分析之后发现是因为计算过程中一直以纬度作为计算依据,但当车辆的纬度变化较小时(比如按正南正北方向行进时),判断的误差就会比较大。因此,项目组对算法进行了改良:

①首先判断车辆行进方向是偏纬度方向,还是偏经度方向;

②在经度方向,根据定位数据的前后变化计算得出经度方向的夹角;

③在纬度方向,根据定位数据的前后变化计算得出纬度方向的夹角;

④最后将两个方向的夹角综合,就能较准确地判断车辆的行进方向。

在实际测试中,改良后的算法能够比较精确地显示车辆的行进方向,甚至连车辆调头这样的情况也可以比较清楚地看出来。

2.5.3 多终端身份验证

由于校园公交系统包括三个APP及一个后台服务器端,系统功能又涉及校园公交运输这样具有较高安全要求的领域,因此如何实现多终端间的身份验证,保证系统中一些敏感的接口不被非法调用,也是项目组在研发过程中面临的一个主要技术问题。

针对不同的安全要求,采用了三种不同复杂度的身份验证:公钥算法加密身份验证、基于Token的身份验证和无身份验证。

(1)公钥算法加密身份验证。APP通过服务器端的公钥对通信内容进行加密,并发送给服务器,服务器通过其私钥解密并验证消息内容。这种验证机制主要用于用户注册这种具有较高安全敏感性的功能中,以保证注册数据不被非法第三方所获取。

(2)基于Token的身份验证。APP与服务器之间通过登录时约定的Token进行身份验证,并结合Hash算法和时间戳等,实现对通信过程中重放攻击和中间人攻击等基本攻击模式的抵御。

(3)无身份验证。对于类似查看车辆位置这类无需注册账号也可以使用的功能,不采用任何身份验证机制,以提高前后台通信的效率。

综合运用上述身份验证机制,能够较好地保障系统的整体安全性。

3 系统实现

3.1 开发环境

3.1.1 开发平台

本文设计的校园公交系统前后端采用不同的开发平台。

(1)前端APP开发平台。为了实现跨平台的移动服务支持,APP的目标平台为主流的Android和iOS,其中Android开发及编译环境为Windows 7,iOS开发编译环境为MacOS10。

(2)后台系统的开发平台。考虑到系统的稳定性需求,后台系统的目标平台定为LAMP(或LNMP)平台(见表1),开发环境可能会是Windows和Linux的混合环境。

表1 后台系统目标平台

3.1.2 开发语言及工具

由于开发平台不同,校园公交系统前后端将采用不同的语言工具。

(1)前端开发语言及工具。采用Java语言进行前端APP开发,使用的集成开发环境(IDE)为Android Studio,拟支持的Android版本为4.0-6.0。

(2)后台开发语言及工具。采用PHP语言进行后台开发,拟采用ThinkPHP作为主要开发框架,可能采用的IDE包括Zend Studio、PhpStorm等。

3.2 系统运行测试

系统开发完成后,项目组对系统功能进行了试用和测试,在测试过程中,APP软件运行稳定、流畅,各项功能均能够正常工作,能够实现预期设计目标,如图6所示。

图6 校园公交系统实际运行效果

4 结论

本文针对高校校园公交运营中存在的乘车难问题,设计并实现了一种“校园公交定位与调度服务系统”,面向乘车人、驾驶员和调度人员提供服务,优化其运营模式,解决乘客乘车问题。经测试,本文系统工作正常,能够达到设计目的。同时,本文研发的校园公交系统还具有以下特点:

(1)易用性。本文设计的校园公交系统采用移动互联网解决方案,无需专用定位设备,从而降低了系统整体实施难度,提高了系统易用性。

(2)完整性。本文系统能够面向乘车人、驾驶员和调度人员提供服务,形成一个较完整的服务体系。

(3)安全性。本文系统在设计上着重考虑了安全问题,对驾驶员采用语音播报方式提供服务,保障行车安全;前后台采用三重级别的身份验证,保障系统安全。

由于景区摆渡车与校园公交的应用场景有较多类似之处,接下来项目组还将继续开发面向风景旅游区的摆渡车定位与服务系统。

[1] Walkor. Workerman 手册[EB/OL]. 2015. http://doc. workerman.net/315110.

[2] 王柳英,李好.大学校园智慧交通服务体系构建——东南大学九龙湖校区的实证研究[J].城市建设理论研究(电子版),2015,5(12).

[3] 刘亮.基于乘客特征的校园公交优化调查研究——以长安大学渭水校区为例[J].科学与财富,2016(11).

[4] 黎景壮,冯平,龚启东,等.一种校园智能公交系统:中国,CN204537436U[P].2015-03-05.

[5] 张狄祥,孙梅,李成蹊.基于北斗导航系统校内公交智能调度系统[C]‖中国卫星导航学术年会暨“天衡导航·北斗杯”全国青少年科技创新大赛.2013.

[6] 蒋威,杨帆,刘佳杰,等.基于transcad 软件的校园公交系统层次化设计--以江苏大学为例[J].科技视界,2014(9):96-97.

[7] 夏耩.互联网+公交的智能公交查询系统设计[D].成都:成都理工大学,2016.

The Design and Implementation of Campus Bus Location and Scheduling Services System

Cheng FuchaoMei En
(Chengdu University,Chengdu 610106,Sichuan)

To resolve the difficulty to take a campus bus,a campus bus location and scheduling services system is designed and implemented,which can acquire the real-time location of passenger and vehicle with mobile phone,and provide passengers the services such as vehicle locating,arrival time prediction,vehicle booking and campus navigation.In order to improve the operation of campus bus,this system can also provide services as passenger location display and broadcast,vehicle status report,instant message communication for controllers and drivers.The system,which works properly in testing,has achieved the target of designing.

campus bus;location service;scheduling service

U491.17

A

1008-6609(2017)09-0038-05

程付超(1985-),男,四川泸州人,博士,讲师,研究方向为计算机软件技术。

猜你喜欢

公交系统身份验证乘车
这一次优步乘车,让我感动了
乘车
基于用户体验的智能公交系统优化设计
智能公交系统网络设计研究
Endogenous neurotrophin-3 promotes neuronal sprouting from dorsal root ganglia
青岛市公共自行车系统与公交系统接驳研究
海口今明两年建轨道交通和快速公交系统等三大项目
身份验证中基于主动外观模型的手形匹配
ASP.NET中的Forms身份验证的研究