摘 要: 借鑒現(xiàn)有導(dǎo)航產(chǎn)品優(yōu)點(diǎn),結(jié)合GPS、GIS以及嵌入式開發(fā)技術(shù),開發(fā)了個(gè)人移動(dòng)導(dǎo)航系統(tǒng)。導(dǎo)航系統(tǒng)以微軟的Windows Mobile 6.5為操作系統(tǒng),采用ST-92 GPS模塊接收GPS數(shù)據(jù)。軟件開發(fā)采用Visual Studio 2005開發(fā)環(huán)境,嵌入Mapx Mobile組件,通過RS232接口接收并處理模塊數(shù)據(jù),實(shí)現(xiàn)了實(shí)時(shí)定位、路徑記錄等功能。對(duì)地圖匹配算法進(jìn)行了分析,并對(duì)系統(tǒng)功能進(jìn)行了驗(yàn)證。
關(guān)鍵詞: Mapx Mobile;嵌入式;GPS
如今,隨著交通工具的普及和交通狀況的改善,人們的移動(dòng)性逐漸增強(qiáng),對(duì)于空間信息的依賴更大。全球定位系統(tǒng)GPS(Global Positioning System)能有效解決此類問題,為出行提供便捷服務(wù)[1]。目前車載導(dǎo)航產(chǎn)業(yè)蓬勃發(fā)展,然而車載GPS系統(tǒng)受到道路限制,不能隨時(shí)隨地提供位置信息。個(gè)人移動(dòng)導(dǎo)航系統(tǒng)基于移動(dòng)終端(如手機(jī)、掌上電腦等)設(shè)計(jì),可以彌補(bǔ)車載GPS系統(tǒng)受地形限制的不足,為個(gè)人用戶提供方便可靠的位置信息,幫助用戶在陌生環(huán)境中快速地找到目的地,具有體積小、便于攜帶等優(yōu)點(diǎn)。
1 系統(tǒng)構(gòu)成與功能
個(gè)人移動(dòng)地理信息系統(tǒng)GIS(Geographic Information System)是在傳統(tǒng)GIS基礎(chǔ)上利用空間定位手段結(jié)合嵌入式技術(shù),以數(shù)字地圖為顯示背景、與個(gè)人手持設(shè)備相結(jié)合,通過無線通信網(wǎng)絡(luò)提供移動(dòng)目標(biāo)實(shí)時(shí)位置及周圍信息的系統(tǒng)。本文根據(jù)大多數(shù)用戶需求及我國網(wǎng)絡(luò)通信現(xiàn)狀開發(fā)個(gè)人移動(dòng)導(dǎo)航系統(tǒng),系統(tǒng)主要由五部分組成,如圖1所示。
系統(tǒng)從GPS模塊獲取數(shù)據(jù),根據(jù)NMEA-0183協(xié)議對(duì)數(shù)據(jù)進(jìn)行篩選處理;由地圖匹配模塊將獲取的位置信息與電子地圖進(jìn)行匹配;位置顯示模塊在完成地圖匹配的前提下,將位置信息實(shí)時(shí)地在地圖上顯示出來,它是路徑記錄模塊的基礎(chǔ);路徑記錄模塊將行進(jìn)位置記錄下來,將之前和當(dāng)前位置同時(shí)顯示出來,并不斷更新,從而實(shí)現(xiàn)行進(jìn)軌跡顯示功能;將地圖的縮放及移動(dòng)功能設(shè)計(jì)于輔助功能模塊中。
本系統(tǒng)可根據(jù)用戶需求實(shí)現(xiàn)地圖縮放、平移、實(shí)時(shí)定位、路徑顯示等功能,有效地適用于個(gè)人移動(dòng)定位。
2 開發(fā)平臺(tái)搭建
2.1 硬件平臺(tái)
本系統(tǒng)采用Goeget公司生產(chǎn)的ST-92系列GPS模塊,該模塊使用SIFR III芯片組,可以同時(shí)追蹤20個(gè)衛(wèi)星信號(hào),具有靈敏度高(-159 dBm)、定位坐標(biāo)精度高(可達(dá)5 m(1 Ω))、體積小、支持NMEA-0183協(xié)議等特點(diǎn)。GPS數(shù)據(jù)通過RS232接口傳遞給搭載有Windows Mobile系統(tǒng)的開發(fā)板,進(jìn)行數(shù)據(jù)提取利用。系統(tǒng)結(jié)構(gòu)示意圖如圖2所示。
2.2 軟件開發(fā)平臺(tái)
Windows Mobile操作系統(tǒng)是微軟專門為手持移動(dòng)設(shè)備推出的“移動(dòng)版Windows”,它將Windows桌面擴(kuò)展到個(gè)人設(shè)備,使用Windows Mobile操作系統(tǒng)的設(shè)備主要有手機(jī)、PDA等[2]。導(dǎo)航系統(tǒng)采用微軟的Windows Mobile 6.5操作系統(tǒng)以及Windows Mobile 6 Professional SDK。開發(fā)平臺(tái)選用Visual Studio 2005,它針對(duì).net開發(fā),并且提供了智能設(shè)備模擬器,可真實(shí)地模擬物理機(jī)器代碼,把軟件安裝在這個(gè)模擬器上運(yùn)行,可使開發(fā)更加方便。
2.3 Mapx Mobile組件的嵌入
Mapx Mobile是Mapinfo公司提供的一種基于OLE(Object Linking and Embedding)的嵌入式GIS組件,可以嵌入在Pocket PC、Windows Mobile平臺(tái)下的應(yīng)用程序中,運(yùn)用Mapx Mobile建立的軟件可單獨(dú)在設(shè)備上運(yùn)行,并且可以與Pocket PC的Windows CE操作系統(tǒng)兼容[3]。
對(duì)Mapx Mobile組件的嵌入,首先需要在PC機(jī)安裝Mapx Mbile,在VS2005工具箱選項(xiàng)窗口中,選擇COM組件欄,勾選Mapinfo Mapx Mobile V5選項(xiàng),然后在工具箱中可看到新增的Mapx工具。對(duì)地圖操作時(shí)需要將組件拖到對(duì)話框窗口中,然后在VS2005界面中可對(duì)地圖屬性進(jìn)行操作,選擇載入需要的地圖。
Mapx Mobile是移動(dòng)GIS的高性能低成本的解決方案,具有標(biāo)準(zhǔn)用戶控制功能,可有效地嵌入到個(gè)人移動(dòng)導(dǎo)航系統(tǒng)中[4]。
3 系統(tǒng)實(shí)現(xiàn)過程分析
3.1 定位數(shù)據(jù)流獲取與分析
GPS模塊與應(yīng)用程序間通過RS232接口交互信息,因此需要在VS2005平臺(tái)上編寫對(duì)串口的驅(qū)動(dòng)。
m_hComm=CreateFile(Port,GENERIC_READ|GENERIC_WRITE,0,0,OPEN_EXISTING,0,0); //打開串口
dcb.BaudRate=9600; //設(shè)置波特率為9 600
dcb.ByteSize=8; //數(shù)據(jù)長度為8 B
dcb.Parity=0; //無校驗(yàn)位
dcb.StopBits=0; //無停止位
通過進(jìn)入函數(shù)LRESULT CwindowsmobileDlg::OnData-
ArrivedMsg(WPARAM wParam,LPARAM lParam)來處理收到的數(shù)據(jù)。因?yàn)樽x到的數(shù)據(jù)不是CString型,所以需要做進(jìn)一步處理。
unsigned char *data=(unsigned char*)wParam;
m_strDataReceived=CString(data).Left(length);
以下數(shù)據(jù)是GPS模塊接收到的部分?jǐn)?shù)據(jù)。
$GPGGA,014717.000,3600.1142,N,12007.3654,E,
1,06,4.7,-4.3,M,4.4,M,,0000*44
$GPGSA,A,3,27,15,26,02,09,29,,,,,,,6.7,4.7,4.8*39
$GPRMC,014717.000,A,3600.1142,N,12007.3654,E,
0.00,20.45,220410,,,A*5F
本系統(tǒng)只需要提取經(jīng)度、緯度和時(shí)間數(shù)據(jù),根據(jù)NMEA-0183協(xié)議,這里篩選接收GPGGA下的數(shù)據(jù)[5]。
3.2 定位點(diǎn)與路徑線的建立
首先創(chuàng)建圖層,并將其設(shè)置為動(dòng)態(tài)圖層,然后創(chuàng)建動(dòng)態(tài)圖元,對(duì)其進(jìn)行初始化,將其與mapx插件建立關(guān)聯(lián)。初始化中可設(shè)置定位點(diǎn)的大小、形狀及顏色。
CMapX LayergpsLayer=m_ctrlMapX;
GetLayers().CreateLayer(_T("GPSLayer"),NULL,1);
//創(chuàng)建動(dòng)態(tài)圖層GPSLayer
m_ctrlMapX.GetLayers().SetAnimationLayer(gpsLayer);
//設(shè)置圖層GPSLayer為動(dòng)態(tài)圖層
CMapXFeature mobileFtr;//動(dòng)態(tài)點(diǎn)圖元
mobileFtr.CreateDispatch(mobileFtr.GetClsid());//初始化
mobileFtr.Attach(m_ctrlMapX.GetDispatch());
//與m_ctrlMapX建立關(guān)聯(lián)
通過語句mobile.GetPoint().Set(gpsLongitude, gpsLatitude)將當(dāng)前坐標(biāo)數(shù)據(jù)與電子地圖進(jìn)行關(guān)聯(lián),然后通過mobile.Update()更新到地圖上并顯示出來。
對(duì)于路徑線的創(chuàng)建,需要對(duì)之前的定位點(diǎn)進(jìn)行儲(chǔ)存,獲得定位點(diǎn)集[6]。通過CMapX Feature中的CreateLine函數(shù)將儲(chǔ)存的點(diǎn)用直線連接起來,可利用CMapXStyle中提供的函數(shù)設(shè)置線的寬度、顏色等屬性。
3.3 地圖匹配算法分析
GIS基礎(chǔ)數(shù)據(jù)主要來源于地形圖、航片、衛(wèi)片等。車載及個(gè)人導(dǎo)航系統(tǒng)主要數(shù)據(jù)源是地形圖,地形圖通過掃描矢量化將地圖轉(zhuǎn)換成矢量化數(shù)字地圖。就掃描矢量化而言,除了原圖質(zhì)量影響數(shù)據(jù)經(jīng)度外,在掃描過程中圖像預(yù)處理、矢量化過程等各個(gè)環(huán)節(jié)對(duì)數(shù)據(jù)質(zhì)量都有一定程度的影響[7]。為保證定位準(zhǔn)確性,在實(shí)際應(yīng)用中需要對(duì)地圖進(jìn)行匹配研究。
地圖匹配需要確定在給定定位數(shù)據(jù)和地圖信息的基礎(chǔ)上獲得最可能的路段,以及行人在該路段上最可能的位置。
本文采用最短距離匹配算法[8],該算法根據(jù)道路屬性預(yù)先設(shè)置一個(gè)閾值,通過計(jì)算當(dāng)前GPS數(shù)據(jù)與各路段間的距離以及該數(shù)據(jù)在該路段上最短距離點(diǎn),將在閾值范圍內(nèi)的各路段匹配距離進(jìn)行比較,得到一條最短路徑。
圖3表示基于投影的匹配算法基本原理,圖中V點(diǎn)表示行人當(dāng)前位置,L1和L2表示附近的兩條路,V1、V2表示V點(diǎn)在兩條路上的投影,投影距離表示為d1、d2。在候選道路中選擇距離最短的作為匹配道路,并將在該條道路上的投影點(diǎn)認(rèn)為是行人的當(dāng)前位置。該算法可以在很大程度上消除地圖匹配中的各種誤差產(chǎn)生的影響。
地圖匹配算法具體實(shí)現(xiàn)過程如圖4所示。
3.4 地圖縮放及平移
地圖縮放及平移包括地圖的縮小、放大及平移。實(shí)現(xiàn)函數(shù)為SetCur2rentTool( )。
m_ctrlMapX.SetCurrentTool(miZoomOutTool);//縮小
m_ctrlMapX.SetCurrentTool(miZoomInTool);//放大
m_ctrlMapX.SetCurrentTool(miPanTool);//平移
m_ctrlMap為Map對(duì)象設(shè)定了以上工具,分別是縮小、放大和平移工具,點(diǎn)擊鼠標(biāo)即可進(jìn)行地圖瀏覽。
4 系統(tǒng)驗(yàn)證
在開發(fā)板(手機(jī))上安裝MapX組件,該組件位于PC機(jī)的MapX安裝目錄下,將開發(fā)的軟件和對(duì)應(yīng)的地圖拷貝到開發(fā)板中的maps文件夾中,雙擊運(yùn)行即可??截愡^程使用的是微軟的ActiveSync同步工具,它允許PC機(jī)與設(shè)備之間傳輸數(shù)據(jù)文件。
系統(tǒng)驗(yàn)證時(shí)采用青島市區(qū)地圖,軟件運(yùn)行界面示意圖如圖5所示。測(cè)試中端口號(hào)選擇為COM1,波特率為9 600 b/s,單擊右下角按鈕后啟動(dòng)系統(tǒng)。GPS數(shù)據(jù)通過RS232接口進(jìn)入開發(fā)板中,軟件進(jìn)行處理后將位置坐標(biāo)與電子地圖進(jìn)行匹配,將該點(diǎn)位置以紅色五星符號(hào)在地圖上顯示出來,同時(shí)用戶可在界面下方看到經(jīng)度及緯度數(shù)據(jù)。隨著位置的改變,定位點(diǎn)在地圖上會(huì)隨之實(shí)時(shí)移動(dòng),可準(zhǔn)確地進(jìn)行實(shí)時(shí)定位顯示。
經(jīng)過如上測(cè)試,系統(tǒng)可正確地、實(shí)時(shí)地獲取顯示位置信息并記錄行進(jìn)軌跡,可滿足用戶基本導(dǎo)航需求。
本文利用Visual Studio平臺(tái),嵌入MapX Mobile地圖化組件,設(shè)計(jì)了一款基于Windows Mobile系統(tǒng)的導(dǎo)航軟件,并結(jié)合ST-92 GPS模塊,開發(fā)了一個(gè)移動(dòng)導(dǎo)航定位系統(tǒng),同時(shí)對(duì)其具體實(shí)現(xiàn)過程進(jìn)行了闡述。本系統(tǒng)搭載青島市地圖進(jìn)行測(cè)試,通過串口獲取GPS數(shù)據(jù),完成了數(shù)據(jù)與電子地圖匹配,完成了地圖的顯示、縮放、平移,實(shí)現(xiàn)了定位導(dǎo)航功能。
參考文獻(xiàn)
[1] 孫兵.基于AGPS的智能導(dǎo)航系統(tǒng)軟件開發(fā)與研究[D]. 北京:北京郵電大學(xué),2010.
[2] 凌澤軍,魏文娟,孫震強(qiáng).智能終端的主流平臺(tái)——Windows Mobile分析[J].移動(dòng)通信,2010(9):78-82.
[3] MapInfo Corporation.MapInfo MapX Mobile production introduce[S].2003.
[4] 李凱鋒,呂志平.基于MapX Mobile開發(fā)的個(gè)人移動(dòng)導(dǎo)航系統(tǒng)[J].海洋測(cè)繪,2006,26(9):99-103.
[5] 錢恭斌,尹文濤,王文富.基于WM6.0操作系統(tǒng)的智能手機(jī)定位監(jiān)控系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2009,35(12):24-30.
[6] 馬紅皎,胡永輝,張志武.使用Mapx Mobile開發(fā)Pocket PC上導(dǎo)航軟件[C].全國時(shí)間頻率學(xué)術(shù)交流會(huì),2005.
[7] 曾波,江資斌.GPS車載導(dǎo)航系統(tǒng)的地圖匹配算法[J].測(cè)繪工程,2004,13(3):65-67.
[8] 吳忻.基于GPS定位和電子地圖的最佳路徑搜索[D].西安:西安電子科技大學(xué),2006.