关键字:WebGL、Cesium、淹没分析
1.引言
当前三维空间场景的B/S架构可视化技术主要可以分为两大类:一种是基于浏览器插件实现三维空间的展示与分析,如Skyline、SuperMap iClient等,它的可视化效果好,空间分析功能强大,但用户必须在使用时安装相应插件,一般不为用户所欢迎;另一种是基于WebGL引擎渲染,WebGL作为一种优秀的浏览端图形API,得到了主流浏览器的全面支持,基于WebGL开发的Cesium、Three、Unity 3D等系统在三维空间展示中得到了广泛应用。其中Cesium 凭借其面向真实地理数据的优势,支持多种数据可视化方法、二三维一体化、可无插件跨平台,近年来被较多地用于三维场景构建的研究和应用中。
三维场景应用的一个重要领域是在智慧城市的水文管理过程中,特别是模拟水面的淹没分析及相关效果展示。淹没分析是指根据指定的最大、最小高程值及淹没速度,动态模拟某区域水位由最小高程涨到最大高程的淹没过程,是GIS分析中常用的功能,常用于模拟洪涝灾害过程。近年来,许多学者对洪水数值模拟及可视化方法进行了深入研究,试图通过三维化手段对洪水过程进行模拟和可视化,将其转化为直观形态,这样对洪水淹没的灾害评估与应急决策管理具有重要的意义[1]。本文使用基于WebGL引擎的Cesium框架,分析了Cesium中的两种不同形式的可视化过程,评估了相关过程的优缺点,并给出了具体的模拟方法,为城市淹没可视化提供了选择路径[2]。
2.Cesium框架及S3M格式
Cesium是一款使用JavaScript语言开发的开源3D GIS库,它基于WebGL框架,方便用户快速搭建一款零插件的虚拟3DGIS应用,并在性能,精度,渲染质量以及多平台,易用性上都有高质量的保证。目前多种商业3D GIS软件的客户端都是基于Cesium开发而成。
Spatial 3D Model (S3M) 是超图软件主导研发的一种三维地理空间数据格式,是一种适用于海量三维模型数据的传输格式。它定义了一种高效,易扩展,可协作的,开放的数据规范,在OSGB、Cesium 3D-Tiles等数据格式的基础上各取所长,对倾斜摄影模型、人工建模数据、BIM、点云、三维管线、二维/三维点线面等各类数据进行整合,形成了适用于多源异构、海量三维空间数据的格式规范,很好的解决了大规模三维数据在Web环境下传输和解析这两大问题。
在Cesium中要实现城市三维淹没分析主要有两种方法,一种是图层级,即使用S3M图层相关的渲染法;另一种是使用entity对象动态模拟。两种方法各有优劣,前者能够给构造较好的淹没可视化效果,但其渲染是整个图层,无法对局部区域进行淹没分析;后者可以自由选择淹没区域,但需要不断渲染entity的高度实现动态效果。
3.淹没可视化方法分析
3.1.S3M图层渲染法
S3M图层渲染法是通过分层设色的方式实现,以空间高度为强度值,在不同的高度设置不同的颜色,动态修改覆盖颜色的高度,实现淹没过程动态模拟[3]。基于S3M图层数据,使用Cesium的HypsometricSetting属性,不断调整HypsometricSetting的MaxVisibleValue值来实现,其过程可以表达为:①启动一个时间触发器,在此过程中不断执行一个flood函数;②在flood函数中,首选寻找到需要渲染的图层layer,然后直接获取Cesium. HypsometricSetting()的对象hyp;③初始化hyp属性,设置colorTable、MaxVisibleValue、MinVisibleValue、DisplayMode、Opacity和LineInterval属性,注意第一次设置时MaxVisibleValue为水面其实值;④将hyp设置为layer.hypsometricSetting属性;⑤在函数开始判断当前高程与水面最高点是否一直,如果低于最高点,则继续执行flood函数,否则停止执行。
图 1 S3M图层淹没
如上图1可以看到,S3M图层淹没的效果是整个图层范围都将会展示一个水面淹没的痕迹,该方法无法对特定区域进行淹没分析。
3.2.Entity动态模拟法
Entity是Cesium中一类比较高级的几何对象,它是根据数据驱动方法来构造的[4]。Entity包含了两个主要部分,一是几何形状(Geometry),定义了它是点、线还是面,另一个就是该几何对象的可视化参数,包括outline、disableDepthTestDistance、material等,用于渲染该几何形体。Entity模拟法是将手工勾勒的淹没面生成一个Box的entity对象,通过不断调整entity的高程来模拟水面上涨的效果。
图 2 Entity动态对象淹没
如图2所示,使用Entity模拟法的过程可以表示为:①使用鼠标动态绘制淹没区域面或使用事先绘制面,作为下一步entity展示动态分析的范围;②生成新的entity对象并添加到entities中;③entity为polygon类型,设置其相关参数,如hierarchy为PolygonHierarchy、perPositionHeight为true等,其中最关键的是extrudeHeight参数,它类似S3M渲染法中hyp的MaxVisibleValue值,通过不断调整这个参数可以改变entity的高度;④修改entity的material(材质)属性,直接使用ImageMaterialProperty对象,使entity有一个水面图片效果。
4.结论
智慧水利管理过程中经常会出现在降雨天或上游开闸情况的判断,因此,模拟水面上涨过程的淹没分析及相关效果展示一直是GIS应用的主要领域,而这一过程使用三维GIS场景会更加的直观有效。本文通过分析Cesium中的图层渲染法和Entity动态模拟法,均可有效地实现对三维场景的淹没模拟,实现较好的淹没可视化效果。
参考文献
[1] 刘成堃, 马瑞, 义崇政. 3DGIS支持下的洪水风险三维动态推演[J]. 长江科学院院报, 2019(10):117-121
[2] 赵潇. 三维数字城市建模技术[J]. 新乡学院学报,2017(3):37-39
[3] 周文辉,徐景涛,单英娜,张恒宇,骆旭佳. 基于Cesium的电站倾斜摄影模型Web发布与三维浏览[J]. 大坝与安全, 2019(2):11-15
[4] 陈小雷,彭相瑜,陈莎. 基于三维GIS的山洪灾害汇流模拟分析系统[J]. 中国水利,2016(15):25-27
科技计划项目:
扬州市产业前瞻与共性关键技术计划项目资助
项目名称:WEB端GPU三维GIS渲染引擎与大规模倾斜摄影技术在国土及房地产互联网平台中的应用
项目编号:YZ2018018
论文作者:蒋波涛,张皓天,陈龙
论文发表刊物:《工程管理前沿》2020年3期
论文发表时间:2020/4/3
标签:图层论文; 动态论文; 数据论文; 效果论文; 过程论文; 方法论文; 高程论文; 《工程管理前沿》2020年3期论文;