宋 永 鵬
(山東氣象信息中心 山東 濟南 250031)
隨著經濟社會發展及氣象趨利避害服務需求的不斷增加,專業氣象服務穩步發展,中國氣象局積極推動部門合作,有效推動了專業氣象服務領域和服務內容的不斷拓展。傳統的氣象服務由于科技水平的限制,要滿足不同用戶定時定量的訂制需求會耗費業務人員大量的精力,工作強度大、效率低成了地市專業臺的普遍現象[1]。廣東省氣象局使用JAVA Spring集成框架開發了廣東省專業氣象服務網,為專業用戶提供實時服務、雨情服務等6種固定氣象服務,其余各省的專業氣象服務局限于面向社會的公共氣象服務,沒有可訂制的服務內容。PHPCMS是國內領先的網站管理系統,同時也是一個開源的PHP開發框架,優點是易于功能擴展和代碼維護,并擁有優秀的二次開發能力[2]。基于上述背景和條件,本文設計開發淄博市專業氣象服務平臺,通過Web方式發布氣象服務產品并建立淄博專業氣象門戶網站,提供公共氣象服務的同時,立足用戶需求為企業和個人打造訂制氣象服務產品。
產品服務系統是企業在銷售產品的同時提供銷售服務,并且產品與服務高度集成、整體優化的新型生產系統,基于產品的服務在滿足用戶的前提下,達成企業與用戶的雙贏[3]。
依據上述理論,本文調研淄博市專業氣象臺的業務需求,平臺包括內容服務系統和產品訂制系統。如圖1所示,內容服務系統為政府決策部門、社會公眾和生產部門提供公共氣象服務;產品訂制系統以點對點的方式為用戶提供訂制精細化產品。
平臺基于B/S架構、基于PHP+Mysql體系研發;兩個系統數據部分耦合,面向公眾的門戶網站提供來自產品數據庫的氣象信息,產品訂制系統面向用戶的信息則保存于內容數據庫中。內容服務系統通過對PHPCMS自定義標簽的HTML標記或變量的替換進行頁面的設計,對功能模塊的二次開發完成欄目和內容的通用化,促成頁面靜態化的呈現,避免過多的動態化內容影響頁面的響應速度;模板技術用來對欄目板塊進行建設,不同欄目套用相同模板,實現代碼的復用,縮減臃腫的代碼體積。產品訂制系統根據預報類型促使產品與數據表、數據字段與產品要素一一對應,保證產品的靈活多樣性;實現一鍵發布功能,分析業務人員錄入的基本氣象數據,后臺重新組合相關要素數據并運用公式進行計算,力求科學準確的產品數據并簡化人工操作流程。
內容服務系統以PHPCMS為框架開發而成。PHPCMS(PHP Content Management System)將前端和后端業務系統以Web應用的方式連接起來,架構如圖2所示,內容服務系統后端由管理員進行數據的錄入和內容的管理,前端使用瀏覽器進行數據的展示和分析。
內容服務系統的一個設計優勢是頁面開發過程中的模板化。雖然前端各個欄目的內容有很大的差異性,但本文通過PHPCMS模板技術對欄目的模板進行構建,圖3為模板開發流程[4],所有欄目表現套用同一套設計好的模板,有效避免重復開發的情況。

圖3 模板開發流程
模板作為對html的擴展,將特定的標簽嵌入html文件用以表明內容和布局,改變標簽的內容以達到調整表現內容的目的。模板定義了顯示內容的布局,而沒有加載實際數據,用戶訪問模板頁面時,模板解釋器分析其中的標簽,用標簽對應的數據庫數據進行替換,將替換結果返回用戶瀏覽器;標簽解釋器通過對元數據的分析實現對標簽的定義和展現,由系統進行統一調度。模板和標簽簡單易懂,對內容布局的調整僅需對模板進行操作而不需要改編相應的代碼,另外,模板頁面以html這種靜態文件的呈現,使得動態化的內容在瀏覽器中完成,避免與服務器的實時數據交換,對提升頁面的運行速度有積極影響[5]。
內容服務系統采用單一入口和模塊化開發,其文件系統如圖4所示。

圖4 內容服務文件系統
單一入口是指一個文件處理所有的http請求,訪問內容服務系統前端的瀏覽視頻、觀看新聞或公共氣象服務等功能,都是由瀏覽器訪問特定的文件,就是文件系統中的前端入口文件index.php來完成,服務器收到http請求時會解析此請求,由index.php文件執行響應操作并將結果返回瀏覽器。所有的執行操作都由一個文件進行維護管理,就能夠輕易地對全局系統進行安全檢測、核心類庫的部署及相應的過濾[6]。
內容服務系統的各模塊保存于文件系統的框架主目錄中,模塊化開發的優勢在于子系統的無關性和可擴展性。管理、發布、權限和統計四個模塊在運行時不會相互制約和影響,當其中一個模塊崩潰時,不會影響其他模塊的正常運行;由于內容服務系統的統一管理,開發人員可以較輕松地在原有系統的基礎上開發擴展模塊以及相應的插件。
圖5展示內容服務系統前端和后端的部分實現功能。

