《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 基于位置云技術(shù)的智能拼車匹配系統(tǒng)設(shè)計(jì)
基于位置云技術(shù)的智能拼車匹配系統(tǒng)設(shè)計(jì)
來源:電子技術(shù)應(yīng)用2013年第8期
張 凱,陸 鈞,孫 躍
南京信息工程大學(xué) 信息與控制學(xué)院,,江蘇 南京210044
摘要: 為了讓人們便捷地找到合適的拼車伙伴,運(yùn)用位置云平臺(tái)的云存儲(chǔ)與檢索服務(wù),,結(jié)合Web服務(wù)器和數(shù)據(jù)庫技術(shù),設(shè)計(jì)并實(shí)現(xiàn)了智能拼車匹配系統(tǒng),,并開發(fā)了基于嵌入式平臺(tái)的客戶端裝置,。介紹了系統(tǒng)的架構(gòu),論述了位置云端存儲(chǔ)與檢索的實(shí)現(xiàn)方法,,說明了客戶端的硬件結(jié)構(gòu)和主要功能模塊的軟件設(shè)計(jì),。測(cè)試表明,,系統(tǒng)運(yùn)行穩(wěn)定,能夠?qū)崿F(xiàn)用戶注冊(cè),、登錄管理,、地圖定位、拼車需求發(fā)布,、智能匹配等功能,,能夠及時(shí)響應(yīng)請(qǐng)求并匹配出合適的結(jié)果,具有一定的應(yīng)用前景,。
中圖分類號(hào): TP391
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 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

    隨著社會(huì)的發(fā)展,汽車保有量迅速增長(zhǎng),,道路擁堵情況以及尾氣污染日益嚴(yán)重,。根據(jù)有關(guān)統(tǒng)計(jì),機(jī)動(dòng)車尾氣排放約占霧霾天氣PM2.5來源的四分之一以上,,是導(dǎo)致空氣污染的重要原因,。因此我國(guó)需要學(xué)習(xí)一些發(fā)達(dá)國(guó)家的城市治理經(jīng)驗(yàn),一方面大力發(fā)展公共交通,,另一方面倡導(dǎo)人們最大限度地合理使用汽車,,積極拼車出行,以達(dá)到減少擁堵和排污的效果[1],。

    拼車雙方有相似的出行路線和時(shí)間表是實(shí)現(xiàn)拼車的關(guān)鍵,。由于拼車在國(guó)內(nèi)興起不久,拼車的組織,、制度還很不完善。在現(xiàn)有的拼車網(wǎng)站或者應(yīng)用中,,大多是以列表形式羅列出各種拼車需求,,用戶需要在繁多的拼車需求中找出適合自己的拼車對(duì)象,并不是十分方便和快捷,。
    位置云(LBS云)服務(wù)作為云技術(shù)在地圖定位領(lǐng)域的應(yīng)用,,是一種集位置存儲(chǔ)與檢索于一體的云服務(wù)。LBS云平臺(tái)一方面可以完成龐大的位置數(shù)據(jù)存儲(chǔ),,另一方面能夠返回各類基于位置數(shù)據(jù)的檢索請(qǐng)求,,是開發(fā)基于位置服務(wù)系統(tǒng)的理想選擇,。
    針對(duì)以上分析,基于百度LBS云平臺(tái),,結(jié)合Web服務(wù)器和數(shù)據(jù)庫,,設(shè)計(jì)和實(shí)現(xiàn)了智能拼車匹配系統(tǒng)及其嵌入式客戶端。用戶只需登錄客戶端,,在地圖上將自己的拼車信息發(fā)送到服務(wù)器,,等待服務(wù)器返回匹配結(jié)果,就能夠方便,、及時(shí)地找到周圍合適的拼車伙伴,,完成快捷的拼車出行,從而節(jié)約出行成本,。同時(shí)能夠減少車輛出行,,為緩解交通擁堵情況以及節(jié)能減排做出貢獻(xiàn)。
1 系統(tǒng)設(shè)計(jì)
1.1 系統(tǒng)架構(gòu)

    系統(tǒng)采用Client/Server(C/S)體系結(jié)構(gòu),,其架構(gòu)如圖1所示,。系統(tǒng)主要包括服務(wù)器、基本數(shù)據(jù)庫,、位置云平臺(tái),、無線網(wǎng)絡(luò)和客戶端[2]??蛻舳送瓿汕芭_(tái)操作處理和計(jì)算,,通過無線網(wǎng)絡(luò)訪問Web服務(wù)器和數(shù)據(jù)庫,服務(wù)器對(duì)客戶端的拼車請(qǐng)求進(jìn)行處理并返回匹配結(jié)果,。

