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