王家樂



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