張 棫,李 燃,林 瀚,寇崇暉
(閩江學院 地理科學系,福建 福州 350108)
基于ARCGISENGINE的校園三維虛擬沙盤設計
張 棫,李 燃,林 瀚,寇崇暉
(閩江學院 地理科學系,福建 福州 350108)
GIS作為一門綜合性技術,不斷與其他技術相結合,特別是計算機技術的發展密切相關.ArcGIS Engine帶來開發平臺的靈活性,能夠使GIS功能嵌入非GIS軟件或將其他軟件功能引入GIS軟件平臺.本文結合閩江學院校園三維虛擬沙盤來闡述利用ArcGIS Engine進行地理信息系統二次開發的原理和方法.
ArcGIS Engine;三維;虛擬沙盤
經歷30多年的發展,GIS正在形成完整的技術系統并在建立其他理論體系,形成了多層次和不同尺度的應用格局,成為信息產業的重要組成部分[1-2].GIS技術的應用越來越廣泛,已廣泛應用到國土、農業、海洋、汽車導航、防災、等各行業中[3-5].各種應用型GIS系統也層出不窮,但傳統GIS的開發存在很多弊端.傳統GIS開發方式主要采用GIS平臺提供的宏命令語言,如ArcInfo的AML,加上龐大的函數、命令庫,使得普通的開發技術人員難以掌握,延長了應用產品的開發周期.在數據管理方面,傳統GIS系統中的空間數據管理也存在不足[6].此外,傳統GIS系統與MIS系統,多媒體開發工具的兼容性都相對較差.傳統GIS開發模式不靈活的開發方式及昂貴的價格,在相當大的程度上限制了GIS應用領域的發展.采用組件技術把GIS的功能適當抽象,以組件的形式供開發者使用,帶來許多傳統GIS工具無法比擬的優點:小巧靈活,價格便宜,直接嵌入MIS開發工具,強大的GIS功能,開發簡捷等.其典型代表是ESRI公司推出的產品——ArcGISEngine,使得GIS應用開發徹底地脫離了ArcGIS桌面平臺,大大提高了GIS開發的效率,極大地促進了GIS的應用開發[7].用戶只需用ArcGIS Engine一個軟件包就可以開發實用的有針對性的GIS,不僅方便了開發,還大大節約了開發費用.ArcGIS Engine的是地理信息系統的二次開發的一個里程碑.
本文基于COM技術的ArcGIS Engine進行地理信息系統的開發,并結合校園三維虛擬沙盤來說明其開發的原理和方法.
ArcGIS Engine是一個基于ArcObjects構建的可編程的嵌入式GIS工具包.ArcGIS Engine是由一組核心的ArcObjects包組,與平臺無關.它是一種新的部署策略和資源.開發人員能利用ArcGIS Engine開發出功能強大的GIS應用系統.ArcGIS Engine開發包包括三個關鍵部分[8]:
2.1.1 控件
控件是ArcGIS用戶界面的組成部分,你可以嵌入并在你的應用程序中使用.
2.1.2 工具條和工具
工具條是GIS工具的集合,在應用程序中用它來和地圖和地理信息交互.
2.1.3 對象庫
對象庫是可編程ArcObjects組件的集合,包括幾何圖形到制圖、GIS數據源和geodatabase等一系列庫.
COM(Component Object Model,組件對象模型)是一種以組件為發布單元的對象模型,COM是OLE和ActiveX共同的基礎,COM不是一種面向對象的語言,而是一種二進制標準[9-10].COM所建立的是一個軟件模塊與另一軟件模塊之間的鏈接,當這種鏈接建立之后,模塊之間就可以通過接口機制來進行通信.COM接口是一組邏輯上相互關聯的操作,這些操作定義了某種行為,即這組操作的規范,而非特定的實現,實質是接口代表了接口調用者和實現者之間的一種約定.COM標準增加了保障系統和組件完整的安全機制,從而擴展到分布式環境.
ArcGIS Engine可 以 在 Windows、UNIX 和Linux桌面上運行并支持一系列的應用軟件開發環境,包括:Visual Basic 6,Microsoft Visual Studio.NET和Java開發環境.因此ArcGIS Engine允許開發者在自己熟悉的環境下進行開發.ArcGIS Engine通常是通過添加控件、工具、菜單條和對象庫,在應用中嵌入GIS功能.以下結合校園三維虛擬沙盤詳細介紹其具體開發方式.
(1)啟動 Microsoft Visual Studio 2005,并新建一個工程;
(2)工程命名為“三維虛擬沙盤校園”并保存該工程;
(3)右擊工程,選擇“添加引用(R)…”(見圖 1);
(4)在添加引用對話框中選擇所需要添加的庫.

