《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > 基于位置云技术的智能拼车匹配系统设计
基于位置云技术的智能拼车匹配系统设计
来源:电子技术应用2013年第8期
张 凯,陆 钧,孙 跃
南京信息工程大学 信息与控制学院,江苏 南京210044
摘要: 为了让人们便捷地找到合适的拼车伙伴,运用位置云平台的云存储与检索服务,结合Web服务器和数据库技术,设计并实现了智能拼车匹配系统,并开发了基于嵌入式平台的客户端装置。介绍了系统的架构,论述了位置云端存储与检索的实现方法,说明了客户端的硬件结构和主要功能模块的软件设计。测试表明,系统运行稳定,能够实现用户注册、登录管理、地图定位、拼车需求发布、智能匹配等功能,能够及时响应请求并匹配出合适的结果,具有一定的应用前景。
中图分类号: TP391
文献标识码: A
文章编号: 0258-7998(2013)08-0020-03
The design of an intelligent carpool-matching system based on LBS-Cloud service
Zhang Kai,Lu Jun,Sun Yue
School of Information and Control,Nanjing University of Information Science & Technology,Nanjing 210044,China
Abstract: In order to make carpool travels more conveniently, an intelligent carpool-matching system was designed and developed based on the LBS-Cloud platform and combined with Web server and database technology. The client device was developed based on embedded platform.The architecture of this system and the implementation method of LBS-Cloud storage and retrieval were introduced. The test showed that the whole system worked well. The functions such as registration,login,auto locate, intelligent matching and so on,could be all realized successfully. The intelligent carpool system has limitless applications.
Key words : LBS-Cloud;Android;carpool-matching;database

    随着社会的发展,汽车保有量迅速增长,道路拥堵情况以及尾气污染日益严重。根据有关统计,机动车尾气排放约占雾霾天气PM2.5来源的四分之一以上,是导致空气污染的重要原因。因此我国需要学习一些发达国家的城市治理经验,一方面大力发展公共交通,另一方面倡导人们最大限度地合理使用汽车,积极拼车出行,以达到减少拥堵和排污的效果[1]。

    拼车双方有相似的出行路线和时间表是实现拼车的关键。由于拼车在国内兴起不久,拼车的组织、制度还很不完善。在现有的拼车网站或者应用中,大多是以列表形式罗列出各种拼车需求,用户需要在繁多的拼车需求中找出适合自己的拼车对象,并不是十分方便和快捷。
    位置云(LBS云)服务作为云技术在地图定位领域的应用,是一种集位置存储与检索于一体的云服务。LBS云平台一方面可以完成庞大的位置数据存储,另一方面能够返回各类基于位置数据的检索请求,是开发基于位置服务系统的理想选择。
    针对以上分析,基于百度LBS云平台,结合Web服务器和数据库,设计和实现了智能拼车匹配系统及其嵌入式客户端。用户只需登录客户端,在地图上将自己的拼车信息发送到服务器,等待服务器返回匹配结果,就能够方便、及时地找到周围合适的拼车伙伴,完成快捷的拼车出行,从而节约出行成本。同时能够减少车辆出行,为缓解交通拥堵情况以及节能减排做出贡献。
1 系统设计
1.1 系统架构

    系统采用Client/Server(C/S)体系结构,其架构如图1所示。系统主要包括服务器、基本数据库、位置云平台、无线网络和客户端[2]。客户端完成前台操作处理和计算,通过无线网络访问Web服务器和数据库,服务器对客户端的拼车请求进行处理并返回匹配结果。

1.2 服务器设计
    服务器端采用开源的Tomcat服务器,它支持Java类Servlet,在Java环境运行时能够很好地支持运行Web应用部署[3]。当收到客户端请求时,服务器启动并加载Servlet容器,Servlet根据请求生成响应内容并传给服务器,再由服务器将响应返回客户端。
    本系统中,需要部署4个Servlet类,分别用于注册、登录、存储以及匹配。服务器与客户端的通信采用Http通信协议的post方法,部署服务器时,先继承HttpServlet抽象类,然后覆盖HttpServlet的doGet()方法,通过Http-ServletRequest对象来获取请求信息,最后由HttpServletResponse对象生成响应结果返回给客户端。写完服务器的Servlet程序后在web.xml文件中进行属性配置,就能够通过8080端口连接部署的服务器[4]。
