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

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

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

    系統(tǒng)采用Client/Server(C/S)體系結構,其架構如圖1所示。系統(tǒng)主要包括服務器、基本數(shù)據(jù)庫、位置云平臺、無線網(wǎng)絡和客戶端[2]。客戶端完成前臺操作處理和計算,通過無線網(wǎng)絡訪問Web服務器和數(shù)據(jù)庫,服務器對客戶端的拼車請求進行處理并返回匹配結果。

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

    客戶端裝置要求攜帶方便、低功耗、高性能、可擴展,因此使用S3C6410嵌入式微處理器作為控制核心??蛻舳擞布Y構如圖2所示,主要由S3C6410處理器、GPS定位模塊、3G無線模塊及外圍電路等組成。外圍電路包括256 MB RAM內存、2 GB NAND Flash存儲器、7寸液晶屏和串口接口等。

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

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

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

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