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