孙强,王世航,鹿凤

(安徽理工大学 测绘学院,安徽 淮南 232000)

0 引言

可视化(Visualization)是指在人脑中形成对某物的图像,是一个心理处理过程,促使对事物的观察力建立概念等[1]。地学可视化(Geo-Visualization)是科学计算可视化与地球科学结合而形成的概念,是关于地学数据的视觉表达与分析[2]。海洋标量数据是一类只有海洋要素测量值大小,没有方向信息的海洋环境数据,具有多源、海量、异构、多维及动态等特点,海洋三维环境要素可视化系统是分析探究其内在规律及发展变化的有效办法。海洋标量场数据可视化平台在单机或基于C/S架构已经取得了较好的效果,如李新放等在VC++和OSG2.8.7的可视化开发环境上,构建了一个三维、动态、实时、可交互的海洋环境可视化模拟仿真系统[3];Google在2009年初推出Google Ocean,基于三维地球球体实现了大范围的海底地形三维可视化,但缺乏对海洋水体要素的可视化表达[4];徐胜华等基于OpenGL与NetCDF-Java相关库进行开发,实现在自主研发的三维可视化平台,进行海洋标量场数据的三维动态可视化,平台没有实现网络共享的功能[5]。

近年来,随着HTML5技术和WebGL技术的不断发展,基于B/S架构的可视化系统逐渐成为研究的热点。iOcean中国数字海洋公众版[6]采用B/S架构,倾向于信息发布和业务数据展示等,浏览前要下载安装插件;宋丽丽等在B/S架构下,实现了基于 SkylineGlobe插件的海洋标量数据预处理、组织与可视化[7],其和iOcean都要提前安装插件才能浏览,给网页浏览带来不便;中国科学院海洋研究所发布的IOCAS-MSDC系统是基于leaflet地图框架开发的,在二维地图上有较好的海洋标量数据展示效果,但不具备三维可视化效果。综上所述,现阶段大多数可视化平台仍是单机显示或者是基于插件的网络可视化,对于实现在网络环境下无插件地对海洋标量数据进行三维可视化的较少。

Cesium是一款优秀的基于JavaScript的三维地球开源框架。支持浏览器(浏览器支持WebGL)无插件访问,是跨平台、跨浏览器的框架,可真正实现对动态数据进行可视化。Cesium支持显示多种网络数据格式包括Json,GeoJson,KML等,同时支持多个标准地图服务如WMS,WMTS。Cesium框架现已在众多地理相关领域得到广泛应用。

综上,本文设计基于Cesium框架的海洋标量场数据动态可视化系统。系统实现对数据的标准化管理和数据高效流畅的可视化动态显示,为用户分析海洋环境数据提供辅助。并以全球海洋叶绿素a浓度数据为例,对三维动态可视化系统进行了实验验证。

1 系统设计

1.1 系统体系结构

海洋标量场数据三维可视化系统是对海洋环境要素中只有数值大小没有方向的栅格数据进行可视化,如对海水温度、叶绿素a浓度、海水盐度等遥感产品栅格数据进行三维可视化。数据可视化的总体流程如图1所示,先对栅格数据进行预处理与组织存储,然后对数据进行映射显示,最终实现用户交互分析操作。

图1 数据可视化流程Fig.1 Process of data visualization

系统基于Cesium三维框架进行开发,采用浏览器/服务器模式(B/S)架构。浏览器端采用JavaScript作为开发语言,服务器端采用asp.net技术,数据组织采用Oracle数据库。系统主要由数据层、服务层、逻辑控制层、可视化层和用户交互层5部分组成。系统的总体框架如图2所示。

数据层主要提供三维地球的基础影像数据和经过预处理的海洋环境要素栅格数据。海洋环境数据包括海水温度、海水盐度、叶绿素a浓度和海洋初级生产力(Net Primary Production,NPP)浓度等,其原始的产品数据格式为NetCDF或hdf格式,预处理后的数据格式为可用于网络传输的json格式。服务层主要提供数据发布服务与提供查询分析服务接口,能够实现前端对多种数据的请求与响应。

