杜曉宇
(成都信息工程學院軟件工程學院,四川成都610225)
眾所周知,氣象領域的數據以種類繁多,數據條目多為主要特點。氣象數據在空間上,覆蓋全省、全國乃至世界;在時間上,可細化到每分鐘一組數據;在數據類型上,目前包含溫度、降水、濕度、地表溫度、云量、雷電等200多種不同要素。氣象數據通常以數值存儲,大量數值中隱含大量信息,需利用再分析工具和手段,使其通過圖形、動畫等方式直觀的展現,為天氣預報、災害預警服務。數據再分析工具的研究已成為氣象行業重要環節[1]。Unidata項目組[2]在數據再分析領域做出重要貢獻,成為國際公認氣象領域最有影響力的再分析工具研究部門。該項目組研發的再分析工具GrADS、IDV在氣象行業被廣泛應用,通用圖形顯示庫VisAD[3]也大量應用到各科學領域。此外,地理信息系統的ArcGIS[4]、WebGIS等工具,統計及數學領域的分析工具Matlab,SPSS也常被用于氣象再分析。
傳統的氣象分析工具都是單機處理工具。隨著計算機網絡技術的發展,基于B/S架構構建氣象服務平臺已成為主要趨勢。B/S架構即瀏覽器/服務器模式,是 WEB興起后的一種網絡結構模式,瀏覽器就成為B/S模式的唯一客戶端。這種模式將系統功能實現的核心部分集中到服務器上,屏蔽分析工具的使用差異,因而不需要用戶下載大量數據,也不需要用戶了解分析工具,降低客戶使用要求,提升用戶體驗。因而,使氣象再分析向在線平臺轉換成為重要的研究目標。通過在線方式,獲得實時分析產品,保障數據的分析時效,為防災減災等實時性要求很高的業務提供及時支持。
Unidata項目組開發了RAMADDA[5-6],提供氣象產品的在線實時生成和分享服務,較好的解決了氣象專業用戶自定義氣象象站點的功能。但RAMADDA自成一套體系,更多的考慮了業務需求,開發人員難以進行擴展,將其融入到定制服務中。
氣象服務再分析平臺面向專業的氣象人員,要求平臺提供的數據準確、再分析結果在顯示效果上符合氣象人員的通用標準,操作簡單且符合氣象人員的常用習慣,能夠快速上手。這要求開發人員具備一定的氣象知識,需要深刻了解氣象業務,否則將難以被業務人員接受。但是,氣象人員通常不夠了解開發流程,難以提出有效的開發建議,所以使開發人員介入氣象領域需要較長的學習時間。
通過對實際氣象項目開發過程的整理,以專業氣象人員的服務需求為目標,為開發人員提出可在氣象業務中通用的架構,劃分多個層次以降低開發耦合,提高開發并行性及可靠性。并封裝氣象可用組件,降低組件設計難度。在氣象人員與開發人員中搭建橋梁。
氣象再分析平臺面向氣象業務設計,在結構、功能上根據氣象業務需求進行封裝。目的是為開發人員提供氣象開發架構和功能組件,使開發人員能夠快速,生成符合氣象需求的業務系統。氣象再分析平臺是根據氣象再分析的特點提出的完整解決方案,能夠與各類業務系統融合。
氣象軟件再分析以數據為基礎,加以數值轉換及圖形顯示,所以氣象數據模型是氣象再分析的基礎。由數據出發,經歷數據集選擇,數據預處理,再分析產品展現3個步驟,將數值產品轉化為更為直觀的圖象產品[7]。
氣象再分析由數據文件啟動。氣象包含大量數據文件格式,包含 HDF5[8],netCDF[9],Grib2,CSV等,但讀入到分析工具中后,基本都可被轉化為站點數據或格點數據操作。站點數據是指各離散觀測站所獲得的信息,信息在空間分布不規則,站點數據是原始數據,但通常會被插值轉化為格點數據再進一步分析;格點數據是指經過插值處理,在空間上均勻分布的二維數據。Unidata中定義通用數據模型Common Data Model(CDM)為氣象數據分析提供數據模型支持[10]。
氣象原始數據在再分析之前,需要做預處理,如特殊值轉換,數值離散化等。再分析模塊操作預處理后的數據,根據用戶提出的插值要求:插值半徑,插值精度等,獲得再分析數值產品。最終在可視化界面上形成趨勢變化、平面展現、空間展現、動畫演示等顯示效果。
氣象再分析具有明確的流程特征,因此再分析平臺也基于該流程設計主體框架。平臺主體拆分為數據模型層、數據加工層、結果顯示層,分別完成再分析過程中的主要功能,以數據通信機制調用和傳遞消息,各層級間低耦合,便于開發人員并行開發。

