宋 永 鵬
(山東氣象信息中心 山東 濟南 250031)
隨著經(jīng)濟社會發(fā)展及氣象趨利避害服務(wù)需求的不斷增加,專業(yè)氣象服務(wù)穩(wěn)步發(fā)展,中國氣象局積極推動部門合作,有效推動了專業(yè)氣象服務(wù)領(lǐng)域和服務(wù)內(nèi)容的不斷拓展。傳統(tǒng)的氣象服務(wù)由于科技水平的限制,要滿足不同用戶定時定量的訂制需求會耗費業(yè)務(wù)人員大量的精力,工作強度大、效率低成了地市專業(yè)臺的普遍現(xiàn)象[1]。廣東省氣象局使用JAVA Spring集成框架開發(fā)了廣東省專業(yè)氣象服務(wù)網(wǎng),為專業(yè)用戶提供實時服務(wù)、雨情服務(wù)等6種固定氣象服務(wù),其余各省的專業(yè)氣象服務(wù)局限于面向社會的公共氣象服務(wù),沒有可訂制的服務(wù)內(nèi)容。PHPCMS是國內(nèi)領(lǐng)先的網(wǎng)站管理系統(tǒng),同時也是一個開源的PHP開發(fā)框架,優(yōu)點是易于功能擴展和代碼維護,并擁有優(yōu)秀的二次開發(fā)能力[2]。基于上述背景和條件,本文設(shè)計開發(fā)淄博市專業(yè)氣象服務(wù)平臺,通過Web方式發(fā)布?xì)庀蠓?wù)產(chǎn)品并建立淄博專業(yè)氣象門戶網(wǎng)站,提供公共氣象服務(wù)的同時,立足用戶需求為企業(yè)和個人打造訂制氣象服務(wù)產(chǎn)品。
產(chǎn)品服務(wù)系統(tǒng)是企業(yè)在銷售產(chǎn)品的同時提供銷售服務(wù),并且產(chǎn)品與服務(wù)高度集成、整體優(yōu)化的新型生產(chǎn)系統(tǒng),基于產(chǎn)品的服務(wù)在滿足用戶的前提下,達(dá)成企業(yè)與用戶的雙贏[3]。
依據(jù)上述理論,本文調(diào)研淄博市專業(yè)氣象臺的業(yè)務(wù)需求,平臺包括內(nèi)容服務(wù)系統(tǒng)和產(chǎn)品訂制系統(tǒng)。如圖1所示,內(nèi)容服務(wù)系統(tǒng)為政府決策部門、社會公眾和生產(chǎn)部門提供公共氣象服務(wù);產(chǎn)品訂制系統(tǒng)以點對點的方式為用戶提供訂制精細(xì)化產(chǎn)品。
平臺基于B/S架構(gòu)、基于PHP+Mysql體系研發(fā);兩個系統(tǒng)數(shù)據(jù)部分耦合,面向公眾的門戶網(wǎng)站提供來自產(chǎn)品數(shù)據(jù)庫的氣象信息,產(chǎn)品訂制系統(tǒng)面向用戶的信息則保存于內(nèi)容數(shù)據(jù)庫中。內(nèi)容服務(wù)系統(tǒng)通過對PHPCMS自定義標(biāo)簽的HTML標(biāo)記或變量的替換進行頁面的設(shè)計,對功能模塊的二次開發(fā)完成欄目和內(nèi)容的通用化,促成頁面靜態(tài)化的呈現(xiàn),避免過多的動態(tài)化內(nèi)容影響頁面的響應(yīng)速度;模板技術(shù)用來對欄目板塊進行建設(shè),不同欄目套用相同模板,實現(xiàn)代碼的復(fù)用,縮減臃腫的代碼體積。產(chǎn)品訂制系統(tǒng)根據(jù)預(yù)報類型促使產(chǎn)品與數(shù)據(jù)表、數(shù)據(jù)字段與產(chǎn)品要素一一對應(yīng),保證產(chǎn)品的靈活多樣性;實現(xiàn)一鍵發(fā)布功能,分析業(yè)務(wù)人員錄入的基本氣象數(shù)據(jù),后臺重新組合相關(guān)要素數(shù)據(jù)并運用公式進行計算,力求科學(xué)準(zhǔn)確的產(chǎn)品數(shù)據(jù)并簡化人工操作流程。
內(nèi)容服務(wù)系統(tǒng)以PHPCMS為框架開發(fā)而成。PHPCMS(PHP Content Management System)將前端和后端業(yè)務(wù)系統(tǒng)以Web應(yīng)用的方式連接起來,架構(gòu)如圖2所示,內(nèi)容服務(wù)系統(tǒng)后端由管理員進行數(shù)據(jù)的錄入和內(nèi)容的管理,前端使用瀏覽器進行數(shù)據(jù)的展示和分析。
內(nèi)容服務(wù)系統(tǒng)的一個設(shè)計優(yōu)勢是頁面開發(fā)過程中的模板化。雖然前端各個欄目的內(nèi)容有很大的差異性,但本文通過PHPCMS模板技術(shù)對欄目的模板進行構(gòu)建,圖3為模板開發(fā)流程[4],所有欄目表現(xiàn)套用同一套設(shè)計好的模板,有效避免重復(fù)開發(fā)的情況。
圖3 模板開發(fā)流程
模板作為對html的擴展,將特定的標(biāo)簽嵌入html文件用以表明內(nèi)容和布局,改變標(biāo)簽的內(nèi)容以達(dá)到調(diào)整表現(xiàn)內(nèi)容的目的。模板定義了顯示內(nèi)容的布局,而沒有加載實際數(shù)據(jù),用戶訪問模板頁面時,模板解釋器分析其中的標(biāo)簽,用標(biāo)簽對應(yīng)的數(shù)據(jù)庫數(shù)據(jù)進行替換,將替換結(jié)果返回用戶瀏覽器;標(biāo)簽解釋器通過對元數(shù)據(jù)的分析實現(xiàn)對標(biāo)簽的定義和展現(xiàn),由系統(tǒng)進行統(tǒng)一調(diào)度。模板和標(biāo)簽簡單易懂,對內(nèi)容布局的調(diào)整僅需對模板進行操作而不需要改編相應(yīng)的代碼,另外,模板頁面以html這種靜態(tài)文件的呈現(xiàn),使得動態(tài)化的內(nèi)容在瀏覽器中完成,避免與服務(wù)器的實時數(shù)據(jù)交換,對提升頁面的運行速度有積極影響[5]。
內(nèi)容服務(wù)系統(tǒng)采用單一入口和模塊化開發(fā),其文件系統(tǒng)如圖4所示。
圖4 內(nèi)容服務(wù)文件系統(tǒng)
單一入口是指一個文件處理所有的http請求,訪問內(nèi)容服務(wù)系統(tǒng)前端的瀏覽視頻、觀看新聞或公共氣象服務(wù)等功能,都是由瀏覽器訪問特定的文件,就是文件系統(tǒng)中的前端入口文件index.php來完成,服務(wù)器收到http請求時會解析此請求,由index.php文件執(zhí)行響應(yīng)操作并將結(jié)果返回瀏覽器。所有的執(zhí)行操作都由一個文件進行維護管理,就能夠輕易地對全局系統(tǒng)進行安全檢測、核心類庫的部署及相應(yīng)的過濾[6]。
內(nèi)容服務(wù)系統(tǒng)的各模塊保存于文件系統(tǒng)的框架主目錄中,模塊化開發(fā)的優(yōu)勢在于子系統(tǒng)的無關(guān)性和可擴展性。管理、發(fā)布、權(quán)限和統(tǒng)計四個模塊在運行時不會相互制約和影響,當(dāng)其中一個模塊崩潰時,不會影響其他模塊的正常運行;由于內(nèi)容服務(wù)系統(tǒng)的統(tǒng)一管理,開發(fā)人員可以較輕松地在原有系統(tǒng)的基礎(chǔ)上開發(fā)擴展模塊以及相應(yīng)的插件。
圖5展示內(nèi)容服務(wù)系統(tǒng)前端和后端的部分實現(xiàn)功能。
圖5 內(nèi)容服務(wù)系統(tǒng)前端和后端部分功能展示
產(chǎn)品訂制系統(tǒng)鑲嵌于內(nèi)容服務(wù)系統(tǒng)中,用戶登錄被放置于后者首頁。產(chǎn)品訂制發(fā)布流程如圖6所示,業(yè)務(wù)人員將溫濕壓風(fēng)等基礎(chǔ)氣象數(shù)據(jù)進行錄入,系統(tǒng)依據(jù)用戶訂制的產(chǎn)品內(nèi)容對數(shù)據(jù)進行重組入庫,插入與產(chǎn)品種類一一對應(yīng)的數(shù)據(jù)表,并通過公式將基礎(chǔ)數(shù)據(jù)進行計算得出多種指數(shù)預(yù)報產(chǎn)品,用戶登錄驗證后進行訂制產(chǎn)品的展示。
圖6 產(chǎn)品訂制發(fā)布流程
系統(tǒng)將基礎(chǔ)氣象數(shù)據(jù)分配入庫采取預(yù)報產(chǎn)品種類和數(shù)據(jù)表一一對應(yīng)的方式,每種服務(wù)產(chǎn)品只對一張數(shù)據(jù)表進行讀寫操作,取代傳統(tǒng)的單數(shù)據(jù)表統(tǒng)一讀取的方式。這種結(jié)構(gòu)增強了單一產(chǎn)品設(shè)計的靈活性和獨立性,開發(fā)人員能夠依照產(chǎn)品特性設(shè)計獨立的表結(jié)構(gòu),新增產(chǎn)品種類的操作不會影響現(xiàn)存的數(shù)據(jù)結(jié)構(gòu),而且避免因為新產(chǎn)品增加的字段導(dǎo)致現(xiàn)存數(shù)據(jù)行需要進行字段數(shù)據(jù)的補錄,便于數(shù)據(jù)表的維護和管理;同時由于數(shù)據(jù)分散多張表中,避免了一張表的數(shù)據(jù)過大的情況,能夠一定程度提高數(shù)據(jù)庫的查詢速度和存取效率[7];該結(jié)構(gòu)的缺點是需要開發(fā)人員在業(yè)務(wù)新增時對每一種產(chǎn)品進行對應(yīng)數(shù)據(jù)表的重新設(shè)計。
部分指數(shù)預(yù)報產(chǎn)品無法直接對表中字段數(shù)據(jù)進行重組生成以滿足客戶需求,需要進行一定的計算,以人體舒適度指數(shù)和道路濕滑指數(shù)為例說明。在查閱國內(nèi)外人體舒適度理論研究的基礎(chǔ)上,發(fā)現(xiàn)溫濕壓風(fēng)四個氣象要素對體表影響最大,引進上海區(qū)域氣象中心的舒適度預(yù)報模型并根據(jù)淄博氣候特征進行了訂正,得到式(1)[8]。
Comf=(t×1.9+34)-0.60×(1-RelHum/100)×
(1)
式中:Comf是人體舒適度;t是氣溫;RelHum是相對濕度;WS是風(fēng)速;Comf分為十級,系統(tǒng)通過讀取自動氣象站的要素數(shù)據(jù)對自動站所屬區(qū)域進行人體舒適度的計算并分級。
道路濕滑指數(shù)是通過對2011年-2014年泰安交通站逐時觀測資料在不同季節(jié)和不同天氣條件的路面溫度、氣溫、相對濕度和風(fēng)場數(shù)據(jù)進行相關(guān)性分析,利用多云回歸方法對春夏秋冬四季分別建立了道路溫度的預(yù)報模型,模型如表1所示。其中:RoadTem是路面溫度;Tem是氣溫;RelHum是相對濕度;U和V分別是風(fēng)速在水平坐標(biāo)XY軸的數(shù)值,通過得到的路面溫度值對路面濕滑指數(shù)進行分級。
表1 道路溫度的預(yù)報模型
平臺上線服務(wù)至今訂制用戶數(shù)超過100,提供服務(wù)產(chǎn)品種類超過20,通過對產(chǎn)品數(shù)據(jù)庫的已訂制產(chǎn)品表進行統(tǒng)計,提取用戶訂制的產(chǎn)品種類和用戶數(shù)進行加和計算,將結(jié)果使用Acess生出柱狀圖如圖7所示。
圖7 各服務(wù)產(chǎn)品訂制用戶數(shù)
訂制數(shù)較多的分別是逐時預(yù)報、三小時預(yù)報、天氣實況、各區(qū)縣預(yù)報和區(qū)縣三天預(yù)報。結(jié)果顯示各行業(yè)用戶對短時類預(yù)報和區(qū)縣類預(yù)報需求較多。
圖8展示了產(chǎn)品訂制系統(tǒng)業(yè)務(wù)和用戶操作的部分實現(xiàn)功能。
圖8 產(chǎn)品訂制系統(tǒng)業(yè)務(wù)和用戶操作部分功能
平臺各圖標(biāo)、氣象圖片、衛(wèi)星云圖和雷達(dá)圖的加載采用基于PHP GD庫(圖像處理擴展類庫)的圖像壓縮技術(shù),壓縮圖片的冗余數(shù)據(jù),保證清晰度的基礎(chǔ)上允許一定程度的失真以提高頁面的加載速度和用戶體驗度[9]。平均1.2 MB大小的衛(wèi)星云圖經(jīng)壓縮后體積縮小至400 KB,利用Google Chrome開發(fā)者工具測試衛(wèi)星云圖訂制服務(wù)頁面的加載時間如圖9所示,方框中的數(shù)據(jù)是各個衛(wèi)星云圖的頁面加載時間,用時最長的也控制在0.3 s之內(nèi),避免頁面由留白狀態(tài)慢慢加載的情況,而且動圖的色彩和清晰度并未因壓縮而明顯丟失[10]。
圖9 衛(wèi)星云圖動圖訂制頁面的加載時間
衛(wèi)星云圖動圖頁面加載要疊加25幅云圖圖片,理論上是全平臺加載最耗時的頁面[11]。經(jīng)測試平臺其他頁面的加載時間均控制在0.3 s之內(nèi),保證了高質(zhì)量的運行效率和用戶操作的流暢性。
專業(yè)氣象服務(wù)是公共氣象服務(wù)的重要組成部分,是為經(jīng)濟社會有關(guān)行業(yè)和用戶提供的用來滿足特定行業(yè)和用戶個性化需求、有專門用途的氣象服務(wù),著重提高服務(wù)的針對性和滿足服務(wù)對象具體的需求[12]。本文設(shè)計的基于PHPCMS的專業(yè)氣象服務(wù)平臺完成了淄博專業(yè)氣象門戶網(wǎng)站、提供公共氣象服務(wù)并實現(xiàn)了針對行業(yè)用戶的20余項氣象服務(wù)產(chǎn)品的訂制功能,上線以來運行穩(wěn)定,為淄博市氣象局創(chuàng)收300余萬,助力該市專業(yè)氣象服務(wù)的發(fā)展。