基于AE的等高线三维地形建模与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

万方数据
第18卷第3期
李伦:基于AE的等高线三维地形建模与实现
CMmnFrame。pFran砣=(CMainFrame*)AfxGetMmnWnd(); CMy3DGISView+pView=(CMy3DGISView*)pFrame一>GetActiveView();
//构造TIN图层 ITinLayerPtr pTLayer(CLSID_TinLayer); hr=pTLayer->putref-Dataset(ipTin);
在编程肝发过程中,利用Vc++6.0环境和ArcGIS Engine平台等资源的优势,允分利用集成二次开发的思想,进行 独立程序的开发。在开发过成中,主要用到ArcGIS Engine平台中的TOCControl、ToolbarConmfl、SceneControl等控件;生成 TIN对话框(如图1(a))以及三维场景垂直拉伸参数设置,如图1(b)。
IGeoDatasetPtr pGeoDataset(ipfeat);
来自百度文库

IEnvelopePtr pExtent;
HRKSULT hr=pGeoDataset一>get_Extent(&pExtent); //TIN将使用通过pExten,设置的空间引用 pGeoDataset一>get_SpatialReference(&ipSparr); pExtent一>putter_SpatialReference(ipSpatR); //创建TIN对象并且得到1TinEdit接口 ITinFMitPtr pTinEdit(CLSID_Tin); //初始化TIN
摘要: 数字高程模型(DEM)是地理信息系统的一种基础数据。等高线地图作为生成DEM的重要的
数据来源,具有十分重要的研究价值。文章以Visual C++为开发乎台,以ArcGIS Engine为开
发组件,建立了基于等高线矢量数据的三维真实感地形模型,结合实例开发分析每一个步骤
的实现过程。并给出所生成的三维地形图实例。
图2基于等高线的三维地形图
河南城建学院学报
2009年5月
基于等高线生成三维地形模型的方法,是实际工作中使用最多的一类方法,技术比较简单,容易实现。而且对于系 统平台的硬件和软件要求较低,特别适合于应用在一些中小规模的桌面地理信息系统软件的开发中。
从上面实际运行的结果可以看出,利用等高线构造的三维地形,能够在一定程度上满足识别具体地形地貌的要求。 本文介绍了通过等高线地图生成三维地形并进行显示的实现方法、技术。并用等高线数据验证该二次开发实现的结果, 保留了等高线包含的地形特征,较好地实现了地形和地貌特征的表现。
(a)1-IN对话框
(b J场景对话框
图1参数设置
在生成唧的过程中,分成的三角形有两种选择:I懈point和line。VC++环境下实现TIN操作关键流程rs]rsl:
CreateTINfromCountour(IFeatureClass*i止嫩)
//获得Feature Class的空间引用来构建TIN
(a)mass point:处理
(b)line处理
图3拉伸处理后的三维地形图 参考文献 [1]翁巧琳,姜昱明.基于等高线的三角网建模及真实感地形重建[J].计算机仿真,2007,24(10):188—191. [2]张凯选,潘梦清,方辉.利用等高线生成DEM方法的研究[J].测绘工程,2007,16(3):15—18.
关键词:数字高程模型;等高线;不规则三角网;ArcGIS Ensine;三维地形
中图分类号:TP31
文献标识码:A
O引言 地形是自然界复杂的景物,三维地形是模拟自然环境中不可缺少的重要组成部分。利用等高线矢量数据来直接内
插生成相应的DEM(数字高程模型)数据是一种经常采用的方法。将地图等高线层提取出来的最终目的是进行三维显示 并在此基础上进行地形分析。
三维真实感地图能高度逼真地反映外部真实世界,相对于传统纸制地图和计算机生成的二维平面地图,可以增加新 的视角,能够为我们提供更多的知识,而这些知识是很难从二维平面地图上得到的。利用等高线数据构造三维地形不仅 能保证一定的几何精度,而且数据易于获得,包含有丰富的地形地貌特征…。因此近年来,对等高线地图进行三维建模 与可视化的研究。成为地图学和地理信息系统的研究热点,其目的就是使地形特征和地理信息表现地更加直观,使地形 的三维可视化程度更高、动态感更强,无须再从等高线的结构来推断诸如山谷、山脊等信息,通过三维可视化可以实际地 看到山谷的存在,并且清楚地看到山谷和山脊的差异。本文介绍了一种在Windows平台上,利用Visual C++6.0环境和
z^棚勘450011,Ch/na)
Abstract:Digital Elevation Model(DEM)is an important type of basic data in GIS.The eontottrs map is an important data of DEM
ArcGIS Engine平台作为工具,开发实现已知平面等高线矢量数据来产生三维真实感地形的方法。 1研究的技术路线
1.1 G舳模型和TIN模型的对比 目前,利用等高线生成DEM的方法很多:等高线数据既可直接生成不规则三角网模型(删),又可直接生成规则格
网模型(GRⅢ),规则格阿也可以由等高线先生成TIN再内插而获得幢J。 从数学方法的角度,GRID通常是正方形,也可以是矩形、三角形等规则格网。规则格网将区域空间切分为规则的格
A method for generating 3 D relief maps from contour based on AE
Co--ion。North (School of a础Engineering and
LI lun China Institute of Water Conservancy and Hydroelectric Power,
[3]韩鹏,徐占华,褚海丰,姜文亮.地理信息系统开发——肌0bjects方法[M].武汉:武汉大学出版社,2005.
[4]刘仁义,刘南.ArcGIS开发宝典——从入门到精通[M].北京:科学出版社,2006. [5]Vc++Help for VS2005. [6]汤国安,杨昕.AreGIS地理信息系统空间分析实验教程[M].北京:科学出版社,2006.
ArcGIS Engine平台是ESRI公司ArcGIS 9系列中的一个面向开发的嵌入式开发包,ESRI的AreGIS Engine是一个用于 建立自定义独立地理信息系统应用程序的平台,支持多种应用程序接口(Application Program Interfaces,API),拥有许多高 级GIS功能,而且构建在工业标准基础之上[4|。ArcGIS Erlgim可以在Windows,UNIX和Linux桌面上运行并支持一系列 的应用软件开发环境,包括:vi飘lal Basic6,Microsoft Visual Studio。NEI'和各种Java开发环境,见表1。
第18卷第3期 2009年5月
河南城走学院学报
Henan University面Urban Construction
文章编号:1671—966212009)03—0043—04
Vd.18 No.3 May.2009
基于AE的等高线三维地形建模与实现
李伦
(华北水利水电学院土木与交通学院,河南郑州450011)
HRESULT hr;
CMainFrame。pFrame=(CMainFrame*)AfxGetMmnWnd();//获得主框架指针 CMy3DGLSView。pView=(CMy3DGISView*)pFrame一>GetActiveView();//获视图指针
ISeenePtr ipScene;
原始等高线数据(如图2(a))。经mass point二三角形处理后如图2(b),经line三角形处理后如图2(c)。最后增加三维 参数拉仲设置后,实现三维地形更加直观的表现(图3(a)(b)),并叮从任意角度观察地形。
(a)等离线地形图 4结束语
万方数据
(b)fllSSS Ooint处理
(c)l ine处理
} 三维场景的基本参数设置实现流程: SetBaseExaFaetor(double factor) {
int index=IIL combo_currentlayer.GetCurSel();
ILayerPtr
pCunentLyer=(ILayer*)札cofIlh currentlayer.GetltemDataPtr(index); //先得到Scene
ArcGIS Engine包括两个产品:EngiFie开发包,是组件、API和工具的集合,是创建白定义的GIS和制J奎l应用的上具包; Engine运行时,是为了运行自定义的Engine应用的可分发的ArcObjects。开发人员可以使用ArcGIS Engine将GIS功能嵌 入到现有的应用程序中,它的出现给开发带来了极大的便利。 2开发实现过程
取!pView一>GetSceneFromView(&ipScene)) {
AfxMessageBox(“不能得到Scene”);
l肥tunl;
} hr=ipSeene一>put-ExaggerationFactor(factor);