1.2 服務(wù)器設(shè)計(jì)
    服務(wù)器端采用開源的Tomcat服務(wù)器,,它支持Java類Servlet,在Java環(huán)境運(yùn)行時(shí)能夠很好地支持運(yùn)行Web應(yīng)用部署[3],。當(dāng)收到客戶端請(qǐng)求時(shí),,服務(wù)器啟動(dòng)并加載Servlet容器,Servlet根據(jù)請(qǐng)求生成響應(yīng)內(nèi)容并傳給服務(wù)器,,再由服務(wù)器將響應(yīng)返回客戶端,。
    本系統(tǒng)中,需要部署4個(gè)Servlet類,,分別用于注冊(cè),、登錄、存儲(chǔ)以及匹配,。服務(wù)器與客戶端的通信采用Http通信協(xié)議的post方法,,部署服務(wù)器時(shí),先繼承HttpServlet抽象類,,然后覆蓋HttpServlet的doGet()方法,,通過Http-ServletRequest對(duì)象來獲取請(qǐng)求信息,,最后由HttpServletResponse對(duì)象生成響應(yīng)結(jié)果返回給客戶端。寫完服務(wù)器的Servlet程序后在web.xml文件中進(jìn)行屬性配置,,就能夠通過8080端口連接部署的服務(wù)器[4],。
1.3 數(shù)據(jù)庫設(shè)計(jì)
    采用MySQL 5.6數(shù)據(jù)庫軟件,在服務(wù)器端可以直接引入Java數(shù)據(jù)庫連接(JDBC)驅(qū)動(dòng),,通過接口成功連接數(shù)據(jù)庫之后,,發(fā)送SQL語句操作數(shù)據(jù)庫并處理結(jié)果[5]。
    拼車時(shí)間和方式的匹配通過對(duì)數(shù)據(jù)庫schedule表的條件查詢實(shí)現(xiàn),。當(dāng)有用戶的匹配請(qǐng)求發(fā)送至服務(wù)器時(shí),,服務(wù)器端調(diào)用條件查詢類來進(jìn)行篩選,并返回符合條件的結(jié)果,。
    服務(wù)器使用JDBC接口連接數(shù)據(jù)庫,,在服務(wù)器的lib文件夾中插入mysql-connector-java-bin.jar驅(qū)動(dòng),Servlet程序中先要注冊(cè)驅(qū)動(dòng):Class.forName("com.mysql.jdbc.Driver");然后通過DriverManager.getConnection類連接建立的test數(shù)據(jù)庫,,端口為3306,,使用prepareStatement( )對(duì)象執(zhí)行SQL查詢語句,executeQuery( )方法把查詢結(jié)果返回并存放在ResultSet類對(duì)象中,。此外,,在程序中還應(yīng)設(shè)置CharacterEncoding屬性為utf-8的編碼方式,以避免中文出現(xiàn)亂碼,。
2 位置云技術(shù)
    在拼車系統(tǒng)中,,基于百度LBS云服務(wù),將用戶發(fā)送的出發(fā)地和目的地位置信息存儲(chǔ)在位置云平臺(tái)中,,利用位置云計(jì)算能力,,迅速篩選出這兩個(gè)位置周圍符合條件的其他用戶,并返回相應(yīng)用戶的基本信息,,完成拼車路徑的智能匹配,。
2.1 位置云存儲(chǔ)的實(shí)現(xiàn)
    百度LBS云存儲(chǔ)使用接口的方式進(jìn)行存儲(chǔ)管理,用位置數(shù)據(jù)存儲(chǔ)容器databox對(duì)所存儲(chǔ)的位置數(shù)據(jù)進(jìn)行字段定義,,包括基本字段databox和擴(kuò)展字段databox_meta,。用單元數(shù)據(jù)poi存儲(chǔ)具體的位置信息,同樣包括基本信息poi和擴(kuò)展信息poi_ect,。實(shí)現(xiàn)位置數(shù)據(jù)存儲(chǔ)的關(guān)鍵代碼如下:
    url: api.map.baidu.com/geodata/databox
    postfield:method=create&name=carpool&ak=key
            //創(chuàng)建名為carpool的databox
    url: api.map.baidu.com/geodata/poi
    postfield:method=create&name=start&ak=key
                //創(chuàng)建存儲(chǔ)出發(fā)地信息的poi
    postfield:method=create&name=destination&ak=key
            //創(chuàng)建存儲(chǔ)目的地信息的poi
