劉思晗,唐晨海,張龍慶,陳哲
(國(guó)家海洋環(huán)境預(yù)報(bào)中心,北京100081)
海洋站觀測(cè)資料監(jiān)控可視化及系統(tǒng)設(shè)計(jì)研究
劉思晗,唐晨海,張龍慶,陳哲
(國(guó)家海洋環(huán)境預(yù)報(bào)中心,北京100081)
面向海洋站各類報(bào)文的監(jiān)控統(tǒng)計(jì),解除前臺(tái)可視化與數(shù)據(jù)提取的緊耦合關(guān)系,提供統(tǒng)一部署、統(tǒng)一維護(hù)的解決方案。系統(tǒng)基于asp.net MVC框架搭建,建立報(bào)文監(jiān)控?cái)?shù)據(jù)庫(kù),將監(jiān)控的各類報(bào)文接收狀態(tài)及統(tǒng)計(jì)信息入庫(kù),解決單一種類報(bào)文統(tǒng)計(jì)效率較低的問(wèn)題。通過(guò)asp.net MVC技術(shù)實(shí)現(xiàn)前臺(tái)頁(yè)面的搭建,實(shí)現(xiàn)業(yè)務(wù)邏輯、數(shù)據(jù)實(shí)體以及視圖的分離。通過(guò)面向接口的編程方式提高系統(tǒng)的靈活性,降低各層之間的依賴程度。使用EntityFramework實(shí)現(xiàn)領(lǐng)域模型的設(shè)計(jì)方式。通過(guò)spring.net技術(shù)實(shí)現(xiàn)面向切面編程,在實(shí)現(xiàn)MVC架構(gòu)的前提下簡(jiǎn)化開發(fā)。
海洋觀測(cè);海洋數(shù)據(jù);MVC;領(lǐng)域模型
近年來(lái),我國(guó)風(fēng)暴潮、海浪、海冰、海霧、臺(tái)風(fēng)、地震海嘯及赤潮、綠潮、海水入侵等突發(fā)性的海洋災(zāi)害及海上溢油等海洋環(huán)境污染事件頻發(fā),給沿海地區(qū)造成了嚴(yán)重的生命財(cái)產(chǎn)損失。這凸顯了海洋環(huán)境監(jiān)測(cè)和預(yù)報(bào)的重要性,也對(duì)其提出了更高的要求。我國(guó)各級(jí)政府對(duì)海洋防災(zāi)減災(zāi)給予了極大的重視,并投入了大量的人力和物力開展海洋觀測(cè)網(wǎng)和預(yù)報(bào)系統(tǒng)等方面的建設(shè)[1]。
海洋觀測(cè)站是我國(guó)海洋觀測(cè)網(wǎng)的主要組成部分,負(fù)責(zé)開展海洋氣象、潮汐、海浪、表層水溫、鹽度、海流、海冰等要素的常規(guī)觀測(cè)[2]?,F(xiàn)有的報(bào)文收集方式為海洋站通過(guò)水文、氣象觀測(cè)設(shè)備的自動(dòng)化錄入或人工觀測(cè)后,形成各類格式的編碼報(bào)文,再由通信機(jī)通過(guò)VSAT鏈路及地面專線將報(bào)文上傳至上級(jí)節(jié)點(diǎn)。由于報(bào)文種類繁多,同時(shí)各級(jí)節(jié)點(diǎn)肩負(fù)著數(shù)據(jù)接收轉(zhuǎn)發(fā)的任務(wù),所以報(bào)文的存儲(chǔ)主要以文件的方式保存[3]。
舊有系統(tǒng)的統(tǒng)計(jì)模式是基于文件統(tǒng)計(jì),對(duì)于批量數(shù)據(jù)統(tǒng)計(jì)較為困難,無(wú)法根據(jù)指定時(shí)間、要素類型批量統(tǒng)計(jì)[4]。且系統(tǒng)對(duì)于長(zhǎng)時(shí)間序列的統(tǒng)計(jì)存在數(shù)據(jù)統(tǒng)計(jì)困難、效率較差等問(wèn)題。同時(shí),現(xiàn)有的報(bào)文監(jiān)控平臺(tái)主要是C/S架構(gòu),在不同的監(jiān)控終端需要重新安裝部署,也會(huì)造成軟件版本可控性差等問(wèn)題[5]。此外,通過(guò)遠(yuǎn)程映射的方式存在著多臺(tái)終端同時(shí)訪問(wèn)增大原始報(bào)文存儲(chǔ)服務(wù)器的系統(tǒng)開銷的問(wèn)題。
為了解決上述問(wèn)題,更好的實(shí)現(xiàn)對(duì)各類海洋觀測(cè)資源的監(jiān)控,增加對(duì)長(zhǎng)時(shí)間序列觀測(cè)資料的有效統(tǒng)計(jì),本系統(tǒng)在用戶和功能分析的基礎(chǔ)上,開展模塊分析和設(shè)計(jì),通過(guò)web服務(wù)技術(shù),實(shí)現(xiàn)數(shù)據(jù)源與統(tǒng)計(jì)分離[6],解除前臺(tái)可視化與數(shù)據(jù)提取的緊耦合關(guān)系,建立報(bào)文監(jiān)控?cái)?shù)據(jù)庫(kù),實(shí)現(xiàn)報(bào)文統(tǒng)計(jì)的持久化需要,解決之前多種統(tǒng)計(jì)報(bào)文查詢效率低下的問(wèn)題[7-9]。通過(guò)采用若干編程技術(shù),提高了系統(tǒng)效率和靈活性,改善了人機(jī)交互體驗(yàn)[10]。
本系統(tǒng)以監(jiān)控展示為主要功能,實(shí)現(xiàn)海洋站觀測(cè)報(bào)文的監(jiān)控展示、數(shù)據(jù)監(jiān)控報(bào)警、以及數(shù)據(jù)采集分析與監(jiān)控?cái)?shù)據(jù)管理。
本系統(tǒng)對(duì)分類存儲(chǔ)后的報(bào)文文件進(jìn)行解碼、質(zhì)控入庫(kù),并對(duì)解碼后的各類觀測(cè)數(shù)據(jù)進(jìn)行分析、顯示;獲取系統(tǒng)服務(wù)器、數(shù)據(jù)庫(kù)以及網(wǎng)絡(luò)環(huán)境的運(yùn)行狀態(tài)進(jìn)行狀態(tài)監(jiān)視;提供數(shù)據(jù)分析統(tǒng)計(jì)功能,能夠根據(jù)需求進(jìn)行各類統(tǒng)計(jì)報(bào)表的生成,并展示監(jiān)控統(tǒng)計(jì)結(jié)果。
針對(duì)上面的功能分析,現(xiàn)將本系統(tǒng)的功能分類如下:
(1)報(bào)文文件接收狀態(tài)入庫(kù)統(tǒng)計(jì):實(shí)現(xiàn)對(duì)已分類存儲(chǔ)的報(bào)文文件狀態(tài)標(biāo)記入庫(kù);
(2)報(bào)文文件解碼質(zhì)控入庫(kù):實(shí)現(xiàn)原始報(bào)文文件按照對(duì)應(yīng)的解碼算法進(jìn)行數(shù)據(jù)解碼,對(duì)解碼后的數(shù)據(jù)進(jìn)行質(zhì)量控制,將質(zhì)量控制后的觀測(cè)信息存入數(shù)據(jù)庫(kù)中;
(3)報(bào)文文件傳輸統(tǒng)計(jì):實(shí)現(xiàn)對(duì)報(bào)文文件傳輸信息的管理,對(duì)報(bào)文文件傳輸統(tǒng)計(jì)項(xiàng)的定義和報(bào)文文件傳輸統(tǒng)計(jì)報(bào)表的生成功能以及統(tǒng)計(jì)報(bào)表的導(dǎo)出功能;
(4)站點(diǎn)狀態(tài)監(jiān)視:實(shí)現(xiàn)對(duì)站點(diǎn)狀態(tài)的監(jiān)控功能;
(5)實(shí)時(shí)報(bào)警:實(shí)現(xiàn)對(duì)報(bào)文文件傳輸、站點(diǎn)狀態(tài)、設(shè)備狀態(tài)的報(bào)警;
(6)歷史監(jiān)控狀態(tài)查詢:實(shí)現(xiàn)按照起止時(shí)間對(duì)歷史報(bào)文接收情況的統(tǒng)計(jì)分析功能,查詢結(jié)果可以提供趨勢(shì)圖展示分析;
(7)系統(tǒng)配置管理:實(shí)現(xiàn)對(duì)系統(tǒng)的一些配置進(jìn)行管理,提供例如添加、刪除、修改、查詢等功能服務(wù)。
3.1 B/S架構(gòu)
為了滿足監(jiān)控統(tǒng)計(jì)系統(tǒng)在局域網(wǎng)各電腦均可部署應(yīng)用的實(shí)際需求,由于B/S部署、維護(hù)、功能擴(kuò)展的統(tǒng)一性及便利性,系統(tǒng)采用B/S架構(gòu)設(shè)計(jì)。
3.2 前端展示
采用jquery+easyUi編寫前端顯示,基于ajax技術(shù)實(shí)現(xiàn)瀏覽器與服務(wù)器之間異步請(qǐng)求功能,減少用戶等待時(shí)間,減輕服務(wù)器的負(fù)擔(dān),提供良好的用戶體驗(yàn)。
3.3 通過(guò)單例模式控制緩存對(duì)象
本系統(tǒng)在服務(wù)端定期從數(shù)據(jù)庫(kù)中查詢各海洋站點(diǎn)的監(jiān)控狀態(tài)信息,并存儲(chǔ)至緩存,通過(guò)單例模式創(chuàng)建線程內(nèi)唯一保存有站點(diǎn)狀態(tài)的緩存,可實(shí)現(xiàn)不同用戶在一定時(shí)間內(nèi)訪問(wèn)服務(wù)端獲取的查詢結(jié)果唯一,且可實(shí)現(xiàn)瀏覽器短時(shí)間內(nèi)多次訪問(wèn)查詢站點(diǎn)狀態(tài)時(shí)從緩存中讀取站點(diǎn)狀態(tài)信息,降低與數(shù)據(jù)庫(kù)的連接,從而降低系統(tǒng)開銷。
3.4 采用面向接口編程的編程思路
系統(tǒng)底層架構(gòu)采用3層架構(gòu),在表現(xiàn)層(M+C)中,需要調(diào)用實(shí)現(xiàn)了業(yè)務(wù)邏輯接口層的業(yè)務(wù)邏輯層對(duì)象,通過(guò)spring.net實(shí)現(xiàn)通過(guò)配置創(chuàng)建具體的業(yè)務(wù)邏輯對(duì)象,降低了表現(xiàn)層與業(yè)務(wù)邏輯層的耦合程度。表現(xiàn)層通過(guò)調(diào)用業(yè)務(wù)邏輯接口層中對(duì)應(yīng)的方法實(shí)現(xiàn)與數(shù)據(jù)庫(kù)的交互,查詢監(jiān)控的相關(guān)內(nèi)容。
3.5 領(lǐng)域模型
使用EntityFramework實(shí)現(xiàn)領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(領(lǐng)域模型)。本系統(tǒng)中將各類監(jiān)控報(bào)文在數(shù)據(jù)庫(kù)創(chuàng)建對(duì)應(yīng)的數(shù)據(jù)表,并由EF創(chuàng)建為具體的對(duì)像模型。并由該對(duì)像模型通過(guò)與數(shù)據(jù)庫(kù)的交互,實(shí)現(xiàn)CRUD操作。
3.6 MVC框架設(shè)計(jì)
系統(tǒng)前臺(tái)web網(wǎng)站采用.net MVC框架設(shè)計(jì)。MVC(Model-View-Controller)模型-視圖-控制器,在分離應(yīng)用程序內(nèi)部關(guān)注點(diǎn)方面,MVC是一種強(qiáng)大而簡(jiǎn)潔的方式。
4.1 框架設(shè)計(jì)
海洋站觀測(cè)資料監(jiān)控可視化系統(tǒng)基于.net MVC技術(shù)開發(fā),系統(tǒng)的總體框架為數(shù)據(jù)實(shí)體模型(基礎(chǔ)設(shè)施層)、系統(tǒng)模型層(核心業(yè)務(wù)層)、監(jiān)控站點(diǎn)業(yè)務(wù)視圖(站點(diǎn)應(yīng)用層以及可視化層)。系統(tǒng)總體架構(gòu)圖如圖1所示。
圖1 監(jiān)控統(tǒng)計(jì)系統(tǒng)總體架構(gòu)圖
數(shù)據(jù)實(shí)體模型:基礎(chǔ)設(shè)施層。實(shí)現(xiàn)了對(duì)接收到的報(bào)文文件解析、質(zhì)控并入庫(kù)的過(guò)程,以及監(jiān)控統(tǒng)計(jì)系統(tǒng)中對(duì)數(shù)據(jù)庫(kù)進(jìn)行的各類CRUD操作。提供通用輔助操作功能,擴(kuò)展方法,異常處理,日志記錄等功能。并使用EntityFramework作為對(duì)象關(guān)系映射模型(ORM),提供對(duì)象操作,倉(cāng)儲(chǔ)操作。
系統(tǒng)模型層:提供與數(shù)據(jù)實(shí)體以及業(yè)務(wù)邏輯密切相關(guān)的業(yè)務(wù)功能。用于定義系統(tǒng)核心業(yè)務(wù)實(shí)現(xiàn)的數(shù)據(jù)模型的定義(與數(shù)據(jù)庫(kù)表有映射關(guān)系);提供與業(yè)務(wù)相關(guān)的數(shù)據(jù)訪問(wèn)功能的實(shí)體映射、實(shí)體類型的配置,數(shù)據(jù)遷移,倉(cāng)庫(kù)操作(DBSession)的定義與實(shí)現(xiàn)。提交與web無(wú)關(guān)的業(yè)務(wù)邏輯的實(shí)現(xiàn)。
監(jiān)控站點(diǎn)業(yè)務(wù)視圖:站點(diǎn)應(yīng)用層及可視化層。網(wǎng)站業(yè)務(wù)視圖模型用于定義網(wǎng)站業(yè)務(wù)實(shí)現(xiàn)的視圖模型。通過(guò)控制器(Controller)實(shí)現(xiàn)網(wǎng)站的相關(guān)操作,把從網(wǎng)站接收的業(yè)務(wù)視圖實(shí)體轉(zhuǎn)換為核心業(yè)務(wù)模型,傳給核心層進(jìn)行業(yè)務(wù)處理;處理與http密切相關(guān)的數(shù)據(jù)(session、cookie等),處理成與http狀態(tài)無(wú)關(guān)后再交由核心層進(jìn)行處理。通過(guò)視圖(View)實(shí)現(xiàn)Web展現(xiàn)。頁(yè)面展示使用easyui+jquery,實(shí)現(xiàn)了較好的頁(yè)面展示效果。
網(wǎng)站業(yè)務(wù)通過(guò)過(guò)濾器(Filter)實(shí)現(xiàn)對(duì)業(yè)務(wù)執(zhí)行權(quán)限進(jìn)行檢查,加強(qiáng)系統(tǒng)的安全性。
4.2 流程實(shí)現(xiàn)
本系統(tǒng)主要流程包括:數(shù)據(jù)分析入庫(kù),數(shù)據(jù)庫(kù)查詢提取,系統(tǒng)管理以及結(jié)果可視化。
本系統(tǒng)的主要業(yè)務(wù)流程如圖2所示:海洋站通信機(jī)將報(bào)文文件以文件流的方式上傳至文件服務(wù)器。在文件服務(wù)器端部署有分發(fā)存儲(chǔ)子模塊,通過(guò)將接收到的已分類存儲(chǔ)的文件型報(bào)文解析,獲取標(biāo)準(zhǔn)化質(zhì)控后的水文、氣象要素,并判斷其是否正常,生成各類狀態(tài)信息;同時(shí)監(jiān)控服務(wù)器定時(shí)檢測(cè)與海洋站通信機(jī)的連接狀態(tài),并監(jiān)控文件服務(wù)器接收?qǐng)?bào)文的情況,最終將報(bào)文及海洋站設(shè)備監(jiān)控信息寫入數(shù)據(jù)庫(kù)。
統(tǒng)計(jì)統(tǒng)計(jì)模塊處理,形成海洋站觀測(cè)資料統(tǒng)計(jì)產(chǎn)品。
前臺(tái)展示服務(wù)器部署本系統(tǒng)網(wǎng)站服務(wù)端,架設(shè)IIS,memcache分布式緩存等服務(wù)端程序。最終通過(guò)展示系統(tǒng)進(jìn)行實(shí)時(shí)發(fā)布,向值班員提供各類實(shí)時(shí)數(shù)據(jù)的顯示,并實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)歷史到報(bào)的趨勢(shì)瀏覽及曲線繪制,異常警告記錄等功能。系統(tǒng)效果圖見圖3。
圖2 監(jiān)控系統(tǒng)業(yè)務(wù)流程圖
圖3 監(jiān)控系統(tǒng)主界面
本文研究的面相海洋站觀測(cè)資料的監(jiān)控系統(tǒng)解決了之前基于文件系統(tǒng)的監(jiān)控平臺(tái)統(tǒng)計(jì)長(zhǎng)時(shí)間序列報(bào)文較為困難,且對(duì)于多種要素統(tǒng)計(jì)效率低下的問(wèn)題。實(shí)現(xiàn)了對(duì)報(bào)文文件質(zhì)控入庫(kù),增加了對(duì)歷史資料的統(tǒng)計(jì)查詢以及對(duì)站點(diǎn)、網(wǎng)絡(luò)及硬件狀態(tài)的監(jiān)控功能。監(jiān)控對(duì)象覆蓋面較之前有了較大提升,可以全面深入的為預(yù)報(bào)及值班人員展現(xiàn)歷史及實(shí)時(shí)的各類監(jiān)控資料。
本系統(tǒng)在運(yùn)行期間較為穩(wěn)定,能夠在汛期期間較好的完成監(jiān)控統(tǒng)計(jì)的功能。顯示界面友好,可針對(duì)不同的用戶群體實(shí)現(xiàn)多種效果的展示。為值班員、預(yù)報(bào)員與各級(jí)管理人員提供了直觀有效的展示平臺(tái)。
該系統(tǒng)已部署并業(yè)務(wù)化運(yùn)行一年以上,運(yùn)行穩(wěn)定可靠,用戶反映良好。具有很大的推廣價(jià)值和應(yīng)用場(chǎng)景。
[1]靳熙芳,王碩.海洋環(huán)境數(shù)據(jù)智能化監(jiān)控的現(xiàn)狀與關(guān)鍵技術(shù)[J].海洋預(yù)報(bào),2009,26(2):95-102.
[2]方長(zhǎng)芳,張翔,尹建平.21世紀(jì)初海洋預(yù)報(bào)系統(tǒng)發(fā)展現(xiàn)狀和趨勢(shì)[J].海洋預(yù)報(bào),2013,30(4):93-102.
[3]李曉婷,鄭沛楠,王建豐,等.常用海洋數(shù)據(jù)資料簡(jiǎn)介[J].海洋預(yù)報(bào),2010,27(5):81-89.
[4]袁雪梅,蔣永國(guó),郭忠文.海洋數(shù)據(jù)信息共享平臺(tái)關(guān)鍵技術(shù)研究與實(shí)現(xiàn)[J].中國(guó)海洋大學(xué)學(xué)報(bào),2010,40(12):147-153.
[5]張明輝.基于JDBC技術(shù)的數(shù)據(jù)庫(kù)連接和訪問(wèn)的研究[J].電腦與電信,2008,(6):49-51.
[6]朱樹強(qiáng).海量異構(gòu)海洋數(shù)據(jù)集成系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].青島:中國(guó)海洋大學(xué),2014.
[7]魏紅宇,張峰,李四海.海洋數(shù)據(jù)挖掘技術(shù)應(yīng)用[J].海洋通報(bào), 2008,27(6):82-87.
[8]Italy GODAE OceanView Science Team.GODAE OceanView National Reports 2011:Italy MFS[R].Paris:The 3rd Meeting of the GODAE OceanView Science Team,2011.
[9]NOAA Integrated Ocean Observing System(IOOS)program[R]. The United States National Oceanic and Atmospheric Administration.2007.
[10]孟娟,郭忠文,沈飛飛,等.海洋數(shù)據(jù)平臺(tái)數(shù)據(jù)可視化查詢系統(tǒng)設(shè)計(jì)方案[J].中國(guó)科技信息,2013,(2):80-81.
Monitor display and system design of observation data at ocean stations
LIU Si-han,TANG Chen-hai,ZHANG Long-qing,CHEN Zhe
(National Marine Environmental Forecasting Center,Beijing 100081 China)
This system implements the monitoring and statistics for received data from each ocean station.It provides an unified deployment and unified maintaining solution by removing the tight coupling relationship between the front page and data extraction.This system builds a packet monitoring database which can be used to record the relevant information of monitored packets base on asp.net mvc framework to improve the efficiency of single variety packet statistics.One core technology of this system is the separation of controller,model and view through building the front page by asp.net mvc.The second core technology is to improve the system flexibility and reduce dependent degree of each level through programming to an interface.The third one is the usage of EntityFramework model and design methods.The last one is simplify development through implementation aspect oriented programming under the premise of implementation the MVC architecture by spring.net.
ocean observation;ocean data;MVC;domain model
P717;TP311.521
A
1003-0239(2017)01-0077-05
10.11737/j.issn.1003-0239.2017.01.010
2016-04-26;
2016-06-21。
國(guó)家海洋局海洋公益性行業(yè)科研專項(xiàng)(201105017)。
劉思晗(1987-),男,工程師,學(xué)士,主要從事全國(guó)海洋實(shí)時(shí)數(shù)據(jù)通訊及.net相關(guān)項(xiàng)目開發(fā)工作。E-mail:evaseemefly@126.com