◆賈 東
(赤峰市氣象局 內蒙古 024000)
內蒙古氣象局預報質量考核系統設計與實現
◆賈 東
(赤峰市氣象局 內蒙古 024000)
內蒙古氣象局預報質量考核系統于2011年正式上線,是擁有自主知識產權的預報業務系統,主要應用于全區氣象部門的城鎮天氣預報、災害性天氣落區預報的質量考核。經過連續連續五年的建設,目前已經實現業務化穩定運行,支撐了自治區氣象局預報質量考核工作,同時發展成為各盟市氣象局質量分析的最主要工具,促進了全區預報準確率的穩步提高。系統采用目前先進Nutz框架結構和html5語言實現,最大限度的提高Web開發能力,解決第三方類庫在Web項目開發中的低效問題,用最少的代碼做最多的事情。
預報質量;Nutz框架;java web應用;B/S結構;Bootstrap開發
內蒙古自治區預報質量考核系統基于java web開發的B/S結構應用平臺,并且結合了目前先進的 Nutz框架結構和Bootstrap等多種前后端開發語言實現,在平臺的可維護性、可擴展性和系統的兼容性上有非常大的優勢。該系統對全區天氣預報質量檢驗和預報員個人預報質量客觀化考核起到支撐作用,有效地促進了全區預報準確率的提高,據中國氣象局國家氣象中心統計數據顯示,近四年來全區48小時內氣溫預報準確率提高幅度達到7%以上,其中24、48小時最高溫度預報準確率分別提高10%、9.5%,最低溫度預報準確率提高了6.6%、7%。相對國家指導預報技巧更是實現跨越式進展,在全國31個省(直轄市、自治區)的24小時技巧排名中,高溫技巧由2010年第28名提高到2014年第3名,低溫技巧由第29名提高到第6名。
根據實際需求,系統分為后臺數據采集及運算、前臺數據查詢顯示兩大部分。后臺數據采集及運算是整個平臺的基礎,采用Java語言實現模塊功能。主要負責天氣實況、盟市預報、國家指導預報、區局指導預報、災害落區預報等基礎數據的采集工作,根據相應算法計算出評分結果數據、日統計數據、月統計數據、災害落區數據、個人質量數據、風檢驗數據等并入庫保存;前臺數據查詢與顯示頁面是面向全區預報員用戶的窗口,采用目前先進的html5語言、Bootstrap前端開發框架和Nutz框架技術實現,負責盟市評分、全區評分、災害評分、全區個人排名等模塊的查詢顯示和數據下載功能及值班登記、個人預報上傳等功能。