2.2 位置云檢索的實(shí)現(xiàn)
    位置云檢索同樣使用接口方式來發(fā)送檢索請(qǐng)求,。在拼車匹配模塊中需要檢索出發(fā)地和目的地都相近的用戶,采用周邊檢索命令來實(shí)現(xiàn),。通過location變量設(shè)置檢索中心點(diǎn),格式為:經(jīng)度,,緯度,;通過radius變量設(shè)置檢索半徑,,單位為m。實(shí)現(xiàn)位置數(shù)據(jù)檢索的關(guān)鍵代碼如下:
    url: api.map.baidu.com/geodata/poi
    GET:api.map.baidu.com/geosearch/start&location=lon,
    lat&radius=3000&scope=2&ak=key
                //檢索出發(fā)地周圍3 km的拼車用戶
    GET:api.map.baidu.com/geosearch/destination&location=
    lond,latd&radius=3000&scope=2&ak=key
    //檢索目的地周圍3 km的拼車用戶
3 客戶端設(shè)計(jì)
3.1 客戶端硬件設(shè)計(jì)

    客戶端裝置要求攜帶方便,、低功耗,、高性能、可擴(kuò)展,,因此使用S3C6410嵌入式微處理器作為控制核心,。客戶端硬件結(jié)構(gòu)如圖2所示,,主要由S3C6410處理器,、GPS定位模塊、3G無線模塊及外圍電路等組成,。外圍電路包括256 MB RAM內(nèi)存,、2 GB NAND Flash存儲(chǔ)器、7寸液晶屏和串口接口等,。

    選用GPS模塊的型號(hào)為WGS100,,它采用高靈敏度導(dǎo)航芯片SIRF3,20通道通信,,最多可以同時(shí)與20顆衛(wèi)星建立通信,;有RS232和TTL兩種電平輸出方式,缺省通信速率為9 600 b/s,;采用可靠的外置天線,,定位穩(wěn)定,功耗低,,可直接由常見的5 V電源供電,。在客戶端中采用RS232方式與S3C6410處理器連接通信,由GPS模塊定位當(dāng)前位置數(shù)據(jù),,再由處理器處理后在客戶端軟件的地圖頁面定位和顯示當(dāng)前位置,,定位過程如圖3所示。

3.2 客戶端軟件設(shè)計(jì)
    智能拼車匹配系統(tǒng)的Android客戶端基于Eclipse 4.2開發(fā),,主要包括注冊(cè)模塊,、登錄模塊、地圖模塊和拼車模塊4個(gè)功能模塊,。
    客戶端有注冊(cè),、登錄、拼車3個(gè)界面,,在工程的layout文件夾中,,建立3個(gè)xml文件進(jìn)行窗口控件設(shè)計(jì)。在拼車界面中,,需要載入地圖頁面,,其代碼如下:
    <com.baidu.mapapi.MapView//地圖窗口接口
    android:id="@+id/bmapsView"//窗口id
    android:layout_width="fill_parent"//寬度
    android:layout_height="fill_parent"//高度
    android:clickable="true" /> //地圖可點(diǎn)擊
    各功能模塊程序設(shè)計(jì):
    (1)登錄模塊:向服務(wù)器驗(yàn)證用戶輸入的用戶名和密碼是否正確,,并返回提示信息。與服務(wù)器的通信采用post方式,,關(guān)鍵代碼如下:
    StringurlStr = "http://172.16.72.186:8080/loginser/login";
         //登錄Servlet的路徑
    HttpPost request = new HttpPost(urlStr);
//request繼承HttpPost方法
    HttpResponse response =client.execute(request),;
//執(zhí)行請(qǐng)求返回響應(yīng)
    (2)注冊(cè)模塊:將新用戶名、密碼等信息發(fā)送到服務(wù)器進(jìn)行保存,,完成后跳轉(zhuǎn)到登錄界面,,通信方法與登錄模塊相同。
    (3)地圖模塊:基于百度地圖api接口實(shí)現(xiàn)實(shí)時(shí)定位,、地圖搜索和路線規(guī)劃等基本功能,。程序中,,設(shè)置setBu-