圖1 添加控件
(1)在設計模式下打開Form1窗體;
(2)在窗體中添加相應的控件;
(3) 再 將 PageLayoutControl、TOCControl 和ToolbarControl添加到窗體中;
(4)重新調整窗體上各控件的大小和位置;
(5)結合閩江學院三維虛擬沙盤校園的具體需要,設計最終窗體(見圖2).

圖2 校園地理信息系統窗體設計
對于此應用程序,TOCControl和ToolbarControl控件將與PageLayoutControl相互協作,而不是MapControl,為此PageLayoutControl必須設置為綁定控件.TOCControl使用綁定的ActiveView顯示圖形、圖層和符號,而位于ToolbarControl上的任何命令、工具或菜單項會受綁定控件的顯示影響.
可以用設置“屬性”的辦法設置綁定控件,如圖3和圖4:

圖3 ToolbarControl屬性頁

圖4 TOCControl屬性頁
也可以用代碼的形式實現,代碼如下:

ArcGIS Engine提供了120多個命令和工具,它們能直接和 MapControl、PageLayoutControl和ToolbarControl相互協作.這些命令和工具提供了大量的GIS功能,包括地圖導航、屬性查詢、地物選擇等.在應用程序中增加一些對本次開發有用的命令和工具.
在Form_Load事件中的加載文檔代碼之前添加如下代碼:

和綁定控件協作的ToolbarControl增加ArcGIS Engine命令一樣,按照前面的步驟,可以從ArcGIS Engine命令創建彈出式菜單.下面將在應用程序中增加與PageLayoutControl協作的彈出式菜單,當在PageLayoutControl可視區域點擊鼠標右鍵的時候,彈出式菜單將顯示.
在Form_Load事件中向ToolbarControl增加命令代碼的后面加載文檔代碼的前面增加如下代碼:

MapControl控件中的顯示的就是二維數據,可在其中選擇元素并利用圖層加載的辦法,加載入SceneControl控件中.在SceneControl控件中便可進行三維的顯示.
(1)添加一個新的窗體Form2,并在其中部署ToolBarControl控件和SceneControl控件,如圖5:

圖5 三維顯示窗體
(2)在Form1中添加axMapControl1_OnMouse-Down事件并添加下列代碼:

(3)最后在Form2的Load事件中添加下列代碼:

(4)運行結果如圖6:

圖6 三維顯示結果(校園部分角落——食堂)
校園三維虛擬沙盤系統是對ArcGIS Engine二次開發進行的一次有意義的嘗試,開發利用ArcGIS Engine的各個模塊之間的聯合,開發出適合于三維虛擬沙盤校園的系統.基于ArcGIS Engine的開發與開發平臺無關,且各個組件之間能自由的組合開發出各種各具特色的系統.從運行的結果分析,此次開發基本達到了研究項目的目的,但由于研究系統的復雜性,在一些方面還不夠深入.通過以上的研究表明,利用ArcGIS Engine進行二次開發表明其具有開發的簡捷性、方便性、高效性等特點,且能適合不同的開發要求.
〔1〕丁院鋒,丁賢榮,趙吉祥.基于 ArcGIS Engine 實現河道工程對象3D建模[J].電腦開發與應用,2007(20)11:47-49.
〔2〕莊晨輝,陳銘潮,潘俊忠.林業資源管理地理信息系統的研制與開發[J].福建林學院學報,2005,25(1):1-4.
〔3〕張健.歐美大學校園規劃例程初探[D].重慶:重慶大學,2004.
〔4〕鄒杰,鄒崢嶸,丁孝兵.基于 IMAGIS的城市三維景觀的構建[J].城市勘測,2005(6):16-18.
〔5〕朱慶,林琿.數碼城市地理信息系統——虛擬城市環境中的三維城市模型初探[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模型信息提取技術[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