APP下载

基于ArcEngine三维地形分析和可视化

2012-12-26李向新穆宝胜

河北科技大学学报 2012年1期
关键词:坡向等高线控件

高 恋,李向新,穆宝胜

(昆明理工大学国土与资源工程学院,云南昆明 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#编程语言实现三维的可视化及一些分析功能。

1 ArcEngine实现三维GIS的理论和方案

1.1 ArcEngine实现三维GIS的理论

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.2 ArcEngine实现三维GIS的方案

结合开发研究的过程,现将其开发的过程与方案归纳如下。

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

2 三维GIS功能的具体实现过程

2.1 三维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图像便具有三维效果并显示出来。

2.2 三维GIS分析功能的介绍及具体实现过程

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等高距的等高线要稀疏很多。主要语句如下:

3 结 语

基于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的二次开发方面的研究。

猜你喜欢

坡向等高线控件
DEM地表坡向变率的向量几何计算法
地形图的阅读
一种基于Fréchet距离的断裂等高线内插算法
关于.net控件数组的探讨
“等高线地形图的判读”专题测试
青藏高原东缘高寒草甸坡向梯度上植物光合生理特征研究
ASP.NET服务器端验证控件的使用
山区等高线内插生成DEM的精度评价
坡向和坡位对小流域梯田土壤有机碳、氮变化的影响
基于嵌入式MINIGUI控件子类化技术的深入研究与应用