圖1 再分析平臺通用架構
(1)數據存儲層
數據存儲層解決氣象數據源種類繁多,統一處理難度較高問題。氣象中常用數據文件有40余種格式。數據存儲層屏蔽數據源區別,按照CDM標準提供數據接口,統一為上層應用服務。該層適用于絕大部分的氣象業務,使開發人員不再糾結于數據源,而更多的考慮再分析業務。
(2)數據加工層
數據加工層解決數據不規范、數據異常值、單位不統一等問題,同時也對數據進行離散化或推理相關處理,通過數據轉換鏈路的方式,按照調用各處理模塊依次對數據加工,形成再分析數據。
數據加工層使用鏈接(Chaining)技術優化用戶處理方法,即定義加工接口,并將加工方案分拆為若干接口的實現。在使用過程中,通過配置文件形成調用鏈接,便于加工方案的重復應用。
(3)結果顯示層
結果顯示層完成數據再分析的顯示工作,將數據再分析的數值結果及圖形,通過氣象業務人員接受的方式展現。在瀏覽器中,結果顯示層提供簡單的用戶交互,以提升用戶體驗,幫助用戶全方位獲得分析結果。
在通用架構中,再分析平臺定義為低耦合的三層結構,便于開發人員開發業務,同時能夠使工作模塊化,形成可復用的代碼。將代碼抽象為業務組件,使開發人員能夠在開發過程中,通過簡單配置,形成可用功能塊,屏蔽了大量的實現細節,達到快速開發的效果,并提升代碼可維護性。同時,封裝的功能模塊能夠滿足氣象人員的顯示需求,將開發人員從復雜的功能需求中解放,更快的搭建業務系統。
根據已接觸的氣象業務需求,抽象數據加工及使用Javascript顯示的組件。
數據過濾組件解決在數據加工過程中,數值的變化、刪除、離散化操作。設計包含以下考慮:(1)定值轉換。這類轉換最為常用,方式明確,因此在配置文件中設計轉換規則,以保證在不改變任何代碼的情況下完成轉換工作。(2)單位換算。數據文件中為保證數據精度,通常會將單位量綱做一些轉換,因此在數據加工中,常在數據讀入后,將單位轉換為特定標準。單位換算與定值轉換類似,在配置文件中可做完整規則定義。(3)用戶定制轉換。為用戶定制機制,用戶可根據自己需求定制離散數據、特定函數轉化方案等。
組件通過XML文件定義過濾規則,實現上述轉換。其中,用戶定制使用IoC[11]模式設計,在不修改原有代碼的情況下提供更高的擴展性。XML配置對應的DTD描述如表1所示。

表1 數據過濾組件配置DTD定義
在DTD定義中,定值轉換通過ConstantFilter直接配置完成,單位轉換通過UnitFilter配置完成,用戶定制轉換在CustomFilter中配置完成。
再分析平臺基于Web設計,使用Javascript[12]對頁面元素進行控制。Javascript可以為用戶提供豐富的用戶體驗,設計基于瀏覽器的顯示組件幫助開發人員開發。組件設計與平臺整體設計目標一致,從平臺的最終用戶和開發人員兩方面考慮:(1)以專業的顯示模式向用戶展現,保障用戶獲得良好的數據支持,并能夠在頁面上對組件控制操作;(2)屏蔽用戶的各類復雜需求,并解決跨瀏覽器的兼容性問題,以接口的方式面向開發人員,使開發人員僅用配置即可快速開發。顯示組件被設計為jQuery插件[13],以JSON作為數據接口[14]。
2.2.1 色標組件
平臺定義2個可拆分的組件:色標選擇組件及色標顯示組件,配合為色標體系服務。色標選擇組件用于修改色標,為頁面的下拉選擇框,在點選后會顯示多個可選色標,如圖2(a),選中色標即可觸發色標修改事件,并將改變后的色標值通過事件響應交給響應監聽。色標顯示組件用于顯示色標值,將傳入的色標列舉在指定的DIV中,如圖2(b)。

