摘 要: 針對異構(gòu)海洋觀測數(shù)據(jù)交互困難的問題,提出基于NetCDF的海洋觀測數(shù)據(jù)交換格式,定義海洋觀測數(shù)據(jù)交互規(guī)范,實現(xiàn)海洋觀測數(shù)據(jù)靈活裝載和隨機訪問。基于此,設(shè)計海洋觀測數(shù)據(jù)交換平臺框架,通過分層架構(gòu)模式實現(xiàn)海洋觀測數(shù)據(jù)用戶“一站式”訪問。最后,開發(fā)原型系統(tǒng)加以驗證。
關(guān)鍵詞: 觀測數(shù)據(jù); NetCDF; 數(shù)據(jù)交換
隨著科學(xué)技術(shù)進步,人類探測海洋的能力日益提升,近年來,國家越來越重視海洋領(lǐng)域的開發(fā)建設(shè),實施了大批海洋工程項目,提高了利用海洋的能力。但是,在利用海洋觀測數(shù)據(jù)的實踐中,數(shù)據(jù)交互困難越顯突出,主要體現(xiàn)在如下方面:
(1)數(shù)據(jù)格式復(fù)雜。當(dāng)前海洋觀測數(shù)據(jù)常用的數(shù)據(jù)格式包括電報碼、XML格式文件、文本、數(shù)據(jù)庫等。不同的數(shù)據(jù)格式要求信息系統(tǒng)提供不同的訪問方式,增加了海洋數(shù)據(jù)融合的困難。
(2)海洋應(yīng)用與海洋科學(xué)數(shù)據(jù)存在差異。當(dāng)前數(shù)字海洋所規(guī)范的數(shù)據(jù)格式多為文本或者數(shù)據(jù)庫文件,但是在預(yù)報計算、分析等海洋科學(xué)領(lǐng)域所使用的大多為專業(yè)格式數(shù)據(jù),如NetCDF、Grid等,這種格式的不統(tǒng)一給數(shù)據(jù)交互帶來困難。
(3)數(shù)據(jù)分布廣泛,我國海域廣闊,沿海遍布著大大小小多個海洋機構(gòu),不同機構(gòu)掌握一定的海洋觀測數(shù)據(jù),缺乏統(tǒng)一的安排和協(xié)調(diào),也造成海洋觀測數(shù)據(jù)共享困難。
本文針對我國海洋觀測數(shù)據(jù)交互存在的實際困難,提出一套解決方案,在構(gòu)建基于NetCDF通用觀測數(shù)據(jù)交換格式的基礎(chǔ)上,設(shè)計海洋觀測數(shù)據(jù)交換平臺,并在天津海洋觀測數(shù)據(jù)展示平臺項目中進行驗證。
1 相關(guān)研究
近年來,針對海洋領(lǐng)域數(shù)據(jù)交換和集成,有許多研究機構(gòu)做了大量工作,取得了豐富的研究成果。美國海軍和國家海洋大氣局實施開發(fā)了IOOS[1-2](Integrated Ocean Observing System)項目,目的是統(tǒng)一分散在各部門的海洋觀測數(shù)據(jù),提供共享信息,IOOS框架采用分層設(shè)計,并以用戶需求為驅(qū)動,通過各層間的數(shù)據(jù)流整合,達到觀測數(shù)據(jù)集成的目的。IOOS的分段子系統(tǒng)DMAC[3](Data Management and Communications)則主要負責(zé)海洋數(shù)據(jù)的傳輸和通訊,DMAC定義了一套共同遵守的、通用的標準,實現(xiàn)海洋觀測數(shù)據(jù)互操作框架。海洋交互觀測網(wǎng)ORION[4](Ocean Research Interactive Observatory Networks)項目為科學(xué)家、教育者和普通公眾對海洋的交互、連續(xù)訪問提供了一個平臺。美國NSF、SURA、ONR和NOAA-CSC等組織資助了海洋元數(shù)據(jù)互操作項目MMI [5](Marine Metadata Interoperation)提供了一個開放的資源共享平臺,便于組織和個人將與海洋相關(guān)的信息資源注冊到MMI中,然后進行共享。由歐盟資助的MarineXML項目[6]則用于驗證XML技術(shù)在提高海洋信息部門之間,特別是海洋觀測部門之間數(shù)據(jù)互操作性中所起的作用。該項目開發(fā)并改進海洋標記語言MML。
上述項目從不同角度解決海洋觀測數(shù)據(jù)的交換與共享,但是上述項目沒有搭建起海洋應(yīng)用與海洋科研之間的信息共享橋梁,此外,上述項目沒有為用戶提供一個屏蔽數(shù)據(jù)共享細節(jié)的界面,本文設(shè)計的海洋觀測數(shù)據(jù)交換平臺則更多地從用戶易用的角度給出協(xié)同應(yīng)用與科研的海洋觀測數(shù)據(jù)信息共享解決方案。
2 基于NetCDF的交換數(shù)據(jù)格式定義
NetCDF(Network Common Data Form)[7-8]網(wǎng)絡(luò)通用數(shù)據(jù)格式由UCAR在其Unidata項目中提出。NetCDF利用矩陣方式存儲數(shù)據(jù),具有自描述性、結(jié)構(gòu)獨立性、隨機訪問性、可追加性、可共享性等特點,廣泛應(yīng)用于海洋觀測領(lǐng)域存儲和交換數(shù)據(jù)。根據(jù)我國海洋觀測數(shù)據(jù)交換的應(yīng)用需求,定義基于NetCDF的海洋觀測交換數(shù)據(jù)格式,如圖1所示。
基于NetCDF的海洋觀測交換數(shù)據(jù)定義領(lǐng)域內(nèi)觀測數(shù)據(jù)交換的一般標準,通過交換數(shù)據(jù),使得具有普遍異構(gòu)性的海洋觀測數(shù)據(jù)以一種通用標準樣式被各類web服務(wù)所調(diào)用,解決數(shù)據(jù)交互困難的問題。海洋觀測交換數(shù)據(jù)所定義的格式包括六部分內(nèi)容。
(1)ObservationData(觀測數(shù)據(jù)):建立海洋觀測交換數(shù)據(jù)標識,用于標識一個交換數(shù)據(jù)文件,其中,id為數(shù)據(jù)標簽,name為數(shù)據(jù)解釋,ObservationData建立的交換數(shù)據(jù)文件包含一個維度,多個變量;
(2)Dimension(維度):解釋海洋觀測交換數(shù)據(jù)形式,一個海洋觀測交換數(shù)據(jù)文件包含唯一一組維度定義,Dimension給出交換數(shù)據(jù)各數(shù)據(jù)項之間的排列,本文給出維度的固定格式,包括:數(shù)據(jù)層次說明(level)、緯度(latitude)、經(jīng)度(longitude)和時間(time);
(3)Variables(變量):對于維度中各參數(shù)的說明,包括參數(shù)名、對應(yīng)參數(shù)類型以及參數(shù)的取值;
(4)DataType(數(shù)據(jù)類型):通用數(shù)據(jù)類型說明;
(5)Attributes(屬性):變量所包含的屬性說明,其組成為屬性名(name)、屬性類型(type)、屬性值(value),屬性是海洋交換數(shù)據(jù)的元數(shù)據(jù)說明,解釋包含作者、生成時間、數(shù)據(jù)來源等信息;
(6)Data(數(shù)據(jù)):海洋觀測交換數(shù)據(jù)內(nèi)容,所定義的數(shù)據(jù)內(nèi)涵與變量中聲明的數(shù)據(jù)標簽一致。
圖2利用實例說明海洋觀測交換數(shù)據(jù)形式。
3 海洋觀測數(shù)據(jù)交換平臺架構(gòu)
在定義海洋觀測交換數(shù)據(jù)格式的基礎(chǔ)上,設(shè)計海洋觀測數(shù)據(jù)交換平臺架構(gòu),為海洋異構(gòu)觀測數(shù)據(jù)交互提供一個可行框架,實現(xiàn)不同觀測數(shù)據(jù)之間的轉(zhuǎn)換,為用戶屏蔽異構(gòu)觀測數(shù)據(jù)獲取的細節(jié)和過程。
海洋觀測數(shù)據(jù)交換平臺采用層次架構(gòu),按照業(yè)務(wù)邏輯將功能封裝為服務(wù)模塊,按照模塊在平臺中所處的角色的不同將模塊劃分到不同的業(yè)務(wù)層,同層模塊間功能彼此獨立,海洋觀測數(shù)據(jù)交換平臺架構(gòu)如圖3所示。按照通用程度的不同,海洋觀測數(shù)據(jù)交換平臺劃分為數(shù)據(jù)處理層、數(shù)據(jù)轉(zhuǎn)換層、核心服務(wù)層和應(yīng)用層。
3.1 數(shù)據(jù)處理層
數(shù)據(jù)處理層包括適配器和數(shù)據(jù)管道。適配器屏蔽分布在不同數(shù)據(jù)源之間的通信協(xié)議的差異,為平臺收發(fā)數(shù)據(jù)提供一致的消息轉(zhuǎn)發(fā)接口,不同適配器提供不同通信機制。數(shù)據(jù)管道則包含多種組件,用于執(zhí)行數(shù)據(jù)傳輸中涉及的不同任務(wù),如數(shù)據(jù)加密/解密等。
3.2 數(shù)據(jù)轉(zhuǎn)換層
數(shù)據(jù)轉(zhuǎn)換層是海洋觀測數(shù)據(jù)交換平臺的核心,其數(shù)據(jù)轉(zhuǎn)換引擎主要完成不同異構(gòu)觀測數(shù)據(jù)向統(tǒng)一交換數(shù)據(jù)的轉(zhuǎn)換。該模塊首先通過與異構(gòu)觀測數(shù)據(jù)源聯(lián)通的適配器讀入異構(gòu)數(shù)據(jù),然后按照統(tǒng)一交換數(shù)據(jù)的格式要求將異構(gòu)數(shù)據(jù)進行轉(zhuǎn)換,為用戶提供一致的數(shù)據(jù)內(nèi)容。
3.3 核心服務(wù)層
核心服務(wù)層為數(shù)據(jù)交換平臺提供核心服務(wù)功能,包括可接入服務(wù)、UDDI服務(wù)和消息路由服務(wù)??山尤敕?wù)通過各種消息通信模式(單向、請求/應(yīng)答和輪詢)將觀測業(yè)務(wù)邏輯和數(shù)據(jù)包裝成平臺可以訪問的功能。UDDI服務(wù)提供分布在各處的海洋觀測數(shù)據(jù)和服務(wù)的列表。消息路由服務(wù)則事先在Web Service消息中設(shè)置相應(yīng)的字段,由字段內(nèi)容來決定觀測數(shù)據(jù)傳輸路徑的選擇。
3.4 應(yīng)用層
應(yīng)用層是平臺和用戶交互的接口,用戶通過應(yīng)用層接口向平臺提出數(shù)據(jù)請求,通過任務(wù)轉(zhuǎn)換,平臺為用戶提供一致的海洋觀測數(shù)據(jù)內(nèi)容。
4 應(yīng)用實例
為了驗證海洋觀測數(shù)據(jù)交換平臺設(shè)計的可行性,開發(fā)了天津海洋觀測數(shù)據(jù)展示平臺,是一套與國家海洋技術(shù)中心合作開發(fā)的軍民兩用海洋觀測數(shù)據(jù)展示平臺。平臺涉及多種復(fù)雜海洋觀測數(shù)據(jù)類型,通過海洋觀測數(shù)據(jù)交換平臺的數(shù)據(jù)轉(zhuǎn)換,為用戶提供觀測數(shù)據(jù)展示。
圖4所示為天津海洋觀測數(shù)據(jù)展示平臺實現(xiàn)界面。其中,左側(cè)為數(shù)據(jù)查詢界面,用戶通過查詢界面向平臺提出海洋溫度場數(shù)據(jù)查詢請求,平臺通過數(shù)據(jù)轉(zhuǎn)換將符合要求的數(shù)據(jù)轉(zhuǎn)換為統(tǒng)一格式,并以可視化方式展示,(如圖4右側(cè))。
本文從海洋觀測異構(gòu)數(shù)據(jù)交換與共享出發(fā),定義基于NetCDF的海洋觀測交換數(shù)據(jù)格式,設(shè)計基于此的海洋觀測數(shù)據(jù)交換平臺架構(gòu),并開發(fā)原型系統(tǒng)對上述研究進行驗證。
經(jīng)過原型系統(tǒng)實踐驗證,本文給出的海洋觀測數(shù)據(jù)共享解決方案可以有效地解決分布在不同資源位置的異構(gòu)海洋觀測數(shù)據(jù)之間的交互和共享,并為用戶提供屏蔽信息共享細節(jié)過程的接口,返回統(tǒng)一的觀測數(shù)據(jù)。
參考文獻
[1] 王文俊,周智海,羅琳.海洋環(huán)境監(jiān)控系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機工程,2005,31(1).
[2] 王文俊,羅英偉,汪小林,等.城市空間信息及服務(wù)集成框架[J].計算機學(xué)報,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官方網(wǎng)站. http://www.unidata.ucar.edu/software/netcdf/. 2008.
[8] BOWMAN K P. Reading NetCDF files. An Introduction to Programming with IDL, 2005:115-125.