張 棫,李 燃,林 瀚,寇崇暉
(閩江學院 地理科學系,福建 福州 350108)
基于ARCGISENGINE的校園三維虛擬沙盤設計
張 棫,李 燃,林 瀚,寇崇暉
(閩江學院 地理科學系,福建 福州 350108)
GIS作為一門綜合性技術(shù),不斷與其他技術(shù)相結(jié)合,特別是計算機技術(shù)的發(fā)展密切相關(guān).ArcGIS Engine帶來開發(fā)平臺的靈活性,能夠使GIS功能嵌入非GIS軟件或?qū)⑵渌浖δ芤隚IS軟件平臺.本文結(jié)合閩江學院校園三維虛擬沙盤來闡述利用ArcGIS Engine進行地理信息系統(tǒng)二次開發(fā)的原理和方法.
ArcGIS Engine;三維;虛擬沙盤
經(jīng)歷30多年的發(fā)展,GIS正在形成完整的技術(shù)系統(tǒng)并在建立其他理論體系,形成了多層次和不同尺度的應用格局,成為信息產(chǎn)業(yè)的重要組成部分[1-2].GIS技術(shù)的應用越來越廣泛,已廣泛應用到國土、農(nóng)業(yè)、海洋、汽車導航、防災、等各行業(yè)中[3-5].各種應用型GIS系統(tǒng)也層出不窮,但傳統(tǒng)GIS的開發(fā)存在很多弊端.傳統(tǒng)GIS開發(fā)方式主要采用GIS平臺提供的宏命令語言,如ArcInfo的AML,加上龐大的函數(shù)、命令庫,使得普通的開發(fā)技術(shù)人員難以掌握,延長了應用產(chǎn)品的開發(fā)周期.在數(shù)據(jù)管理方面,傳統(tǒng)GIS系統(tǒng)中的空間數(shù)據(jù)管理也存在不足[6].此外,傳統(tǒng)GIS系統(tǒng)與MIS系統(tǒng),多媒體開發(fā)工具的兼容性都相對較差.傳統(tǒng)GIS開發(fā)模式不靈活的開發(fā)方式及昂貴的價格,在相當大的程度上限制了GIS應用領域的發(fā)展.采用組件技術(shù)把GIS的功能適當抽象,以組件的形式供開發(fā)者使用,帶來許多傳統(tǒng)GIS工具無法比擬的優(yōu)點:小巧靈活,價格便宜,直接嵌入MIS開發(fā)工具,強大的GIS功能,開發(fā)簡捷等.其典型代表是ESRI公司推出的產(chǎn)品——ArcGISEngine,使得GIS應用開發(fā)徹底地脫離了ArcGIS桌面平臺,大大提高了GIS開發(fā)的效率,極大地促進了GIS的應用開發(fā)[7].用戶只需用ArcGIS Engine一個軟件包就可以開發(fā)實用的有針對性的GIS,不僅方便了開發(fā),還大大節(jié)約了開發(fā)費用.ArcGIS Engine的是地理信息系統(tǒng)的二次開發(fā)的一個里程碑.
本文基于COM技術(shù)的ArcGIS Engine進行地理信息系統(tǒng)的開發(fā),并結(jié)合校園三維虛擬沙盤來說明其開發(fā)的原理和方法.
ArcGIS Engine是一個基于ArcObjects構(gòu)建的可編程的嵌入式GIS工具包.ArcGIS Engine是由一組核心的ArcObjects包組,與平臺無關(guān).它是一種新的部署策略和資源.開發(fā)人員能利用ArcGIS Engine開發(fā)出功能強大的GIS應用系統(tǒng).ArcGIS Engine開發(fā)包包括三個關(guān)鍵部分[8]:
2.1.1 控件
控件是ArcGIS用戶界面的組成部分,你可以嵌入并在你的應用程序中使用.
2.1.2 工具條和工具
工具條是GIS工具的集合,在應用程序中用它來和地圖和地理信息交互.
2.1.3 對象庫
對象庫是可編程ArcObjects組件的集合,包括幾何圖形到制圖、GIS數(shù)據(jù)源和geodatabase等一系列庫.
COM(Component Object Model,組件對象模型)是一種以組件為發(fā)布單元的對象模型,COM是OLE和ActiveX共同的基礎,COM不是一種面向?qū)ο蟮恼Z言,而是一種二進制標準[9-10].COM所建立的是一個軟件模塊與另一軟件模塊之間的鏈接,當這種鏈接建立之后,模塊之間就可以通過接口機制來進行通信.COM接口是一組邏輯上相互關(guān)聯(lián)的操作,這些操作定義了某種行為,即這組操作的規(guī)范,而非特定的實現(xiàn),實質(zhì)是接口代表了接口調(diào)用者和實現(xiàn)者之間的一種約定.COM標準增加了保障系統(tǒng)和組件完整的安全機制,從而擴展到分布式環(huán)境.
ArcGIS Engine可 以 在 Windows、UNIX 和Linux桌面上運行并支持一系列的應用軟件開發(fā)環(huán)境,包括:Visual Basic 6,Microsoft Visual Studio.NET和Java開發(fā)環(huán)境.因此ArcGIS Engine允許開發(fā)者在自己熟悉的環(huán)境下進行開發(fā).ArcGIS Engine通常是通過添加控件、工具、菜單條和對象庫,在應用中嵌入GIS功能.以下結(jié)合校園三維虛擬沙盤詳細介紹其具體開發(fā)方式.
(1)啟動 Microsoft Visual Studio 2005,并新建一個工程;
(2)工程命名為“三維虛擬沙盤校園”并保存該工程;
(3)右擊工程,選擇“添加引用(R)…”(見圖 1);
(4)在添加引用對話框中選擇所需要添加的庫.
圖1 添加控件
(1)在設計模式下打開Form1窗體;
(2)在窗體中添加相應的控件;
(3) 再 將 PageLayoutControl、TOCControl 和ToolbarControl添加到窗體中;
(4)重新調(diào)整窗體上各控件的大小和位置;
(5)結(jié)合閩江學院三維虛擬沙盤校園的具體需要,設計最終窗體(見圖2).
圖2 校園地理信息系統(tǒng)窗體設計
對于此應用程序,TOCControl和ToolbarControl控件將與PageLayoutControl相互協(xié)作,而不是MapControl,為此PageLayoutControl必須設置為綁定控件.TOCControl使用綁定的ActiveView顯示圖形、圖層和符號,而位于ToolbarControl上的任何命令、工具或菜單項會受綁定控件的顯示影響.
可以用設置“屬性”的辦法設置綁定控件,如圖3和圖4:
圖3 ToolbarControl屬性頁
圖4 TOCControl屬性頁
也可以用代碼的形式實現(xiàn),代碼如下:
ArcGIS Engine提供了120多個命令和工具,它們能直接和 MapControl、PageLayoutControl和ToolbarControl相互協(xié)作.這些命令和工具提供了大量的GIS功能,包括地圖導航、屬性查詢、地物選擇等.在應用程序中增加一些對本次開發(fā)有用的命令和工具.
在Form_Load事件中的加載文檔代碼之前添加如下代碼:
和綁定控件協(xié)作的ToolbarControl增加ArcGIS Engine命令一樣,按照前面的步驟,可以從ArcGIS Engine命令創(chuàng)建彈出式菜單.下面將在應用程序中增加與PageLayoutControl協(xié)作的彈出式菜單,當在PageLayoutControl可視區(qū)域點擊鼠標右鍵的時候,彈出式菜單將顯示.
在Form_Load事件中向ToolbarControl增加命令代碼的后面加載文檔代碼的前面增加如下代碼:
MapControl控件中的顯示的就是二維數(shù)據(jù),可在其中選擇元素并利用圖層加載的辦法,加載入SceneControl控件中.在SceneControl控件中便可進行三維的顯示.
(1)添加一個新的窗體Form2,并在其中部署ToolBarControl控件和SceneControl控件,如圖5:
圖5 三維顯示窗體
(2)在Form1中添加axMapControl1_OnMouse-Down事件并添加下列代碼:
(3)最后在Form2的Load事件中添加下列代碼:
(4)運行結(jié)果如圖6:
圖6 三維顯示結(jié)果(校園部分角落——食堂)
校園三維虛擬沙盤系統(tǒng)是對ArcGIS Engine二次開發(fā)進行的一次有意義的嘗試,開發(fā)利用ArcGIS Engine的各個模塊之間的聯(lián)合,開發(fā)出適合于三維虛擬沙盤校園的系統(tǒng).基于ArcGIS Engine的開發(fā)與開發(fā)平臺無關(guān),且各個組件之間能自由的組合開發(fā)出各種各具特色的系統(tǒng).從運行的結(jié)果分析,此次開發(fā)基本達到了研究項目的目的,但由于研究系統(tǒng)的復雜性,在一些方面還不夠深入.通過以上的研究表明,利用ArcGIS Engine進行二次開發(fā)表明其具有開發(fā)的簡捷性、方便性、高效性等特點,且能適合不同的開發(fā)要求.
〔1〕丁院鋒,丁賢榮,趙吉祥.基于 ArcGIS Engine 實現(xiàn)河道工程對象3D建模[J].電腦開發(fā)與應用,2007(20)11:47-49.
〔2〕莊晨輝,陳銘潮,潘俊忠.林業(yè)資源管理地理信息系統(tǒng)的研制與開發(fā)[J].福建林學院學報,2005,25(1):1-4.
〔3〕張健.歐美大學校園規(guī)劃例程初探[D].重慶:重慶大學,2004.
〔4〕鄒杰,鄒崢嶸,丁孝兵.基于 IMAGIS的城市三維景觀的構(gòu)建[J].城市勘測,2005(6):16-18.
〔5〕朱慶,林琿.數(shù)碼城市地理信息系統(tǒng)——虛擬城市環(huán)境中的三維城市模型初探[M].武漢:武漢大學出版社,2004.
〔6〕劉曉艷,林琿,張宏.虛擬城市建設原理與方法[M].北京:科學出版社,2003.
〔7〕ArcGIS Engine Developer Guide[R].ESRI Corp,2007.
〔8〕沈百玲.ArcGIS Engine簡介[J].中國通訊,ESRI中國(北京)有限公司,2003(10):3-5.
〔9〕吳柏青,魏仰蘇,蔣國明.基于COM原理的UML模型信息提取技術(shù)[J].計算機工程與設計,2007,28(17):4099-4101.
〔10〕ESRI.Desktop Developers Guides.Environmental Systems Research Institute,Inc,2002.
P208
A
1673-260X(2012)03-0114-04