iltInZoomControls對(duì)象啟用縮放控件,,setClickable對(duì)象設(shè)置地圖可點(diǎn)擊,,繼承MyLocationOverlay對(duì)象顯示當(dāng)前位置層,,用MKSearch( )方法來初始化地圖搜索功能,,設(shè)置enableCompass對(duì)象開啟指南針功能,。定位當(dāng)前位置的關(guān)鍵代碼如下:
    pt=new GeoPoint((int)(location.getLatitude() * 1e6),(int)
(location.getLongitude() * 1e6));//獲取當(dāng)前經(jīng)緯度
    mapView.getController().animateTo(pt);
//地圖上標(biāo)記當(dāng)前位置
    (4)拼車模塊:設(shè)置出發(fā)地,、目的地以及時(shí)間區(qū)間,,點(diǎn)擊拼車方式按鈕發(fā)送拼車信息到服務(wù)器,,其中出發(fā)地和目的地的經(jīng)緯度存儲(chǔ)到位置云平臺(tái)進(jìn)行匹配,。服務(wù)器進(jìn)行條件篩選后,返回匹配結(jié)果并在客戶端顯示,。通過點(diǎn)擊地圖設(shè)置地點(diǎn),,獲取經(jīng)緯度的關(guān)鍵代碼如下:
    public boolean onTap(GeoPoint p, MapView mapView) {
//點(diǎn)擊地圖事件監(jiān)聽
    GeoPoint gpoint = newGeoPoint((int)lat,(int)lon);
//獲取點(diǎn)擊地點(diǎn)經(jīng)緯度
    編寫好各模塊程序后,需要在工程文件根目錄下的AndroidManifest.xml文件中進(jìn)行相關(guān)設(shè)置,,才能正常運(yùn)行代碼[6],,其中關(guān)鍵權(quán)限設(shè)置如下:
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>//設(shè)置位置服務(wù)
    <uses-permission android:name="android.permission.
    INTERNET"></uses-permission>  //設(shè)置網(wǎng)絡(luò)權(quán)限
4 系統(tǒng)功能測(cè)試
    將客戶端程序打包成apk應(yīng)用文件,安裝到客戶端中,。在PC端開啟服務(wù)器和數(shù)據(jù)庫服務(wù),,登錄客戶端后進(jìn)入主界面,測(cè)試發(fā)送從當(dāng)前位置到南京火車站的搭乘需求到服務(wù)器,,設(shè)置時(shí)間區(qū)間為9:30~10:30,,如圖4所示。測(cè)試前,,預(yù)先向服務(wù)器發(fā)布了20條各不相同的拼車數(shù)據(jù),,服務(wù)器從這些已有的拼車信息中匹配出2個(gè)合適的拼車對(duì)象,如圖5所示,。

    為了滿足人們對(duì)于快捷拼車出行的實(shí)際需求,,設(shè)計(jì)開發(fā)了基于位置云服務(wù)的智能拼車匹配系統(tǒng)及其嵌入式客戶端裝置,利用百度地圖API開發(fā)接口,實(shí)現(xiàn)了地圖的定位,、搜索等基本功能,。結(jié)合Tomcat服務(wù)器與LBS云存儲(chǔ)和檢索技術(shù),,能夠迅速完成拼車位置信息的存儲(chǔ)和檢索,,為用戶及時(shí)地匹配到周圍合適的拼車伙伴。
參考文獻(xiàn)
[1] 王茂福.拼車的發(fā)展及其效應(yīng)[J].中國(guó)軟科學(xué),,2010(17):54-55.
[2] 韓超,,梁泉.Android系統(tǒng)原理及開發(fā)要點(diǎn)詳解[M].北京:電子工業(yè)出版社,2010.
[3] 劉尚旺,,何東健,,閆艷.Tomcat與IIS或Apache服務(wù)器集 成的應(yīng)用研究[J].計(jì)算機(jī)工程與設(shè)計(jì),2009,,30(10):2541-2546.
[4] 陳菁菁.程序員突擊&mdash;Tomcat原理與Java Web系統(tǒng)開發(fā)[M]. 北京:清華大學(xué)出版社,,2009.
[5] 吳吉義,王中友.程序員突擊&mdash;MySql原理與Web系統(tǒng)開發(fā)[M].北京:清華大學(xué)出版社,,2009.
[6] 何孟翰.Google Android SDK開發(fā)實(shí)戰(zhàn)演練[M].北京:人民郵電出版社,,2012.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。