1 緒論
隨著科技的發(fā)展車(chē)輛的普及,,人們對(duì)GPS實(shí)時(shí)導(dǎo)航的需求變的越來(lái)越突出,。隨之出現(xiàn)了,許多GPS實(shí)時(shí)導(dǎo)航系統(tǒng),這其中有軟硬件集成一體的GPS導(dǎo)航設(shè)備,,也有基于其他GPS設(shè)備的軟件系統(tǒng),。而所有的這些GPS導(dǎo)航幾乎都是以線(xiàn)框圖為主。線(xiàn)框圖的方式比較適用于城市內(nèi)部的導(dǎo)航,,當(dāng)有需要去郊區(qū)或者山地野外去探險(xiǎn)等活動(dòng)時(shí),,這種方式就顯得力不從心了。
因?yàn)檫@些地方的地圖信息少,,圖示比較粗糙,,其次,它提供的時(shí)線(xiàn)框的方式去描述地理,,顯然不能很深刻的反應(yīng)該地的地貌特征,,比如海拔,山野等,。而且為了及時(shí)更新維護(hù)這些線(xiàn)框圖帶來(lái)的代價(jià)也時(shí)很大的,。而這些需求的信息可以在衛(wèi)星地圖上找到。
與此同時(shí)Google公司在近些年出來(lái)的Google Earth軟件,,是一款十分優(yōu)秀的衛(wèi)星地圖服務(wù)軟件,,它免費(fèi)提供的衛(wèi)星地圖精度很高。大部分地區(qū)的地區(qū)都比較清晰,,特別是各個(gè)城市的照片,,可以清晰的看到馬路上的車(chē)輛。在中國(guó)衛(wèi)星圖像里,,一線(xiàn)城市以2009,、2010年拍攝的為主,二,、三線(xiàn)城市以05,、06年的庫(kù)存圖片為主,能較好地滿(mǎn)足導(dǎo)航的要求,。
在Google Earth Plus以上的收費(fèi)版本中還提供了GPS接口,,能實(shí)時(shí)地顯示當(dāng)前位置的地圖和移動(dòng)軌跡。而在免費(fèi)版本中不帶這個(gè)功能,。因此,,設(shè)計(jì)一個(gè)基于Google Earth的GPS導(dǎo)航系統(tǒng)也是很有實(shí)際意義的。通過(guò)該系統(tǒng),,完成對(duì)Google Earth軟件的控制,,從而達(dá)到基于GPS的實(shí)物圖導(dǎo)航的目的。
此外近期,, 基于Google Earth的開(kāi)發(fā)已經(jīng)很多了,, 例如, 利用Google官方提供的3D圖形繪制工具,繪制各種建筑或者樹(shù)木等物品,,可以上傳擺置在Google Earth上面作為產(chǎn)品展出,,也可以設(shè)計(jì)各種樹(shù)木擺放到山林的平面衛(wèi)星照片上,從而勾勒出具有3D特性的衛(wèi)星地圖,,便于防止森林火災(zāi)搶救等應(yīng)用,。
2 需求分析
2.1 功能需求
本系統(tǒng)由如下的四部分構(gòu)成:
1)GPS導(dǎo)航系統(tǒng)與GPS設(shè)備的通訊模塊。
2)WEB服務(wù)器,,接受來(lái)至于Google Earth的Network Link的請(qǐng)求,,響應(yīng)當(dāng)前的坐標(biāo)及軌跡信息。
3)預(yù)定軌跡的導(dǎo)航,,根據(jù)預(yù)定軌跡對(duì)位置進(jìn)行檢測(cè),,實(shí)現(xiàn)偏離預(yù)定軌跡時(shí)的報(bào)警功能。
4)提供軌跡管理和與其他GPS數(shù)據(jù)交換的工具,。
2.2 數(shù)據(jù)流分析
如圖1,在整個(gè)系統(tǒng)中,,數(shù)據(jù)的流動(dòng)比較的重要,各個(gè)功能之間的數(shù)據(jù)信息的交互都是數(shù)據(jù)的流動(dòng),。GPS硬件設(shè)備是個(gè)數(shù)據(jù)源,,不停的接受來(lái)自衛(wèi)星的信號(hào),通過(guò)計(jì)算,,組織成有格式的數(shù)據(jù)流傳遞到本系統(tǒng),,而本系統(tǒng)對(duì)這些GPS信息進(jìn)行讀取,并與系統(tǒng)內(nèi)部的其他的功能配合完成一系列功能,。由于系統(tǒng)要控制Google Earth來(lái)完成衛(wèi)星地圖的導(dǎo)航功能,,所以必須要有一個(gè)可以控制Google Earth軟件的方式來(lái)完成這個(gè)任務(wù)。這個(gè)功能需要把之前從GPS硬件設(shè)備讀取的信息以某種方式來(lái)控制Google Earth,。此外,,系統(tǒng)的軌跡管理功能也需要與其他功能配合才能完成一系列的管理功能。
圖1 數(shù)據(jù)流圖
3 系統(tǒng)設(shè)計(jì)
3.1 系統(tǒng)模型
圖2 系統(tǒng)模型圖
完成GPS導(dǎo)航的整個(gè)系統(tǒng)的模型如圖2所示,。這其中包含了很多外部硬件設(shè)備和軟件系統(tǒng),,而我們的GPS導(dǎo)航系統(tǒng)是安裝在用戶(hù)的PC機(jī)或筆記本電腦中的。
首先GPS設(shè)備不斷的接受來(lái)至于各個(gè)衛(wèi)星的無(wú)線(xiàn)信號(hào),,通過(guò)它本身的固件計(jì)算得出當(dāng)前的坐標(biāo)等相關(guān)地理信息,。然后與計(jì)算機(jī)進(jìn)行藍(lán)牙通訊傳送這些地理信息,而在計(jì)算機(jī)中,,操作系統(tǒng)底層把藍(lán)牙通訊模擬成基本的串口通訊,,供應(yīng)用程序調(diào)用。本GPS導(dǎo)航系統(tǒng),,自動(dòng)識(shí)別當(dāng)前計(jì)算機(jī)中的被模擬為串口的端口號(hào),,并不斷的讀取來(lái)至于GPS設(shè)備的地理信息,。再通過(guò)Google Earth控制模塊,控制Google Earth的顯示,,若當(dāng)前的地圖信息還未加載,Google Earth會(huì)根據(jù)當(dāng)前的網(wǎng)絡(luò)情況,,連接Google Earth服務(wù)器獲取對(duì)應(yīng)坐標(biāo)視角的地圖信息,。用戶(hù)一般都是在駕車(chē)行駛的時(shí)候需要這種導(dǎo)航,所以一般可能的話(huà),,可以通過(guò)筆記本無(wú)線(xiàn)網(wǎng)絡(luò)連接Google Earth服務(wù)器,,正如圖2所示。
3.2 功能模塊劃分
整個(gè)系統(tǒng)由四大模塊組成,。分別為GPS設(shè)備通訊模塊,,WEB服務(wù)器模塊,預(yù)定軌跡導(dǎo)航模塊,,用戶(hù)圖形界面,。
1)GPS設(shè)備的通訊模塊根據(jù)操作系統(tǒng)底層對(duì)藍(lán)牙的模擬串口,讀取GPS設(shè)備發(fā)送過(guò)來(lái)的地理信息,,并過(guò)濾無(wú)用信息,,動(dòng)態(tài)的更新到自定義的數(shù)據(jù)結(jié)構(gòu)中去。
2)WEB服務(wù)器模塊接受來(lái)至于Google Earth的Network Link的請(qǐng)求,,結(jié)合之前更新在結(jié)構(gòu)體中的坐標(biāo)信息,,生成用來(lái)改變Google Earth顯示的KML文件,并響應(yīng)Google Earth.
3)預(yù)定軌跡導(dǎo)航模塊先加載KML文件,,獲得預(yù)定的軌跡信息,。啟動(dòng)導(dǎo)航功能之后,實(shí)時(shí)地根據(jù)預(yù)定軌跡對(duì)當(dāng)前位置檢測(cè),,并在當(dāng)前位置偏離預(yù)定軌跡時(shí),,提供報(bào)警功能。
4)用戶(hù)圖形界面為了便于用戶(hù)的快捷使用,,本系統(tǒng)提供類(lèi)似與金山快譯的工具條按鈕組,,所有的功能全都由工具條上的幾個(gè)形象的按鈕完成。十分便利,。
3.3 核心模塊分析
3.3.1 GPS模塊
圖3 GPS模塊分析
這里GPS模塊的輸入是來(lái)至于GPS硬件設(shè)備發(fā)送過(guò)來(lái)的地理信息,,而它的輸出是對(duì)這些地理信息解析提取出來(lái)的坐標(biāo)和軌跡信息,傳遞給GoogleEarth控制模塊,。內(nèi)部完成串口數(shù)據(jù)的接受與坐標(biāo)軌跡的提取,。
3.3.2 Google Earth控制模塊
圖4 Google Earth控制模塊分析
這個(gè)Google Earth控制模塊,有兩個(gè)輸入,,一個(gè)是外部輸入,,就是來(lái)自于Google Earth的請(qǐng)求,,一個(gè)是用于構(gòu)造響應(yīng)這個(gè)請(qǐng)求時(shí)用到的坐標(biāo)與軌跡信息,這些信息來(lái)至于GPS模塊,,對(duì)外輸出就是響應(yīng)Google Earth的KML文件,。
3.3.3 串口通訊模塊分析
圖5 串口通訊模塊
在這個(gè)過(guò)程中,首先GPS設(shè)備不斷的接受來(lái)至于各個(gè)衛(wèi)星的無(wú)線(xiàn)信號(hào),,通過(guò)它本身的固件計(jì)算得出當(dāng)前的坐標(biāo)等相關(guān)地理信息,。然后與計(jì)算機(jī)進(jìn)行藍(lán)牙通訊傳送這些地理信息,而在計(jì)算機(jī)中,,操作系統(tǒng)底層把藍(lán)牙通訊模擬成基本的串口通訊,,供應(yīng)用程序調(diào)用。我們的GPS導(dǎo)航系統(tǒng),,自動(dòng)識(shí)別當(dāng)前計(jì)算機(jī)中的被模擬為串口的端口號(hào),,并開(kāi)啟線(xiàn)程,不斷的讀取來(lái)至于GPS設(shè)備的地理信息,。這里并不是所有的地理信息在本系統(tǒng)都是有用的,,通過(guò)程序過(guò)濾,提取出當(dāng)前坐標(biāo)點(diǎn)經(jīng)緯度,、速度,、方向等幾個(gè)基本的數(shù)據(jù)信息。把這些信息存儲(chǔ)到結(jié)構(gòu)體中,,并通過(guò)與之前的坐標(biāo)點(diǎn)的累加,,可以構(gòu)造出一連串的坐標(biāo),從而構(gòu)成行駛軌跡,。
3.3.4 WEB服務(wù)器模塊分析
WEB服務(wù)器模塊中首先開(kāi)啟HTTP服務(wù)線(xiàn)程,, 等待來(lái)至于GoogleEarth的Network Link的請(qǐng)求,結(jié)合之前更新在結(jié)構(gòu)體中的坐標(biāo)信息,,生成用來(lái)改變Google Earth顯示的KML文件,,并響應(yīng)Google Earth.這里有三個(gè)KML文件,其中Network Link中的URL直接指向http://127.0.0.1:5080/index.kml.這里的5080是WEB服務(wù)器注冊(cè)的端口號(hào),。
3.3.5 預(yù)定軌跡導(dǎo)航模塊分析
圖6 預(yù)定軌跡導(dǎo)航及越界警報(bào)模塊
預(yù)定軌跡導(dǎo)航及越界警報(bào)模塊中,,首先在導(dǎo)航之前要加載預(yù)定軌跡。
為了便于繪制和存儲(chǔ),,我們就采用Google Earth中對(duì)軌跡的存儲(chǔ)的KML軌跡文件作為預(yù)定軌跡的載體,。在加載完預(yù)定軌跡之后就可以開(kāi)啟GPS導(dǎo)航,串口通訊模塊不斷的讀取當(dāng)前坐標(biāo)信息,,而系統(tǒng)專(zhuān)門(mén)啟動(dòng)一個(gè)線(xiàn)程定時(shí)的去檢測(cè)當(dāng)前坐標(biāo)與預(yù)定軌跡之間的距離,,當(dāng)超出設(shè)置的預(yù)定軌跡的范圍的時(shí)候,即偏離預(yù)定軌跡時(shí),,啟動(dòng)警報(bào)系統(tǒng),,發(fā)出聲音警報(bào),,提醒用戶(hù)當(dāng)前坐標(biāo)已經(jīng)偏離預(yù)定的軌跡范圍了。若是沒(méi)有偏離預(yù)定軌跡,,則線(xiàn)程睡眠一段時(shí)間,,再次檢測(cè)當(dāng)前位置與預(yù)定軌跡之間的距離,開(kāi)始下一輪的檢測(cè)與警報(bào),。