逻辑控制层是服务器端和数据可视化的中间层,主要负责指令的收发判断,实现可视化数据的动态调度与判断,为可视化层与交互层提供操作逻辑支持。可视化层负责具体海洋标量场数据在三维球体上的渲染与绘制,实现数据的动态播放功能。用户交互层响应用户操作,是用户与系统之间直接交互的模块,用户可根据自身需求查询相应数据并进行可视化,选取想要动态展示的时间段数据或者查询某点数据属性值,友好的用户交互是系统重要的组成部分。

图2 系统体系结构Fig.2 Architecture structure of system

1.2 主要功能设计

基于系统的数据特点和可视化需求,系统设计了数据预处理功能模块、三维可视化和分析功能模块。

数据预处理模块是对海洋标量环境产品栅格数据进行预处理,实现多源数据格式转换并统一存储管理。预处理包括对多种格式进行数据格式转换、重采样、裁剪等操作。该模块支持对常见的NetCDF格式、HDF格式等海洋产品数据的预处理,处理为用于网络传输的轻便的Json数据格式。对于栅格数据而言,为减少数据冗余,Json格式对数据的存储选用起始经度StartLog、起始纬度 StartLat、分辨率 Resolution、行数 Rows、列数 Cols、栅格值GridVal等字段对每个栅格值进行准确记录。如图3所示,GridVal统一存储所有栅格值信息,每个经纬度栅格值可通过起始经纬度、行列数和精度计算从GridVul中获取,从而减少数据中重复记录经纬度信息。

数据三维可视化模块实现对标量栅格数据的动态加载并渲染显示。面状环境要素以点状面的形式在三维球体上进行显示,点状面是指直接以点状对象对要素进行可视化表达,并以不同的点大小与颜色表示要素值大小。点方式的可视化支持任意时间、区域的数据抽取以及渲染,有利于交互的调整颜色带,提高可视化效果[8]。

图3 Json数据组织Fig.3 Json data organization

在分析功能模块中,系统具有查询某一时刻标量要素数据并显示的功能,同时具有查询要素某一时间段数据并对其进行时间过程的动态播放的功能,以帮助浏览者回溯标量要素的时间序列上的演变过程。属性查询分析包括点属性查询和点过程曲线查询。点属性查询是获取可视化面上某点的要素属性值;点过程曲线包括点时间过程曲线与点深度过程曲线,表示是某点要素属性值随时间或深度变化的曲线,过程曲线提供直观的要素值变化趋势,为浏览者分析数据提供全面的参考。

2 关键技术

海洋环境标量场数据具有多维、海量等特点,栅格数据的不同分辨率、不同覆盖范围之间数据大小存在很大差异。在采用基于B/S架构对数据进行显示时,必须考虑到网络数据传输速度与数据可视化速度等问题;同时,Web应用的流畅度是Web应用是否友好的关键因素之一。因此在对标量场数据进行可视化过程中引入层次细节与动态调度技术以此加快数据的显示速度并提升网页流畅度。

2.1 层次细节

浏览器端在实现数据可视化过程中必须实现数据传输量与要素表达效果之间的平衡,层次细节技术可有效实现这一平衡。该技术思想最早由Clark提出[9]。目前广泛应用的地图瓦片技术便是基于这一技术思想,本系统将在数据显示过程中引入层次细节技术。

层次细节是符合人的视觉特性的技术,基本原理是根据浏览需求将场景数据处理成不同的分辨率,当视角高度较高时使用低分辨率数据进行显示;当视角高度变低时加载视域内高分辨率数据进行显示,这样既保证观测效果又保证了流畅度[10]。本文在对高分辨率栅格数据进行重采样时采用双线性内插法转换为低分辨率数据,同时系统提前对要可视化数据进行预处理和发布,以加速环境要素的可视化显示。

2.2 分块动态调度

分块动态调度技术能够进一步减少数据的访问量,加快对数据的渲染与绘制。其基本思想是将全球海洋标量场要素数据按一定规则次序进行剪切分块,并对分块后的数据进行组织存储,浏览时只调取观察者视线内范围的数据块并渲染显示。因此当对系统进行浏览时可依据视点高度、屏幕中心点位置调度不同的数据,从而提高数据的可视化效率。

