4.3.3.5 灌区三维平台架构
三维数据的前端展示问题是三维数字平台的关键环节。Web GL是当前发展最迅速的三维渲染技术之一。2009年8月,Khronos公司推出了Web GL这个支持在浏览器端绘制三维图形的底层API,它具有免费和跨平台性。OpenGLE2.0是OpenGL的子集,Web GL使用JavaScript调用底层的OpenGLES2.0进行三维图形绘制,提供与Open GL相似的API接口。
WebGL使用时无须在前端浏览器安装插件,能直接通过JavaScript脚本语言在HTML5的canvaS DOM中绘制三维图形,并可提供显示设备的GPU加速。而且,当前的绝大多数浏览器和移动设备都支持WebGL技术。
相比VRML、Flash3D、Java3D、X3D、O3D等当今主流的三维表现技术,WebGL完美地解决了它们存在的不足。其主要优势有:
(1)WebGL标准开放,任何用户无须支付版权费用即可使用;
(2)WebGL内嵌于本地浏览器,无须安装插件,支持在不同硬件设备上的不同浏览器运行;
(3)Web GL能加速GPU进行图形绘制,提升了图形渲染的效率和质量。
WebGL三维渲染技术的出现,完美解决了浏览器端需安装插件的问题,但WebGL仍是一个底层的绘图API,因此,需在此基础上应用三维引擎对其进行封装。
目前市场上三维场景发布常见的3D引擎有Cesium、Three.js、SkylineGlobe、ArcGIS、Unity3D等,在数据编辑或者集中应用工程上各有侧重点及优劣势。(https://www.daowen.com)
Cesium是AGI公司研发的三维地球虚平台,无须安装插件即可在浏览器端运行,支持GPU加速,可对二维、三维GIS要素进行渲染,具有极强的GIS数据动态展示能力。Cesium能接入符合OGC标准的任何TMS、WMS、WMTS地图服务,可加载Bing Maps、Map Boxs、Open Street Map等网络地图,支持三维瓦片地图服务。与此同时,它提供的3Dres技术解决了三维模型服务中的一些难题,表现突出。Cesium使用Apache协议,是一款免费、开源、跨平台的WebGIS表现图层。
Cesium按层抽象,每层具有特定的功能特性,上层依赖下层,底层是上一层的抽象,具体可分为核心层(Core)、渲染层(Render)、场景层(Scene)、动态场景层(Dynamic Scene)。核心层:Cesium最底层,本层主要有封装坐标系统、坐标变换、矩阵变换、几何算法等与数学相关的功能;渲染层:本层使用Web GL的API封装或者抽象Web GL,主要包含调用Web GL的纹理缓冲区和GLSL着色器语言等功能;场景层:本层是在核心层及渲染层的基础上构建的完整三维场景,包括三维虚的地球框架和在球上绘制的各类二维、三维模型等,还含有时间动画等动态元素;动态场景层:本层封装了Cesium加载的各类地图、三维模型等数据,并对这些对象进行渲染。通过Cesium提供的JS API,可以实现以下功能:高精度的地形和影像服务;矢量以及模型数据;基于时态的数据可视化;多种场景模式(3D、2.5D以及2D场景)的支持,真正的二三维一体化。
Cesium平台具有开源性、易用性、专业性的优势:
(1)开源性:Cesium使用Apache2.0协议,开发者可对其源码进行研究,以便更好拓展三维GIS函数库,按需解决三维GIS网络服务中遭遇的问题;
(2)易用性:Cesi官方网站有丰富完备的学习文档、开发方法和代码示例,在github上相关内容更新活跃,国内相关论坛有不少有关Cesium的探讨和交流;
(3)GIS专业性:Cesium引擎支持各类GIS常用数据和功能服务的加载接入,具备同时进行三维模型数据和三维地形数据展示的能力。
Threejs是一款在浏览器中运行的3D引擎,是JavaScript编写的WebGL第三方库,提供了非常多的3D显示功能。可以创建多种三维场景,包括摄影机、光影、材质等各种对象。Threejs对WebGL进行了封装,让前端开发人员在不需要掌握很多数学知识和绘图知识的情况下,也能够轻松进行Web 3D开发,降低了门槛,同时大大提升了效率。
为保证系统的三维展示效果、加载速度以及模型数据量的兼容度,本项目选用Cesium和Threejs作为系统三维部分的开发框架。