韓琦琦,劉 鑫
(齊魯工業大學(山東省科學院) 山東省計算中心(國家超級計算濟南中心)山東省計算機網絡重點實驗室,山東 濟南 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體系結構設計和開發了一套海洋大氣數據共享服務系統,實現了數據發布共享、數據查詢、數據可視化和數據下載等功能。該系統已經在山東省計算中心(國家超級計算濟南中心)部署運行,主要發布和管理模式結果數據、公開的再分析數據和觀測數據,用戶通過瀏覽器即可在線完成數據獲取、抽樣分析、多種類型的數據圖形產品和下載不同格式的數據。海洋大氣數據共享服務系統以數據的無縫共享為工作目標,將繼續增加數據集,擴展服務數據類型,為用戶提供更加方便高效的數據服務。