圖2 色標選擇組件與色標顯示組件
在色標組件中,單項色標都被統一表示為一個JSON,該JSON包含2項:dbarn表示色標的值列表,cbarn表示色標的顏色列表,如:{dbarn:[-16,-14],cbarn:[″#FF0000″,″#00FF00″,″#0000FF″]}。色標選擇組件傳入參數為多個色標及響應監聽,色標顯示組件傳入參數為待顯示的色標。
2.2.2 站點圖組件
平臺定義站點數據的顯示方案,直接在地圖上描繪站點數據,使用戶能夠宏觀的查看氣象要素分頁情況,同時能夠基于地形、行政、山地等參考背景進行分析。當地圖上有足夠的站點數目時,就能看出數據的大致趨勢。站點圖組件基于OpenLayer框架[15],支持地圖縮放、拖拽,能夠實時更換背景圖,同時能夠在不同的層級選擇不同的站點顯示。當用戶選擇中國區顯示時,則顯示國家級的重要站點;當用戶選擇省級區域時,則顯示縣級站點,提供不同精度的數據支持。站點圖效果圖如圖3所示。

圖3 站點圖組件
該組件使用參數為:色標、站點信息、站點要素值、背景地圖。當站點數量較多時,插件使用分級顯示的方案,解決了在IE的兼容性問題。
2.2.3 分析圖組件
平臺中提供氣象常用的分析圖組件:折線圖與柱狀圖。繪制分析圖的主要目標是,對多種數據進行對比以及查看數據的變化趨勢。因此在圖中提供多項數據的顯示,單位的顯示,圖4所示為分析圖組件的樣本。為分析圖組件所需輸入參數:分析圖類型、數據值序列、單位及標簽。

圖4 分析圖組件
2.2.4 播放組件
再分析平臺為氣象數據再分析提供時間解析,以解決氣象要素在時間上的變化分析。時間變化圖也能夠很好的服務于觀測人員,如云圖、風場。在設計中,提供通用播放組件,使再分析圖形能夠隨時間動起來。
播放組件提供基本播放功能,定時觸發時次切換操作,控制圖形切換。對圖形能夠進行上一時次,下一時次,自動播放及停止4個操作,響應方法由用戶自定義。當時次改變時,組件調用用戶自定效果顯示。
氣象科學研究院洪水監測預警系統項目提出需求如下:給定某區域內的格點分析資料,在網頁上形成格點資料的再分析圖形,并通過播放方式自動展現數據變化。
根據用戶需求,開發人員基于架構搭建原型系統。開發過程如下:由于數據源為用戶自定義數據格式,故開發數據讀取層,將用戶數據轉為通用數據模型;根據用戶建議,設計前端的展現方案,形成靜態HTML頁面,并確定顯示控件的顯示位置和大小;根據用戶特殊值表及部分數據離散化規則,完成數據過濾組件的XML定義;在HTML頁面上嵌入色標、分析圖、播放插件,并將配置參數與后端數據對應;聯編,聯調。
可見,在開發過程中,開發人員幾乎不涉及對氣象領域的理解,降低了開發人員的學習成本。同時,由于各組件代碼均可復用,所以原型系統開發過程代碼工作量很小,達到快速開發的效果。
對國家科技基礎條件平臺運行服務主系統功能完善項目中的架構抽象及模塊抽取,形成的在線再分析平臺架構和組件,是對基于瀏覽器的氣象再分析業務開發的重要嘗試和預研。其理念和成果,為開發人員提供開發思路和一定的開發基礎,輔助非專業氣象開發人員快速上手,并在實踐過程中取得良好的效果。在未來的氣象業務開發過程中,不僅可以使用現有成果,還可以在此基礎上封裝更多的實用組件,進一步完善架構和組件庫,為在線氣象再分析服務提供更強大的支持。
致謝:感謝成都信息工程學院科研基金(CRF201406)對本文的資助
[1] 張浩,郭燦.數據可視化技術應用趨勢與分類研究[J].軟件導刊,2012.
[2] Fulker,David,Sally Bates,et al.Unidata:A Virtual Community Sharing Resources via Technological Infrastructure[C].Bull.Amer.Meteor.Soc.,1997:78,457-468.
[3] B Hibbard.VisAD:Connecting people to computations and people to people[C].ACM SIGGRAPH Computer Graphics,1998.
[4] T Ormsby,E Napoleon,R Burke.Getting to know ArcGIS desktop[C].Journal of Science Teacher Education,2001.
[5] T Yoksas,J Caron,J McWhirter.Using Unidata's THREDDS and RAMADDA Services to Support Two Disparate Projects[C].AGU Spring Meeting.2009.
[6] J McWhirter,CJ Crosby,PC Griffith.Rich Support for Heterogeneous Polar Data in RAMADDA[C].AGU Fall Meeting.2013.
[7] M Zhao,SW Running.Sensitivity of Moderate Resolution Imaging Spectroradiometer(MODIS)terrestrial primary production to the accuracy of meteorological reanalyses[C].Journal of Geophysical.2006.
[8] Q Koziol,R Matzke.Hdf5–a new generation of hdf:Reference manual and user guide[EB/OL].http://hdf.ncsa.uiuc.edu/nra/HDF5,1998.
[9] R Rew,G Davis.NetCDF:an interface for scientific data access[C].Computer Graphics and Applications,IEEE,1990.
[10] Daniel Gardner,Kevin H Knuth,Michael Abato,et al.Thomas White,Robert DeBellis,Esther P Gardner.Common Data Model for Neuroscience Data and Data Model Exchange[C].Journal of the A-merican Medical Informatics Association.2001,8(1).
[11] WEI Xue-song,ZHANG Yu-ping.Research and Realization of IOC Framework[J].Computer Technology and Development.2006.
[12] D Flanagan.JavaScript:the definitive guide.2002.
[13] The jQuery Foundation[EB/OL].http://api.jquery.com.
[14] S Shin.Introduction to JSON (JavaScript Object Notation)[J].http://www.javapassion.com.2010.
[15] F Halsall,D Links.Computer Networks and Open Systems[J].Addison-Wesley Publishers.1995.