于連慶,胡爭光,薛峰
(國家氣象中心,北京 100081)
近年來,隨著氣象科學(xué)研究和預(yù)報(bào)業(yè)務(wù)的飛速發(fā)展,氣象預(yù)報(bào)預(yù)警與決策服務(wù)對社會經(jīng)濟(jì)發(fā)展發(fā)揮著越來越重要的作用。從業(yè)務(wù)角度上看,以全面推進(jìn)氣象現(xiàn)代化為目標(biāo)的智慧氣象成為當(dāng)前業(yè)務(wù)工作的核心。智慧氣象的發(fā)展對當(dāng)前業(yè)務(wù)系統(tǒng)提出了更高要求,具體表現(xiàn)在兩個(gè)方面。首先,絕大多數(shù)業(yè)務(wù)單位還是使用網(wǎng)站[1]和桌面應(yīng)用[2-3]的方式作為服務(wù)主渠道,在移動(dòng)計(jì)算、社交網(wǎng)絡(luò)方面的探索還比較缺乏,導(dǎo)致整體服務(wù)體系的協(xié)同性和時(shí)效性不夠。其次,針對災(zāi)害性天氣,不能高效、快速地將高時(shí)空分辨率的精細(xì)化預(yù)報(bào)產(chǎn)品轉(zhuǎn)換為面向決策服務(wù)人員的服務(wù)產(chǎn)品。從信息技術(shù)發(fā)展角度上看,近年來移動(dòng)計(jì)算、互聯(lián)網(wǎng)云服務(wù)已經(jīng)逐步取代傳統(tǒng)的桌面計(jì)算機(jī)、工作站、私有服務(wù)器,成為信息發(fā)布與共享的主流方法。國內(nèi)外很多天氣類應(yīng)用均開發(fā)了移動(dòng)版本,例如國外的The Weather Channel、AccuWeather,國內(nèi)的新浪天氣通、墨跡天氣等。因此,開發(fā)基于中央氣象臺預(yù)報(bào)服務(wù)產(chǎn)品的智能移動(dòng)應(yīng)用是一項(xiàng)既非常必要,又具有重大意義的工作。
中央氣象臺決策氣象服務(wù)智能移動(dòng)終端(本文簡稱為“決策服務(wù)App”)是基于云計(jì)算和大數(shù)據(jù)分析技術(shù),集位置服務(wù)、實(shí)況觀測、預(yù)報(bào)預(yù)警、服務(wù)產(chǎn)品展示等多種功能于一體的移動(dòng)應(yīng)用。該應(yīng)用面向國家氣象局、省級氣象局決策服務(wù)領(lǐng)導(dǎo),一線決策服務(wù)人員,以及諸如農(nóng)業(yè)、水利、海洋等相關(guān)行業(yè)人員。
能否提供高質(zhì)量的用戶使用體驗(yàn)是決定一個(gè)軟件系統(tǒng)是否成功的重要因素之一。而用戶行為分析又是提高用戶使用體驗(yàn)的一項(xiàng)重要手段。通過分析用戶行為和程序運(yùn)行狀態(tài),可以幫助開發(fā)者提高軟件的使用效率,了解軟件在用戶群中的被接受程度,甚至發(fā)現(xiàn)信息技術(shù)產(chǎn)業(yè)的發(fā)展趨勢。決策服務(wù)App從開始立項(xiàng)研發(fā)到投入業(yè)務(wù)運(yùn)行,對于用戶的使用情況和意見反饋還沒有一個(gè)全面、深入的了解。盡管嘗試通過舉辦用戶交流研討會議,在App中加入用戶建議提交頁面等方式獲取用戶反饋,但是這些方法只能得到很小一部分用戶的反饋。因此,主動(dòng)獲取用戶使用App的信息成為了解用戶使用習(xí)慣的一種重要方法。
氣象數(shù)據(jù)本質(zhì)上是四維的,即空間三個(gè)維度加上時(shí)間維度。然而大多數(shù)氣象軟件僅提供二維可視化方法。為了彌補(bǔ)缺失的維度,軟件通常提供沿著垂直或者時(shí)間維度進(jìn)行翻頁和動(dòng)畫的功能。氣象工作者也已經(jīng)習(xí)慣觀看這些二維圖表來對數(shù)據(jù)進(jìn)行理解并形成他們的預(yù)報(bào)思路。與技術(shù)成熟且應(yīng)用廣泛的二維可視化方法相比,三維可視化方法的發(fā)展仍然處于早期探索階段。一方面,預(yù)報(bào)員已經(jīng)習(xí)慣使用二維圖形產(chǎn)品,缺乏主動(dòng)接受三維圖形產(chǎn)品的意愿[4]。另一方面,三維可視化領(lǐng)域缺乏大量的能夠發(fā)揮自身優(yōu)勢的顯示方法,沒有比二維方法更好地幫助預(yù)報(bào)員理解數(shù)據(jù)。然而,近年來出現(xiàn)了一些三維可視化軟件,實(shí)現(xiàn)了創(chuàng)新性的可視化方法。例如,美國大學(xué)大氣研究協(xié)會(University Corporation for Atmospheric Research, UCAR)開發(fā)的VAPOR軟件[5]實(shí)現(xiàn)了在普通PC上處理TB級的數(shù)據(jù),并使用體繪制(volume rendering)[6]和域線積分(field-line integration)方法實(shí)現(xiàn)數(shù)據(jù)渲染。德國慕尼黑科技大學(xué)開發(fā)的Met.3D軟件[7-8]利用光線投射等值面方法實(shí)現(xiàn)云層和位勢渦度的分析,從而幫助預(yù)報(bào)員獲取集合預(yù)報(bào)不確定性信息[9]。
本文結(jié)構(gòu)組織如下。第1節(jié)討論決策服務(wù)App的需求分析、架構(gòu)設(shè)計(jì)與技術(shù)路線。第2節(jié)詳細(xì)介紹三維可視化和用戶行為分析技術(shù)。第3節(jié)介紹決策服務(wù)App的主要功能和業(yè)務(wù)應(yīng)用。第4節(jié)總結(jié)全文并討論下一階段的主要工作。
在項(xiàng)目早期,通過與中央氣象臺和省臺決策服務(wù)人員的交流,獲取了用戶的主要需求:
1)以易于操作的方式在手機(jī)上提供業(yè)務(wù)內(nèi)網(wǎng)中的絕大多數(shù)專業(yè)預(yù)報(bào)及決策服務(wù)產(chǎn)品,使用戶能夠隨時(shí)隨地獲取信息;
2)提供了基于位置服務(wù)(location-based service,LBS)[10]的個(gè)性化定制,默認(rèn)給出用戶所在位置的天氣實(shí)況、預(yù)報(bào)預(yù)警和相關(guān)的決策服務(wù)產(chǎn)品;
3)提供消息推送通知功能,讓用戶不會錯(cuò)過任何重要的預(yù)警通知;
4)社交共享功能,方便用戶將產(chǎn)品共享到微博、微信、QQ等社交網(wǎng)絡(luò)上。
決策服務(wù)App依托氣象決策智能平臺,該平臺是集數(shù)據(jù)存儲、后臺服務(wù)、客戶端應(yīng)用在內(nèi)的軟硬件一體化計(jì)算環(huán)境。
1.2.1 數(shù)據(jù)源
圖1給出了氣象決策智能平臺的系統(tǒng)架構(gòu)。系統(tǒng)使用的數(shù)據(jù)有三個(gè)來源:產(chǎn)品庫、業(yè)務(wù)內(nèi)網(wǎng)和臺風(fēng)網(wǎng)。數(shù)據(jù)中的圖片類文件通過CDN(content delivery network)網(wǎng)絡(luò)[11]加快下載速度以提高客戶端響應(yīng)效率。產(chǎn)品庫的數(shù)據(jù)文件通過FTP主動(dòng)推送到服務(wù)器端的數(shù)據(jù)存儲目錄下。與之相反,業(yè)務(wù)內(nèi)網(wǎng)和臺風(fēng)網(wǎng)的數(shù)據(jù)通過服務(wù)器端的數(shù)據(jù)下載作業(yè)抓到服務(wù)器上,這一數(shù)據(jù)采集工作每分鐘進(jìn)行一次。所有數(shù)據(jù)經(jīng)過預(yù)處理后存儲在服務(wù)器磁盤上,最新時(shí)次或者訪問最頻繁的數(shù)據(jù)存放在Redis緩存中以加快客戶端訪問速度。
1.2.2 服務(wù)器
服務(wù)器端包括以下四個(gè)功能模塊:
1)管理網(wǎng)站。主要面向系統(tǒng)運(yùn)行維護(hù)人員,提供了App發(fā)布管理、用戶賬號管理、用戶角色管理、系統(tǒng)運(yùn)行監(jiān)控和用戶行為分析結(jié)果展示功能。
2)Web接口。這是一個(gè)運(yùn)行在Tomcat容器中的Java Servlet進(jìn)程[12],它采用REST通信接口[13],為手機(jī)客戶端提供了數(shù)據(jù)請求響應(yīng)、身份認(rèn)證、訪問控制、版本更新檢查、App安裝包下載、App日志管理、反饋意見收集等功能。
3)消息通知。該服務(wù)將重大天氣預(yù)報(bào)、災(zāi)情預(yù)警的服務(wù)產(chǎn)品以消息通知的方式發(fā)送到用戶的手機(jī)上。
4)數(shù)據(jù)下載、預(yù)處理和存儲程序。此程序?qū)臄?shù)據(jù)源獲取的數(shù)據(jù)進(jìn)行處理,然后保存到磁盤文件系統(tǒng)和MySQL數(shù)據(jù)庫中。
1.2.3 手機(jī)App
手機(jī)App即決策服務(wù)App,面向最終用戶。對于數(shù)據(jù)量較大的圖片文件,決策服務(wù)App通過CDN網(wǎng)絡(luò)下載并進(jìn)行顯示,其余數(shù)據(jù)通過REST接口從服務(wù)器獲取。
圖1 氣象決策智能平臺的架構(gòu)設(shè)計(jì)Fig.1 Architecture design of intelligent platform for meteorological decision-making
如圖2所示,氣象決策智能平臺的功能模塊采用層次化的組織方式,盡量減少模塊之間的耦合性。
這里按照從下到上的順序進(jìn)行討論。最底層是硬件網(wǎng)絡(luò)和系統(tǒng)層,氣象決策智能平臺安裝在一臺配置為Intel Xeon E5-2682、32GB內(nèi)存,運(yùn)行Red Hat Enterprise Linux 7.4操作系統(tǒng)的服務(wù)器計(jì)算機(jī)上。該計(jì)算機(jī)部署在阿里云上,使用阿里云的磁盤存儲及網(wǎng)絡(luò)環(huán)境。次底層為數(shù)據(jù)庫和中間件層,包括Redis數(shù)據(jù)緩存、MySQL數(shù)據(jù)庫、Apache Tomcat應(yīng)用服務(wù)器、Apache httpd Web服務(wù)器等服務(wù)中間件,提供基礎(chǔ)的緩存服務(wù)、數(shù)據(jù)存儲服務(wù)及Web應(yīng)用服務(wù)等。此外,為實(shí)時(shí)監(jiān)測平臺的運(yùn)行狀態(tài),還編寫了平臺監(jiān)控模塊。第三層為服務(wù)層,為了平臺的通用性和可擴(kuò)展性,平臺將與具體業(yè)務(wù)無關(guān)的功能實(shí)現(xiàn)為相互獨(dú)立的模塊,封裝在服務(wù)層中。此層提供的功能包括作業(yè)調(diào)度,數(shù)據(jù)采集、處理與存儲,數(shù)據(jù)緩存,消息通知,日志服務(wù)。第四層為應(yīng)用層,基于通用的服務(wù)層組件,經(jīng)過業(yè)務(wù)化封裝,形成可對外提供業(yè)務(wù)化服務(wù)的管理網(wǎng)站和Web數(shù)據(jù)接口。應(yīng)用監(jiān)控跨越服務(wù)層和應(yīng)用層,監(jiān)測這兩層中的服務(wù)進(jìn)程是否正常。與之相比,平臺監(jiān)控檢查操作系統(tǒng)和中間件服務(wù)進(jìn)程的運(yùn)行狀態(tài)。最上面一層是客戶端,目前包括運(yùn)行在瀏覽器中的管理網(wǎng)站和運(yùn)行在智能手機(jī)上的決策服務(wù)App。
圖2 氣象決策智能平臺的功能模塊設(shè)計(jì)Fig.2 Stratified design of function modules of intelligent platform for meteorological decision-making
服務(wù)器端程序均使用Java語言開發(fā)。面向客戶端的服務(wù)接口通過REST協(xié)議,使用函數(shù)工具庫Jersey和Spring實(shí)現(xiàn)接口功能。運(yùn)行Web應(yīng)用的容器采用Apache Tomcat。數(shù)據(jù)存儲采用MySQL關(guān)系數(shù)據(jù)庫和文件系統(tǒng)兩種方式。為提高服務(wù)器端響應(yīng)速度,使用Redis中間件實(shí)現(xiàn)數(shù)據(jù)庫緩存。
客戶端以手機(jī)App的形式實(shí)現(xiàn),目前支持iOS和Android兩種操作系統(tǒng)。程序內(nèi)均內(nèi)置OAuth身份認(rèn)證功能以保證數(shù)據(jù)安全。涉及地圖和圖層的圖形渲染功能通過內(nèi)部獨(dú)立開發(fā)的基于WebGIS和OpenGL ES技術(shù)的渲染引擎實(shí)現(xiàn)。天氣預(yù)報(bào)和決策服務(wù)產(chǎn)品頁面采用HTML5技術(shù)進(jìn)行顯示。面向iOS平臺的手機(jī)App采用Objective C++與C++兩種語言混合開發(fā);面向Android平臺的手機(jī)App采用Java與C++兩種語言混合開發(fā)。
目前在iOS和Android平臺上,諸如虛擬地球、游戲這樣的圖形渲染密集型應(yīng)用都使用OpenGL ES實(shí)現(xiàn)數(shù)據(jù)可視化功能,以利用其提供的GPU硬件加速技術(shù)提高圖形渲染效率。針對決策服務(wù)App的自身特點(diǎn),實(shí)現(xiàn)了OpenGL ES[14]和HTML5 canvas WebGL[15]雙核渲染引擎,即將地圖和在地圖框架中顯示的圖層(如降水落區(qū)、雷達(dá)拼圖、衛(wèi)星云圖等)放在使用OpenGL ES渲染的視圖中;對于城市天氣預(yù)報(bào)、文字服務(wù)產(chǎn)品、圖表、臺風(fēng)網(wǎng)等放在HTML5頁面中。
在實(shí)現(xiàn)圖形渲染功能時(shí),決策服務(wù)App采用了二三維一體化方法,這一設(shè)計(jì)的考慮因素有以下三點(diǎn):首先,預(yù)報(bào)員已經(jīng)非常熟悉二維圖形產(chǎn)品,而且一些相對保守的用戶只相信傳統(tǒng)的二維方法,不愿意嘗試三維方法;其次,很多業(yè)務(wù)環(huán)境下的預(yù)報(bào)產(chǎn)品是通過二維可視化方法制作的,因此必須保留已有的二維可視化方法;第三,全新的三維可視化渲染效果能夠?yàn)橛脩魩砹钊伺d奮的使用體驗(yàn)。
根據(jù)上述設(shè)計(jì),二三維一體化圖形渲染引擎的開發(fā),是在已有二維顯示技術(shù)的基礎(chǔ)上,開發(fā)全新的三維渲染方法,包括體繪制和等值面、光照與陰影、空間物體相交檢測等。此外,還特別重視二維和三維渲染之間的平滑過渡,實(shí)現(xiàn)了以下創(chuàng)新: 1)二維和三維視圖可以在應(yīng)用程序運(yùn)行期間動(dòng)態(tài)切換,這樣就允許用戶在熟悉的二維環(huán)境中保持工作效率,同時(shí)在他們感興趣的時(shí)候去嘗試三維可視化方法;2)實(shí)現(xiàn)所有圖形物體在二維和三維視圖下的渲染結(jié)果一致,同時(shí)新的三維圖形表示(如體積渲染)在二維視圖下有對應(yīng)的表示方式。
圖3示例了2019年9月12日00時(shí)(UTC)歐洲中期天氣預(yù)報(bào)中心(ECMWF)高分辨率(High Resolution,HRES)模式地面氣溫場在決策服務(wù)App中的三維(圖3a)和二維(圖3b)顯示效果。用戶通過點(diǎn)擊視圖中左上角的維度切換按鈕在二維和三維視圖之間切換。溫度場以色斑圖形式呈現(xiàn),且在兩種維度下顯示效果一致。
圖3 歐洲中期天氣預(yù)報(bào)中心高分辨率模式地面氣溫預(yù)報(bào)場在決策服務(wù)App中的三維(a)和二維(b)顯示效果Fig.3 Decision-Making Service App’s 3D (a) and 2D (b) visual effect of surface temperature forecast by ECMWF HRES (High Resolution) model
用戶行為分析功能的實(shí)現(xiàn)是一個(gè)從后臺數(shù)據(jù)接收、處理、存儲、統(tǒng)計(jì)到前臺數(shù)據(jù)收集、發(fā)送、結(jié)果展示的一體化集成過程。
2.2.1 創(chuàng)建用戶行為數(shù)據(jù)庫
在關(guān)系數(shù)據(jù)庫中創(chuàng)建多個(gè)表,包括用戶信息數(shù)據(jù)表(記錄用戶信息如年齡、性別、國家地區(qū)、使用的硬件設(shè)備、網(wǎng)絡(luò)環(huán)境等)、功能操作數(shù)據(jù)表(記錄用戶一次會話時(shí)進(jìn)行的所有操作)、程序運(yùn)行信息表(記錄用戶使用時(shí)間、異常退出時(shí)的錯(cuò)誤消息和代碼運(yùn)行堆棧數(shù)據(jù)等)。
2.2.2 收集、發(fā)送用戶數(shù)據(jù)
為緩解服務(wù)器壓力,手機(jī)App應(yīng)盡量減少向服務(wù)器發(fā)送數(shù)據(jù)的次數(shù)。當(dāng)用戶終端收集到一條記錄后,應(yīng)該保存到緩沖區(qū)中,在經(jīng)過一段時(shí)間(如10 min)或者收集到足夠數(shù)目(如100條)的記錄后,再向服務(wù)器發(fā)送。當(dāng)然,在用戶退出程序之前,或者檢測到程序即將異常退出時(shí)應(yīng)立即向服務(wù)器發(fā)送數(shù)據(jù)。
客戶端程序中表示用戶行為數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)應(yīng)該與用戶行為數(shù)據(jù)庫中數(shù)據(jù)表的字段相一致。此外還要注意不同語言(關(guān)系數(shù)據(jù)庫,Android系統(tǒng)中的Java, 網(wǎng)頁使用的JavaScript和iPhone系統(tǒng)的Objective-C)之間數(shù)據(jù)類型的對應(yīng)問題和字符編碼問題。
手機(jī)App在征得用戶同意的情況下將收集以下數(shù)據(jù):
1)用戶個(gè)人信息,包括手機(jī)號碼、年齡、性別、國家地區(qū)、工作單位、使用的硬件設(shè)備、網(wǎng)絡(luò)環(huán)境(WiFi/4G)等。
2)注冊用戶統(tǒng)計(jì)。系統(tǒng)維護(hù)一個(gè)用戶信息數(shù)據(jù)表。對于一個(gè)注冊用戶的登錄,終端應(yīng)從服務(wù)器上獲取表示該用戶的標(biāo)識(identifier)。這樣每次向服務(wù)器發(fā)送信息時(shí)都包含這個(gè)用戶標(biāo)識。
3)用戶登陸App的次數(shù)。這一指標(biāo)反映了程序被使用的程度。通常以一天作為一次度量周期。
4)程序功能使用情況。程序應(yīng)記錄用戶每次操作使用了哪個(gè)功能。從這些信息可以知道用戶關(guān)注哪些功能,以及他的使用習(xí)慣。
5)每次會話使用時(shí)間。一次會話(session)是指從用戶登錄App開始,到退出App為止這一過程所經(jīng)過的時(shí)間。
6)應(yīng)用異常退出時(shí)的運(yùn)行狀態(tài)數(shù)據(jù)和發(fā)生次數(shù)。App應(yīng)該提供捕獲程序崩潰時(shí)的運(yùn)行數(shù)據(jù)的功能,將其提交到服務(wù)器以幫助開發(fā)人員改進(jìn)代碼質(zhì)量。
2.2.3 接收、處理、保存用戶數(shù)據(jù)
接收來自客戶端發(fā)來的數(shù)據(jù),并將這些信息處理后保存到用戶行為數(shù)據(jù)庫中。對用戶行為數(shù)據(jù)進(jìn)行統(tǒng)計(jì)計(jì)算,并以一天為周期進(jìn)行更新。
2.2.4 用戶行為分析結(jié)果展示系統(tǒng)
用戶行為分析結(jié)果展示系統(tǒng)使用戶通過瀏覽器查看用戶行為分析結(jié)果。該系統(tǒng)提供了以下功能:
1)管理員登錄驗(yàn)證。展示系統(tǒng)是面向項(xiàng)目管理人員的,因此需要提供用戶登錄驗(yàn)證功能,以保證只有合法的用戶能夠登錄系統(tǒng)。
2)注冊用戶數(shù)量統(tǒng)計(jì)。以直方圖、折線圖、地圖或表格的形式顯示注冊用戶的數(shù)目。提供的選項(xiàng)包括時(shí)間范圍,時(shí)間間隔(天、星期、月、年),顯示方式(直方圖、折線圖、地圖、表格)。
3)用戶登錄、使用次數(shù)統(tǒng)計(jì)。以直方圖、折線圖或表格的形式顯示用戶登錄的數(shù)目。提供的選項(xiàng)包括時(shí)間范圍,時(shí)間間隔(天、星期、月、年),顯示方式(直方圖、折線圖、表格)。
4)用戶屬性統(tǒng)計(jì),包括用戶數(shù)量的國家地區(qū)分布、設(shè)備和系統(tǒng)信息、年齡、性別。
5)程序功能使用情況。以直方圖或表格的形式顯示程序各個(gè)功能的使用次數(shù)。提供的選項(xiàng)包括時(shí)間范圍,顯示方式(直方圖、表格)。
6)會話時(shí)間,包括平均會話時(shí)間,最長會話時(shí)間,最短會話時(shí)間。提供的選項(xiàng)包括時(shí)間范圍,時(shí)間間隔(天、星期、月、年),顯示方式(直方圖、折線圖、表格)。
7)異常退出信息。以直方圖、折線圖的形式顯示異常退出的數(shù)目。提供的選項(xiàng)包括時(shí)間范圍,時(shí)間間隔(天、星期、月、年),顯示方式(直方圖、折線圖)。點(diǎn)擊直方圖中的一個(gè)豎條或者折線圖中的一個(gè)頂點(diǎn),導(dǎo)航到下一級頁面。該頁面以表格的形式顯示所有的異常信息。
圖4a以地圖的形式給出了最近一周的用戶登錄次數(shù)統(tǒng)計(jì),使用彈出式窗口顯示鼠標(biāo)光標(biāo)處所對應(yīng)省市的用戶登錄次數(shù)。圖4b顯示了程序功能使用情況統(tǒng)計(jì)數(shù)據(jù),從圖中可以看出,實(shí)況降水、影響分析和智能網(wǎng)格是最受用戶歡迎的三個(gè)欄目。
圖4 用戶登錄次數(shù)統(tǒng)計(jì)(a)與功能使用次數(shù)統(tǒng)計(jì)(b)Fig.4 Statistics of user login (a) and function use (b)
決策服務(wù)智能平臺在設(shè)計(jì)開發(fā)過程中,采取了以下幾個(gè)方面的措施來保證平臺的安全。
2.3.1 身份認(rèn)證
身份認(rèn)證基于手機(jī)號白名單。用戶申請并得到批準(zhǔn)后,由管理員將用戶信息錄入到用戶信息數(shù)據(jù)庫中。當(dāng)用戶第一次登錄或者退出并再次登錄時(shí),需要提供短信驗(yàn)證碼。對通過認(rèn)證的用戶,系統(tǒng)會分配一個(gè)認(rèn)證令牌(OAuth token)到該用戶的手機(jī)App。隨后用戶所有的數(shù)據(jù)訪問請求都需要這個(gè)令牌進(jìn)行權(quán)限控制。
2.3.2 數(shù)據(jù)安全
為確保數(shù)據(jù)傳輸中的安全性,采取了以下三種措施:
1)網(wǎng)絡(luò)層HTTPS加密。為了確保數(shù)據(jù)傳輸過程的安全性,手機(jī)端與服務(wù)器端的所有數(shù)據(jù)訪問接口都通過HTTPS協(xié)議進(jìn)行傳輸。
2)應(yīng)用層DES加密。除了網(wǎng)絡(luò)層通過HTTPS協(xié)議傳輸數(shù)據(jù)外,在數(shù)據(jù)傳輸過程中,還在應(yīng)用層通過DES算法進(jìn)行了二次加密。并且加密密鑰在服務(wù)器端動(dòng)態(tài)管理,可隨時(shí)通過服務(wù)器端來更新加密密鑰。
3)解密后的數(shù)據(jù)直接顯示,不落地。從服務(wù)器端傳到客戶端的數(shù)據(jù)是經(jīng)過DES加密的,在手機(jī)端接收到加密數(shù)據(jù)后,需經(jīng)過解密后在界面上進(jìn)行顯示。為了確保數(shù)據(jù)安全,解密后的數(shù)據(jù)只暫時(shí)記錄在手機(jī)內(nèi)存里,不將任何解密后的數(shù)據(jù)存儲在手機(jī)存儲設(shè)備上,確保數(shù)據(jù)不會被截取泄漏。
2.3.3 代碼混淆加密
Java是一種解釋性語言,即在Java程序執(zhí)行期間,Java源代碼對應(yīng)的字節(jié)碼在虛擬機(jī)中被解釋執(zhí)行。而字節(jié)碼非常容易被反編譯。通過反編譯結(jié)果,系統(tǒng)入侵者能夠看出程序的所有邏輯、與服務(wù)器端的通信方式、加解密算法、業(yè)務(wù)流程、軟鍵盤技術(shù)實(shí)現(xiàn)等,從而利用這些信息竊取客戶端的敏感數(shù)據(jù);繞過業(yè)務(wù)安全認(rèn)證流程,直接篡改用戶賬號信息;對服務(wù)器接口發(fā)起攻擊等。決策服務(wù)App的Android版本使用Java開發(fā),為避免上述安全隱患,開發(fā)人員對Android版本進(jìn)行了代碼混淆,極大提高了反編譯難度。
3.1.1 客戶端功能
決策服務(wù)App手機(jī)客戶端提供四大類專業(yè)化欄目,涵蓋了上百種專業(yè)預(yù)報(bào)及決策服務(wù)產(chǎn)品。四個(gè)欄目分別是:
1)精細(xì)化實(shí)況預(yù)報(bào)產(chǎn)品。在智能網(wǎng)格天氣預(yù)報(bào)服務(wù)的支持下,提供近3 000個(gè)國內(nèi)外城市的主要天氣要素(天氣現(xiàn)象、氣溫、氣壓、濕度、空氣質(zhì)量等)的實(shí)況和預(yù)報(bào)。預(yù)報(bào)時(shí)效長達(dá)30 d,0~24 h實(shí)現(xiàn)逐小時(shí)預(yù)報(bào),前10 d實(shí)現(xiàn)逐3 h預(yù)報(bào)。此外,采用基于位置服務(wù)(LBS)技術(shù),為用戶提供精確到街道級別地址的實(shí)況和預(yù)報(bào)。用戶還可以把感興趣的位置、城市、自動(dòng)氣象站添加到收藏列表中。
2)決策服務(wù)產(chǎn)品,包括天氣公報(bào)、中期天氣預(yù)報(bào)、國外天氣預(yù)報(bào)、兩辦刊物、災(zāi)害性天氣預(yù)警、臺風(fēng)快訊等。
3)實(shí)況監(jiān)測產(chǎn)品,包括降水、氣溫、環(huán)境實(shí)況、雷達(dá)、風(fēng)云四號云圖、強(qiáng)天氣實(shí)況和臺風(fēng)路徑。降水和氣溫包括了國家級地面氣象觀測站和區(qū)域氣象觀測站共8 996個(gè)。自動(dòng)氣象站降水量按照1/6/24/48/72五個(gè)預(yù)設(shè)時(shí)段累加,用戶還可以自定義累加起止時(shí)間以實(shí)現(xiàn)任意時(shí)段累加。累加結(jié)果以排序列表形式展示,點(diǎn)擊列表中任意一項(xiàng)轉(zhuǎn)到相應(yīng)站點(diǎn)的降水時(shí)間序列。氣溫包括逐小時(shí)氣溫、最高氣溫、最低氣溫和24 h變溫。環(huán)境實(shí)況覆蓋了全國1 459個(gè)站點(diǎn)每小時(shí)的環(huán)境數(shù)據(jù),包括AQI、PM2.5、PM10。雷達(dá)圖像包括全國拼圖、區(qū)域拼圖、單站雷達(dá)圖像三種。強(qiáng)對流天氣監(jiān)測包括短時(shí)強(qiáng)降水、雷雨大風(fēng)、冰雹、閃電。
4)預(yù)警預(yù)報(bào)產(chǎn)品,包括智能網(wǎng)格預(yù)報(bào)、災(zāi)情影響分析、24~168 h定量降水預(yù)報(bào)(QPF)、環(huán)境氣象(霧、霾、沙塵)預(yù)報(bào)、強(qiáng)天氣(短時(shí)強(qiáng)降水預(yù)報(bào)、強(qiáng)對流天氣預(yù)警、大風(fēng)降溫)預(yù)報(bào)、預(yù)警信號。
除上述四個(gè)欄目外,決策服務(wù)App還提供了針對手機(jī)和平板電腦等移動(dòng)計(jì)算設(shè)備的特色功能:
1)支持Android和iOS操作系統(tǒng),兩個(gè)版本在交互界面、操作方式、功能上完全一致。
2)災(zāi)害性天氣推送提醒功能。它實(shí)現(xiàn)了強(qiáng)降水、冰雹、寒潮、大風(fēng)降溫、臺風(fēng)等災(zāi)害性事件的消息推送通知,讓決策用戶及時(shí)收到相關(guān)信息。
3)對于災(zāi)害性天氣過程,在首頁上以數(shù)字提醒方式給出事件的個(gè)數(shù),用戶點(diǎn)擊數(shù)字提醒消息就可以查看詳細(xì)內(nèi)容。
4)提供社交分享功能。用戶可以將所有產(chǎn)品分享到諸如微信、QQ、微博等社交網(wǎng)絡(luò)上。
3.1.2 服務(wù)器端功能
決策服務(wù)App服務(wù)器端提供以下功能:
1)面向客戶端的Web應(yīng)用服務(wù)器。通過引入大數(shù)據(jù)計(jì)算處理和分布式微服務(wù)框架技術(shù),整合了中央氣象臺各類天氣預(yù)報(bào)和服務(wù)產(chǎn)品,實(shí)現(xiàn)了各類數(shù)據(jù)和預(yù)報(bào)服務(wù)產(chǎn)品的存取接口。
2)用戶行為分析。在用戶許可的前提下,對從手機(jī)App傳到服務(wù)器的信息進(jìn)行大數(shù)據(jù)分析,找出用戶的操作使用習(xí)慣、感興趣的產(chǎn)品,以及程序的運(yùn)行狀態(tài)。
3)用戶數(shù)據(jù)庫。它主要為用戶提供個(gè)性化定制功能,即根據(jù)用戶角色提供定制的服務(wù)產(chǎn)品、消息通知等。
4)數(shù)據(jù)緩存。為提高服務(wù)器響應(yīng)速度,為客戶端提供流暢的使用體驗(yàn),系統(tǒng)采用了多級數(shù)據(jù)緩存策略。對于數(shù)據(jù)量較小但是存取非常頻繁的數(shù)據(jù)使用HashMap結(jié)構(gòu)將數(shù)據(jù)存儲在系統(tǒng)內(nèi)存中,作為一級緩存。對數(shù)據(jù)量略大但是不需要實(shí)時(shí)計(jì)算處理的數(shù)據(jù)使用Redis進(jìn)行維護(hù),實(shí)現(xiàn)二級緩存。對于數(shù)據(jù)量非常大的靜態(tài)數(shù)據(jù),如地圖瓦片文件、預(yù)先制作好的氣象要素格點(diǎn)場的填色等值線圖片文件等發(fā)布到CDN上。
3.2.1 特色應(yīng)用
決策服務(wù)App已融入到國家級與全國各省臺實(shí)時(shí)決策氣象服務(wù)業(yè)務(wù)中,用戶量超過450人,平均每天服務(wù)提供次數(shù)約0.5萬次,高峰時(shí)達(dá)到10萬次。此外,決策服務(wù)App提供了一些獨(dú)有的特色功能,包括定量降水預(yù)報(bào)、災(zāi)情預(yù)警影響分析、重大活動(dòng)的專項(xiàng)保障。
對于定量降水預(yù)報(bào),決策服務(wù)App支持靈活多樣的站點(diǎn)信息顯示,如顯示站點(diǎn)詳細(xì)數(shù)據(jù)的信息框(圖5a)、自定義累加時(shí)段(圖5b)和單站累加時(shí)段內(nèi)逐小時(shí)降水量(圖5c)。
災(zāi)情預(yù)警影響分析功能面向公眾服務(wù),給出了預(yù)警的主要內(nèi)容(圖6a)、受影響區(qū)域內(nèi)所有城市的國民生產(chǎn)總值(GDP)和人口數(shù)量、重要目標(biāo)物(包括水庫、機(jī)場和降水落區(qū),如圖6b所示),以及自動(dòng)氣象觀測站的實(shí)況數(shù)據(jù)。
圖5 決策服務(wù)App對定量降水預(yù)報(bào)業(yè)務(wù)的支持(a.顯示站點(diǎn)詳細(xì)數(shù)據(jù)的信息框,b.自定義累加時(shí)段,c.單站累加時(shí)段內(nèi)逐小時(shí)降水量)Fig.5 Support of Decision-Making Service App for quantified precipitation forecast (a. message box for detailed data of a station, b. user-defined time frame for cumulative precipitation, c. hourly precipitation in cumulative time fame at a single station)
圖6 面向公眾服務(wù)的災(zāi)情預(yù)警影響分析功能(a.災(zāi)情預(yù)警的主要內(nèi)容和人口經(jīng)濟(jì)影響,b.受影響區(qū)域內(nèi)重要目標(biāo)物與自動(dòng)氣象觀測站實(shí)況數(shù)據(jù))Fig.6 Disaster warning and influence analysis offered for general public (a. main content of disaster warning and influence on population and economy, b. important target and real observations in affected area)
國家級重大政治、經(jīng)濟(jì)活動(dòng)(如國際會議、大型文體活動(dòng)等),以及嚴(yán)重的山洪、地震等突發(fā)自然災(zāi)害的專項(xiàng)保障服務(wù)是中國氣象局業(yè)務(wù)工作中的重中之重。為了給決策服務(wù)人員提供及時(shí)、準(zhǔn)確的服務(wù)材料,決策服務(wù)App開發(fā)了專項(xiàng)保障模塊,其設(shè)計(jì)思路是將事件發(fā)生地區(qū)內(nèi)的主要城市或者觀測站的天氣預(yù)報(bào)、實(shí)況監(jiān)測以及雷達(dá)圖像這三個(gè)決策服務(wù)人員最為關(guān)心的材料放到一個(gè)頁面中,以方便用戶快速、集中查看感興趣的產(chǎn)品,而不必從首頁進(jìn)入到各個(gè)模塊查看。專項(xiàng)保障模塊在2016年的杭州G20峰會、2017年的廈門金磚國家峰會、2019年的新中國成立70周年十一國慶等活動(dòng)的氣象服務(wù)保障中發(fā)揮了良好的效果。
3.2.2 專業(yè)版本建設(shè)
決策服務(wù)App采用模塊化設(shè)計(jì)以提高系統(tǒng)的可擴(kuò)展性,目的是在開發(fā)有特殊需求的專業(yè)版本時(shí)能夠盡可能多地復(fù)用已有功能。南水北調(diào)中線天氣App(以下簡稱為“中線天氣App”)的開發(fā)證明了架構(gòu)設(shè)計(jì)達(dá)到了預(yù)期目標(biāo)。
中線天氣App是由中線干線管理局與國家氣象中心聯(lián)合開發(fā),為確保南水北調(diào)中線工程安全度汛和平穩(wěn)運(yùn)行,特別為及時(shí)應(yīng)對汛期山洪、冬季冰塞等影響輸水安全的險(xiǎn)情,提供專業(yè)準(zhǔn)確的氣象服務(wù)支持。該應(yīng)用針對水利業(yè)務(wù)的特殊性,提供了一些專業(yè)性功能,包括3 000多個(gè)城市和65個(gè)節(jié)制閘的精細(xì)化智能網(wǎng)格預(yù)報(bào)(圖7a)、定制的中線流域地圖(圖7b)等。
圖7 南水北調(diào)中線天氣App提供的針對水利業(yè)務(wù)特殊性的大量專業(yè)性功能(a.精細(xì)化智能網(wǎng)格預(yù)報(bào), b.定制的中線流域地圖)Fig.7 Professional function for the particularity of water conservancy provided by Weather Application for the middle route of the South-to-North Water Diversion Project (a. refined smart grid forecast, b. customized basin map of middle route)
決策服務(wù)App作為國家氣象中心現(xiàn)代化預(yù)報(bào)業(yè)務(wù)信息支撐平臺的重要組成部分,是基于移動(dòng)互聯(lián)網(wǎng)、大數(shù)據(jù)分析技術(shù)建設(shè)的、面向決策服務(wù)領(lǐng)導(dǎo)及一線決策服務(wù)人員的移動(dòng)智能終端。決策服務(wù)App能夠?yàn)閲壹?、省級用戶提供?shí)時(shí)的、基于位置服務(wù)的實(shí)況監(jiān)測、天氣預(yù)報(bào)、決策服務(wù)專報(bào)等上百種專業(yè)預(yù)報(bào)及決策服務(wù)產(chǎn)品,將決策服務(wù)業(yè)務(wù)延伸至社交網(wǎng)絡(luò)和移動(dòng)計(jì)算領(lǐng)域。
項(xiàng)目開發(fā)過程中在關(guān)鍵技術(shù)的攻堅(jiān)中取得了一些收獲,使得決策服務(wù)App相比同類應(yīng)用具備了一些先進(jìn)的技術(shù)。1)實(shí)現(xiàn)了二三維一體化圖形渲染引擎,在保留傳統(tǒng)二維可視化方法的基礎(chǔ)上,引入新的三維顯示技術(shù)幫助預(yù)報(bào)員更好地理解數(shù)據(jù);2)完成了用戶行為分析功能,通過利用大數(shù)據(jù)分析技術(shù),了解用戶的使用習(xí)慣和程序運(yùn)行狀況,從而有助于個(gè)性化定制并提高產(chǎn)品質(zhì)量;3)通過身份認(rèn)證、數(shù)據(jù)傳輸加密、代碼混淆等方法提高了程序的安全性,降低了被攻擊隱患。
決策服務(wù)App在以下三個(gè)方面存在不足之處,這也是今后需要改進(jìn)的地方。首先,擴(kuò)展二三維一體化圖形渲染引擎的功能,支持諸如等值線、風(fēng)場粒子動(dòng)畫、流線、特殊符號字符等更多數(shù)據(jù)可視化方法,從而更好地支持?jǐn)?shù)值模式預(yù)報(bào)場,衛(wèi)星云圖,雷達(dá)等預(yù)報(bào)員關(guān)心的產(chǎn)品。第二,進(jìn)一步開發(fā)大數(shù)據(jù)用戶行為分析功能。目前用戶行為分析功能能夠收集信息并進(jìn)行統(tǒng)計(jì)處理,但是未對統(tǒng)計(jì)結(jié)果進(jìn)行深入分析。今后,將對統(tǒng)計(jì)結(jié)果進(jìn)行特征提取,從而實(shí)現(xiàn)個(gè)性化和智能推送。第三,改進(jìn)細(xì)節(jié),提高用戶使用體驗(yàn)??傊瑲庀鬀Q策服務(wù)App的升級將致力于提高用戶的工作效率,更加智能高效地為決策領(lǐng)導(dǎo)和決策服務(wù)人員提供準(zhǔn)確的決策服務(wù)材料和產(chǎn)品。