海洋遥感卫星沿轨扫描数据动态可视化
2017-03-28冯文君孙习文张玉娟
冯文君,艾 波,孙习文,张玉娟
(山东科技大学海岛测绘技术国家测绘局重点实验室青岛市266590)
海洋遥感卫星沿轨扫描数据动态可视化
冯文君,艾 波,孙习文,张玉娟
(山东科技大学海岛测绘技术国家测绘局重点实验室青岛市266590)
为了实现海量、长时间序列、多维、动态等特性的海洋沿轨扫描数据的可视化表达,运用NetCDF数据模型对海洋遥感卫星沿轨扫描数据进行组织与管理,构建了海洋遥感沿轨扫描数据的动态可视化系统。采用基于几何形状的矢量场映射方法和基于表面纹理贴图的可视化方法,结合海量数据异步调度技术,实现了卫星扫描模式下风速数据、海表温度数据以及高度计数据的实时动态可视化表达。运用多要素同步表达的方式和交互式时间图例来提高数据的可读性以及系统的交互性。
沿轨扫描数据;动态可视化;异步调度;多要素同步;时间图例
近年来,随着海洋遥感技术的不断发展,运用遥感卫星获取海洋数据已经成为常用手段,遥感卫星沿轨扫描数据也成为了实时性最高的数据[1]。如何高效地利用沿轨扫描数据,运用计算机实现长时间序列的沿轨扫描数据的动态可视化,展现准实时海洋特征的变化情况,成为物理海洋研究的迫切需求之一。
目前,我国研究人员在海洋数据可视化方面所做的研究和探索主要基于反演后的数据或者是短时间序列的数据,对于准实时、长时间序列的卫星沿轨扫描数据的可视化做出的研究和探索相对较少。本文在已有海洋数据可视化研究成果的基础上,使用遥感卫星沿轨扫描数据,结合GIS相关技术以及可视化方法,实现了海洋遥感卫星沿轨扫描数据动态可视化系统。针对卫星沿轨扫描数据数据量大的特点,引入了NetCDF数据模型对沿轨扫描时空数据进行管理,同时引入数据预处理机制提高系统运行效率;由于数据时间序列较长,考虑到其可视化效率较低的问题,在可视化过程中对数据采用异步调度的方法,提高可视化效率;在可视化过程中,充分利用动态地图的制图方法以及交互式时间图例来提高可视化效果以及用户的交互性。
1 沿轨扫描数据时空数据管理
海洋沿轨扫描数据作为时空数据,不仅具有多维、时间和空间上连续与渐变的特性,而且数据具有多源异构、数据量大的特点,组织结构复杂[2]。传统的海洋环境数据管理方式都是采用文本格式或者二进制的格式对数据进行管理。每一行存储一条记录,每个时刻为一个文件,缺点就是在数据检索过程中效率太低。本文引入NetCDF对沿轨扫描数据进行管理,并且考虑到数据量大,直接对原始数据进行矢量化,系统运行效率低的问题,引入了数据预处理机制。
1.1 NetCDF数据模型
NetCDF(Network Common Data Form:网络通用数据格式)是一种面向数组型并适于网络共享的数据的描述和编码标准。它也是一个支持增进存储、便于多维数据读写的软件类库接口,支持多维数据的创建、访问和共享等操作[3]。由于其存储量小,读取速度快,自描述性以及读取方式灵活等优点,被广泛用作大气科学、水文、海洋学等领域的数据存储标准,并于2011年4月成为OGC多维数据交换标准存储方式[4]。
NetCDF数据模型由维度(Dimensions)、变量(Variables)及属性(Attributes)部分组成。从数学角度来理解,NetCDF存储的数据是由多个自变量共同决定的一个单值函数。等自变量在NetCDF称为维度,例如经度、纬度、时间等;在NetCDF中称为变量,例如海风、海温、海流等;自变量和函数值在物理学上的一些性质[5],比如计量单位、物力学名称等在NetCDF中叫做属性。
与传统的数据存取方式不同,NetCDF可以通过ID标示直接读取指定位置的数据,不需要对数据进行循环遍历,大大提高了数据的存取效率[6]。综上所述,运用NetCDF数据模型对数据的管理不仅具有显著的灵活性,而且对数据的调度效率也比较高。
1.2数据预处理
海洋沿轨扫描数据最基本的特点就是时间序列长,数据量大。由于海洋标量场数据在可视化过程中采用纹理贴图的可视化方式,考虑到在可视化过程中动态生成纹理贴图会导致可视化效率比较低,所以预先对数据进行处理。数据的预处理过程大大提高了海洋标量场数据的可视化效率。数据预处理采用监听文件夹,实时处理的方式。通过监听数据存放文件夹,当文件夹中有新的数据推送时,对推送的数据进行预处理运算,输出处理成果。数据预处理流程如图1所示。
2 海量时空数据异步调度
图1 数据预处理流程
在海洋沿轨扫描数据动态可视化过程中,如果将所有数据先读到内存中,再按照时间顺序进行可视化显示,数据量太大容易导致内存溢出;如果根据可视化时刻直接从外存中读取数据,CPU或GPU将会处于长时间等待状态,系统运行效率低。本文采用异步调度的方式,根据当前可视化时刻高效准确的加载可视化必须的数据、释放不需要的数据,从而实现整个可视化系统运行过程中内存数据加载量的基本平衡。数据的异步调度主要包括以下两个阶段:数据预存取和多线程加速。
2.1数据预存取
在海洋沿轨扫描数据动态可视化过程中,随着可视化时刻的变化,需要可视化的数据也会发生变化。由于CPU读取内存中数据的速度要比读取外存中数据的速度快的多,若可视化时刻变化时直接从外存来读取数据,必然导致CPU或GPU处于长时间等待数据的状态,影响系统的可视化效率。因此,在数据调度策略中,一般需要利用缓冲区机制进行数据的预存取。预存取原理就是定义一个稍大的区域,从外存中除了读取当前可视化所需要的数据外,还要预先读取即将可视化时刻的数据到内存缓存中,从而当动态可视化绘制其他时刻的数据时,不需要直接从外存读取需要的数据,直接从内存中读取即可,从而加快可视化的效率[7]。
如图2所示,当可视化时刻处于Tfocus时,内存中需要加载的数据包括绘制的时间上文区间的数据[Tstart,Tfocus]和预加载的时间下文区间的数据[Tfocus,Tend],而需要卸载绘制时刻之前的数据,即[Tbefore,Tstart]区间的数据。这种数据调度策略可以提前把下一步需要可视化显示的数据读入缓存,能够保证动态可视化过程中,下一帧所要显示的数据都在系统缓存中,从而减少卡帧现象。
图2 缓冲区预处理策略
2.2多线程加速
多线程是指操作系统支持一个进程中执行多个线程的能力。在某些多任务软件开发时常采用多线程技术,即整个软件进程包含了完成不同功能的多个线程,如数据采集、预处理线程、实时数据显示线程、图形曲线生成线程和用户界面线程等[8]。这样多个线程同时执行,在一段时间内并行完成了更多任务,加快了系统的反应速度,提高了执行效率。
在海洋沿轨扫描数据动态可视化中,程序既要根据当前可视化时刻对需要的数据进行调度,同时还需要执行具体的可视化操作。为了提升动态可视化的持续性和效率,需要引入多线程技术在程序中同时运行两个线程:主线程负责海洋数据的可视化,子线程负责数据的调度。具体思路是:首先开辟一个线程池,主线程主要负责根据焦点时刻对渲染队列进行更新以及数据的可视化工作;子线程主要负责从外存中调入缺少的数据。多线程数据调度策略流程如图3所示。
图3 多线程数据调度策略流程图
程序首先从主线程开始执行,然后依次执行以下步骤:1)获取当前可视化时刻,将需要可视化显示的数据加入渲染列表,同时更新渲染链表与调度链表;2)遍历渲染链表,对当前时刻的数据进行可视化显示,同时开辟一个子线程进行数据调度,更新预调度链表;3)判断是否退出程序,若不退出程序则判断可视化时刻是否发生变化,否则退出程序,算法结束。子线程则要根据缓冲池来加载预调度数据,当所有预调度数据都加载完成时,子线程的任务结束。主线程将数据可视化显示,当前帧的任务结束,进入下一帧。
3 沿轨扫描动态可视化研究
在进行沿轨扫描数据动态可视化时,必须考虑到影响动态显示的所有相关变量,一是能够充分反映动态变化的时空数据内容;二是提高用户与动态显示的交互能力,使用户能够更容易、更直观、更自然地认识和理解时空数据。本文运用动态地图的表达方式来增强海洋时空数据的动态显示效果,运用交互式时间图例提高系统与用户的交互能力。
3.1基于动态地图的多要素同步表达
卫星沿轨扫描数据是随着时间动态变化的,仅通过静态地图无法表达出其时空变化特征,因此,本文引入了动态地图制图的方法进行海洋要素可视化表达。动态地图是将不同时刻的空间表达映射至动画的不同帧上,通过动画的播放来再现地理现象的时空演变过程。这种方法在地图中引入了时间维,与静态地图相比信息容量大大增加,更加符合人类对于自然现象动态变化的认知规律。
动态地图除了能够帮助用户对地理现象的时空变化进行“识别”,也能够进行“比较”认知操作:对同类型或不同类型的时空现象进行比较,从而发现变化过程之间的关联关系。动态地图能够在相同的时间区间内对相同或不同类型的时空现象进行比较,如可以通过在一幅动态地图中同时播放降雨量变化和某种植物的生长变化,通过动画过程来发现这两种不同类型时空现象之间的关联关系[9]。本文在可视化过程中采用多要素同步表达的方式,根据卫星的运行轨迹和扫描区域,将海表温度数据和风场数据同步表达,如图4所示,用户不仅可以观察当前时刻海表温度和风速单个要素的变化情况,而且可以查看两种要素之间的关联关系,帮助用户及时发现异常情况。
图4 多要素同步表达
3.2交互式时间图例
时间图例除了表达当前的时间信息外,在动态可视化当中另一个重要的功能是在时间维上对动态地图进行交互式的控制。用户在观察动态可视化的过程中,不仅要观察当前时刻数据的空间分布情况,而且要根据时间上下文来分析空间数据的变化过程以及变化规律。海洋沿轨扫描数据时间序列较长,如果时间图例只有基本的播放功能,用户需要记忆每一帧的内容,然后再去理解和分析,大量的信息会导致用户疲劳而且使认知效率降低,难以满足用户需求。
针对上述问题,本文设计了一个交互式时间图例来控制沿轨数据动态可视化的进程,如图5所示。主要有以下几个功能:
(1)播放、暂停、前一时刻和后一时刻功能,用户可以在可视化过程中随时暂停,查看当前时刻的海洋现象,也可以查看前一时刻和后一时刻,观察海洋现象的变化规律。
(2)时间滑条功能,用户可以拖动时间滑条,查看任意帧的可视化结果。可用于不同时刻可视化结果的比较。
(3)可视化速度控制功能,用户可以自定义可视化的速度,查看不同变化率下海洋现象的变化过程。
图5 交互式时间图例
4 系统实现
基于沿轨扫描动态可视化的研究,系统实现卫星扫描模式下风速数据、海表温度数据以及高度计数据的动态可视化:
(1)风场数据可视化。采用基于几何形状的矢量场映射方法,通过点图标法实现了扫描风场数据的可视化。其中风场符号的不同颜色表示风速大小的不同(从红色到蓝色代表风速由大到小),风场符号的方向代表风速的方向,并且根据风速的不同等级,使用不同的风场符号。用户可以控制时间轴,查看卫星沿轨扫描过程中不同区域风场的具体情况。
图6 风场可视化
(2)海表温度可视化。采用基于表面纹理贴图的可视化方法,运用面状纹理贴图实现海表温度数据的可视化。其中不同的颜色表示海表海温的高低。由于沿轨扫描的海温数据时间序列较长,在海温的可视化过程中,运用了基于时间分辨率的时空数据聚合的方法。在时间维上将数据进行压缩,降低数据的时间分辨率以适应可视化的要求。用户可以控制时间轴,查看卫星在不同扫描区域中海表海温情况。
图7 海表温度可视化
图8 海洋高度计数据可视化
(3)海洋高度计数据可视化。采用基于表面纹理贴图的可视化方法,运用点状纹理贴图实现高度计数据的可视化。其中不同的颜色表达高度计值的大小。在高度计的可视化中采用了LOD动态调度技术,通过当前视点高度对高度计数据进行动态的抽稀,生成对应的细节层次,有效地减少了可视化显示的数据量,提高了可视化的效率。用户可以控制时间轴,查看卫星沿轨扫描过程中不同点高度计的具体情况。
5 结语
本文基于海洋沿轨扫描数据数据量大、时间序列长和结构复杂的特点,提出了运用NetCDF数据模型对海洋沿轨扫描时空数据进行组织与管理,利用GIS相关技术和可视化方法,构建了直观、逼真的海洋遥感卫星沿轨数据动态可视化系统,实现了卫星扫描模式下风速数据、海表温度数据以及高度计数据的实时动态可视化表达。此外还提出运用多要素同步表达和交互式时间图例来提高数据的可读性和系统的交互性。随着海洋领域日益增强、不断深入的应用需求,本系统在进一步完善和深化的同时,将探索和研究卫星扫描模式下其他海洋要素的可视化表达。
[1]李红志,贾文娟,任炜,等.物理海洋传感器现状及未来发展趋势[J].海洋技术学报,2015,34(3):43-47
[2]龚健雅.GIS中面向对象时空数据模型[J].测绘学报,1997(4):289-298.
[3]Wikipedia.NetCDF[R/OL].[2011-10-10].http://en.wikipedia. org/wiki/NetCDF
[4]OGC Press Releases.OGC announces netCDF Standardfor Communicating Multidimensional Data[R/OL].http://www.opengeospatial.org/pressroom/nressreleases/1373
[5]孙建伟,孙昭晨,陈轩,等.NetCDF格式数据的创建及应用[J].交通标准化,2010(15):31-34.
[6]王想红,刘纪平,徐胜华,等.基于NetCDF数据模型的海洋环境数据三维可视化研究[J].测绘科学,2013,38(2):59-61.
[7]林炎光,孙红胜,岳春生.一种基于嵌入式地形的三维数据建模与调度方法[J].测绘科学,2010,35(2):99-101.
[8]李毅,龚建华.网络环境下全球影像的高效传输与调度策略[J].测绘科学,2010,35(4):52-53.
[9]周亚男,赵威,范亚男.遥感大数据实时渲染与交互可视化研究[J].地球信息科学学报,2016,18(5):664-672.
2016-12-13
测绘公益性行业科研专项经费资助项目(201512034);山东省高等学校科技计划项目(J15LH01)。