(武警警官學(xué)院,四川 成都 610213)
3S技術(shù)是以GIS(地理信息系統(tǒng))、GPS(全球定位系統(tǒng))、RS(遙感)技術(shù)采集地理信息,進(jìn)行空間定位,并向GIS 匯總,進(jìn)行存儲(chǔ)、處理、加工、管理和分析,形成各種與地理信息相關(guān)的產(chǎn)品。按照其內(nèi)容可將地理信息系統(tǒng)分為兩大類型:第一類被稱為應(yīng)用型地理信息系統(tǒng),其內(nèi)容包括某一專業(yè)或工作領(lǐng)域;第二類被稱為工具型地理信息系統(tǒng),它是GIS 工具軟件包,可實(shí)現(xiàn)GIS的基本功能。本課題的目標(biāo)是在“教學(xué)案例”中實(shí)現(xiàn)從GPS接收設(shè)備按NEMA0183協(xié)議提取數(shù)據(jù),與GIS相關(guān)開(kāi)發(fā)工具集成,開(kāi)發(fā)成可根據(jù)位置信息變換,顯示不同地理環(huán)境圖形及相應(yīng)參數(shù)的教學(xué)演示系統(tǒng)。
當(dāng)前應(yīng)用GIS系統(tǒng)開(kāi)發(fā)的主流技術(shù)開(kāi)發(fā)方式是集成二次開(kāi)發(fā),它是指為了實(shí)現(xiàn)GIS的基本功能,而采用專業(yè)的GIS 工具軟件,并以常用的軟件開(kāi)發(fā)工具(特別是可視化開(kāi)發(fā)工具)為開(kāi)發(fā)平臺(tái),將二者集成開(kāi)發(fā)。
選擇集成二次開(kāi)發(fā)方式符合培養(yǎng)應(yīng)用型人才定位的需要,因此我們選用了VC++(開(kāi)發(fā)GPS 二次開(kāi)發(fā)包)+MAPX5.0+MapInfo Professional +VB.NET(應(yīng)用程序開(kāi)發(fā))+SQL SERVER7.0的技術(shù)模式。
MapX 具有很強(qiáng)的地圖分析功能,它是一種ActiveX 控件產(chǎn)品,基于Windows操作系統(tǒng)。支持多種標(biāo)準(zhǔn)的可視化開(kāi)發(fā)環(huán)境,如VC++、VB 等。MapX的空間數(shù)據(jù)結(jié)構(gòu)是構(gòu)成GIS的基石,GIS所建立地理圖形的空間數(shù)據(jù)模型,是通過(guò)地理空間拓?fù)浣Y(jié)構(gòu)來(lái)實(shí)現(xiàn)的,它定義了各空間數(shù)據(jù)之間的關(guān)系,它能實(shí)現(xiàn)地理圖形與數(shù)據(jù)庫(kù)的結(jié)合。
單個(gè)對(duì)象(Object)和集合(Collection)構(gòu)成了MapX組件。在邏輯關(guān)系上,集合包括對(duì)象,它是由多個(gè)對(duì)象構(gòu)成的。Map對(duì)象包含三個(gè)分支:Layers、DataSets和Annotations。這三個(gè)分支的作用分別是:①Layer:負(fù)責(zé)操作地圖的圖層;②DataSet:負(fù)責(zé)訪問(wèn)空間數(shù)據(jù)表;③Annotation:負(fù)責(zé)添加文本和符號(hào)。在MapX 中,一個(gè)圖層表示一張單獨(dú)的地圖,所有的圖層都被存儲(chǔ)在layers中。在實(shí)際運(yùn)用中,我們應(yīng)合理地安排好每層的存放順序,避免一個(gè)圖層將另一個(gè)圖層覆蓋掉。
在本課題中,我們用VC++開(kāi)發(fā)生成DLL文件,在VB.NET中調(diào)用生成的DLL 文件中的函數(shù)(與調(diào)用WINDOWS API 函數(shù)一樣)按NEMA0183協(xié)議獲取從GPS接收設(shè)備傳過(guò)來(lái)的定位、時(shí)間等數(shù)據(jù),存入SQLSERVER 數(shù)據(jù)庫(kù)或?qū)崟r(shí)使用。利用MapInfo Professional(試用版)中的繪圖工具對(duì)學(xué)院地圖進(jìn)行創(chuàng)建,仍后通過(guò)人工選點(diǎn)利用已經(jīng)開(kāi)發(fā)的GPS二次開(kāi)發(fā)包獲取經(jīng)度,緯度、高度坐標(biāo)進(jìn)行定位。再把存入到SQLSERVER7.0的數(shù)據(jù)提取出來(lái)與開(kāi)發(fā)的圖層進(jìn)行數(shù)據(jù)綁定生成相應(yīng)的GST文件。屬性數(shù)據(jù)的表結(jié)構(gòu)文件.TAB定義了地圖屬性數(shù)據(jù)的表結(jié)構(gòu)。屬性數(shù)據(jù)文件.DAT 存放完整的地圖屬性數(shù)據(jù)??臻g數(shù)據(jù)文件.MAP 具體包含了各地圖對(duì)象的空間數(shù)據(jù)。
NEMA0183協(xié)議是為了在不同的GPS導(dǎo)航設(shè)備中建立統(tǒng)一的RTCM 標(biāo)準(zhǔn)(Radio Technical Commission for Maritime Services)差分協(xié)議。NEMA0183協(xié)議所規(guī)定的語(yǔ)句是按照ASCII格式進(jìn)行串行輸出的,傳輸速率可自定義,缺省波特率為4800。不同的波特率其傳輸字符串所表示的意義不一樣。
ETPGPSLIB 是我們利用VC++自主研發(fā)的一個(gè)GPS 軟件開(kāi)發(fā)包,利用這個(gè)ETPGPSLIB可以在32位WINDOWS應(yīng)用程序中加入全球定位系統(tǒng)的支持。ETPGPSLIB可在任何支持Windows DLLs調(diào)用的開(kāi)發(fā)環(huán)境中使用,例如:VB,VC,DELPHI,JAVA。ETPGPSLIB 中的API 函數(shù)調(diào)用與WIN32 SDK API 函數(shù)調(diào)用方法類似。
我們針對(duì)接收機(jī)的USB 接口數(shù)據(jù)傳送格式,編寫了ETPGPSLIB,通過(guò)對(duì)指定COM口的訪問(wèn)讀取接收機(jī)接收到的符合NEMA0183 協(xié)議規(guī)定格式的數(shù)據(jù)。在VB.NET 中對(duì)接收機(jī)的傳送過(guò)來(lái)的數(shù)據(jù)進(jìn)行處理,加工后將需要的數(shù)據(jù)存入數(shù)據(jù)庫(kù)中。在MapInfo Professional 開(kāi)發(fā)地理圖樣,從SQL SERVER 數(shù)據(jù)庫(kù)中提取相對(duì)應(yīng)的位置信息數(shù)據(jù)與圖樣綁定,生成符合MAPINFO規(guī)范的.tab、.id、.map等文件。再利用MAPX 中的Geoset Manager工具生成對(duì)應(yīng)的地圖文件.GST。最后在VB.NET的開(kāi)發(fā)環(huán)境中調(diào)用MAPX 控件,選擇已經(jīng)生成的地圖文件.GST。這樣一個(gè)簡(jiǎn)單的利用GPS數(shù)據(jù),生成GIS應(yīng)用系統(tǒng)的教學(xué)案例就基本完成了。