APP下载

基于核密度和KML的溢油预报动态可视化设计与实现

2017-11-13王豹王斌

海洋预报 2017年5期
关键词:溢油制图可视化

王豹,王斌

(1.南京大学地理与海洋科学学院,江苏南京 210046;2.国家海洋环境预报中心,北京 100081;3.首都师范大学资源环境与旅游学院,北京 100048)

基于核密度和KML的溢油预报动态可视化设计与实现

王豹1,2,王斌2,3

(1.南京大学地理与海洋科学学院,江苏南京 210046;2.国家海洋环境预报中心,北京 100081;3.首都师范大学资源环境与旅游学院,北京 100048)

针对现有溢油预报可视化产品的不足,提出了一种基于核密度和KML的溢油数值预报产品的动态展示方法,并详细描述了该方法中两个技术要点:核函数密度制图和KML结构设计。通过编写程序模块,实现了KML文件及相关专题信息的自动化生成,并以Google Earth为平台上进行了实例展示。实践证明:该方法借助Google Earth丰富的地理信息背景和“时间轴”技术,能够在流畅稳定的平台上准确、便捷、美观地动态显示溢油预报结果,具有一定的业务应用价值。

KML;核密度;溢油;可视化

1 引言

溢油数值预报以复杂的物理模型为依托,综合考虑了表层海流和海面风作用下油粒子的漂移和扩散,为溢油事故的及时、准确处理提供信息支持[1-2]。溢油预报的动态可视化利用计算机图形学和图像处理技术,将溢油数值预报模式的模拟结果进行必要的预处理及格式转换,通过可视化技术以图形图像的形式显示数值信息,从而形象、直观地表达溢油的漂移过程[3]。

近年来,溢油可视化的研究借助了许多主流的信息技术手段。庄学强等[4]基于Mapinfo COM技术,将溢油数值模型的模拟计算结果实时、动态地显示在电子海图上。胡跃波集成了ArcGIS组件、Surfer控件及相关的视频播放组件,以VB.NET语言为开发语言,将溢油模型通过动态链接库的形式“嵌入”到显示界面中,实现了胶州湾溢油预报过程的可视化[5]。焦俊超等[6]整合了GIS(Geographic Information System)开发技术和Google Earth平台,对溢油预测信息进行了可视化展示,但展示的方式是数值模式输出的油粒子点,溢油浓度的表达不够直观。李久松[7]运用i4Ocean渲染引擎,采用粒子系统等关键技术实现了海上溢油的三维动态可视化,弥补了二维溢油可视化在真实感方面的不足。苗星妍[8]基于OpenGL,采用OSG(Open Scene Graph)场景渲染技术以及GPU(Graphics Processing Unit)三维渲染编程技术,实现运动点连续溢油的三维可视化。

目前,溢油预报业务中的可视化产品以图片为主,表现形式单一,交互性较差,动态显示效果欠佳,产品整体美观程度不够,表达的内容多局限于溢油的专题信息[9];而基于OpenGL、i4Ocean等技术的三维溢油可视化则缺乏区域背景地理信息的支持(包括空间参考、卫星影像和基础地理数据等),且尚无一个通用性的产品发布、展示平台。基于以上原因,本文设计了一种基于KML(Keyhole Markup Language)和核密度的溢油预报动态可视化技术方法,本方法的创新之处在于能够在成熟、稳定平台上以图形的方式动态表达溢油事故发生后油粒子的时空位移及集聚变化,在具有完备的背景地理信息的同时,兼具一定的交互性和业务应用价值。

2 关键技术

本文可视化方法的关键技术包括两个方面:一是用于油粒子数值结果可视化的核密度制图方法;二是用于动态可视化的KML技术。拉格朗日粒子追踪模型将溢油离散为大量油粒子,每个油粒子代表一定的油量,其数值结果的可视化适宜采用密度制图的方法。密度制图的结果表示溢油浓度,即单位面积内所有油粒子表示的总油量。密度制图对离散采样点进行表面内插,简单点密度制图计算简单、快速,但存在连续密度表面不够平滑的缺点;而核密度制图通过引入核函数,使得密度表面更加科学、合理。KML采用嵌套的元素和属性描述和保存地理信息,是一种被Google Earth识别并显示的标记语言。将核密度制图的时间序列结果记录在KML文件中,然后导入Google Earth进行动态演示,可以在丰富的背景地理信息支撑下直观、流畅、交互式地显示溢油预报可视化结果。

2.1 核密度制图

核密度制图是一种基于核密度估计(Kernel Density Estimation,KDE)的制图方法。与简单点密度制图不同,核密度制图根据已知点要素的数值及其分布,通过移动的三维函数(内核)计算整个研究区域的数据分布状况,将点状要素转换为连续曲面,以反映点格局的空间集聚特征。核密度图以面上某点的值表示该点的要素密度,消除边界分隔对密度计算精度的影响。考虑已知点对其周围区域要素值影响的距离衰减作用,已知点邻近区域的密度值随中心辐射距离的增大而逐渐变小[10]。

设研究区域 R内分布有n个事件 X|X1,X2,…,Xn|,x处的点密度值为 f(x),其估计值记为f(x),则x处的点密度 f(x)的估计表示为:

式中:n为搜索区域内已知点个数,h为分布密度估计的平滑系数,K为核函数方程,x为格网中心位置,Xi为已知点位置,x-Xi为密度估值点x和Xi之间的距离。常用的核函数方程主要有高斯、四次(球面)、(负)指数、三角(圆锥)、叶帕涅奇尼科夫(抛物线)等。不同数学形式和核函数方程对密度估计的影响较小[11],本文选择GIS中最为常用的核函数——叶帕涅奇尼科夫方程进行研究区域核密度的计算,其核函数公式如下:

此外,平滑系数通常根据实际需求选择,本研究中采用自适应选择的方式,即自定义规则,以网格中心点为原点的若干同心圆区域内,若包含5个已知点,即以该圆的半径作为平滑系数。

2.2 KML动态显示

KML是一种基于XML语法标准的标记语言,用于描述地理数据,是广泛应用于Google Earth中显示与表达地理标记的一种文件格式。随着Google Map与Google Earth的广泛普及,KML迅速成为一种地理信息行业标准,并于2008年被OGC(Open Geospatial Consortium)正式宣布成为开放地理信息编码标准,即OpenGIS KML编码标准。通过编写KML代码,用户可以在Google Earth中自定义地添加和发布各种类型的数据,如点、线、面、二维图像以及三位模型等[12]。正是因为这种特性,极大地方便了不同用户之间的信息与数据共享,使得基于KML的开发方法成为Google Earth最主要的开发方式。

核密度制图完成后,程序生成一段连续时间序列的溢油密度分级图,为在Google Earth中展示溢油的动态变化过程,需要对KML文件结构进行设计,充分利用多种KML元素的嵌套、组合,实现预期效果[13]。本文中,用到的KML元素主要有等。溢油动态变化KML文件基本结构设计如图1所示。

图1 KML结构中,元素代表一次溢油事件的动态变化过程,其子元素主要包括两部分:一是自描述部分由