圖1 預報質量考核系統功能結構圖
內蒙古自治區預報質量考核系統采用java語言及html5語言開發的一款基于B/S結構的Java web應用平臺,后臺數據采集模塊每日定時從區局數據庫和各盟市上傳預報目錄中進行數據的采集與解析,主要包括天氣實況數據、盟市預報數據、區臺指導數據、災害預報數據等基本數據。設定平臺的數據采集模塊每天定時運行,從區局數據庫采集數據,然后把數據入庫到平臺數據庫中,在此過程中要注意對異常數據的處理。數據采集完成后,開始使用不同的預報檢驗算法對全區臺站各項預報質量進行計算,并把得到的結果存入數據庫中。前端 web頁面服務使用Tomcat作為應用服務器,用戶通過瀏覽器訪問系統(目前訪問地址為:http://10.62.11.102)。并且對于一些基本的服務器信息,如區局基本資料的存放地址、報文的存儲路徑等信息都存放在系統的配置文件中,當服務器信息有變動時,無需修改源代碼,只需修改配制文件即可,方便系統的擴展和移植。
系統的運行依托于大量基礎數據的采集和計算,包括盟市預報、國家指導報、區局指導預報、災害落區預報、天氣實況數據。目前基礎數據的采集分兩種方式,常規方式為從區局信息中心數據庫進行采集,采用數據庫直接連接方式;備份采集方式為區局目錄報文讀取,采用FTP連接方式。這樣做的好處在于當一路數據采集遇到故障時可通過另一方式進行數據采集,大大地提高了數據的完整性。數據采集完成后,對這些基礎數據按照盟市、時次、時效、站號、日期等要素進行分類計算,并對其中的異常數據進行容錯性處理,保證計算結果的正確。如對數據中“9999”,“null”的處理和對報文中“////”的處理,另外在報文讀取中還要注意更正報的判斷,保證讀取到最新的預報數據。如在當日運行時間內由于報文或數據的缺失導致數據無法錄入,可實現對數據的補錄與更新操作。在程序中通過Nutz Dao技術進行數據庫的連接和讀取寫入操作,提高了數據庫的訪問速度,減少了數據庫的壓力。
容易出現數據不完整的地方有兩種,一種是基礎數據的缺失。數據的錄入與計算過程中,由于基礎數據的不完整或者讀取中出現的數據連接異常錯誤,會導致某些要素的評分結果不準確。這就要對數據的完整性進行檢查。在后臺采集模塊中,當日數據采集完成后,會對預報數據和實況數據進行檢查,根據全區臺站數和所發預報數量進行對比,把缺失數據的站臺信息統一入庫,形成數據缺失表,可在前臺顯示頁面中的系統管理模塊中查看。另一種是計算后形成的中間數據的缺失。在數據采集與計算過程中,出現如網絡中斷、數據計算異常、服務器故障時,都會中斷采集模塊的正常運行,從而導致中間關鍵環節的數據缺失,在程序設計上采用日志的方式對采集模塊的運行進行記錄,從運行日志中可以很方便的看出程序運行情況,哪些環節的運算出現錯誤等信息,方面管理人員對所缺失的數據進行查詢補錄工作。
前端web應用使用Tomcat搭建服務,Tomcat 服務器是一個免費的開放源代碼的Web 應用服務器,屬于輕量級應用服務器,是開發和調試 JSP 程序的首選。首先需要安裝 JDK(java development kit) Java 語言的軟件開發工具包。然后進行 tomcat環境變量的配置。具體配置內容如下:
JAVA_HOME= C:Program FilesJavajdk1.6.0
TOMCAT_HOME= d:myjava omcat 6.0
CLASSPATH=.; C:Program FilesJavajdk1.6.0lib;
服務搭建完成后,把項目發布到服務器端,即可通過瀏覽器訪問。
項目使用了目前比較先進的nutz技術,通過nutzDao可以很方便的實現對數據庫的連接,訪問等操作。在web應用中需要在配制文件web.xml中進行相應配制。nutzIoc將一部分關于對象的依賴關系單獨存儲在某種介質里,并且提供一個接口幫助使用者獲得這些對象。在今后的項目開發中,如數據庫地址、用戶名和密碼發生改變時,不需要進行Java代碼的重新編譯,在此配置中修改即可。
NutzMvc是要和一個 Web 服務器(比如本系統使用的Tomcat)一起工作的,它存在的意義就是要把一個標準的 HTTP請求,轉發到某一個 Java 函數中。可進行參數的解析并提供幾個基本的渲染方式(比如 JSP, JSON)每一種 HTTP 請求,在函數上聲明一個注解,這個注解,在程序中使用以下代碼@IocBean(name="dataservice"),在需要引用該類中使用dataservice ds=IocInit.iocb.get(dataservice.class," dataservice ")得到類的聲明。
天氣預報質量檢驗中需要大量的專業計算公式,參照《全國城鎮天氣預報質量國家級檢驗方案》和《中短期天氣預報質量檢驗辦法》進行了大量公式的總結、分析與演算,并最終在程序中實現。
將降水量分為小雨、中雨、大雨、暴雨、大暴雨、特大暴雨和小雪、中雪、大雪、暴雪10個等級(見表1),檢驗各級降水、一般性降水[小雨(雪)至大雨(雪)]和暴雨(雪)以上(暴雨至特大暴雨和暴雪)預報情況。累加降水量級檢驗:檢驗對≥0.1mm、≥10.0mm、≥25.0mm、≥50.0mm降水的預報情況。
其中,Fi為第i站(次)預報溫度,Oi為第i站(次)實況溫度,K為1、2,分別代表NrK為預報正確的站(次)數,NfK為預報的總站(次)數。
溫度預報準確率的實際含義是溫度預報誤差≤1℃(2℃)的百分率。
從整體模塊功能分布上來看,平臺包括面向用戶的頁面顯示功能,基于查詢結果的報表生成功能,圖表顯示功能,基礎數據錄入功能及其它一些系統維護與監測功能。

圖2 風檢驗圖表顯示頁面
Java Excel俗稱jxl,是一開放源碼項目,通過它可以讀取Excel文件的內容、創建新的Excel文件、更新已經存在的Excel文件。使用該API非Windows操作系統也可以通過純Java應用來處理Excel數據表。因為是使用Java編寫的,所以我們在Web應用中可以通過JSP、Servlet來調用API實現對Excel數據表的訪問。通過java操作excel表格的工具類庫,支持Excel 95-2000的所有版本,生成Excel 2000標準格式,支持字體、數字、日期操作,能夠修飾單元格屬性,支持圖像和圖表。
圖表功能使用 Echarts圖表庫實現。它基于 Canvas,純Javascript圖表庫,提供直觀、生動、可交互、可個性化定制的數據可視化圖表。創新的拖拽重計算、數據視圖、值域漫游等特性大大增強了用戶體驗,賦予了用戶對數據進行挖掘、整合的能力。可生成折線圖、柱狀圖、k線圖等圖表的實現,可在生成的圖表上進行一些拖拽重計算特性,帶來了數據統計圖表從未有過的用戶體驗,允許用戶對統計數據進行有效的提取、整合,甚至在多個圖表間交換數據。具體實現步驟:
(1)需要在頁面通過為ECharts準備一個具備大小(寬高)的Dom。
(2)引用所用的jar文件:
(3)進行相關配制寫入:
require.config({paths:{echarts:'js/dist'}});
var option = { legend: {data: ['主班', '全區平均', '指導','指導平均']},
color: ['#ff7f50', '#da70d6', '#87cefa', '#32cd32', '#6495ed','#ff69b4', '#ba55d3', '#cd5c5c', '#ffa500', '#40e0d0'],
toolbox: {show: true, feature: {mark: {show: true},
dataView: { readOnly: false},
magicType : {show: true, type: ['line', 'bar']},
restore: {show: true},
saveAsImage:{show: true} }},
calculable: false,
animation:false,
animationDuration: 10,
xAxis: [{type: 'category', boundaryGap: true, }],
series: [{name: '主班', type: 'bar', barGap:2, itemStyle: {
normal: {lineStyle: {shadowColor: 'rgba(0,0,0,0.4)'},
label : {show : true}}}},
name: '全區平均', type: 'line', itemStyle: {normal: {lineStyle: {
shadowColor: 'rgba(0,0,0,0.4)'}}}}

圖3 高溫2度24小時圖表顯示
當前正值現代天氣業務、服務型業務建設迅速推進時期,內蒙古天氣預報質量考核系統的全面網絡化形式、全面的功能設計、統一的數據管理、公開透明的檢驗形式正好滿足了時代發展和業務改進的需要。Java語言、nutz框架、bootstrap等先進的語言與設計工具的應用,使平臺在整體布局上層次分明,結構清晰。功能的模塊化實現,使平臺在可擴展性與可維護性上面有很強的優勢。通過三年多的全區業務應用,也充分證明了該系統功能實用、技術先進、運行穩定、為我區預報質量的檢驗提供了一個非常必要的平臺。
[1]梁勇.Java語言程序設計[M].機械工業出版,2011.
[2]李緒成.java語言程序設計(java7) [M].清華大學出版社,2014.
[3]Y Daniel Liang.Java語言程序設計基礎篇[M].機械工業出版社,2008.
[4]孫衛琴.Java面向對象編程[M].電子工業出版社,2006.
[5]李剛.瘋狂Java講義[M].電子工業出版社,2012.
[6]梁勇. Java深入解析——透析Java本質的36個話題[M].電子工業出版社,2013.
[7]孫衛琴.Tomcat與Java Web開發技術詳解(第2版) [M].電子工業出版社,2009.