高 戀,李向新,穆寶勝
(昆明理工大學國土與資源工程學院,云南昆明 650093)
基于ArcEngine三維地形分析和可視化
高 戀,李向新,穆寶勝
(昆明理工大學國土與資源工程學院,云南昆明 650093)
基于ESRI公司提供的二次開發工具ArcEngine和C#編程語言,闡述了三維GIS的理論、方法及過程,實現了GIS數據的三維顯示以及部分三維分析功能。
三維GIS;三維可視化;ArcEngine;三維分析
隨著科技的發展,GIS越來越多的應用于各行各業中。GIS所表達的地理信息是三維連續分布的,單純的二維地理信息系統不能真實地描述三維客觀世界[1-2],人們越來越多地要求從真三維空間來處理問題。例如,通過三維可視化可以實際地看到山谷及山脊的存在,而不需要從等高線數據推斷出山谷及山脊的存在[3]。迄今為止,目前國內外還沒有一個成熟完整的三維GIS系統,與三維GIS相關的系統大多集中在三維可視化方面,如EVS,Vis5D,Voxel,醫學可視化及各種CAD軟件等,也有一些三維系統部分實現三維GIS的功能,比較有名的軟件有LYNX,IVM(interactive volume modeling),GOCAD,I/EMS,SGM 等。對GIS的三維開發比較常用的是OpenGL,VRML等[4],這些都需要從底層開發做起,工作量大、開發周期長、成本高。三維GIS的研究亟待解決。
ESRI公司推出的組件式GIS開發工具ArcEngine是一組完備的并且打包的嵌入式組件庫和工具庫[5],使用它開發軟件用戶不需要從底層做起,只需要定制自己需要的組件到特定的功能。筆者就是采用ArcEngine技術對三維GIS進行研究,基于C#編程語言實現三維的可視化及一些分析功能。
ArcEngine由開發工具和運行環境組成,支持多種開發語言,包括com,.net,java以及C++等,筆者采用VS2008(C#)來開發。在ArcEngine中用于三維開發的組件有SceneControl和GlobeControl,在此采用Scene-Control控件。SceneControl是一個高性能的嵌入式開發組件,提供給開發者建立和擴展Scene程序,它相當于ArcScene Desktop應用程序中的三維視圖,并且提供了顯示和增加空間數據到三維的方法。SceneControl通過對象接口ISceneViewer來實現,該接口提供對象Camera,該對象由Observer和Target構成。SceneControl提供了一些屬性和方法來操作三維對象,如SceneGraph,Scene等屬性,LoadSx File方法等[3]。
結合開發研究的過程,現將其開發的過程與方案歸納如下。
1)系統界面設計。新建一個工程,添加如下控件:圖層控件ax TOCControl,三維顯示控件axSceneControl,工具欄控件ax Toolbar Control。通過屬性設置使ax Toolbar Control和ax TOCControl控件分別與axS-ceneControl控件進行綁定。在代碼區引用必要的類庫:Carto,Analyst3D,Display,esriSystem,Data-SourcesFile,DataSourcesRaster,Geodatabase,Geometry,DataSourcesGDB,Geo Analyst,Catalog UI。在界面頂部添加菜單欄。
工具欄和菜單欄見圖1。

圖1 工具欄和菜單欄Fig.1 Toolbar and menubar
2)三維GIS實現功能的模塊設計。實現了加載DEM、加載TIN、疊加TIN、分層設色、坡度分析、通視分析、坡向分析、等高線提取功能。系統功能見圖2。

圖2 三維GIS的功能結構圖Fig.2 Function structure of 3D GIS
1)加載數據。三維GIS的可視化即數據的三維顯示,首先需要加載數據。系統中以加載昆明市滇池地區的tiff格式的柵格數據為例,DEM數據加載需要用到2個組件類:Scene和SceneGraph。Scene是一個矢量、柵格和圖形數據顯示和處理的容器,該類實現了IScene接口,提供了控制Scene的方法和屬性[6],例如,Add Layer方法用于向場景中增加1個圖層。
SceneGraph是一個記錄在Scene中出現的數據和事件的容器,該類實現了ISceneGraph接口,提供了控制和處理Scene中圖形的方法和屬性,例如,Locate方法用于通過單擊場景中的任意點定位一個對象[3]。編程實現的主要語句為pRaster Layer.CreateFromDataset(pRaster Dataset);pScene.Add Layer(p Layer,true)。
2)疊加影像數據。DEM數據加載完后,需要使物體具有三維效果,就需要疊加影像數據,使其具有地形起伏的三維效果。疊加影像數據需要用到組件類Tin Layer,Raster Layer,Tin3DProperties和Raster3DProperties。Tin Layer組件類用于創建Tin圖層對象,Raster Layer組件類用于創建Raster圖層對象,Tin3DProperties組件類用于創建Tin數據的三維場景屬性對象,Raster3DProperties組件類用于創建Raster數據的三維場景屬性對象[3]:

3)分層設色。通過分層設色可以使地貌高程分布及其相互對照鮮明,分層設色需要組件類是:AlgorithmicColor Ramp,RgbColor,Raster ClassifyColor Ramp Renderer,SimpleFillSymbol,Tin Elevation Renderer。主要實現語句如下:

通過以上步驟加上正確的編程語言來實現,DEM圖像便具有三維效果并顯示出來。
1)坡度、坡向分析的介紹及具體實現過程。某一位置的坡度分析是水平面與局部地表之間的正切值,即高度變化的最大值比例,坡向是變化率最大的方向[3]。對某一位置的坡度、坡向分析有利于水利局及規劃局等部門做出正確的決策。在ArcEngine中實現這些功能需要用到下面幾個類和接口:Point,Raster Workspace,Raster Band,ISurfaceOp,IRaster AnalysisEnviroment等。坡度分析與坡向分析實現語言一致,坡度分析是用ISurfaceOp的Slope方法來實現;坡向分析是用ISurfaceOp的Aspect方法來實現。筆者提取的數據是昆明市滇池地區的tiff格式數據。在此主要給出坡度分析的實現語句,如下:

坡度提取和坡向提取效果圖見圖3和圖4。

2)通視分析的介紹及主要實現語句。通視分析有很廣的應用背景,如軍事上觀察敵人的活動區域,在這一區域中視線不能被遮擋。可應用于旅游中的風景評價、房地產中視線遮擋判斷以及通信中的信號覆蓋,或軍事上的火力覆蓋等多方面,由被覆蓋的可視面積反求待定位置與高度等。
通視分析要選擇一個目標位置,而這個目標位置可以是一個“點”,筆者就是在基于“點”的情況下的通視分析。需要有“點”文件的保存目錄,在surfaceOp.Visibility(raster GeoDataset,featureDataset,esriGeo-Analysis Visibility Enum.esriGeo Analysis Visibility Frequency)語句實現。
3)等高線提取的具體實現過程。筆者對規則格網的柵格數據進行等高線提取。要設置高程的基準面和等高線間距。主要是用ISurfaceOp的Contour方法來實現(roster Geo Dataset,interval,ref basecoutoar),方法中的第1個表示用于提取的柵格數據,第2個表示等高線間距,第3個表示等高線的基準高程。以GRID柵格圖像(GRID柵格圖像為某地區中的圖像,圖像名不知)為例,分別設置5 m和10 m不同的等高距,效果圖見圖5和圖6,可以清晰地看見10 m等高距的等高線比5 m等高距的等高線要稀疏很多。主要語句如下:


基于ArcEngine和C#編程語言實現了最常用的三維顯示及三維分析的坡度、坡向、通視、等高線提取功能。對于等高線的提取等三維分析功能,筆者的分析結果與Arc Map的分析結果是一致的,證明了結果的可行性。本研究結果即可作為獨立的系統運行,也可嵌入到其他系統中。但對于坡度、坡向的提取只是完成了定性的提取,至于定量的分析還有待進一步研究。真正的三維開發是需要更多更新的技術,三維GIS的實現遠不止這些,在以后的研究中,將會更加深入的對此進行研究。
[1]許捍衛,茆德柱,何 江.基于ArcEngine的GIS三維功能開發技術研究[J].測繪工程(Engineering of Surveying and Mapping),2006,15(6):50-53.
[2]李建成,郭建文,蓋迎春,等.基于ArcEngine的三維GIS的設計與實現[J].遙感技術與應用(Remote Sensing Technology and Application),2009,24(3):395-398.
[3]邱洪鋼,張青蓮,陸紹強.ArcGis Engine開發從入門到精通[M].北京:人民郵電出版社,2010.
[4]張嘯雷,王 冬.基于 ArcScene的三維 GIS實現的研究[J].城市勘測(Urban Geotechnical Investigation and Surveying),2010,26(4):26-28.
[5]韓 鵬,王 泉,王 鵬,等.地理信息系統開發——Arc Engine方法[M].武漢:武漢大學出版社,2008.
[6]史永忠,曹全龍.基于 ArcEngine的三維地形可視化系統的研究與開發[J].現代測繪(Modern Surveying and Mapping),2007,30(3):37-39.
3D GIS based on ArcEngine
GAO Lian,LI Xiang-xin,MU Bao-sheng
(Faculty of Land Resource Engineering,Kunming University of Science and Technology,Kunming Yunnan 650093,China)
This paper describes the theory,method and procedure of building up 3D GIS based on ArcEngine provided by ESRI Company and C#programming lauguage,and realizes some functions such as 3D visualization,3D analysis and so on.
3D GIS;3D visualization;ArcEngine;3D analysis
TP311.52;P208
A
1008-1542(2012)01-0061-04
2011-10-11;責任編輯:陳書欣
高 戀(1986-),女,河南滑縣人,碩士研究生,主要從事GIS的二次開發方面的研究。