1.3 数据库设计
    采用MySQL 5.6数据库软件,在服务器端可以直接引入Java数据库连接(JDBC)驱动,通过接口成功连接数据库之后,发送SQL语句操作数据库并处理结果[5]。
    拼车时间和方式的匹配通过对数据库schedule表的条件查询实现。当有用户的匹配请求发送至服务器时,服务器端调用条件查询类来进行筛选,并返回符合条件的结果。
    服务器使用JDBC接口连接数据库,在服务器的lib文件夹中插入mysql-connector-java-bin.jar驱动,Servlet程序中先要注册驱动:Class.forName("com.mysql.jdbc.Driver");然后通过DriverManager.getConnection类连接建立的test数据库,端口为3306,使用prepareStatement( )对象执行SQL查询语句,executeQuery( )方法把查询结果返回并存放在ResultSet类对象中。此外,在程序中还应设置CharacterEncoding属性为utf-8的编码方式,以避免中文出现乱码。
2 位置云技术
    在拼车系统中,基于百度LBS云服务,将用户发送的出发地和目的地位置信息存储在位置云平台中,利用位置云计算能力,迅速筛选出这两个位置周围符合条件的其他用户,并返回相应用户的基本信息,完成拼车路径的智能匹配。
2.1 位置云存储的实现
    百度LBS云存储使用接口的方式进行存储管理,用位置数据存储容器databox对所存储的位置数据进行字段定义,包括基本字段databox和扩展字段databox_meta。用单元数据poi存储具体的位置信息,同样包括基本信息poi和扩展信息poi_ect。实现位置数据存储的关键代码如下:
    url: api.map.baidu.com/geodata/databox
    postfield:method=create&name=carpool&ak=key
            //创建名为carpool的databox
    url: api.map.baidu.com/geodata/poi
    postfield:method=create&name=start&ak=key
                //创建存储出发地信息的poi
    postfield:method=create&name=destination&ak=key
            //创建存储目的地信息的poi
2.2 位置云检索的实现
    位置云检索同样使用接口方式来发送检索请求。在拼车匹配模块中需要检索出发地和目的地都相近的用户,采用周边检索命令来实现。通过location变量设置检索中心点,格式为:经度,纬度;通过radius变量设置检索半径,单位为m。实现位置数据检索的关键代码如下:
    url: api.map.baidu.com/geodata/poi
    GET:api.map.baidu.com/geosearch/start&location=lon,
    lat&radius=3000&scope=2&ak=key
                //检索出发地周围3 km的拼车用户
    GET:api.map.baidu.com/geosearch/destination&location=
    lond,latd&radius=3000&scope=2&ak=key
    //检索目的地周围3 km的拼车用户
3 客户端设计
3.1 客户端硬件设计

    客户端装置要求携带方便、低功耗、高性能、可扩展,因此使用S3C6410嵌入式微处理器作为控制核心。客户端硬件结构如图2所示,主要由S3C6410处理器、GPS定位模块、3G无线模块及外围电路等组成。外围电路包括256 MB RAM内存、2 GB NAND Flash存储器、7寸液晶屏和串口接口等。

    选用GPS模块的型号为WGS100,它采用高灵敏度导航芯片SIRF3,20通道通信,最多可以同时与20颗卫星建立通信;有RS232和TTL两种电平输出方式,缺省通信速率为9 600 b/s;采用可靠的外置天线,定位稳定,功耗低,可直接由常见的5 V电源供电。在客户端中采用RS232方式与S3C6410处理器连接通信,由GPS模块定位当前位置数据,再由处理器处理后在客户端软件的地图页面定位和显示当前位置,定位过程如图3所示。

