4.3.3.3 灌区三维预处理、优化及发布
(1)建设内容
①灌区三维轻量化预处理主要是对数据进行压缩及优化,以减少模型规模、降低内存使用量、加快显示速度。
②灌区三维模型的数据偏差处理是通过统一坐标系,解决数据偏移问题,利用相关软件调整模型数据,实现平台间三维数据格式的兼容和共享。
③灌区三维数据库构建包含倾斜摄影,全景等数据以及工程数据的管理。
④灌区三维服务构建通过3D软件对三维模型进行集成发布,并根据系统功能开发要求提供不同类型的数据格式。
⑤灌区三维服务发布轻量化三维场景,并发布三维服务数据,实现三维地图服务的调用。
(2)灌区三维轻量化预处理
与以二维地图为基础的信息系统相比,三维可视化的展示平台以地形表面模型为基础,利用计算机图形学的相关技术来表现地学现象。其中,数字高程模型(Digital Elevation Model,DEM)因为具有高效易用且表现形式丰富等特点,应用最为广泛。数字高程模型本质上是一种高程z关于平面坐标x、y自变量的连续函数。在一定区域内,以密集地形点的三维坐标(x,y,z)形式来描述地形的起伏状况。根据地形点的离散分布情况,数字高程模型可分为规则格网模型和不规则三角网模型。
在规则格网模型中,地形空间区域以规则的矩形或三角形网格单元来表示,每一个网格结点的空间属性对应于该地形点的高程值。当网格点的间距和某参考点的实际坐标确定后,网格数据便可以用矩阵的方式来实现,此类地形数据在计算机中可以存储为二维数组或灰度图像。不过,规则格网在表达较为平坦的地形区域时会带来较多的数据冗余,而对于地形突变等复杂形态,该模型的表达效率也不高。
不规则三角网模型可以比较有效地解决规则格网模型应用时遇到的一些问题,包括根据地形起伏的变化提取不同数量能够表示地形特征的采样地形点,即对于地形起伏较大的区域提取多一些,对起伏较缓的区域提取少一些。但是,不规则三角网模型的数据存储较为复杂,不仅需要记录所有地形坐标点的信息,还需要存储这些点间的拓扑关系。当场景范围较大时,模型计算耗时严重,且模型实现算法相对困难。综合考虑以上各种因素,本项目采用规则格网模型,以降低数据的处理难度,并提高系统的运行效率。
在大范围场景下的地形三维可视化渲染中,使用规则格网模型表示的地形往往格网数量较多,实时渲染的计算复杂度较高,影响了显示的流畅性。为了缓解三维场景地形渲染时的压力,一般采用细节层次(Levels of Detail,LoD)模型来简化表示。
LOD的基本原理是通过一定的简化手段来表达同一物体在不同层次的形态。当观察者的视点靠近物体时,用详细的模型来表示;当视点远离物体时,则用简化的模型来表示。由于距离的关系,远处的简化模型与近处的详细模型看似接近,这也符合人类在实际空间中对于物体的认知规律,即只有在靠近某个物体的时候才能看到其细节特征。
通过LOD模型可以控制场景中所需渲染的格网数量,从而获得较好的加速渲染效果。地形的LOD模型一般为地形金字塔结构,将原始地形的格网数据作为最底层,通过重采样方法,将下一层数据简化,得到分辨率小一半的地形模型作为上一层。在渲染时,首先计算观察者的视点距地形的距离,并根据距离的远近调用不同细节层次的模型,以提高地形渲染的效率。
(3)灌区三维大场景优化
①影像数据预处理(https://www.daowen.com)
应用种植物遥感识别获取的影像数据,并对影像数据进行预处理,主要包含影像数据的格式转换、坐标系统建立及转换、影像几何校正、影像裁剪、影像匀光匀色、影像镶嵌等。
②地形数据预处理
可采用收集的基础地理数据,结合可收集到的DEM(数字高程模型)数据。为了构建精细化地形数据,需要对以上数据进行预处理,处理过程包含异常值去除、地形校正、地形拼接、创建TIN(曲面数据结构)、地形填洼、地形修改等。
③影像与地形的融合
通过GIS平台,导入处理后的影像数据和地形数据,对数据进行地理参数设置、色彩直方图调整、场景范围裁切、高程设置等。最后建立影像和地形的缓存文件,便于流畅地分级展示三维场景。
采用GIS平台对卫星影像、数字高程模型等进行数据预处理,构建三维地表场景,实现三维GIS的初步搭建。对于处理并搭建好的三维地表场景,在开源平台进行发布。
(4)灌区三维模型的数据偏差处理
三维模型的导入和调试匹配是针对不同引擎的开发环境下所产生的问题给出相应解决方案的过程。
①数据偏差纠正
在基于GIS的开发引擎中,通常会因为坐标系的不同而存在数据的偏移,因此,模型在导入系统比对后,需利用三维软件进行二次修正。
②引擎底层算法不同产生的问题
在多引擎的开发环境下会出现模型数据兼容性的问题,通常系统在表现一些高级效果时需要对相关模型做特殊处理,这些特殊处理的方式往往来自三维软件的高级算法,而这类算法并不是每个引擎都支持的。所以,一方面本项目在做这类高级效果时选用开源度高的三维软件,如blender;另一方面,根据相应需求,给出针对该引擎底层算法的解决方案。
③其他问题
如针对模型本身问题、系统表现效果问题(不同引擎的渲染效果不同,有好有坏)、数据量问题(单体模型数据量小,但是场景大,模型总量大),项目实施过程中也会给出相应的解决方案。