謝宏蘭
摘要:近年來,各種地圖導(dǎo)航應(yīng)用的出現(xiàn),大大便利了人們的生活。隨著室外定位技術(shù)的成熟,人們對室內(nèi)定位的需求也正在逐漸增加。在室內(nèi)停車場中,由于車位眾多,地形復(fù)雜,時常出現(xiàn)車主在尋找車輛時,無法確認(rèn)位置,從而浪費大量時間的情況。室內(nèi)停車場車輛定位及導(dǎo)航能為車主提供一個室內(nèi)導(dǎo)航的幫助,使得車主在該應(yīng)用的幫助下能快速找到自己的車輛,節(jié)省了車主的時間。本系統(tǒng)的主要應(yīng)用場景為室內(nèi)停車場,主要用于在室內(nèi)對人員和車輛進(jìn)行定位,方便人們在復(fù)雜的室內(nèi)停車場環(huán)境下快速地找到自己的車輛。
關(guān)鍵詞:定位;導(dǎo)航;室內(nèi)停車場
中圖分類號:TP3 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2020)12-0219-02
1前言
現(xiàn)如今,越來越多的人擁有了自己的汽車,汽車已經(jīng)成為人們出行的主要方式之一,使人們的出行生活變得更加方便,快捷。但人們自己開車出行就必須面臨停車的問題,車主們時常遇到找不到停車場,車位不足,車位收費價格不合理等眾多問題,停車已經(jīng)成為廣大車主的一大難題。車主們不僅在停車時會遇到問題,取車時,車主們也會遇到各種各樣的困難。隨著停車場的逐漸規(guī)范化,越來越多的停車場轉(zhuǎn)移到了室內(nèi)空間。然而,室內(nèi)空間環(huán)境復(fù)雜,為車主找車帶來了困難。一方面,各位車主難以準(zhǔn)確的記住自己車的位置。另一方面,車主即使能夠記住,而在復(fù)雜的室內(nèi)環(huán)境下,車主也難以準(zhǔn)確判斷出自己的當(dāng)前位置,更無法快速準(zhǔn)確地找到自己的車輛。本文旨在建立一個室內(nèi)停車場車輛定位及導(dǎo)航系統(tǒng),解決廣大車主停車難的問題,為人們的出行生活帶來便利。
2系統(tǒng)概述
本文設(shè)計的室內(nèi)停車場車輛定位及導(dǎo)航系統(tǒng)主要完成如下功能:
1)方便車主停車:在停車時,為車主提供附近停車場信息,車位數(shù)量,收費標(biāo)準(zhǔn)等,供車主選擇,讓車主能夠找到合適的停車場,停放車輛。
2)方便車主尋找車輛:在車主尋找車輛時,系統(tǒng)提供位置確定和路徑導(dǎo)航服務(wù),幫助車主快速找到自己的車輛,節(jié)省車主的時間。
3)停車場信息展示:在用戶需要停車時,為用戶展示停車場的詳細(xì)信息,包括實時車位數(shù),收費標(biāo)準(zhǔn),停車場樓層信息,及停車場地圖等,供用戶選擇。
4)停車位記錄:當(dāng)車主停好車后,根據(jù)停車場地圖選擇自己的停車位,并將信息保存在手機(jī)中,以便找車時使用。
5)室內(nèi)定位:找車時,當(dāng)車主進(jìn)入停車場后,接收到WiFi信號,根據(jù)WiFi的信號強(qiáng)度(WiFi值)計算出距離,實現(xiàn)定位。
6)路徑導(dǎo)航:以定位結(jié)果為起點,以記錄的停車位為終點,運(yùn)用廣度優(yōu)先遍歷算法,計算出最短路徑,為車主提供路徑導(dǎo)航。
本系統(tǒng)設(shè)計中,采用了Client/Server架構(gòu),通過合理分配任務(wù)到客戶端和服務(wù)端,降低系統(tǒng)的通訊開銷,客戶端需要安裝相應(yīng)軟件才可進(jìn)行管理操作,系統(tǒng)架構(gòu)如圖1所示。
在本系統(tǒng)中,使用MySQL數(shù)據(jù)庫存儲停車場數(shù)據(jù),服務(wù)端用Struts2框架搭建,使用JDBC技術(shù)連接MySQL數(shù)據(jù)庫,主要實現(xiàn)與客戶端進(jìn)行停車場數(shù)據(jù)傳輸?shù)墓δ?。Android客戶端通過HttpURLConnection技術(shù)實現(xiàn)訪問服務(wù)端,獲取停車場的數(shù)據(jù)信息,之后根據(jù)相應(yīng)的停車場信息和接收到的WiFi熱點信息,進(jìn)行計算,實現(xiàn)定位功能。系統(tǒng)中的WiFi熱點需要設(shè)置在停車場的固定位點,并記錄在數(shù)據(jù)庫中,在數(shù)據(jù)傳輸時,發(fā)送至Android客戶端,便于進(jìn)行定位運(yùn)算。
本系統(tǒng)主要分為兩個工作流程,停車操作和找車操作。在停車過程中主要實現(xiàn)停車場信息展示和車位記錄的功能,在找車過程中主要實現(xiàn)室內(nèi)定位和路徑導(dǎo)航的功能。在停車過程中,客戶端會先展示數(shù)據(jù)庫中的停車場的基本信息,在用戶點擊選擇后,進(jìn)入查看該停車場的詳細(xì)信息,并顯示該停車場的具體樓層。在用戶選擇樓層后,即進(jìn)入相應(yīng)的停車場地圖,地圖上會顯示車位分布及狀態(tài)等,在車主停好車后,選擇相應(yīng)車位,經(jīng)系統(tǒng)驗證后,車位信息則被記錄在本地,完成停車過程。在找車過程中,系統(tǒng)會先檢查是否有停車位記錄,當(dāng)系統(tǒng)有停車位記錄時,跳轉(zhuǎn)至找車界面,用戶開啟定位后,系統(tǒng)根據(jù)接收到的WiFi熱點信息,計算出當(dāng)前位置,系統(tǒng)加載相應(yīng)樓層地圖并顯示出當(dāng)前位置,完成定位功能。之后,用戶點擊路徑顯示后,系統(tǒng)根據(jù)當(dāng)前位置和車位記錄,使用廣度優(yōu)先遍歷計算出最短路徑,實現(xiàn)路徑導(dǎo)航的功能??紤]到系統(tǒng)的實用性,添加了部分實用功能。在停車和找車時,都加入了常用地圖應(yīng)用(高德地圖,百度地圖)軟件的跳轉(zhuǎn)功能,便于車主找到停車場。同時,還加入了實時車位的功能,停車或找車操作完成后,相應(yīng)車位狀態(tài)發(fā)生改變。在找車過程還加入了路徑信息詳情的功能,根據(jù)路徑計算出相應(yīng)距離及方向,更加方便車主找車。
3地圖數(shù)據(jù)設(shè)計及定位導(dǎo)航原理
室內(nèi)停車場車輛定位及導(dǎo)航系統(tǒng)需要進(jìn)行定位操作,所以需要繪制地圖,設(shè)計地圖數(shù)據(jù)結(jié)構(gòu)等相關(guān)操作,良好的地圖數(shù)據(jù)結(jié)構(gòu)是完成定位導(dǎo)航功能的基礎(chǔ)。在本系統(tǒng)的開發(fā)過程中,地圖在Eclipse中進(jìn)行繪制,使用Java語言,運(yùn)用Bufferedlmage和Graphics相關(guān)技術(shù)進(jìn)行地圖的繪制,繪制完成后再將內(nèi)容生成圖片,寫入文件即可。地圖的數(shù)據(jù)結(jié)構(gòu)設(shè)計則相對于較為復(fù)雜,需要考慮到定位和導(dǎo)航功能等的實現(xiàn)。地圖設(shè)計中,需要對地圖建立坐標(biāo)系,即X(橫坐標(biāo))和Y(縱坐標(biāo)),同時考慮到減少數(shù)據(jù)傳輸,建立Point類,有x,y和id 3個屬性,x,y分別表示橫縱坐標(biāo),id則為坐標(biāo)轉(zhuǎn)換后的數(shù)據(jù),在數(shù)據(jù)庫和數(shù)據(jù)傳輸過程中,只有id屬性,具體運(yùn)算時再還原為相應(yīng)坐標(biāo),減少數(shù)據(jù)存儲和傳輸。通過Point類的建立,地圖中每個點則都有對應(yīng)的數(shù)據(jù)表示。之后,即可將具體車位位置,WiFi熱點位置,電梯位置等與相應(yīng)位點進(jìn)行對應(yīng),也可將定位結(jié)果顯示在地圖上。
此時,雖然已經(jīng)完成定位功能,但路徑導(dǎo)航的實現(xiàn),還需要其他規(guī)則。在系統(tǒng)中,定義roadpoint為路徑遍歷點,endpoint路徑遍歷端點,在進(jìn)行路徑導(dǎo)航時,先計算出起點和終點對應(yīng)的最近的路徑遍歷點,再以這兩個遍歷點為起點和終點,運(yùn)用廣度優(yōu)先遍歷算法即可找出最短路徑,遍歷結(jié)束后再進(jìn)行回溯,找出路徑的各個關(guān)鍵點(包括起點,起點對應(yīng)的遍歷點,遍歷過程中的路徑端點,終點對應(yīng)的遍歷點,終點),將各個關(guān)鍵點按順序連接,即可找出最短路徑,顯示在地圖上,實現(xiàn)路徑導(dǎo)航功能。圖示如下:
如圖2,圖中黑色點p1,p2,p3,p4,p5,p6即為endpoint路徑遍歷端點,藍(lán)色線上的點(包括黑色點)即為roadpoint為路徑遍歷點。如圖3,圖中黑色點即為路徑關(guān)鍵點,令pl為起點,p7為終點,則p2為起點對應(yīng)的路徑遍歷點,p6為終點對應(yīng)的路徑遍歷點,p3,p4,p5即為遍歷過程中的路徑端點。將路徑關(guān)鍵點依次連接,即可得到最短路徑(藍(lán)色直線)。
4停車流程設(shè)計
本系統(tǒng)的停車流程如圖4所示。首先,用戶在點擊停車后,跳轉(zhuǎn)至停車場選擇頁面,界面UI主要由一個ListView構(gòu)成,應(yīng)用從服務(wù)器獲得停車場名和實時車位信息,并顯示在界面上,供用戶選擇。待用戶點擊選擇停車場后,進(jìn)入樓層選擇頁面,此界面UI由TextView,ImageButton和ListView構(gòu)成,Text-View用于顯示停車場詳細(xì)信息,ImageButton用于提供按鈕跳轉(zhuǎn)第三方地圖應(yīng)用導(dǎo)航至該停車場,ListView則用于顯示樓層和各個樓層的車位數(shù)量。當(dāng)用戶點擊選擇樓層后,進(jìn)入停車位選擇頁面,此界面UI主要由ImageView,Spinner和Button構(gòu)成,ImageView用于顯示地圖,Spinner列表選擇框供用戶選擇停車位,Button進(jìn)行停車位確定記錄操作,車位記錄使用SharedPref-erences完成,同時為便于找車過程,還會將需要的停車場信息也記錄。停車流程的每個頁面都需要進(jìn)行網(wǎng)絡(luò)通信,從服務(wù)端獲取停車場數(shù)據(jù),同時還要完成地圖下載的功能。
5找車流程設(shè)計
本系統(tǒng)的找車流程如圖5所示。在用戶點擊找車后,系統(tǒng)會根據(jù)SharedPreferences中的信息先判斷是否有停車位記錄,如果沒有,則會顯示Toast提示信息。如果有車位記錄則會彈出一個PopupMenu,提供進(jìn)入停車場和導(dǎo)航至停車場兩個選擇。在用戶選擇點擊進(jìn)入停車場后,正式進(jìn)入找車流程。在此頁面中有查看車位信息,開始定位,顯示路徑和導(dǎo)航詳情四個功能,UI界面中主要使用了Button,ImageView和AlertDialog三個控件。在用戶點擊查看車位信息后,系統(tǒng)取出找車流程中用SharedPreferences記錄的停車位信息,并彈出一個AlertDialog顯示給用戶。
6小結(jié)
本室內(nèi)停車場車輛定位及導(dǎo)航系統(tǒng)對整個停車過程和找車過程涉及的功能都進(jìn)行了設(shè)計,且對系統(tǒng)的核心功能定位導(dǎo)航,也都較好的設(shè)計了。整個應(yīng)用界面簡潔、美觀、操作方便、意義明確,給用戶提供良好的人機(jī)交互體驗。同時,在用戶進(jìn)行誤操作或進(jìn)行敏感操作時,給予相應(yīng)的提示信息,給出相應(yīng)提示及確認(rèn)操作,確保系統(tǒng)安全性。