3.2 客户端软件设计
    智能拼车匹配系统的Android客户端基于Eclipse 4.2开发,主要包括注册模块、登录模块、地图模块和拼车模块4个功能模块。
    客户端有注册、登录、拼车3个界面,在工程的layout文件夹中,建立3个xml文件进行窗口控件设计。在拼车界面中,需要载入地图页面,其代码如下:
    <com.baidu.mapapi.MapView//地图窗口接口
    android:id="@+id/bmapsView"//窗口id
    android:layout_width="fill_parent"//宽度
    android:layout_height="fill_parent"//高度
    android:clickable="true" /> //地图可点击
    各功能模块程序设计:
    (1)登录模块:向服务器验证用户输入的用户名和密码是否正确,并返回提示信息。与服务器的通信采用post方式,关键代码如下:
    StringurlStr = "http://172.16.72.186:8080/loginser/login";
         //登录Servlet的路径
    HttpPost request = new HttpPost(urlStr);
//request继承HttpPost方法
    HttpResponse response =client.execute(request);
//执行请求返回响应
    (2)注册模块:将新用户名、密码等信息发送到服务器进行保存,完成后跳转到登录界面,通信方法与登录模块相同。
    (3)地图模块:基于百度地图api接口实现实时定位、地图搜索和路线规划等基本功能。程序中,设置setBu-
iltInZoomControls对象启用缩放控件,setClickable对象设置地图可点击,继承MyLocationOverlay对象显示当前位置层,用MKSearch( )方法来初始化地图搜索功能,设置enableCompass对象开启指南针功能。定位当前位置的关键代码如下:
    pt=new GeoPoint((int)(location.getLatitude() * 1e6),(int)
(location.getLongitude() * 1e6));//获取当前经纬度
    mapView.getController().animateTo(pt);
//地图上标记当前位置
    (4)拼车模块:设置出发地、目的地以及时间区间,点击拼车方式按钮发送拼车信息到服务器,其中出发地和目的地的经纬度存储到位置云平台进行匹配。服务器进行条件筛选后,返回匹配结果并在客户端显示。通过点击地图设置地点,获取经纬度的关键代码如下:
    public boolean onTap(GeoPoint p, MapView mapView) {
//点击地图事件监听
    GeoPoint gpoint = newGeoPoint((int)lat,(int)lon);
//获取点击地点经纬度
    编写好各模块程序后,需要在工程文件根目录下的AndroidManifest.xml文件中进行相关设置,才能正常运行代码[6],其中关键权限设置如下:
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>//设置位置服务
    <uses-permission android:name="android.permission.
    INTERNET"></uses-permission>  //设置网络权限
4 系统功能测试
    将客户端程序打包成apk应用文件,安装到客户端中。在PC端开启服务器和数据库服务,登录客户端后进入主界面,测试发送从当前位置到南京火车站的搭乘需求到服务器,设置时间区间为9:30~10:30,如图4所示。测试前,预先向服务器发布了20条各不相同的拼车数据,服务器从这些已有的拼车信息中匹配出2个合适的拼车对象,如图5所示。

    为了满足人们对于快捷拼车出行的实际需求,设计开发了基于位置云服务的智能拼车匹配系统及其嵌入式客户端装置,利用百度地图API开发接口,实现了地图的定位、搜索等基本功能。结合Tomcat服务器与LBS云存储和检索技术,能够迅速完成拼车位置信息的存储和检索,为用户及时地匹配到周围合适的拼车伙伴。
参考文献
[1] 王茂福.拼车的发展及其效应[J].中国软科学,2010(17):54-55.
[2] 韩超,梁泉.Android系统原理及开发要点详解[M].北京:电子工业出版社,2010.
[3] 刘尚旺,何东健,闫艳.Tomcat与IIS或Apache服务器集 成的应用研究[J].计算机工程与设计,2009,30(10):2541-2546.
[4] 陈菁菁.程序员突击&mdash;Tomcat原理与Java Web系统开发[M]. 北京:清华大学出版社,2009.
[5] 吴吉义,王中友.程序员突击&mdash;MySql原理与Web系统开发[M].北京:清华大学出版社,2009.
[6] 何孟翰.Google Android SDK开发实战演练[M].北京:人民邮电出版社,2012.

此内容为AET网站原创,未经授权禁止转载。