張妍

【摘??要】本文敘述了MapGIS開發類庫的特點;闡述了虛擬防真技術的應用;討論了系統開發流程;論述了系統各模塊的實現,并給出了部分典型代碼;在現階段具有一定的理論與實踐意義。
【關鍵詞】MapGIS;虛擬防真;土地整治
1?MapGIS開發類庫
MapGIS是中國地質大學開發的通用工具型地理信息系統軟件,MapGIS二次開發庫主要以API函數、MFC類庫、ActiveX?控件三種方式為主,開發庫被封裝于若干動態鏈接庫(DLL)中[1]。
API函數在使用方法上與Windows的API函數完全一樣,因此是獨立于開發工具的。無論您使用VC++、VB還是BC++、Dephi,您在這些工具中如何調用Windows的API函數,您就怎么調用這些二次開發函數好了。MAPGIS類庫是為基于MFC(Microsoft?Foundation?Class)的開發者提供的多個可重用基類,將應用程序所需的常見基本功能作了封裝,使用便利,改動靈活。開發者只需從類庫派生即可使自己的程序獲得從窗口顯示控制到圖形查詢編輯的各項功能。ActiveX?控件是MAPGIS完成組件化改造的成果之一,它們基于COM++模型,使得二次開發更為快捷便利,代碼的可復用性更高。
2?虛擬防真技術
虛擬仿真(Virtual?Reality):仿真(simulation)技術,或稱為模擬技術,就是用一個系統模仿另一個真實系統的技術。虛擬仿真實際上是一種可創建和體驗虛擬世界(Virtual?World)的計算機系統。此種虛擬世界由計算機生成,可以是現實世界的再現,亦可以是構想中的世界,用戶可借助視覺、聽覺及觸覺等多種傳感通道與虛擬世界進行自然的交互。它是以仿真的方式給用戶創造一個實時反映實體對象變化與相互作用的三維虛擬世界,并通過頭盔顯示器(HMD)、數據手套等輔助傳感設備,提供用戶一個觀測與該虛擬世界交互的三維界面,使用戶可直接參與并探索仿真對象在所處環境中的作用與變化,產生沉浸感。VR技術是計算機技術、計算機圖形學、計算機視覺、視覺生理學、視覺心理學、仿真技術、微電子技術、多媒體技術、信息技術、立體顯示技術、傳感與測量技術、軟件工程、語音識別與合成技術、人機接口技術、網絡技術及人工智能技術等多種高新技術集成之結晶。其逼真性和實時交互性為系統仿真技術提供有力的支撐。[2]
3?系統開發
廣西土地整治虛擬防真系統開發流程圖如下:
圖1?廣西土地整治虛擬防真系統開發流程圖
4系統實現
4.1地形圖三維防真模塊
地形圖三維防真模塊主要是矢量化處理地形圖數據,從而獲得土地整理項目區域內的高程控制點,通過本模塊生成土地整理項目區域內地形圖的三維可視化成果圖,其典型代碼如下:
Range?objRange,usedRange; LPDISPATCH?lpDisp;
COleVariant?VOptional((long)DISP_E_PARAMNOTFOUND,VT_ERROR);
VARIANT?ret; CString?cstr="";if(!objApp.CreateDispatch("Excel.Application"))
{?AfxMessageBox("無法啟動Excel服務器!");return;}
GetDlgItem(IDC_eName)->GetWindowText(ExcelFilePathName);
if(ExcelFilePathName.Left(1)=="") {AfxMessageBox("你沒有選擇EXCEL文件!"); return;}? objBooks.AttachDispatch(objApp.GetWorkbooks());
4.2工程布局圖防真模塊
工程布局圖防真模塊主要是從工程布局圖中生成三維可視化成果圖,其典型代碼如下:
objBook?=?objBooks.Open(ExcelFilePathName,VOptional,NULL,VOptional);
objSheets?=?objBook.GetWorksheets();sheet?COleVariant((short)1);COleVariant((short)2);
objBook.AttachDispatch(lpDisp);objSheets.AttachDispatch(objBook.GetWorksheets());
objSheet?=?objSheets.GetItem(COleVariant((short)1));
usedRange.AttachDispatch(objSheet.GetUsedRange());
4.3單體圖三維防真模塊
單體圖三維防真模塊是根據單體的CAD圖在模塊中生成虛擬可視化成果圖,其典型代碼如下:
index[0]=row;index[1]=1;sa.GetElement(index,&val);switch(val.vt)
{case?VT_R8:{?cstr2.Format("%f",val.dblVal);break;}
case?VT_BSTR:{cstr2=(CString)val.bstrVal;break;}
case?VT_EMPTY:break;}?memset(dat1,0,256);sprintf(dat1,"%s",cstr2);
4.4規劃設計三維防真模塊
規劃設計三維防真模塊將實地拍攝的照片導入系統中,處理地形的真實紋理,生成虛擬可視化成果圖,其典型代碼如下:
objRange.AttachDispatch(usedRange.GetRows());long?iRowNum=objRange.GetCount();
objRange.AttachDispatch(usedRange.GetColumns());
long?iColumnNum=objRange.GetCount();
objRange?=?objSheet.GetRange(COleVariant("A1"),COleVariant("C1000"));
ret?=?objRange.GetValue(VOptional); COleSafeArray?sa(ret);
5小?結
本文詳細分析了基于MapGIS開發廣西土地整治虛擬防真系統的具體過程,實際應用表明,該系統界面友好,易于使用,三維防真效果逼真,在現階段具有一定的理論與實踐意義。
參考文獻:
[1]吳信才等.地理信息系統原理與方法.北京:電子工業出版社,2002.
[2]熊亞蒙.數字化教育與虛擬課件的實現:《科技資訊》,2010年第32期:110-113.
(作者單位:廣西壯族自治區自然資源調查監測院)