韩琦琦,刘 鑫
(齐鲁工业大学(山东省科学院) 山东省计算中心(国家超级计算济南中心)山东省计算机网络重点实验室,山东 济南 250014)
国内海洋大气领域的大量数据通常独立存储在各级业务部门和科研院所,数据呈碎片化、孤岛化[1],如何更好满足研究人员对数据的获取,避免数据的重复建设,实现数据共享是一个亟待解决的问题。
近年来,数据开放共享已经成为海量数据有效使用的重要举措,国内科学数据资源共享研究已经取得大量的研究成果。国家地球系统科学数据共享平台是一个跨地球多学科的分布式的软件平台,由一个总中心和多个分中心构成,提供数据汇交、搜索以及HTTP和FTP等方式的数据下载[2,3]。程苇杭[4]利用Java与Matlab混编技术,使用JSP语言搭建了海洋数据可视化平台,实现了海洋数据的可视化及数据查询功能。李波等[5]结合云计算、分布式存储和Web Service等技术开发了气象数据共享平台。然而这些平台大多依赖于数据库,对于海量数据,这种数据管理方式会带来很多数据转化工作,而且对于新增加的数据类型,数据库平台的可扩展性和可维护性相对较低。因此本文针对海洋大气数据存储分散、数据量大以及异构等特点,为满足海洋大气研究对数据文件时间空间的可查询性、可截断性和数据可视化等数据服务要求,基于开放源码网络数据存取协议open-source project for a network data access protocol (OPeNDAP)[6],采用面向服务的体系结构service oriented architecture(SOA)[7]设计了海洋大气数据共享服务系统,用户无需下载数据,通过浏览器或常用的数据分析工具就可以方便地访问海洋大气数据,开展科研以及业务应用。
海洋大气数据共享服务系统的设计目标是通过网络实现数据的发布共享和可视化,用户通过浏览器或常用的数据分析软件就可以直接访问和使用数据,获得海洋大气的数据和数据图形产品。本系统主要用于发布和管理模式结果数据、公开的再分析数据和观测数据,面向社会公众和科研人员及涉海院校的老师和学生,提供多级海洋和大气数据产品,实现数据集查询和下载,提供快速的数据可视化和实时交互数据分析,促进海洋大气数据的开放共享和高效利用。
海洋大气数据共享服务系统采用主流的B/S(浏览器/服务器)架构[8],以Apache Tomcat作为网络服务器,采用数据服务系统THREDDS Data Server(THREDDS)[9]作为OPeNDAP数据服务器来统一管理和集成分布式的海洋大气数据,包括本地数据集、本地关系型数据库和远程数据集等,提供元数据服务和多种Web数据访问接口服务,用户不用下载数据到本地硬盘,使用Ferret、Matlab、GrADS和NCL等海洋大气常用数据分析软件就可以在线查看、分析和可视化网站上发布的数据。在其上采用图形数据引擎Live Access Server(LAS)实现交互式的可视化数据服务,用户通过浏览器可以在线完成数据的选取、抽样分析和数据可视化,实现分布式数据变量的差异比较,生成多种类型的图形产品。最后基于JAVA平台实现海洋大气数据共享服务系统的服务门户,提供数据浏览、数据可视化、在线分析和数据下载等功能。海洋大气数据共享服务系统体系架构如图1所示。
图1 系统体系架构
为实现海洋大气数据共享服务系统的设计目标,满足海洋大气研究的数据服务要求,该系统设计了数据管理、数据查询和交互式数据服务等功能模块,各模块及功能如图2所示。
图2 系统功能
数据管理模块实现从数据文件管理到数据访问链接发布的功能,以及添加数据、修改数据和删除数据等。
数据查询模块允许用户通过数据产品类型、数据集类型、要素种类,时间范围等检索项的任意字段查询数据集,也能通过设定组合查询条件进行高级查询[10]。其中,数据产品类型包括模式结果数据、再分析数据和观测数据,数据集类型包括大气数据集和海洋数据集,要素种类包括大气风场、气压场、降雨、大气温度、大气湿度、云、温度、盐度、海表温度、海洋流场和海表高度等。
交互式数据服务模块实现数据可视化、元数据获取、数据下载和抽取数据子集等功能[11,12],用户通过浏览器即可在线可视化数据,实现分布式数据变量的差异比较,提供多种类型的数据图形产品,包括填色图、曲线图、剖面图和动图展示,方便研究人员快速分析数据。当用户需要部分要素或部分时空的数据子集时,无需下载整个数据集,指定要素、时间和区域范围,可以方便保存数据子集到本地计算机上。
海洋大气数据共享服务系统的开发主要基于开源的系统和软件。服务器采用Linux操作系统Centos 6.6,网络服务器采用性能稳定并且免费的Apache Tomcat,以Eclipse作为开发工具,基于JAVA平台和面向服务的SOA体系结构,以SSM(Spring+Spring MVC+Mybatis)[13]作为开发架构,采用HTML+CSS+Javascript作为前端开发技术。网站数据库采用OPeNDAP数据服务器支持的体积小、速度快并且开放源码的关系型数据库MySQL。
THREDDS是一个面向服务的SOA体系结构的数据服务系统,采用THREDDS作为底层数据服务系统对数据文件进行统一管理,实现从数据文件管理到数据访问链接发布,通过调用addXML.sh脚本(位于$ LAS_HOME/bin/目录下)解析THREDDS的数据集目录并提取每个目录中引用的数据文件信息添加到LAS系统中。在其上,通过开发Web应用程序调用THREDDS封装的数据接口获得数据集名称、变量内容及属性等信息,用JSP编写页面,实现该系统的服务门户,进一步完善和拓展数据服务功能。
数据文件存放在Tomcat服务器的content/thredds/public/datacenter目录下,通过配置catalog.xml文件设置对外共享的数据集目录和数据文件,datasetScan元素用于指定数据集名称、ID和数据集目录,filter元素指定扫描的数据文件,THREDDS通过catalog.xml文件对指定目录下的数据文件进行扫描,获得数据文件的元数据信息生成DDS、DAS元数据文件,同时生成网络数据访问接口(包括HTTP、OPeNDAP、NetcdfSubset等)。对于随时间更新的数据文件,通过设置recheckEvery属性指定数据文件的扫描频率,可以实现数据文件的自动发布。配置threddsConfig.xml文件设置该系统提供WMS地图服务、允许跨域资源共享和NetcdfSubSet子集服务。
以发布南海中尺度涡模拟数据(HYCOM模拟)为例。catalog.xml文件配置如下所示,这里扫描location目录下后缀为nc和ncml的所有数据文件。配置完成后,系统首页数据集列表将会出现南海中尺度涡数据集。
ID="hycomSOUn0.04" path="public_data/HYCOM/South" location="content/thredds/public/datacenter/HYCOM/SOUn0.04"> ……
采用THREDDS的数据虚拟化技术[14],通过NetCDF标记语言NetCDF Markup Language(NcML),在不改动原始数据文件的基础上,使用配置文件将有关联的数据文件虚拟成一个新的数据文件。这个虚拟的数据文件不额外占用物理存储介质,但它包含全部的数据索引信息,这样用户不需要分散获取数据,通过网络数据接口访问虚拟后的单一数据文件就能获取几百上千个文件里的连续时间序列的数据。
以2.1节中发布的南海中尺度涡模拟数据为例,数据输出频率为每天一次,温度、盐度等变量存储在不同的数据文件中,温度、盐度等单个变量的数据文件按照时间分别存储,所有数据文件存储在/content/thredds/public/da-tacenter/HYCOM/SOUn0.04目录下。首先对温度、盐度等单变量按时间维度合并生成虚拟数据文件,合并类型设为“joinExisting”,合并维度为“time”,数据文件命令为HYCOM_变量名.ncml,温度变量的NcML文件配置如下(文件名为HYCOM_temperature.ncml):
然后再对基于时间维度合并后的变量数据文件进行变量合并,合并类型设为“union”,扫描指定目录下的包含HYCOM字符的ncml文件,实现不同文件中多个变量的数据文件虚拟合并,配置完成后,在THREDDS页面上可以找到HYCOM南海中尺度涡单一的数据集访问接口。多变量合并的NCML文件配置如下所示(文件名为HYCOM_south.ncml):
采用LAS针对不同的数据集扩展其OPeNDAP服务,提供良好快速的可视化产品,包括填色图、曲线图、剖面图和动图展示等。对于网格型数据,通过addXML.sh脚本生成数据集配置文件,一般每个数据集生成一个单独的配置文件,最后包含到总配置文件las.xml中。离散型数据存储在MySQL数据库中,添加到LAS之前,首先标准化数据库的数据结构,数据库表的字段必须包含经度、纬度、时间等,深度/高度字段可选,然后修改数据库引擎配置文件DatabaseBackendConfig.xml来配置数据库服务,为离散型数据创建数据集配置文件,最后将生成的配置文件添加到las.xml配置文件中。
在las.xml文件中设置提供可视化服务的数据集和产品服务器的默认属性。通过ENTITY元素声明网格型或离散型数据集配置文件名称,然后在lasdata元素下通过&字符引用网格型或离散型数据集。通过default_catid元素指定默认类别ID,default_dsid元素指定默认数据集ID,default_varid元素指定默认变量ID。还是以配置南海中尺度涡模拟数据集目录为例,las.xml文件配置如下所示,配置完成后,就可以在LAS页面对HYCOM模式南海中尺度涡模拟数据进行数据可视化展示:
……
……
&HYCOM_south;
海洋大气数据共享服务系统整合各领域各区域海洋大气数据资源,免费向社会公众和科研人员提供标准统一、服务便捷的数据共享服务。数据产品类型包括在模式结果数据、公开的再分析数据和观测数据。同时在国家重点研发计划项目支持下,该系统汇集试验海域海洋动力条件数值仿真预报数据,为“两洋一海”区域中尺度涡-内孤立波预报系统提供数据服务,预报系统模式结果分别于6时和18时进行数据输出,经过后处理的结果数据进入海洋大气数据共享服务系统,实现预报数据的实时共享,科研用户通过海洋大气数据共享服务系统可以在线对“两洋一海”区域海表面高度、流场和海水温度等预报要素进行抽样分析和可视化展示,为“两洋一海”区域科研和工程提供有效支撑。
海洋大气数据共享服务系统部署于山东省计算中心(国家超级计算济南中心),中心为系统的建设和数据服务提供计算资源、数据管理和必要的网络设施,目前系统运行状况良好。图3是海洋大气数据共享服务系统主页,包含了数据集目录、数据查询、LAS入口、THREDDS入口、新闻动态和关于我们等栏目。
图3 海洋大气数据共享服务系统主页
用户可以在系统主页输入数据集名称进行模糊查询,也可以在数据查询页面进行精确查询。用户所需数据可以通过数据产品类型、数据集类型、要素种类,数据时间范围等来进行检索获得,也可以通过设定组合查询条件进行高级检索。该系统对数据集类型和要素种类进行了依赖关联,当用户选择了海洋数据集类型时,可以继续选择海洋类相关要素,大气类相关要素将被置为不可选状态,避免用户选择时出现数据集类别和要素种类不对应的现象。图4是数据查询页面,选择模式数据,盐度和海表温度要素所查询出的数据集列表。
图4 数据查询界面
海洋大气数据共享服务系统的特色在于数据集的交互式可视化服务,点击目标数据集右侧的“LAS”按钮,进入该数据集的可视化数据服务界面,用户可以根据实际需求修改经纬度范围、时间范围、绘制要素和输出产品类型等约束条件,支持的输出产品包括填色图、填色图对比、曲线图、动图、数据值表(或文本)、NetCDF格式数据文件和ASCII格式文本文件等。图5为访问南海中尺度涡模拟数据集中2012年度盐度变量在111.4°E,14.4°N,0 m处的单点时间序列图。
图5 盐度变量在选择点(111.4°E,14.4°N) 0 m处2012年度时间序列图
点击目标数据集右侧的“OPeNDAP”按钮进入该数据集的THREDDS服务界面,用户可以通过OPeNDAP、HTTPServer、WMS和NetcdfSubset等数据服务接口访问数据,图6是OPeNDAP服务页面的部分截图,在该界面上用户可以查看变量、选取变量和编辑变量范围,通过“Get ASCII”存取ASCII格式的数据文件,“Get Binary”存取Binary格式的数据文件。用户可以使用网络浏览器来获得相应的数据服务,也可以使用海洋大气中常用数据分析软件(如Ferret、Matlab、GrADS和NCL等)来获取分析数据。以使用Matlab软件获取该系统中南海中尺度涡模拟数据为例,如图7所示,将该数据集的Data URL输入到ncdisp命令中,用户不需要下载数据到本地机器上,就可以读取数据文件查看元数据信息。
图6 OPeNDAP服务页面截图
图7 Matlab读取系统中南海中尺度涡模拟数据
海洋大气数据共享服务系统提供数据下载和抽取数据子集的功能,用户需要部分要素或部分时空的数据子集时,无需下载整个数据集,指定所需要素、时间和区域范围,指定数据子集的输出格式,就可以方便保存数据子集到本地计算机上。
下载数据的途径有两种,用户在THREDDS服务界面,可以通过HTTP服务下载数据或NetcdfSubset服务通过Web页面切割服务器数据获得数据子集,如图8所示;用户在LAS可视化数据服务界面,通过点击“Save as”进入数据下载界面,如图9所示。
图8 THREDDS下载数据界面
图9 LAS数据下载界面
本文基于开放源码的网络数据存取协议OPeNDAP,采用面向服务的SOA体系结构设计和开发了一套海洋大气数据共享服务系统,实现了数据发布共享、数据查询、数据可视化和数据下载等功能。该系统已经在山东省计算中心(国家超级计算济南中心)部署运行,主要发布和管理模式结果数据、公开的再分析数据和观测数据,用户通过浏览器即可在线完成数据获取、抽样分析、多种类型的数据图形产品和下载不同格式的数据。海洋大气数据共享服务系统以数据的无缝共享为工作目标,将继续增加数据集,扩展服务数据类型,为用户提供更加方便高效的数据服务。