基于WebGL三维引擎的城市淹没分析方法研究.docx

基于WebGL三维引擎的城市淹没分析方法研究.docx

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

??

?

??

基于WebGL三维引擎的城市淹没分析方法研究

?

??

?

?

?

?

?

?

?

???

?

?

?

?

?

摘要:在智慧城市的水文管理过程中,模拟水面的淹没分析及相关效果展示一直是GIS应用的主要领域,3DGIS作为一种时空化数据展示的优秀方法也早已用于其中。本文分析了基于WebGL引擎的Cesium框架中两种不同的城市淹没分析方法的优劣,并通过实例进行了实现,实现了较好的淹没可视化效果。

关键字:WebGL、Cesium、淹没分析

?

引言

当前三维空间场景的B/S架构可视化技术主要可以分为两大类:一种是基于浏览器插件实现三维空间的展示与分析,如Skyline、SuperMapiClient等,它的可视化效果好,空间分析功能强大,但用户必须在使用时安装相应插件,一般不为用户所欢迎;另一种是基于WebGL引擎渲染,WebGL作为一种优秀的浏览端图形API,得到了主流浏览器的全面支持,基于WebGL开发的Cesium、Three、Unity3D等系统在三维空间展示中得到了广泛应用。其中Cesium凭借其面向真实地理数据的优势,支持多种数据可视化方法、二三维一体化、可无插件跨平台,近年来被较多地用于三维场景构建的研究和应用中。

三维场景应用的一个重要领域是在智慧城市的水文管理过程中,特别是模拟水面的淹没分析及相关效果展示。淹没分析是指根据指定的最大、最小高程值及淹没速度,动态模拟某区域水位由最小高程涨到最大高程的淹没过程,是GIS分析中常用的功能,常用于模拟洪涝灾害过程。近年来,许多学者对洪水数值模拟及可视化方法进行了深入研究,试图通过三维化手段对洪水过程进行模拟和可视化,将其转化为直观形态,这样对洪水淹没的灾害评估与应急决策管理具有重要的意义[1]。本文使用基于WebGL引擎的Cesium框架,分析了Cesium中的两种不同形式的可视化过程,评估了相关过程的优缺点,并给出了具体的模拟方法,为城市淹没可视化提供了选择路径[2]。

?

Cesium框架及S3M格式

Cesium是一款使用JavaScript语言开发的开源3DGIS库,它基于WebGL框架,方便用户快速搭建一款零插件的虚拟3DGIS应用,并在性能,精度,渲染质量以及多平台,易用性上都有高质量的保证。目前多种商业3DGIS软件的客户端都是基于Cesium开发而成。

Spatial3DModel(S3M)是超图软件主导研发的一种三维地理空间数据格式,是一种适用于海量三维模型数据的传输格式。它定义了一种高效,易扩展,可协作的,开放的数据规范,在OSGB、Cesium3D-Tiles等数据格式的基础上各取所长,对倾斜摄影模型、人工建模数据、BIM、点云、三维管线、二维/三维点线面等各类数据进行整合,形成了适用于多源异构、海量三维空间数据的格式规范,很好的解决了大规模三维数据在Web环境下传输和解析这两大问题。

在Cesium中要实现城市三维淹没分析主要有两种方法,一种是图层级,即使用S3M图层相关的渲染法;另一种是使用entity对象动态模拟。两种方法各有优劣,前者能够给构造较好的淹没可视化效果,但其渲染是整个图层,无法对局部区域进行淹没分析;后者可以自由选择淹没区域,但需要不断渲染entity的高度实现动态效果。

?

淹没可视化方法分析

?

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函数,否则停止执行。

图1S3M图层淹没

如上图1可以看到,S3M图层淹没的效果是整个图层范围都将会展示一个水面淹没的痕迹,该方法无法对特定区域进行淹没分析。

?

Entity动态模拟法

Entity是Cesium中一类比较高级的几何对象,它是根据数据驱动方法来构

文档评论(0)

186****7928 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档