王家樂



摘要:近年來,智能手機應(yīng)用悄然興起,人們依賴手機獲取天氣實況愈來愈顯著。文章基于微信,研發(fā)了“雨在哪”微信小程序,實現(xiàn)了內(nèi)蒙古自治區(qū)歷史、實時降水信息的展示,用戶可針對性對降水嚴(yán)重區(qū)域進行防范,避免由于嚴(yán)重降水引起的各類災(zāi)害。
關(guān)鍵詞:微信小程序;數(shù)據(jù)接口;降水產(chǎn)品
中圖分類號:TP311? ? ? 文獻標(biāo)識碼:A
文章編號:1009-3044(2021)15-0082-03
1 背景
降水包括雨、雪、雨夾雪等相態(tài),不同降水相態(tài)對應(yīng)的降水量級具有差異性,降水過度會嚴(yán)重影響人們的生活,造成不同程度的災(zāi)害,因此及時將降水相態(tài)、降水落區(qū)及降水的量級推送給社會活動人員對氣象防災(zāi)減災(zāi)至關(guān)重要。近年來,通過智能手機的微信應(yīng)用獲取各種信息資源已經(jīng)成為當(dāng)今社會的主流趨勢,微信具有操作簡便、交流高效、信息推送精準(zhǔn)等優(yōu)點,這些都為實現(xiàn)基于微信的“雨在哪”小程序設(shè)計與應(yīng)用(以下簡稱“雨在哪”)奠定了基礎(chǔ)。本文將對該系統(tǒng)設(shè)計與應(yīng)用進行介紹。
2 系統(tǒng)設(shè)計
2.1 總體結(jié)構(gòu)設(shè)計
“雨在哪”微信小程序[1]主要基于氣象局內(nèi)部私有云平臺進行建設(shè),在公有云上適當(dāng)補充。數(shù)據(jù)環(huán)境主要基于內(nèi)蒙古氣象大數(shù)據(jù)云平臺-天擎數(shù)據(jù)環(huán)境,應(yīng)用軟件由微信小程序、接口應(yīng)用、后端數(shù)據(jù)處理應(yīng)用三部分組成。
微信小程序和接口應(yīng)用部署在公有云虛擬服務(wù)器上。前端部署負(fù)載均衡設(shè)備進行任務(wù)調(diào)度,提供高并發(fā)訪問下的數(shù)據(jù)分流處理。網(wǎng)絡(luò)入口處部署防火墻,進行網(wǎng)絡(luò)攻擊攔截,既能夠?qū)崿F(xiàn)數(shù)據(jù)的高效傳輸,也能夠保證數(shù)據(jù)訪問的安全性。
后端數(shù)據(jù)處理應(yīng)用,基于處理服務(wù)組件,具備多并發(fā)實時處理功能。后端數(shù)據(jù)處理基于氣象局內(nèi)部私有云,根據(jù)業(yè)務(wù)需要獲取全區(qū)預(yù)報,實況,歷史降水信息,對這些數(shù)據(jù)進行分析加工,生成可供應(yīng)用快速方便高效使用的結(jié)構(gòu)化數(shù)據(jù)。隨著業(yè)務(wù)發(fā)展的需求和訪問量的增加,可以擴展處理服務(wù)器的數(shù)量。
2.2 總體結(jié)構(gòu)設(shè)計
系統(tǒng)由基礎(chǔ)設(shè)施層、數(shù)據(jù)訪問層、數(shù)據(jù)加工層、應(yīng)用接口層和展示層五個功能模塊組成。每個模塊實現(xiàn)其特定的核心任務(wù),下層為上層提供支撐,同時上層從下層獲得基礎(chǔ)數(shù)據(jù)并服務(wù),功能模塊見圖1:
1)展示層
展示層是系統(tǒng)操作界面,面向的用戶是自治區(qū)級、盟市級和旗縣級從事氣象服務(wù)相關(guān)工作或社會活動人員,用戶通過手機搜索“雨在哪”即可使用。
2)應(yīng)用接口層
應(yīng)用接口層是系統(tǒng)業(yè)務(wù)邏輯處理的核心部分,采用REST服務(wù)方式實現(xiàn)與展示層的信息請求交互,該方式降低了系統(tǒng)開發(fā)的復(fù)雜性和耦合度,提高了系統(tǒng)的可擴展性。
3)數(shù)據(jù)加工層
數(shù)據(jù)加工層是對基礎(chǔ)數(shù)據(jù)預(yù)處理,包括實況降水?dāng)?shù)據(jù)統(tǒng)計、歷史數(shù)據(jù)集解碼入庫、歷史數(shù)據(jù)統(tǒng)計,最終生成有效的降水?dāng)?shù)據(jù)產(chǎn)品,應(yīng)用接口層基于此產(chǎn)品完成數(shù)據(jù)接口開發(fā)。
4)數(shù)據(jù)訪問層
數(shù)據(jù)訪問層是進行邏輯算法與基礎(chǔ)數(shù)據(jù)環(huán)境的數(shù)據(jù)交互層,對各類數(shù)據(jù)庫進行適配,本文應(yīng)用的數(shù)據(jù)庫為XUGU分布式數(shù)據(jù)庫和postgreSQL數(shù)據(jù)庫。為了保證氣象基礎(chǔ)數(shù)據(jù)使用安全,采用ETL從“天擎”數(shù)據(jù)環(huán)境抽取實況數(shù)據(jù)和建站以來的極端降水并加載至“雨在哪”數(shù)據(jù)環(huán)境。
5)基礎(chǔ)設(shè)施層
基礎(chǔ)設(shè)施層是支撐“雨在哪”微信小程序部署的軟硬件環(huán)境,部署在內(nèi)蒙古自治區(qū)氣象信息中心的虛擬化資源池,主要包括WEB服務(wù)器和數(shù)據(jù)庫服務(wù)器。
3 系統(tǒng)功能實現(xiàn)
3.1 “雨在哪”微信小程序基礎(chǔ)框架
微信小程序由邏輯層、視圖層和app文件組成[2]。邏輯層是用JavaScript代碼編寫的js文件,實現(xiàn)頁面邏輯的編寫;視圖層由wxml和wxss組成,是面向用戶的頁面結(jié)構(gòu)和樣式,將邏輯數(shù)據(jù)反映成視圖展現(xiàn)給用戶,同時將用戶請求的事件發(fā)送給邏輯層;app文件是微信小程序的全局配置JSON文件,定義頁面文件的路徑、視圖的大小、網(wǎng)絡(luò)連接超時等信息。
3.2 基于A文件的歷史降水?dāng)?shù)據(jù)集制作
A文件的觀測數(shù)據(jù)由20個地面要素構(gòu)成,每個要素在文件中的排列順序是固定的。20個要素的名稱(指示碼)排列順序如下:氣壓(P)、氣溫(T)、濕球溫度(I)、水汽壓(E)、相對濕度(U)、云量(N)、云高(H)、云狀(C)、能見度(V)、降水量(R)、天氣現(xiàn)象(W)、蒸發(fā)量(L)、積雪(Z)、電線積冰(G)、風(fēng)(F)、淺層地溫(D)、深層地溫(K)、凍土深度(A)、日照時數(shù)(S)、草面(雪面)溫度(B)。
歷史降水?dāng)?shù)據(jù)集的制作程序主要采用的是JAVA語言,遍歷建站以來的A文件資料,逐行讀取A文件內(nèi)容,當(dāng)解析到降水量(R)和天氣現(xiàn)象(W)指示碼后,提取的降水量和天氣現(xiàn)象數(shù)據(jù)制作數(shù)據(jù)產(chǎn)品,數(shù)據(jù)集制作完成后,按照站號、站名、觀測時間、降水量、降水相態(tài)降水經(jīng)由入庫程序?qū)懭氲綌?shù)據(jù)庫,處理流程見圖2:
3.3 基于ETL的歷史實時降水?dāng)?shù)據(jù)產(chǎn)品加工
ETL是Extraction-Transformation-Loading的縮寫,中文名為數(shù)據(jù)抽取、轉(zhuǎn)換和加載[3]。利用ETL技術(shù)將氣象觀測數(shù)據(jù)從天擎數(shù)據(jù)環(huán)境抽取出來,經(jīng)過一系列的融合轉(zhuǎn)換[4],然后加載至“雨在哪”數(shù)據(jù)環(huán)境中,數(shù)據(jù)產(chǎn)品包括實時分鐘降水產(chǎn)品、實時小時降水產(chǎn)品、各個臺站24小時降水滾動統(tǒng)計產(chǎn)品、各盟市24小時降水滾動統(tǒng)計產(chǎn)品、歷史極值統(tǒng)計產(chǎn)品和歷史降水極值排名,主要流程見圖3。
1)數(shù)據(jù)抽取
為了保證數(shù)據(jù)正確性,逐時從天擎數(shù)據(jù)環(huán)境抽取中國地面分鐘資料、中國地面小時資料、中國地面日值資料,分鐘資料抽取近三小時數(shù)據(jù)、小時資料抽取近三天數(shù)據(jù)、日值資料抽取近一個月數(shù)據(jù)。
2)轉(zhuǎn)換加載
為了保證數(shù)據(jù)安全性,分鐘資料保留一天、小時資料保留三天?;谛r降水?dāng)?shù)據(jù),逐時滾動統(tǒng)計01-01、02-02……23-23的近24小時降水累計產(chǎn)品,該產(chǎn)品保存10天;基于近24小時降水累計產(chǎn)品,統(tǒng)計各盟市近24小時降水統(tǒng)計產(chǎn)品,內(nèi)容包括降水站點總數(shù)、降水量級劃分和最大降水及最大小時雨強等信息;基于歷史降水產(chǎn)品和日降水?dāng)?shù)據(jù),統(tǒng)計各個臺站超歷史同期極值或超歷史同期極值的臺站及歷史降水量排名,加載至微信小程序數(shù)據(jù)環(huán)境。
3.4 “雨在哪”微信小程序接口實現(xiàn)
接口開發(fā)采用JAVA語言,開發(fā)框架是HttpServlet的web服務(wù),主要由服務(wù)地址、接口ID、接口參數(shù)和返回格式四部分組成[5]。接口ID的命名能反映接口的基本功能、適應(yīng)的數(shù)據(jù)種類和檢索條件等內(nèi)容,接口命名使用駝峰風(fēng)格(lowerCamelCase);接口參數(shù)類型分成了資料屬性、要素屬性、時間屬性、空間屬性,多個參數(shù)用&拼接;返回數(shù)據(jù)格式為JSON。
服務(wù)接口路徑格式:(https://wapp.tqonline.top/wx-miniprogram-rain-service-interface/preDistribution/接口ID/接口參數(shù)/返回格式)。基于歷史實時統(tǒng)計產(chǎn)品,編寫“雨在哪”微信小程序調(diào)用接口,實現(xiàn)小程序和后臺數(shù)據(jù)的交互,主要接口見表1:
4 系統(tǒng)展示效果
“雨在哪”微信小程序的首頁分為上中下三部分展示[6],上部分是時間段選擇區(qū)域,tab標(biāo)簽切換顯示地圖上不同區(qū)域降水分布信息。中間部分為地圖顯示區(qū)域,展示所有站點降水情況,地圖左下角兩個圖標(biāo),上圖標(biāo)為降水總覽,下圖標(biāo)為重置定位點。下部分為站點信息顯示區(qū)域,默認(rèn)顯示近24小時降水量實況,也可切換顯示分鐘降水量實況;向上滑動顯示歷史降水量前五名出現(xiàn)時間和累計降水量;點擊“降水總覽”按鈕,進入全區(qū)降水總覽頁面,可以查看全區(qū)最大降水量、最大降水強度、超極值降水臺站詳情及降水量級分布情況?!坝暝谀摹蔽⑿判〕绦蛘故疽妶D4:
5 結(jié)束語
“雨在哪”微信小程序完成了歷史實時降水?dāng)?shù)據(jù)產(chǎn)品的制作,為小程序提供了高效的數(shù)據(jù)支撐。應(yīng)用方面不僅滿足了內(nèi)外部消息發(fā)布及溝通,而且降水實況信息可在微信內(nèi)被便捷獲取和傳播,同時結(jié)合訂閱號、企業(yè)號、服務(wù)號使用戶獲得更加便捷的使用體驗。
參考文獻:
[1] 張晨,王奇博.基于微信小程序的氣象保障平臺設(shè)計與實現(xiàn)[J].湖北農(nóng)業(yè)科學(xué),2020,59(S1):443-446.
[2] 劉玉佳.微信“小程序”開發(fā)的系統(tǒng)實現(xiàn)及前景分析[J].信息通信,2017(1):260-261.
[3] 趙建勛.基于Kettle的數(shù)據(jù)整合研究與實踐[J].西安文理學(xué)院學(xué)報(自然科學(xué)版),2020,23(3):28-31,36.
[4] 李莉嬌.基于KETTLE的專項項目庫數(shù)據(jù)同步方法研究[J].信息系統(tǒng)工程,2019(12):34-35.
[5] 何文春,高峰,孫周軍,等.氣象數(shù)據(jù)服務(wù)接口規(guī)范[S].2020.
[6] 吳志霞,葉根梅,甘麗,等.基于Vue.js框架實現(xiàn)移動終端數(shù)據(jù)可視化研究與實踐[J].通化師范學(xué)院學(xué)報,2020,41(6):62-66.
【通聯(lián)編輯:謝媛媛】