海上危化品漂移扩散过程三维动态可视化方法
2023-01-30占俊达李亿红吴森森曹盛文汪愿愿杜震洪
占俊达,李亿红,吴森森*,曹盛文,汪愿愿,张 丰,杜震洪
(1.浙江大学 浙江省资源与环境信息系统重点实验室,浙江 杭州 310058; 2.浙江大学 地理与空间信息研究所,浙江 杭州 310058; 3.国家海洋局东海环境监测中心,上海 201206; 4.国家海洋信息中心,天津 300171; 5.浙江大学 海洋研究院,浙江 舟山 316022)
0 引言
随着近年来全球化工产业的迅速发展,世界范围内对化学品的需求与日俱增,散装危险化学品(简称危化品)的货物运输逐渐成为海路运输的重要组成部分之一[1]。作为世界危化品生产和消费大国,我国每年海运的各类危化品总量达到3亿多吨,受到危化品的易燃易爆性、腐蚀性、放射性、毒害性等独有的危险属性[2]以及海运环境复杂性的影响,海上危化品货物运输存在许多安全隐患,随之而来的各类危化品泄漏事故频发,对我国沿海生态环境造成了严重影响。如2001年4月17日发生在长江口的事故,泄漏苯乙烯达705 t,是迄今为止世界上泄漏苯乙烯最多的一起船舶污染事故[3]。2018年,巴拿马籍油船“桑吉”轮在长江口以东发生碰撞事故,船上十万多吨凝析油和大量燃油发生泄漏,严重影响了东海海洋生态环境[4- 5]。目前我国海上重大危化品泄漏突发事故应急过程中存在缺乏有效的现场快速检测、跟踪监测等技术及信息服务平台,无法开展准确的预警预测等诸多问题。如何开展快速有效的监测[6]、预警预报[7]和处置[8]等应急响应,已成为业务工作的迫切需求。
在预警预报中,对危化品泄漏入海后的漂移扩散过程进行预测预警是非常重要的环节之一。预测结果提供的未来各时刻的危化品扩散范围、各区域的危化品浓度以及会受到影响的敏感区域等信息能使相关应急决策人员对扩散情况有更全面的认识,使处置工作在空间、时间上有更强的针对性[9-10]。而对海上危化品漂移扩散预测结果进行三维动态可视化,能够帮助决策者更加快速、直观、形象化地掌握漂移扩散发展过程,因此有必要对从预测模型结果数据到危化品漂移扩散场景可视化的一整套流程的实现方法进行相关研究。
危化品扩散过程可通过三维离散数据进行表征。国内外对离散数据扩散的三维可视化方法已进行了较多的研究,最为主流的是粒子法。模糊物体如火焰、云、薄雾、烟雾、扩散物体等,因其没有固定的形状,无法使用传统的绘制方法绘制[11]。REEVES[12]提出了使用粒子系统来对这些模糊物体进行建模的方法,后来HARRIS et al[13]、UMENHOFFER et al[14]、WANG et al[15]在这方面进行了更深入的研究。李苗苗[16]使用粒子系统模拟分层的污染物浓度分布,建立了污染物浓度值与粒子颜色值之间的映射关系,并且通过赋予粒子随机的大小使全局条件下的浓度值变化有了较好的可视化效果。李九松[17]提出了基于虚拟海洋可视化平台渲染引擎与粒子系统的海上溢油动态可视化方法,初步实现了海上泄漏污染物扩散过程的动态可视化模拟。除粒子法外,陈兰芳[18]利用ArcGIS平台进行二次开发,建立泄漏危化品漂移扩散趋势的可视化系统,利用轨迹和等值线等形式实现了对危化品运移扩散范围的动态显示。廖国祥 等[19]利用GIS平台实现了溢油数值模拟结果渐进、快进、快倒等模式的动态播放展示。邹长军 等[20]利用纹理投影方法和基于高斯平滑滤波的边缘锯齿改善方法对海面溢油进行可视化,具有良好的适用性。
纵观国内外对于污染扩散可视化的研究,基本实现了扩散物质随时间变化的扩散过程的连续呈现,能够较为直观地看出各时刻扩散物质所到达的空间位置以及扩散的总体趋势。但仍存在以下几个问题:(1)一部分扩散可视化的研究脱离了周围环境场景,使得扩散过程整体效果比较单调、孤立;(2)在使用粒子系统进行的扩散可视化研究中,由于粒子数目较多、渲染算法效率不高等原因,使得整体扩散过程不够流畅;(3)一些研究虽然在三维地形场景中进行污染物扩散的可视化,但扩散体本身仅仅是一个二维的平面,仅适用于海面漂浮污染物的可视化,不能满足溶解扩散型、易挥发型等危化品的扩散可视化;(4)一些研究用切换污染物浓度场专题图的方法来实现扩散的动态效果,这类方法需要人工干预,可扩展性差,修改扩散过程的参数后,需要重新生成部分或所有专题图才能完成整个扩散过程的更新;(5)缺少对于场景或扩散过程的交互操作,无法对扩散过程进行交互式的控制。
针对实际应用需求以及现有研究存在的问题,本文提出了一种基于Unity3D引擎及其粒子系统的海上危化品漂移扩散过程三维动态可视化方法,在搭建海洋周边三维场景的基础上,对危化品漂移扩散模型预测结果数据进行读取、处理与优化,对不同类型扩散体的浓度、厚度、扩散范围、扩散趋势进行直观的可视化展示,并能对扩散体的扩散进度、模拟速度、透明度等状态进行交互式控制,旨在为海上危化品泄漏突发事故应急处置提供信息参考与辅助决策支持。
1 模型数据处理与优化
海上危化品漂移扩散预测模型(简称扩散模型)运算输出的危化品未来扩散状态数据,即用于本文扩散可视化的原始数据,被组织在网络通用数据格式(Network Common Data Format,NetCDF)文件中。一个NetCDF文件包括变量、维度、属性等要素,存储的数据是一个多自变量的单值函数,用公式可表示为:
f(x,y,z,…)=value
(1)
函数的自变量x,y,z等在NetCDF文件中被称作“维度”,以危化品浓度数据dye为例,描述这个数据使用了4个维度:时刻、深度、经度、纬度,用公式可表示为:
f(time,depth,lon,lat)=dye
(2)
由扩散模型计算得到的数据除了危化品浓度外,还包括温度、盐度、水平流速、三维流速、水深等,数据输出的时间间隔为1 d,即每天输出1组预测数据。
在进行危化品漂移扩散的三维动态可视化时,使用的数据主要包括浓度(dye)、经度(lon_rho)、纬度(lat_rho)等。编写脚本对NetCDF文件进行读取解析操作。读取的变量被写入对应维度的数组中,如dye数据包括时刻、深度、经度、纬度4个维度,读取时,它被写入一个四维数组中,可以用指定下标访问对应位置的数据。模型数据处理后输出的内容是存储了各个时刻相关坐标点的坐标信息以及浓度信息的文本文件。
为了减少导出的数据量,在不影响视觉效果的前提下减少扩散可视化时的粒子数目,提高渲染效率与流畅度,可剔除数据中的陆地部分以及全过程中未受危化品扩散体影响的点位。通过对浓度数据四维数组的迭代,可以筛选出所有在危化品扩散过程中受到污染物影响的点位,仅将这些点的相关扩散信息写入文件保存。模型数据处理与优化流程如图1所示。
图1 模型数据处理与优化流程Fig.1 Model data processing and optimization process
2 漂移扩散过程三维动态可视化方法
2.1 海洋周边三维场景构建
将扩散可视化过程置于周边环境场景中能够增加其真实感,使扩散体影响的范围和区域能更加直观地表现。本方法中的海洋周边三维场景采用数字遥感影像结合数字高程影像的方式进行构建,数字遥感影像为场景提供纹理信息,数字高程影像则提供平面的高程信息。
对海洋周边一定范围内的数字高程模型(Digital Elevation Model,DEM)数据进行处理,利用其中包含的整个平面的高程信息,将二维的DEM影像转化为三维的场景模型。首先,将范围内多幅DEM数据导入ArcMap进行拼合,并绘制一个代表场景边界的多边形要素作为边界,对拼合后的DEM数据进行裁剪,得到目标区域的DEM数据,将其导出为TIFF文件。接着,将新的DEM文件导入Global Mapper中,选择适当的渲染方式和灰度设置后导出为JPG图片文件。然后,将导出的JPG文件导入Photoshop进行长宽尺寸调整,将调整后的图像输出为Raw格式。最后,在Unity3D引擎场景中添加一个新的地形(Terrain)对象,为地形组件Heightmap设置导入处理得到的Raw文件,调整宽高比例和大小。设置完成后,可以看到场景中生成了一个没有地形纹理的海洋周边环境三维模型。
数字遥感影像选用Landsat 8 OLI影像,对其进行一系列的处理,使其作为纹理贴合到对应的模型上。首先,将其导入ArcMap,利用裁剪DEM数据时所用的多边形要素,对遥感影像进行同样的裁剪操作,得到相同目标区域的遥感影像。将其导出为分辨率较高的JPG格式文件。接着,将图片文件导入Photoshop中,对图像中海洋、山体等的颜色适当调整后导出。最后,将该纹理文件导入到Unity3D中,在地形组件的纹理(Textures)设置中新建纹理,并设置为导入的纹理文件,调整大小尺寸,使其与地形一致。设置完成后,纹理被正确地覆盖到地形模型上,即可完成海洋周边三维场景构建(图2)。
图2 海洋周边三维场景构建Fig.2 3D scene construction around the ocean
2.2 粒子释放与过程可视化
危化品的漂移扩散动态可视化主要借助Unity3D引擎的粒子系统来实现。粒子系统由粒子集合组成,集合中每个粒子都有各自的位置、速度(速率和方向)、大小、颜色、透明度、寿命等属性[21],这些属性随着时间不断变化,将扩散物体在水中的扩散过程抽象为大规模粒子在不同作用力下的运动过程,反映泄漏危化品随时间变化的扩散状态。
在场景中添加一个粒子系统对象,在该对象上创建一个新的脚本用于扩散过程的代码实现。扩散可视化的实现可分为危化品扩散数据读取、粒子生成、扩散粒子帧更新三部分。
先读取扩散模型结果文件中的扩散数据。对文件的每一行分别进行处理,将各点粒子的坐标信息存储在坐标动态数组中,将各时刻各点粒子的浓度信息存储在浓度动态数组中备用。
在Unity3D脚本的Start函数中进行粒子系统的初始化。设置粒子系统的粒子移动速度、粒子存在时间、粒子最大数量等参数。赋值完成后对粒子进行发射。每一个发射的粒子,从坐标动态数组中获取其坐标信息,对其位置属性进行赋值;将浓度信息以特定的配色映射为颜色对象,并且对浓度低的粒子设置较低的透明度,从而和地形更好地融合。给所有粒子定义一个合适的初始大小,使整个粒子集合在视觉上形成整体。最后将上述设定提交给粒子系统,完成其初始化。
Unity3D脚本的Update函数将逐帧执行,在该函数中定义粒子系统随时间变化的形式,粒子的帧更新过程由以下几个全局变量控制:
(1)更新率
控制更新每一帧的时间间隔,值越小,帧更新的频率越高(值为1时表示1 s更新1帧)。
(2)单位时间帧数
表示两个时刻间模拟的帧数,值越大,对扩散过程的描绘越精细。比如值为24时,表示将原来以天为单位的数据通过插值精细到每小时进行1次模拟。
(3)总帧数
即从第一个时刻到最后一个时刻扩散过程的总帧数,其值等于(总时刻数-1)×单位时间帧数。
(4)当前时刻
记录当前到达的时刻。
(5)当前时刻间帧数
记录当前两时刻间到达的帧数。
(6)当前总进度
记录当前可视化进度到达的总帧数,其值等于(当前时刻×单位时间帧数)+当前时刻间帧数。
由当前总进度控制扩散可视化的总进度。当单位时间帧数大于1时,从浓度动态数组中提取出前一时刻和后一时刻浓度的数组,再根据当前时刻间帧数的值进行中间浓度的插值计算,得到当前帧扩散体各点的浓度数值(图3)。根据浓度对粒子的颜色属性进行与初始化同样的赋值处理。以此方法对粒子集合进行逐帧更新,实现扩散效果的动态可视化。
图3 粒子浓度变化动态插值Fig.3 Dynamic interpolation of particle concentration
由于扩散体在各个时刻的整体形态与浓度分布情况由粒子系统(众多粒子组成的集合)进行表现,可以通过改变各粒子的空间位置属性和颜色属性表现三维空间中任意形态的危化品扩散体。因此该方法适用于海面漂浮型、悬浮输移型、溶解扩散型、易挥发型等入水形态各异的危化品的扩散可视化。
2.3 交互控制模块
交互控制模块为用户提供控制扩散过程的交互式面板,设计如图4所示。
图4 可视化过程交互控制面板Fig.4 Interactive control panel of visualization process
交互控制模块可对扩散过程进行以下几项控制:
(1)暂停与继续
通过点击按钮,可以对扩散过程进行暂停和继续的控制。
(2)不透明度控制
通过拖动不透明度拖条,可以对扩散体的不透明度进行实时修改,不透明度为0时,扩散体将在视觉上消失。
(3)模拟速率
通过拖动模拟速率拖条,可以对扩散过程的模拟速率进行实时修改,在脚本代码中体现为修改更新率的值。
(4)扩散进度
通过点击进度条特定位置或直接拖动进度条,可以将扩散进度直接跳转到对应的时刻,在脚本代码中体现为修改当前总进度的值,从而能查看任意时刻的危化品扩散情况。
(5)场景漫游
滚动鼠标滚轮可以控制相机的前进和后退;按住鼠标右键进行拖动可以控制相机角度的旋转;按住鼠标左键进行拖动可以进行相机位置的平移。通过以上3种视角的控制方式,可以实现对场景任意位置和任意角度的查看。通过点击面板左下方的“回到初始视角”按钮,相机的位置和角度重置为初始状态。
3 实验结果
以杭州湾海域模拟的某危化品泄漏事故为例进行海上危化品漂移扩散过程三维动态可视化的实验,验证本文方法的性能与效果。
首先对该区域数字高程影像DEM和Landsat 8遥感影像进行相应的处理,分别生成同一目标区域的Raw文件和纹理文件,利用Unity3D的Terrain组件生成该区域的三维场景。
模拟仿真数据来源于自然资源部第一海洋研究所的模式数据,采用Regional Ocean Modeling System(ROMS)区域海洋模式构建了杭州湾示范区三维浪-潮-流水动力数值模式,水平分辨率为900 m,模拟区域范围为120.5°E—123.5°E,29.5°N—32.0°N,模式的上层强迫考虑了气候态平均的热通量、淡水通量、动量通量、海表面温度和海表面盐度,潮强迫采用了10个分潮,开边界源自中国近海大区域的模拟结果[22]。模拟事故发生位置为(121.61°E,30.40°N)。将溶解扩散型危化品视为惰性示踪物,释放于模式表层,初始浓度为实际泄漏量的100%,释放时间为1月1日。
模型模拟所得的结果数据为NetCDF文件,对数据进行读取与优化处理,剔除与可视化无关的数据,将相关数据(经纬度、浓度)输出为文本文件。
利用Unity3D脚本依次读取各时刻的危化品扩散数据,并初始化粒子系统,释放扩散粒子。通过插值处理,原始数据的时间分辨率得到提升,可视化过程中对每一帧中的各粒子位置与浓度数值进行更新,从而动态地展现危化品漂移扩散的连续变化过程。交互控制模块提供基本的场景漫游交互功能以及针对扩散过程与扩散体状态的控制功能。
海上危化品漂移扩散过程三维动态可视化效果如图5所示。在性能与效果方面,模型预测结果数据的处理与优化在2 s内完成,三维场景与处理后数据在5 s内完成加载与读取。由于可视化过程从通过筛选模型数据减少粒子数量和在可视化脚本中使用高效的粒子系统渲染方法两个方面进行优化,漂移扩散可视化的帧率能达到40帧/s,通过插值处理,对比原始数据,时间粒度可提升10倍以上,视觉效果流畅,并能通过扩散体颜色直观地展现污染物的浓度分布,可对污染体的透明度、扩散速度、扩散进度等扩散状态进行交互式控制。此外,海面漂浮型和易挥发型危化品的漂移扩散可视化效果如图6所示。实验结果总体上达到了预期的效果,具有一定的实际应用价值。
图5 海上危化品扩散过程可视化实验结果(溶解扩散型)Fig.5 Visualization result of the diffusion process of maritime hazardous chemicals (dissolution type)
图6 海面漂浮型(a)和易挥发型(b)危化品漂移扩散可视化效果Fig.6 Visualization results of floating type (a) and volatilization type (b) of maritime hazardous chemicals
由于本文方法从漂移扩散预测模型结果文件读取与数据筛选优化、粒子系统初始化与逐帧更新渲染到用户交互操作模块的全流程均使用代码脚本来实现,因此,只需要输入指定格式的原始模型预测结果文件,扩散可视化程序便会按流程运行,无需人工干预,随时实现对危化品扩散预测结果数据的可视化;修改脚本中特定的参数可以对可视化过程的帧率、扩散体的浓度配色等进行方便的调整,具有较强的可扩展性。
4 小结
本文针对目前海上危化品泄漏事故中预警预报环节的实际应用需求以及现有污染扩散可视化研究中在场景构建、渲染效率、可扩展性、交互控制等方面存在的不足,提出了一种基于Unity3D引擎及其粒子系统的海上危化品漂移扩散过程三维动态可视化方法,给出了从模型数据处理与优化、海洋周边环境三维场景构建到粒子系统初始化与更新、交互控制等模块的实现过程。以杭州湾海域的一次模拟事故为例进行实验,在搭建杭州湾周边三维场景的基础上,对泄漏危化品扩散体的浓度、厚度、扩散范围、扩散趋势进行流畅的动态可视化展示,并能对扩散体的扩散进度、模拟速度、透明度等状态进行交互式控制。鉴于粒子系统的特性,该可视化方法可支持海面漂浮型、溶解扩散型、易挥发型等多种类型危化品的扩散可视化,实验结果达到了预期的效果,能够为海上危化品泄漏突发事故应急处置提供信息参考与辅助决策支持。
致谢感谢国家重点研发计划项目课题组(2016YFC1402404)为本文提供海上危化品漂移扩散预测模拟结果数据。