《基于VTK的二三维GIS核心组件的开发硕士学位论文.docx》由会员分享,可在线阅读,更多相关《基于VTK的二三维GIS核心组件的开发硕士学位论文.docx(40页珍藏版)》请在三一文库上搜索。
1、 密级: 硕 士 学 位 论 文 论文题目 基于VTK的二三维GIS核心组件的开发浙江大学硕士学位论文 Error! No text of specified style in document.毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。作 者 签 名: 日 期:
2、指导教师签名: 日期: 使用授权说明本人完全了解 大学关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。作者签名: 日 期: 学位论文原创性声明本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方
3、式标明。本人完全意识到本声明的法律后果由本人承担。作者签名: 日期: 年 月 日学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权 大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。涉密论文按学校规定处理。作者签名:日期: 年 月 日导师签名: 日期: 年 月 日注 意 事 项1.设计(论文)的内容包括:1)封面(按教务处制定的标准封面格式制作)2)原创性声明3)中文摘要(300字左右)、关键词4)外文摘要、关键
4、词 5)目次页(附件不统一编入)6)论文主体部分:引言(或绪论)、正文、结论7)参考文献8)致谢9)附录(对论文支持必要时)2.论文字数要求:理工类设计(论文)正文字数不少于1万字(不包括图纸、程序清单等),文科类论文正文字数不少于1.2万字。3.附件包括:任务书、开题报告、外文译文、译文原文(复印件)。4.文字、图表要求:1)文字通顺,语言流畅,书写字迹工整,打印字体及大小符合要求,无错别字,不准请他人代写2)工程设计类题目的图纸,要求部分用尺规绘制,部分用计算机绘制,所有图纸应符合国家技术标准规范。图表整洁,布局合理,文字注释必须使用工程字书写,不准用徒手画3)毕业论文须用A4单面打印,论
5、文50页以上的双面打印4)图表应绘制于无格子的页面上5)软件工程类课题应有程序清单,并提供电子文档5.装订顺序1)设计(论文)2)附件:按照任务书、开题报告、外文译文、译文原文(复印件)次序装订摘要在二三维GIS一体化的全新技术理念下,研究如何在同一平台下使用同一绘制引擎展示二维和三维地图具有非常的意义。本文利用VTK作为绘制引擎,开发了一套二三维GIS的核心组件,以同时支持二维栅格地图、二维矢量地图和三维地形图。文中对二三维地理数据的预处理、数据的组织和存储、内存管理、地理数据的选择和实时绘制这一整套流程都做了详细描述。本文的研究重点是对二维栅格地图和三维地形图的实时绘制技术。实现大规模二维
6、栅格地图实时绘制的步骤可概括为:第一步,针对不同规模的单张影像输入和多张影像输入分别执行不同的金字塔切割算法;第二步,建立金字塔的四叉树索引,并将需要绘制的瓦片节点进行内存缓冲管理;第三步,查找符合给定地理范围的瓦片节点,并以纹理的方式用VTK进行绘制。三维地形图实时绘制技术的研究与实现是本文的难点,主要体现在三个阶段:数据预处理阶段,提出将高度图、法向量图和纹理图经分层分块后以二进制文件流的形式存储在Final文件中;地形节点选择阶段,提出了基于可视范围的空间地形节点的LOD选择算法,综合考虑了视点高度和地形节点的空间范围;渲染阶段,在每层的可视范围中划分出一段过渡区域,并把地形接缝的处理粒
7、度从地形块缩小到顶点,设计出了适合GPU计算的顶点平滑过渡算法。最后,本文在Goophy 8.1平台下开发出了基于VTK的二三维GIS所有的核心组件,该系列组件可以被跨语言、跨平台使用,并经实验证明,对大规模二维栅格地图和三维地形的实时绘制表现出良好的效果和性能。关键词:GIS,VTK,二三维一体化,金字塔,可视范围,LOD选择算法,GPU,顶点平滑过渡算法,Goophy 8.1vii浙江大学硕士学位论文 AbstractAbstractThe 2D&3D integration in GIS is a new technology, so the research on displaying
8、 2D and 3D map using the same rendering engine on one platform is very significant. In this paper, we developed a set of 2-3D GIS core components by using VTK as rendering system, the components can support both 2D raster map, vector map and the 3D terrain map. The whole process, including data prep
9、rocessing, data organization and storage, memory management, geographic data selection and real-time rendering, are all discussed in detail. The real-time rendering technology of 2D raster map and 3D terrain map is focused on in this paper.We put forward two pyramid cutting algorithms for different
10、scale of input image during data preprocessing of raster map, then a quad-tree index is built and a memory buffer is managed for large scaled pyramid tiles so the tiles will be rendered in time with a limited memory.The research of 3D terrain map is the most difficult part in our system. Blocked hei
11、ght-map, normal-map and texture-map are stored in a binary file to reduce the terrain data file number. In order to select terrain nodes by a given view frustum, we proposed a new LOD selection algorithm based on visual ranges of each LOD layer, which considering both the observers height and the te
12、rrain nodes bounding box. For rendering terrain seamlessly, morph area is defined in each LOD layers view range, making a vertex in a higher complexity mesh morph into the lower one gradually, this method could be run in GPU very well. At last, we developed the whole system with every component as a
13、 module on the Goophy 8.1 platform, making it can be application developed by C+, C# and java. The experiments show that the system has good performance on the real-time rendering of large scaled 2D vector map and 3D terrain map.Keywords:GIS, VTK, 2D&3D integration, pyramid, visual range, LOD select
14、ion algorithm, GPU, vertex morph, Goopy 8.1xii浙江大学硕士学位论文 目录目录摘要iAbstracti第1章 绪论11.1 课题背景与意义11.2 国内外研究现状11.2.1 二维栅格地图的研究现状11.2.2 二维矢量地图的研究现状11.2.3 三维地形技术的研究现状11.2.4 二三维GIS一体化技术的研究现状11.3 研究目标和内容11.4 本文特色11.5 本文内容组织1第2章 三维可视化引擎VTK12.1 VTK简介12.2 VTK的管线技术12.2.1 可视化模型12.2.2 图形模型错误!未定义书签。2.3 VTK的数据集错误!未定义书
15、签。2.3.1 VTK数据集的组成错误!未定义书签。2.3.2 VTK数据集的类型错误!未定义书签。2.4 本系统对VTK的抽取和封装错误!未定义书签。2.4.1 对VTK的抽取错误!未定义书签。2.4.2 对VTK的封装错误!未定义书签。2.5 本章小结错误!未定义书签。第3章 地理数据的预处理和存储错误!未定义书签。3.1 二维栅格地图数据的预处理和存储错误!未定义书签。3.1.1 图像金字塔原理错误!未定义书签。3.1.2 卫星遥感影像的金字塔切割算法错误!未定义书签。3.2 二维矢量地图数据的预处理和存储错误!未定义书签。3.3 三维地形数据的预处理和存储错误!未定义书签。3.3.1
16、对原始数据的初次处理错误!未定义书签。3.3.2 对中间数据的采样和存储错误!未定义书签。3.4 本章小结错误!未定义书签。第4章 二维地图实时绘制的技术研究错误!未定义书签。4.1 二维栅格地图实时绘制错误!未定义书签。4.1.1 提取金字塔瓦片错误!未定义书签。4.1.2 图像金字塔在内存上的实现错误!未定义书签。4.1.3 利用VTK可视化二维栅格地图错误!未定义书签。4.2 二维矢量地图实时绘制错误!未定义书签。4.2.1 根据指定范围提取矢量图层错误!未定义书签。4.2.2 利用VTK可视化二维矢量地图错误!未定义书签。4.3 本章小结错误!未定义书签。第5章 三维地形实时绘制的技术
17、研究错误!未定义书签。5.1 基于可视范围的空间地形节点LOD选择算法错误!未定义书签。5.2 地形数据在内存上的管理错误!未定义书签。5.2.1 数据的载入错误!未定义书签。5.2.2 内存管理策略错误!未定义书签。5.2.3 渲染数据的连接错误!未定义书签。5.3 基于GPU的顶点过渡算法错误!未定义书签。5.3.1 算法描述错误!未定义书签。5.3.2 算法实现错误!未定义书签。5.4 利用VTK可视化三维地形错误!未定义书签。5.4.1 基于VTK的GPU编程错误!未定义书签。5.4.2 利用VTK可视化三维地形错误!未定义书签。5.5 本章小结错误!未定义书签。第6章 基于VTK的二
18、三维GIS核心组件系统的实现错误!未定义书签。6.1 系统架构错误!未定义书签。6.2 Goophy8.1简介错误!未定义书签。6.3 系统性能分析错误!未定义书签。6.4 本章小结错误!未定义书签。第7章 总结与展望错误!未定义书签。7.1 总结错误!未定义书签。7.2 展望1参考文献1攻读硕士学位期间主要的研究成果1致谢1II浙江大学硕士学位论文 表目录图目录图 1.1 Google Map和 Google Earth的二三维地图展示1图 1.2 动态地形接缝算法示意图1图 1.3 静态地形接缝算法示意图1图 1.4 本文的内容组织架构图1图 2.1 VTK的可视化管线的对象模型1图 2.
19、2 数据集的组成错误!未定义书签。图 2.3 数据集的例子-四边形图错误!未定义书签。图 2.4 各种数据集在VTK中的表现形式错误!未定义书签。图 3.1 图形金字塔原理示意图错误!未定义书签。图 3.2 单输入金字塔切割原理错误!未定义书签。图 3.3 从底层金字塔构造高层金字塔错误!未定义书签。图 3.4 二维矢量地图数据的预处理步骤错误!未定义书签。图 3.5 矢量类型的类图关系错误!未定义书签。图 3.6 一个R树实例错误!未定义书签。图 3.7 计算地形法向量错误!未定义书签。图 3.8 视棱锥示意图错误!未定义书签。图 3.9 地形四叉树实现LOD技术错误!未定义书签。图 3.1
20、0 三维地形数据预处理流程错误!未定义书签。图 3.11 地形四叉树到高度值金字塔的映射错误!未定义书签。图 4.1 BufferEntry的状态更新流程错误!未定义书签。图 4.2 图像金字塔取图的工作原理错误!未定义书签。图 4.3 用VTK可视化金字塔瓦片的流程图错误!未定义书签。图 4.4 R树搜索实例错误!未定义书签。图 4.5 用VTK可视化二维矢量类型错误!未定义书签。图 5.1 地形LOD选择后的俯视图错误!未定义书签。图 5.2 地形四叉树各层的可视区域分配图错误!未定义书签。图 5.3 父节点和2个子节点同时被选中后的绘制模型错误!未定义书签。图 5.4 数据块的状态变化流
21、程图错误!未定义书签。图 5.5 三维地形内存管理的工作流程图错误!未定义书签。图 5.6 地形块间裂缝的产生错误!未定义书签。图 5.7 可视区域中的过渡区域错误!未定义书签。图 5.8 对morphValue的计算错误!未定义书签。图 5.9 morphValue从0到1时的地形网格平滑过渡示意图错误!未定义书签。图 5.10 地形顶点过渡算法的实现错误!未定义书签。图 5.11 利用VTK可视化三维地形的过程错误!未定义书签。图 6.1 基于VTK的二三维GIS核心组件的系统架构图错误!未定义书签。图 6.2 Goophy 8.1平台结构图错误!未定义书签。图 6.3 二维栅格地图运行效
22、果图错误!未定义书签。图 6.4 三维地形数据运行效果图错误!未定义书签。图 6.5 二维栅格地图绘制性能分析图错误!未定义书签。V表目录表 1.1 二三维GIS地图综合比较1表 1.2 二维矢量地图中空间索引技术对比1表 2.1 抽取的可视化数据集部分的VTK类列表错误!未定义书签。表 2.2 抽取的图形绘制部分的VTK类列表错误!未定义书签。表 6.1 系统各模块的功能介绍错误!未定义书签。表 6.2 系统实验数据的说明错误!未定义书签。表 6.3 三维地形绘制性能分析表错误!未定义书签。 浙江大学硕士学位论文第1章 Error! No text of specified style in
23、 document.第1章 绪论1.1 课题背景与意义地理信息系统(Geographic Information System,GIS)是利用计算机存贮、处理地理信息的一种技术与工具,是一种在计算机软硬件支持下,把各种资源信息和环境参数按空间分布或地理坐标,以一定格式和分类编码输入、处理、存贮、输出,以满足应用需要的人-机交互信息系统1。由于GIS在发展过程中和多个学科和专业相互渗透,GIS的应用也深入各个行业,诸如电子地图查询、资源与环境管理、国土管理、城市规划、旅游信息、自然灾害监测与防治等。我国国家测绘地理信息局也明确指出,要加快推进地理信息资源整合和数字城市建设,要在2015年,建成数
24、字中国地理空间框架和信息化测绘体系,争取把地理信息产业纳入国家战略性新兴产业规划2。电子地图以GIS技术为基础,融合了数据库技术,其信息的可视化程度大大提升,表现形式更加丰富。基于地理信息系统的电子地图拥有多媒体功能,可以对其进行地图操作,可以分析查找特定范围内的目标,可以准确查找两点间最短路径,可以对属性信息进行可视化分析、统计,可以进行规划管理,并具有网络功能3。对于所有的GIS,地图既是输入数据的来源,又是输出数据的一种形式。根据数据在空间上的表现形式,GIS分为二维GIS和三维GIS,三维GIS中,空间目标通过X、Y、Z三个坐标轴来定义,二维GIS只是对平面的扩展。二维GIS的地图表现
25、有二维矢量地图和二维栅格地图,三维GIS对应的主要是三维地形图。栅格地图(Raster Map)是用栅格数据表示并以栅格的数据结构存储的数字地图,栅格数据存储的就是平时我们所看到的位图结构,栅格数据的来源可以是遥感数据、航测数据、航空雷达数据、各种摄影的图像数据4,一般为便于管理和存储,栅格数据需要进行重新组织。矢量地图(Vector Map)是用矢量数据表示地图要素的图形位置和颜色的数据集合,矢量数据就是几何学中的点、线、面及其组合体来表示地理实体的空间分布,几乎所有的GIS软件都有自己的矢量数据格式,如Arc/Info的Coverage文件、MapInfo的MIF文件、ArcView支持的
26、SHP文件等。由于人类的生活空间就是一个三维的环境,二维GIS本质上是基于抽象图形符号的系统,不能给人以自然界的真实感受,所以三维GIS的可视化技术尤其是三维地形图(Terrain Map)的虚拟化是非常必要的,它将我们的地形在三维空间上展现出来,能够很好地实现灵活的人机交互。文章5认为,构建三维虚拟环境需要大规模的三维场景数据,这些数据可以从二维GIS中提取、转换或者重新组织得到三维的数据源,例如文献6提出将二维栅格数据的遥感图像与栅格化后的DEM数据融合,来生成立体的三维景观图像,以显示逼真的现实效果。二维矢量地图、二维栅格地图和三维地形图之间的优缺点789如表格1.1所示,可以看出它们分
27、别有适合的应用场景,虽然各自存在着不足,但是目前为止,三者都是GIS的发展方向,缺一不可。表 1.1 二三维GIS地图综合比较优点缺点应用场景二维栅格地图数据结构简单;现实性较强;便于和三维地形结合使用;便于描述复杂模糊的事物数据存储量大;精度较低适合描述色彩、阴影或形状变化复杂的影像地图二维矢量地图数据存储量小,结构紧凑;地图显示质量好、精度高;空间关系全面;方便查询和导航数据结构复杂;地图表达较抽象适合需要对矢量图层分析处理的GIS场景三维地形图对地理环境的显示更逼真;容易以多种形式显示地形;便于对GIS的空间分析数据结构复杂,存储量大;三维GIS可视化框架不统一适合需要空间交互和空间分析
28、的三维GIS场景在国内外比较知名的GIS可视化服务系统中,Google Map和Baidu Map都是在以网站的形式提供二维矢量地图和二维栅格地图(卫星地图),对三维地形可视化的优秀软件有Google Earth、Skyline等,如图1.1所示,可以看出,传统的二维GIS和三维GIS都是在不同的平台下处理和绘制的,这对于用户的使用和程序的再次开发都是非常不便的,在这种情况,在同一个平台下基于同一种绘制引擎的二三维GIS系统的开发是非常有意义的。 (1)Google Map下的矢量地图 (2)Google Map下的卫星地图(3)Google Earth下的三维地形图图 1.1 Google
29、Map和 Google Earth的二三维地图展示1.2 国内外研究现状1.2.1 二维栅格地图的研究现状由于二维栅格地图的数据量非常大,所以对二维栅格地图研究的难点就在于对遥感地图等原始地图数据的组织和管理。据统计,在使用过程中,更多的用户都仅仅关注于一个相对较小的区域或是原始图像的某种分辨率的图像,所以,传统的做法,像Google地图、Oracle 10g Spatial,都提供了数据分块创建影像金字塔(Pyramid)的机制10。分块的思想在二三维GIS中实现在有限的内存绘制海量地图的机制上非常有用,它是将原始地图数据分割成规则的块状数据,使系统可以逐块地处理这些地图数据,对栅格地图进行
30、图像金字塔处理就是依据这样的策略。在此基础上,文献11提出了多金字塔混合组织模型,以支持栅格地图的分布式存储;文献12将小波变换和传统的多分辨率金字塔模型结合在一起,提出小波金字塔模型,来减少栅格数据的存储量和增大网络传输效率。虽然这两者的扩展模型都是非常好的技术,但是由于本文设计的系统中没有涉及网络传输和分布式存储,而且在三维地形中也会使用到金字塔切割的原理,所以为了系统的统一,本文采用的仍然是传统的多分辨率图像金字塔模型。1.2.2 二维矢量地图的研究现状表 1.2 二维矢量地图中空间索引技术对比索引名称适应对象适应维度存储效率算法复杂度优点缺点K-D树点对象多维较低一般存储要求较低,高效
31、查询删除操作复杂,无法管理海量的数据、更新更困难网络索引任意空间对象多维较低一般结合编码,索引速度快,索引可调整数据冗余大,单一分辨率,变长记录,难以维护点四叉树任意空间对象二维一般一般操作简单,支持动态更新,查找快非平衡树,空间利用低面四叉树任意空间对象二维一般一般空间划分无重叠,可控分辨率,隐含空间关系,查找快深度相差大,数据结构复杂,动态维护困难R树任意空间对象多维较高较高比K-D树,四叉树更灵活,效率更高区域重叠,影响效率,动态维护性能较差R变种树任意空间对象多维较高高区域重叠度改善,效率改善算法复杂,动态维护性能较差矢量地图是二维GIS最主要的数据源,其显示效率是评价GIS平台性能的
32、最重要因素之一,不管是在桌面端、嵌入式上还是在基于Web的服务端都是如此。和二维栅格地图类似,如何有效地对矢量地图数据进行空间索引管理一直是研究的基础问题。现在常用的二维矢量地图的空间索引技术主要有K_D树、R树、四叉树、网格型等,或者基于这些技术而优化的索引技术,表1.213是对各种索引性能的比较,它们各有优劣所在,目前多采用多种索引并存的机制以互相弥补。本文主要用到的是R树和网格型的四叉树索引。1.2.3 三维地形技术的研究现状三维地形的可视化技术是本文研究的重点,与二维地图不同的是,三维地形的可视化研究的难点在于如何改善各方面因素提高渲染效率,这包含数据的处理和组织、内存空间管理、地形节
33、点选择算法等,另外,在不影响渲染速度的基础上,一个合理的消除地形之间裂缝的算法也是当前国内外研究的热点和难点。金字塔的分层分块策略可以完好地延续在三维GIS中,现在的三维地形对地形数据的处理和组织大多数采用的都是文献14中的地形四叉树索引的方法,对于地形节点的空间选择,该文作者提出了Chunked LOD技术,文献15对其进行了改进,提出了一种基于地形节点纹理分辨率的LOD选择算法,但是该算法只考虑到了地形块在二维平面上的精度,即单单计算出了应该选择哪一层的地形四叉树节点,而没有考虑到每个地形节点在高度上的最大最小范围;文献16克服了这一缺点,但是它使用的地形LOD选择算法只与视点位置的X和Y
34、坐标有关,而与视点的高度无关,这样会导致不合理的结果,因为当视点远离地形时是不需要显示所有层次细节的。为了克服两者的缺陷,本文提出了一种综合考虑视点高度和地形节点空间范围的算法,称为基于可视范围的空间地形节点LOD选择算法。地形的接缝算法基本在每一个地形绘制的系统中都有涉及,文献17中把地形接缝算法分成了动态接缝算法和静态接缝算法两大类,其中动态接缝算法的主要思想是在绘制过程中动态地分裂和合并三角形来实现接缝,在两个不同精度的地形块相邻时,要么在较低精度的地形块边界上分裂出更多的三角形,要么在较高精度的地形边界上合并一些三角形,以达到过渡衔接的效果,如图1.2所示;动态接缝算法的主要代表是RO
35、AM算法18,以及在其基础上的一些改进算法192021,这种算法会破坏原先地形的网格结构,而且基于CPU的实时绘制系统中三角形的分裂和合并是比较耗时的。静态接缝算法的主要思路是通过数据预处理把地形块的网格数据都存储起来,在构建这些地形块网格数据的同时,把原先地形的网格周围加上一圈额外的边界网格带,来过渡两个地形块之间的裂缝;静态裂缝的主要代表是Chunked LOD中提出的垂直边缘填充方法(Vertical Skirt)和与它类似的算法,这种算法应用比较广泛,开源三维游戏引擎Ogre的地形绘制就是采用这样的算法,图1.3描述了一种多重边界的静态接缝算法17。但是静态接缝算法要预先存储所有的网格
36、数据,这是相当浪费的,而且每个地形块都要绑定一些额外的三角网格,会使渲染的三角形数量增多,一旦边界处理不佳还会产生裂缝。这两种算法出现不足的根本原因在于,它们对裂缝消除的粒度都是以地形块为基本单位的,本文将提出一种以顶点为处理单位的基于GPU的顶点过渡算法来消除地形裂缝。 (1)分裂三角形 (2)合并三角形图 1.2 动态地形接缝算法示意图由于整个三维地形实时绘制算法的复杂性,传统的基于CPU的地形渲染算法使计算机图像硬件和CPU之间的信息交换常常形成一个严重的传输瓶颈,导致图形不一致或者较低帧速,另一方面,随着图形处理器GPU的功能更新越来越快,即便是一个简单的基于GPU的处理也会比经过复杂
37、的CPU计算的视觉效果要好和快的多22。一些基于GPU的大规模三维实时渲染系统的实现162324也证实了GPU的高效。 (1)建立于同等精度地形块衔接的边界 (2)建立于较高精度地形块衔接的边界图 1.3 静态地形接缝算法示意图1.2.4 二三维GIS一体化技术的研究现状二三维GIS一体化技术是全新一代的GIS技术,目前只有GIS行业非常有限的垄断的软件公司才对这以技术加以研究和实现,比如我国的超图Super Map和国外的Skyline两大平台,超图公司在2011年发布了“一张图”概念下的二三维一体化GIS共享概念25,将GIS中的二维空间数据与三维空间数据整合在一个平台下,打破了以前三维G
38、IS系统相对于二维GIS系统在数据、功能、结构上需要另起炉灶的弊端。这样,用户建设一套系统,就可以同时拥有二维和三维两种应用形式。文献26将SuperMap的这种一体化技术和Skyline进行了对比:Skyline将二三维地理数据分别处理并展示,SuperMap GIS 6R则对二三维数据存储管理一体化;Skyline对海量三维地形数据可以流畅绘制,而SuperMap则稍微逊色。两者同时存在的弊端是,都是商业化软件,在二次开发上接口的封装程度比较高,开放程度较低,不便于进行研究。本文提出的基于VTK的二三维GIS核心组件系统也是一种二三维GIS一体化技术。我们吸纳上述两者技术上的优势,在数据管
39、理上,将二三维数据分别处理但在绘制上不区分对待,可以存储在同一个数据库中;在渲染上,二三维地图基于同一个平台同一个绘制引擎,分窗口绘制;在效率上,同Skyline一样,使用三维场景的LOD技术和金字塔分级分块技术,同时采样GPU加速渲染,提高绘制帧率。 1.3 研究目标和内容本文的研究目标为:(1) 分别构建出针对二维矢量数据、二维栅格数据和三维地形数据的预处理工具,使构建出的地理数据能够合理、高效地被开发系统使用。(2) 实现二维矢量地图和二维栅格地图的实时绘制,通过GPU加速的方式实现对三维地形的无缝渲染。(3) 在深入分析和总结前人研究成果的基础上,利用开发工具Visual Studio
40、 2010,在Goophy 8.1平台上开发出一套完整的以VTK为绘制引擎的二三维GIS核心组件系统。基于本文的研究目标,需要研究的内容有:(1) 研究三维可视化引擎VTK的关键技术,以从中抽取出本系统使用到的功能并进行封装。(2) 研究图像金字塔原理,实现将大幅影像图片切割成金字塔的算法;研究二维矢量地图的空间索引机制;研究从给定地理区域中快速获取金字塔瓦片和矢量类型的算法,探索能够在有限内存进行实时渲染海量的二维地图数据的内存管理策略。(3) 研究三维地形数据的预处理和存储方式;提出更合理的空间地形四叉树LOD选择算法和适合GPU使用的地形裂缝消除算法。(4) 研究如何使用VTK可视化二维
41、矢量地图和二维栅格地图,以及如何使用VTK通过GPU的Shader编程实现三维地形的可视化。1.4 本文特色本文的特色有:(1) 设计了整套的二三维地图数据预处理工具,在对二维栅格地图数据的预处理中,根据不同规模的单张影像输入和多张影像输入分别提出了可行的金字塔切割算法。(2) 提出了综合考虑视点高度和地形节点空间范围的三维地形节点的LOD选择算法,把地形接缝的粒度从地形块缩小到顶点,研究出适合GPU使用的地形裂缝消除算法。(3) 使用Goophy 8.1平台开发出各个功能模块组件,使得组件可以跨语言使用、跨平台使用。(4) 本文最大亮点在于最终实现了一个综合的GIS系统,在这样单个系统中,使
42、用VTK可以同时绘制二维矢量地图、二维栅格地图和三维地形图。1.5 本文内容组织本文将所述内容组织如图1.4所示:图 1.4 本文的内容组织架构图第一章 绪论。本章阐述论文的研究背景,介绍与本文研究方向一致的国内外现状,提出解决的问题。第二章 三维可视化引擎VTK。本章介绍系统开发使用到的绘制引擎,即三维可视化引擎VTK及其渲染流程,并从中抽取出本系统需要的功能,完成封装和使用。第三章 地理数据的预处理和存储。本章详细描述二维地图和三维地形的数据预处理部分,为数据的使用和地图的实时绘制做铺垫。第四章 二维地图实时绘制的技术研究。本章研究二维栅格地图和矢量地图实时绘制的理论,最后利用VTK将二维
43、地图以三维的形式展现出来。第五章 三维地形实时绘制的技术研究。本章是全文的重点部分,着重研究三维地形实时绘制的技术,并提出使用到的算法,最后利用VTK下的Shader编程实现三维地形通过GPU的高速渲染。第六章 基于VTK的二三维GIS核心组件系统的实现。本章构造出整个系统的框架并对每个模块进行实现,通过实验数据运行二维栅格地图和三维地形模块,从实验得出的数据分析系统的性能。最后是对全文的总结和展望。11浙江大学硕士学位论文第7章Error! No text of specified style in document.第2章 三维可视化引擎VTK我们在选择GIS的绘制引擎时要综合考虑如下因素
44、:跨平台性,即绘制引擎可以很好地工作在Windows、Linux、Unix等平台下,在其之上开发的软件具有较强的可移植性;开源性,即源码可以被公众使用,并且此软件的使用、修改和发行也不受许可证的限制;面向对象的封装性,由于整个GIS的二维地图和三维地形核心组件中包括地图数据的预处理和存储、地图的实时绘制、载入策略等复杂算法,所以我们希望底层的绘制引擎能具有很好的封装性,便于抽取,方便开发人员使用;多语言性,希望绘制引擎可以同时支持C+,java甚至脚本语言的开发。此外,还要综合考虑可视化引擎的绘制效率、同时绘制二三维图形的通用性、实用性等因素。我们知道OpenGL和DirectX是专业的图形程
45、序接口,但是OpenGL是以C语言函数的形式供用户使用,基本不具有面向对象的特征,而且发展比较缓慢,而DirectX又对Windows平台依赖性太强。开源的三维绘制引擎中具有跨平台性且适合地形绘制的有Irrlicht, OGRE (Object-Oriented Graphics Rendering Engine), VTK(Visualization Toolkit)等。但是Irrlicht比较适合小型地形的开发;OGRE偏于注重架构和设计,不太关注绘制效率,而且对于重新封装比较困难;VTK的再次开发和功能抽取都非常方便,而且也有很多使用VTK可视化三维地形的先例272829,所以综合考虑,我们选择使用VTK作为本系统的绘制引擎。下面就介绍一下VTK的特性以及它独特的管道技术和对象模型,并描述本系统中抽取使用的一些VTK类及