摘 要: 针对异构海洋观测数据交互困难的问题,提出基于NetCDF的海洋观测数据交换格式,定义海洋观测数据交互规范,实现海洋观测数据灵活装载和随机访问。基于此,设计海洋观测数据交换平台框架,通过分层架构模式实现海洋观测数据用户“一站式”访问。最后,开发原型系统加以验证。
关键词: 观测数据; NetCDF; 数据交换
随着科学技术进步,人类探测海洋的能力日益提升,近年来,国家越来越重视海洋领域的开发建设,实施了大批海洋工程项目,提高了利用海洋的能力。但是,在利用海洋观测数据的实践中,数据交互困难越显突出,主要体现在如下方面:
(1)数据格式复杂。当前海洋观测数据常用的数据格式包括电报码、XML格式文件、文本、数据库等。不同的数据格式要求信息系统提供不同的访问方式,增加了海洋数据融合的困难。
(2)海洋应用与海洋科学数据存在差异。当前数字海洋所规范的数据格式多为文本或者数据库文件,但是在预报计算、分析等海洋科学领域所使用的大多为专业格式数据,如NetCDF、Grid等,这种格式的不统一给数据交互带来困难。
(3)数据分布广泛,我国海域广阔,沿海遍布着大大小小多个海洋机构,不同机构掌握一定的海洋观测数据,缺乏统一的安排和协调,也造成海洋观测数据共享困难。
本文针对我国海洋观测数据交互存在的实际困难,提出一套解决方案,在构建基于NetCDF通用观测数据交换格式的基础上,设计海洋观测数据交换平台,并在天津海洋观测数据展示平台项目中进行验证。
1 相关研究
近年来,针对海洋领域数据交换和集成,有许多研究机构做了大量工作,取得了丰富的研究成果。美国海军和国家海洋大气局实施开发了IOOS[1-2](Integrated Ocean Observing System)项目,目的是统一分散在各部门的海洋观测数据,提供共享信息,IOOS框架采用分层设计,并以用户需求为驱动,通过各层间的数据流整合,达到观测数据集成的目的。IOOS的分段子系统DMAC[3](Data Management and Communications)则主要负责海洋数据的传输和通讯,DMAC定义了一套共同遵守的、通用的标准,实现海洋观测数据互操作框架。海洋交互观测网ORION[4](Ocean Research Interactive Observatory Networks)项目为科学家、教育者和普通公众对海洋的交互、连续访问提供了一个平台。美国NSF、SURA、ONR和NOAA-CSC等组织资助了海洋元数据互操作项目MMI [5](Marine Metadata Interoperation)提供了一个开放的资源共享平台,便于组织和个人将与海洋相关的信息资源注册到MMI中,然后进行共享。由欧盟资助的MarineXML项目[6]则用于验证XML技术在提高海洋信息部门之间,特别是海洋观测部门之间数据互操作性中所起的作用。该项目开发并改进海洋标记语言MML。
上述项目从不同角度解决海洋观测数据的交换与共享,但是上述项目没有搭建起海洋应用与海洋科研之间的信息共享桥梁,此外,上述项目没有为用户提供一个屏蔽数据共享细节的界面,本文设计的海洋观测数据交换平台则更多地从用户易用的角度给出协同应用与科研的海洋观测数据信息共享解决方案。
2 基于NetCDF的交换数据格式定义
NetCDF(Network Common Data Form)[7-8]网络通用数据格式由UCAR在其Unidata项目中提出。NetCDF利用矩阵方式存储数据,具有自描述性、结构独立性、随机访问性、可追加性、可共享性等特点,广泛应用于海洋观测领域存储和交换数据。根据我国海洋观测数据交换的应用需求,定义基于NetCDF的海洋观测交换数据格式,如图1所示。
基于NetCDF的海洋观测交换数据定义领域内观测数据交换的一般标准,通过交换数据,使得具有普遍异构性的海洋观测数据以一种通用标准样式被各类web服务所调用,解决数据交互困难的问题。海洋观测交换数据所定义的格式包括六部分内容。
(1)ObservationData(观测数据):建立海洋观测交换数据标识,用于标识一个交换数据文件,其中,id为数据标签,name为数据解释,ObservationData建立的交换数据文件包含一个维度,多个变量;
(2)Dimension(维度):解释海洋观测交换数据形式,一个海洋观测交换数据文件包含唯一一组维度定义,Dimension给出交换数据各数据项之间的排列,本文给出维度的固定格式,包括:数据层次说明(level)、纬度(latitude)、经度(longitude)和时间(time);
(3)Variables(变量):对于维度中各参数的说明,包括参数名、对应参数类型以及参数的取值;
(4)DataType(数据类型):通用数据类型说明;
(5)Attributes(属性):变量所包含的属性说明,其组成为属性名(name)、属性类型(type)、属性值(value),属性是海洋交换数据的元数据说明,解释包含作者、生成时间、数据来源等信息;
(6)Data(数据):海洋观测交换数据内容,所定义的数据内涵与变量中声明的数据标签一致。
图2利用实例说明海洋观测交换数据形式。
3 海洋观测数据交换平台架构
在定义海洋观测交换数据格式的基础上,设计海洋观测数据交换平台架构,为海洋异构观测数据交互提供一个可行框架,实现不同观测数据之间的转换,为用户屏蔽异构观测数据获取的细节和过程。
海洋观测数据交换平台采用层次架构,按照业务逻辑将功能封装为服务模块,按照模块在平台中所处的角色的不同将模块划分到不同的业务层,同层模块间功能彼此独立,海洋观测数据交换平台架构如图3所示。按照通用程度的不同,海洋观测数据交换平台划分为数据处理层、数据转换层、核心服务层和应用层。
3.1 数据处理层
数据处理层包括适配器和数据管道。适配器屏蔽分布在不同数据源之间的通信协议的差异,为平台收发数据提供一致的消息转发接口,不同适配器提供不同通信机制。数据管道则包含多种组件,用于执行数据传输中涉及的不同任务,如数据加密/解密等。
3.2 数据转换层
数据转换层是海洋观测数据交换平台的核心,其数据转换引擎主要完成不同异构观测数据向统一交换数据的转换。该模块首先通过与异构观测数据源联通的适配器读入异构数据,然后按照统一交换数据的格式要求将异构数据进行转换,为用户提供一致的数据内容。
3.3 核心服务层
核心服务层为数据交换平台提供核心服务功能,包括可接入服务、UDDI服务和消息路由服务。可接入服务通过各种消息通信模式(单向、请求/应答和轮询)将观测业务逻辑和数据包装成平台可以访问的功能。UDDI服务提供分布在各处的海洋观测数据和服务的列表。消息路由服务则事先在Web Service消息中设置相应的字段,由字段内容来决定观测数据传输路径的选择。
3.4 应用层
应用层是平台和用户交互的接口,用户通过应用层接口向平台提出数据请求,通过任务转换,平台为用户提供一致的海洋观测数据内容。
4 应用实例
为了验证海洋观测数据交换平台设计的可行性,开发了天津海洋观测数据展示平台,是一套与国家海洋技术中心合作开发的军民两用海洋观测数据展示平台。平台涉及多种复杂海洋观测数据类型,通过海洋观测数据交换平台的数据转换,为用户提供观测数据展示。
图4所示为天津海洋观测数据展示平台实现界面。其中,左侧为数据查询界面,用户通过查询界面向平台提出海洋温度场数据查询请求,平台通过数据转换将符合要求的数据转换为统一格式,并以可视化方式展示,(如图4右侧)。
本文从海洋观测异构数据交换与共享出发,定义基于NetCDF的海洋观测交换数据格式,设计基于此的海洋观测数据交换平台架构,并开发原型系统对上述研究进行验证。
经过原型系统实践验证,本文给出的海洋观测数据共享解决方案可以有效地解决分布在不同资源位置的异构海洋观测数据之间的交互和共享,并为用户提供屏蔽信息共享细节过程的接口,返回统一的观测数据。
参考文献
[1] 王文俊,周智海,罗琳.海洋环境监控系统的设计与实现[J].计算机工程,2005,31(1).
[2] 王文俊,罗英伟,汪小林,等.城市空间信息及服务集成框架[J].计算机学报,2005,28(7):1213-1222.
[3] DMAC Steering Committee. The DMAC subsystem-a data communications infrastructure[A]. The National Office for Integrated and Sustained Ocean Observations Ocean.US Publication[C]. 2005,6:31-47.
[4] International Framework for ORION.ORION workshop reportof Ocean Research Interactive Observatory Networks[EB/OL]. http://www.orionprogram.org/PDFs/workshop_report.pdf,2006-8-10.
[5] NSF,SURA,ONR.Marinemetadata[EB/OL].http://marinemetadata.org/,2010-2-11.
[6] IOC. MarineXML Project [EB/OL]. https://www.seegrid. csiro.au/twiki /bin/view/Marineweb/MarineXML,2009-3-20.
[7] Unidata官方网站. http://www.unidata.ucar.edu/software/netcdf/. 2008.
[8] BOWMAN K P. Reading NetCDF files. An Introduction to Programming with IDL, 2005:115-125.