圖5 內容服務系統前端和后端部分功能展示
產品訂制系統鑲嵌于內容服務系統中,用戶登錄被放置于后者首頁。產品訂制發布流程如圖6所示,業務人員將溫濕壓風等基礎氣象數據進行錄入,系統依據用戶訂制的產品內容對數據進行重組入庫,插入與產品種類一一對應的數據表,并通過公式將基礎數據進行計算得出多種指數預報產品,用戶登錄驗證后進行訂制產品的展示。

圖6 產品訂制發布流程
系統將基礎氣象數據分配入庫采取預報產品種類和數據表一一對應的方式,每種服務產品只對一張數據表進行讀寫操作,取代傳統的單數據表統一讀取的方式。這種結構增強了單一產品設計的靈活性和獨立性,開發人員能夠依照產品特性設計獨立的表結構,新增產品種類的操作不會影響現存的數據結構,而且避免因為新產品增加的字段導致現存數據行需要進行字段數據的補錄,便于數據表的維護和管理;同時由于數據分散多張表中,避免了一張表的數據過大的情況,能夠一定程度提高數據庫的查詢速度和存取效率[7];該結構的缺點是需要開發人員在業務新增時對每一種產品進行對應數據表的重新設計。
部分指數預報產品無法直接對表中字段數據進行重組生成以滿足客戶需求,需要進行一定的計算,以人體舒適度指數和道路濕滑指數為例說明。在查閱國內外人體舒適度理論研究的基礎上,發現溫濕壓風四個氣象要素對體表影響最大,引進上海區域氣象中心的舒適度預報模型并根據淄博氣候特征進行了訂正,得到式(1)[8]。
Comf=(t×1.9+34)-0.60×(1-RelHum/100)×
(1)
式中:Comf是人體舒適度;t是氣溫;RelHum是相對濕度;WS是風速;Comf分為十級,系統通過讀取自動氣象站的要素數據對自動站所屬區域進行人體舒適度的計算并分級。
道路濕滑指數是通過對2011年-2014年泰安交通站逐時觀測資料在不同季節和不同天氣條件的路面溫度、氣溫、相對濕度和風場數據進行相關性分析,利用多云回歸方法對春夏秋冬四季分別建立了道路溫度的預報模型,模型如表1所示。其中:RoadTem是路面溫度;Tem是氣溫;RelHum是相對濕度;U和V分別是風速在水平坐標XY軸的數值,通過得到的路面溫度值對路面濕滑指數進行分級。

表1 道路溫度的預報模型
平臺上線服務至今訂制用戶數超過100,提供服務產品種類超過20,通過對產品數據庫的已訂制產品表進行統計,提取用戶訂制的產品種類和用戶數進行加和計算,將結果使用Acess生出柱狀圖如圖7所示。

圖7 各服務產品訂制用戶數
訂制數較多的分別是逐時預報、三小時預報、天氣實況、各區縣預報和區縣三天預報。結果顯示各行業用戶對短時類預報和區縣類預報需求較多。
圖8展示了產品訂制系統業務和用戶操作的部分實現功能。

圖8 產品訂制系統業務和用戶操作部分功能
平臺各圖標、氣象圖片、衛星云圖和雷達圖的加載采用基于PHP GD庫(圖像處理擴展類庫)的圖像壓縮技術,壓縮圖片的冗余數據,保證清晰度的基礎上允許一定程度的失真以提高頁面的加載速度和用戶體驗度[9]。平均1.2 MB大小的衛星云圖經壓縮后體積縮小至400 KB,利用Google Chrome開發者工具測試衛星云圖訂制服務頁面的加載時間如圖9所示,方框中的數據是各個衛星云圖的頁面加載時間,用時最長的也控制在0.3 s之內,避免頁面由留白狀態慢慢加載的情況,而且動圖的色彩和清晰度并未因壓縮而明顯丟失[10]。

圖9 衛星云圖動圖訂制頁面的加載時間
衛星云圖動圖頁面加載要疊加25幅云圖圖片,理論上是全平臺加載最耗時的頁面[11]。經測試平臺其他頁面的加載時間均控制在0.3 s之內,保證了高質量的運行效率和用戶操作的流暢性。
專業氣象服務是公共氣象服務的重要組成部分,是為經濟社會有關行業和用戶提供的用來滿足特定行業和用戶個性化需求、有專門用途的氣象服務,著重提高服務的針對性和滿足服務對象具體的需求[12]。本文設計的基于PHPCMS的專業氣象服務平臺完成了淄博專業氣象門戶網站、提供公共氣象服務并實現了針對行業用戶的20余項氣象服務產品的訂制功能,上線以來運行穩定,為淄博市氣象局創收300余萬,助力該市專業氣象服務的發展。