本文依据层次细节与动态调度的思想,结合海洋标量场数据可视化的需求,将全球海洋标量数据处理成两种分辨率。如图4所示,标号为0的图框是全球1°分辨率数据,其数据大小为900 KB,全球0.16°分辨率数据被分割成16块,每块数据有独特编号以便数据的调取,其中每块数据大小为500 KB。

图4 数据分块示意图Fig.4 Schematic diagram of data blocking

浏览器端跟随浏览者的操作对数据进行实时动态调度与显示。具体流程如图5所示,首先判断视角高度,如高于阈值,则调度全球低分辨率数据;如低于阈值,则判断所需行列数据进行更新显示。

图5 动态调度流程图Fig.5 Flow chart of dynamic scheduling

根据获取的三维地球在屏幕范围内的各角点坐标来判断所需的数据块的流程如图6所示。其中:λ,ψ为屏幕角点所对应的经纬度值;i,j为计算得到的列号和行号,通过判断数据块(i,j)是否能够覆盖所有屏幕可视区域,依此判断所需要调度的数据块。

图6 判断可视区域数据块Fig.6 Judgment of data blocks in visible area

3 实验与应用

基于以上研究与设计工作,依托C#和JavaScript开发语言,使用Cesium三维地球开源框架,实现了对海洋标量场数据的可视化。实验数据采用1998年和1999年共24个月全球叶绿素a月度平均数据,数据原始分辨率为0.166°,单个数据大小为10 MB。实验的硬件环境:操作系统为64位Windows 7操作系统,处理器为Intel Core i7,内存 16 GB,显卡为 NVIDIA GeForce GT 730。使用Google Chrome浏览器进行浏览。

3.1 海洋标量场数据动态表达

系统实现以点状面的形式对海洋标量场数据进行三维可视化。点状面可视化形势指在三维场景中直接以点状对象进行要素可视化表达,以不同的颜色或大小表示要素值[11]。

如图7所示,展示了以点状面的形式表达1998年1月海洋叶绿素a浓度均值的可视化效果,颜色深浅代表浓度高低,黄色表示浓度高,蓝色表示浓度低。同时采用层次细节与动态调度技术,实现大数据量的动态调度,有效提高了可视化效率。通过选择分析按钮,可选择不同时间段要素进行连续动态可视化。如图8所示,选取一年叶绿素a数据进行展示,展示了叶绿素a浓度随时间动态变化的场景,从而直观形象地展现出叶绿素a浓度变化过程,为相关研究提供借鉴与参考。

图7 全球叶绿素a浓度数据可视化Fig.7 Concentration data visualization of global chlorophyll-a

3.2 海洋标量场要素查询功能

查询功能是海洋环境标量场可视化系统的主要功能之一,可为海洋要素分析研究、预测预报提供参考。本系统设计开发了属性查询、过程曲线查询和面过程查询等功能。要素属性查询逻辑简单,根据鼠标点击位置获取坐标判断所属栅格,查询相应可视化文件获取数据,从而实现鼠标点击显示属性要素值。

图9为鼠标点击叶绿素a浓度某处某时刻属性结果显示。过程曲线可分为时间过程曲线和深度过程曲线:时间过程曲线描述该点处长时间序列过程中要素属性值随时间变化的过程;深度过程曲线是展示海洋环境要素变化的有效形式。如图10所示,展示了叶绿素a浓度某点的时间过程曲线,从曲线中可以看出高温月份叶绿素a浓度反而降低。

图8 动态播放中三个时刻可视化效果Fig.8 Visualization effects of three moments during dynamic play

图9 单点属性Fig.9 One-point attribute

图10 时间过程曲线Fig.10 Time process curve

4 结语

本文实现了基于B/S架构的海洋标量场环境要素数据的可视化与分析功能。详细阐述了海洋标量场数据可视化系统的整体架构方法、可视化方法与分析功能,实现了数据的组织与发布和基于Cesium的数据高效动态可视化效果。并以叶绿素a为实验对象验证了所提方法的可行性与效果,基本满足了海洋标量场环境要素的可视化需求,为相关海洋研究提供一定的辅助作用。随着海洋领域应用需求的不断增长与变化,在进一步优化和完善本系统的同时,将对海洋矢量场数据可视化展开相关研究。