作者在开发过程中,建立了CDlgCreateTINfromCountour和CDlgSetScene类,其中,三角网生成过程由CDlgCreateT— INfromCountour::CreateTINfromCountour(IFeatta'eClass*ipfeat)函数实现,三维场景的参数没置可以改变三维场景的基本属 性,由CDlgSetScene::SetBaseExaFactor(double factor)函数实现o 3应用实例
hr=pTinEdit一>lnitNew(pExtent); //将Feature中的高程信息赋给刚刚生成的TIN,并且保存至硬盘。 //获得高程字段
hr=ipfeat一>get_Fields(&pfields);
hr=pfields一>get_Field(m_selHlndex,&pHeightField); if(FAILED(hr))return; //调用相应的函数将shape文件(含高程信息)增加到TIN中,并保存11N ITinPtr ipTin(pTinEait); if(ipTin!=N17IJ,) {
根据上述思想,以Visual C++6.0为开发环境,以ArcGIS Engine为平台,开发实现了基于等高线矢量数据的三维地 形模拟。在应用中,只须将等高线数据层作为参数传递给该程序模块,就会显示出相应的三维地形图,而且可以对三维 地形图进行参数设置,使地形特征和地理信息表现的更加直观,动态感更强。本文以某地等高线地形图为数据源№J,来 测试开发实现的结果。
网单元,每个格网单元对应一个数值。数学上可以表示为一个矩阵,在计算实现中则是一个二维数组。每个格网单元或 数组的一个元素对应一个高程值。GRID的缺点足不能准确表示地形的结构和细部,并且数据量过大,给数据管理带来 不便。TIN模型根据区域有限个点集将区域划分为相连的三角网络,使区域中任意点落在三角形的顶点、边上或三角形 内。如果点不在顶点上,该点的高程值通常通过现行插值的方法得到(在边上则用边的两个顶点的高程,在三角形内侧 则用三个顶点的高程),所以TIN是一个三维卒间的分段线形模型。TIN的数据类_}l!!存储方式比GRID复杂,它不仅要求 存储每个点的高程,还要求存储其平面坐标、节点连接的拓扑关系、三角形及邻接三角形等关系【3 J。从上述可知,TIN模 型较GRID模型复杂的多,而且应用更为广泛。因此本文主要针对由矢量等高线数据生成TIN模型,来进行三维地形的研 究。 1.2 AtcGIS Engine技术
收稿日期:2009—03—19 作者简介:李伦(1985一),男,河南郑州人,硕士研究生,主要从事工程监测、工程设计及可视化仿真等。
万方数据
河南城建学院学报
2009年5月
表1 ArcGIS Engine支持一系列操作系统平台和编程语言
Windows C++
Java COM
.N肼
UNIX/Linux C++ Java
相关文档
最新文档