矢量地形图三维可视化研究

黄志辉1 叶达忠2
(1广西地质矿产局272地质队 广西南宁 530031
2广西水利电力勘测设计研究院 广西南宁 530023)

【摘 要】 本文针对目前测绘行业中大量应用的CAD图形进行研究,在VC+OPENGL平台下实现了从DLG到DEM数据的快速转换方法,在DEM的基础上进行三维可视化,并解决了CAD矢量数据难以处理的体积计算、坡度计算等等技术难题。
【关键字】 CAD矢量图形 三维可视化

  在目前的野外测绘过程中,数字测绘已经基本上占领了传统测绘的绝大部分市场,地形测绘中基本上都是采用CAD方式成图,并以DWG格式数据作为地形测量成果进行验收。从图形表现上看,这种矢量数据格式是最佳的地形图形数据表现载体,但从数据的应用角度上看就未必合适了。首先地形矢量数据是野外地形的一种符号化抽象,不符合非专业人士的视觉习惯,给普通用户的使用造成了一些困难;其次对矢量数据在数据应用开发方面难度比较大,技术实现比较困难。如:体积计算,虽然目前已经有了一些软件可以实现,但对数据要求比较高,约束条件太过于苛刻,因此真正成熟的体积计算功能还是比较少的。
  为解决以上问题,借用栅格图像处理的一些方法,实现矢量测绘数据的三维栅格化、可视化,有效解决了一些问题,并开发了相应的应用程序。以下就是我们研究开发实现过程中的一些经验。
  1 技术基础
  要实现矢量地形图的三维显示,一个最基本的要求是必须实现离散点的网格化,将原来的三维等高线转换成标准的DEM数据。主要的技术有:
  (1)Delaunay构网[1]
  如何快速、高效地构建Delaunay三角网,一直是众多学者研究和关注的焦点。 迄今为止出现了不少成熟的算法,主要有分割-合并算法、逐点插入法及三角网生长算法等等。
  其中,三角网生长算法目前较少采用;逐点插入法虽然实现较简单,占用内存较小,但它的时间复杂度差,运行速度慢;分割-合并算法最为高效,但相对复杂。
  为充分实现Delaunay三角网的快速、高效的构建,我们在分割-合并算法的基础上,采用块划分方法分割点集,然后依序合并、构建Delaunay三角网,效率较高。在对地形图等高线数据分块存储的基础上,按照预处理分割的逆序逐块从DWG文件直接读取指定高程区间的三维数据;然后针对该分块数据构建Delaunay三角网。使用基于块划分方法分割点集到每个子集只包含2或3个点为止,按照分割顺序的逆顺序进行子块Delaunay 子三角网的合并;最后形成该格网块的Delaunay三角网。
  (2)网格内插
  在常规三角网内插方法中,一般是给定一点的平面坐标, 先检索出该点所在三角形, 再进行内插。虽然三角形的检索可以应用拓扑关系按方向进行快速定位,但仍然会占用较多的时间。
  本文采用的方法是从三角形列表块中依次取出一个三角形,计算该三角形的矩形边界范围,循环搜索落在该区域范围内的DEM网格点,对该三角形内的格网点计算其高程值。
  计算完三角形列表中所有三角形内的所有格网点高程值,也就生成了指定范围内的DEM网格点高程。DEM网格点内插方法主要有线性内插、多项式内插、样条函数内插、傅立叶级数内插、最小二乘趋势内插及平均移动内插等。目前大多数DEM软件均采用多项式内插和线性内插,本文应用线性内插方法生成DEM。
  如下图所示, 假设△abc 的三个顶点坐标分别为a(xa,ya,za),b(xb,yb,zb),c(xc,yc,zc)三角形内一点e(x,y)的高程z 的计算公式为[2]:

  2 技术路线
  2.1 DWG数据文件的读取
  我们以VC+OpenGL为开发平台,因此必须解决数据输入问题。由于DWG数据格式文件不公开,VC直接读取DWG难度很大,我们采用OpenDWG库实现DWG矢量数据的读取,较好解决了DWG数据输入问题。
  由于制图的原因,地形图数据如符号数据并不是三维数据,相当多的点、线实体是没有高程值的,在进行三维处理必须进行数据预处理,剔除不合格的图形数据。一般来说,符号数据、文本数据和自己绘制的点线实体的高程值为零,因此以高程为阀值进行数据过滤即可将不需要的数据滤波。
  2.2 Delaunay三角网生成
  对于不规则分布的高程点,可以形式化地描述为平面的一个无序的点集P,点集中每个点p对应于它的高程值。将该点集转成TIN,最常用的方法是Delaunay三角剖分方法。生成TIN的关键是Delaunay三角网的产生算法,生成过程分两步完成:
  1)利用P中点集的平面坐标产生Delaunay三角网;
  2)给Delaunay三角形中的节点赋予高程值。
  2.3 DEM生成
  在Delaunay三角网的基础上,使用内插的方法形成格网数据,并将数据保存到GeoTiff格式的文件中,完成了离散点的格网化。

  3 实际例子
  下图是我们按照以上思路进行开发后进行等高线三维可视化显示的效果,左图为原始的DWG格式的矢量地形图,右侧是等高线构TIN后直接形成的三维效果图,从视觉效果上看,普通用户更容易接受三维可视化效果图。

转换前的等高线图与TIN三维显示效果图

  经三维处理后,形成了标准的DEM,这样其它的应用开发就更加简单了。我们在此基础上实现了表面积计算、基于平面的土方计算、两个DEM叠加的土方计算、坡度图等等功能,使原来基于矢量数据难以实现的功能可以比较简单的方法进行实现,为地形图的深入应用开发提供一种思路。
  4 结束语
  矢量数据与栅格数据都可以用于地形图表示,基于应用的目的,将三维矢量数据进行栅格化后再进行相应的计算,可以将复杂化的计算过程简单化,减少数据处理的难度,并且可以实现三维可视化,减少地形图使用难度。
  本文仅提出地形图应用开发的一种思路,在研究地形图应用开发过程中,根据不同的需求,转变开发思路,经常可以得到意想不到的效果。

【参考文献】
[1] 王永明.地理信息系统方法[M].北京:军事科学出版.1997:95-126
[2] 数学手册编写组.数学手册[M].北京:高等教育出版社.1977:339-339

地址:广西南宁市建政路5号  邮编:530023  Tel:0771-5606397  Email:webmaster@digitalgx.com
广西基础地理信息中心版权所有 2005-2010 广西基础地理信息中心制作