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