随着三维GIS技术的发展,人们在其可视化能力方面要求不断提高,在部分应用中,人们不仅要求将场景中物体位置准确描述表达出来,同时还需要保证其逼真性和美观性在智慧城市阶段,三维GIS的构建需要提高效率和速度、降低成本。三维GIS符号化表达系统的设计能够满足人们在这些方面的要求。当前人们对三维GIS符号化表达系统的设计非常重视。以ZTMAP为基础研究三维GIS符号化引擎,展开三维GIS符号化表达系统的设计,应用三维符号,具备有场景操作、空间分析、场景快速搭建以及二三维一体化等方面功能,提高三维GIS应用有效性,本文就此展开了研究分析。
1三维GIS系统应用现状
在智慧城市阶段,人们在三维GIS技术的效率、速度以及成本方面有着越来越高的要求,三维GIS借助虚拟现实技术以及计算机技术等技术手段,就三维空间数据进行相关的处理和管理等方面操作,提高三维GIS数据可视化水平,更好地完成三维空间分析,为地学规划以及决策等方面问题的解决打下良好的基础。
当前,三维GIS系统存在有制作周期长、数据多、渲染效率差等不足,这些方面问题主要是因为场景模型借助建模软件进行制作,模型在数据方面有着非常大的需求量,导致系统效率受到严重影响。三维GIS符号化能够实现对这一问题的有效解决,符号化之后,三维数据不再需要占据过大的空间,能够提高数据管理以及空间分析方面的规范化和标准化。要提高三维符号化数据表达有效性,更好地完成三维空间场景的分析和操作,已经成为当前GIS系统研发的一个主要方向内容。
2三维GIS符号化表达系统总体设计
2.1系统框架
选择单机系统进行系统总体设计,开发语言选择C++,结合组件式GIS思想,在一个控件集合所有三维符号功能模块,提高整个GIS系统设计有效性。系统总体架构包含有4个层面:第一层,三维GIS符号化表达系统以符号化引擎为基础进行二次开发,建立用来展开符号化表达系统,使用C++进行功能接口的调用以及系统界面的编写;第二层,三维GIS符号化引擎主要用来进行三维符号化表达,能够生成三维符号,将二维符号转化为三维符号,分析三维空间等;第三层,依赖库。依赖库主要是用来进行栅格数据处理、解析矢量数据等操作,作为三维GIS符号化引擎基础,实现各类常用空间分析功能;第四层,多源数据层。多源数据层存在有纹理数据以及二维矢量数据,借助GDAL能够解析二维矢量数据,自动生成道路等数据以及属性信息,纹理数据主要是用来生成纹理贴图。
2.2三维符号化表达设计
在展开三维符号化表达设计时,需要与空间分布特征以及地理要素形态特征结合在一起,借助放样技术以及参数化技术,场景通过三维符号表达,完成三维符号库的建立,对符号化有效性以及通用性展开分析判断。三维符号化表达不仅能够用来规划场景,同时还能用来表达二三维一体化,满足相关数据自动生成以及各类空间要素符号表达需要。
2.2.1场景规划
在场景规划方面,三维场景自定义规划,在制定位置,使用相应符号进行三维符号的绘制,变化每一个符号矩阵,进行一系列选择、缩放以及平移。在点符号模块方面,以点状地理要素三维符号为主,根据设计需要选择相应位置完成三维符号的添加;线符号模块以线状地理要素为主,用鼠标绘制三维线状地理要素;在面符号模块方面,包含三维面状地理要素符号,通过鼠标绘制面状符号,填充纹理和要素。通过三维符号搭建的场景渲染速度快,有着非常好的应用效果,通过矩阵变化以及参数设置,设置相对应的三维点状线状符号,这种设计方式比较灵活;另外,还需要根据面状符号要素和纹理进行填充,包含三维符号化表达符号姿态等方面内容。
2.2.2二三维一体化
在二三维一体化方面,借助二维GIS数据生成三维模型数据,将二三维联系在一起显示,更好地完成二三维数据在空间方面的衔接。二三维一体化符号化表达系统,使用二维矢量数据,包含物体在点图层以及线图层等方面数据内容。就实现思路而言,首先要解析二维矢量数据,获取其中属性值和相对应的几何字段;其次要结合不同要素绘制三维模型。在二三维一体化表达方面,包含有两种形式,分别是线状要素符号化以及面状要素符号化。选择二维矢量图层为基础表达面状地理要素二三维一体化,生成所需要的面状要素。
以道路为例,首先读取道路线图层每条路段记录,获取三维空间坐标以及起点终点ID等参数,存储至相应的列表中。其次,获取道路点图层顶点ID存储至相应的列表。再次,结合道路线图层ID号进行标记,得到链接ID号,根据其长度以及路宽打断三叉以上叉路口。最后,结合获取的路段列表进行道路的绘制以及纹理贴图。根据起始点终点ID列表参数获取道路交叉点顺序,确定交叉口的空间位置和形状,计算纹理坐标并贴图。
3场景操作和分析应用
3.1场景漫游
场景漫游模块中,漫游模式有用户自定义模式和经典模式两种。用户自定义模式有节点跟随模式以及设置路径模式等,主要是通过设置对话框参数进行自定义场景漫游;经典模式有飞行模式、驾驶模式、步行模式以及轨迹球模式等,通过封装以及继承OSG自带漫游器实现。其中飞行模式调用osg GA : FlightManipulator类实现,移动鼠标进行场景的移动和旋转;驾驶模式调用osg GA: Drive Manipulator类实现,移动鼠标实现漫游功能;步行模式调动osg GA:Camera Manipulator类实现,移动鼠标点击键盘进行场景漫游;轨迹球模式调用osg GA:TrackballManipulator类实现,移动鼠标完成场景漫游。
3.2场景编辑
在场景编辑方面,包含工具以及场景操作两个方面内容,其中工具主要是用来进行节点的选择以及漫游路径交互绘制,场景操作主要是进行场景缩放、窗口平移以及节点删除等方面操作。在具体操作过程中,平移操作需要借助视点上下和左右操作进行,放大与缩小操作需要拉近或者拉远视点来使窗口向前或者向后移动,删除操作需要在父节点中删除所选中的节点。
3.3空间分析
空间分析模块有多种不同组成结构,如缓冲区分析、属性查询、天际线分析、空间量算等。在实际应用中,也可以结合专题应用添加相对应的分析模块。空间分析模块是三维GIS符号化系统与三维地图之间最为明显的区别。空间分析可以通过符号化地理要素进行。在缓冲区分析方面,能够进行圆形缓冲区分析,鼠标左键在界面选择两个点,其中一个点作为圆心,另一个点与该点距离为半径,使用着色器将园内顶点颜色渲染;在天际线分析方面,主要用来分析当前角度和视点的可见区域,在屏幕上绘制场景要素边缘;在可视分析方面,有可视域分析以及通视性分析两方面内容,其中可视域分析将参数输入对话框,包含视角大小、位置、方向以及长度等,先将场景渲染至纹理,之后计算顶点深度,获取深度纹理涂对应值比较,顶点可见为绿色,顶点不可见为红色;通视性分析以鼠标确定视线起点和终点,交点通过碰撞检测获取,红色作为不可视部分,绿色作为可视部分。
4结语
三维GIS符号化表达系统以ZTMap三维引擎为基础,具备有场景操作、空间分析、场景快速搭建以及二三维一体化等方面功能。选择C++作为系统开发语言,以COM组件完成编程,整个系统有着非常好的可扩展性,可以根据用户实际需求添加所需要的地学分析库。引擎控件能够二次开发,在单机以及网络中都有着非常好的应用效果,实现相应功能。另外,根据所需要的符号,灵活添加其他功能接口。本次研究还存在有一些不足,例如未能实现在网络环境下调用,在之后的研究中将逐渐优化和完善,希望能够在实际应用中更好的发挥出价值和作用。
原文来自:http://www.ztmapinfo.com/blog/index.php/article/32.html