王新秀,楊黎黎,吉曹翔,于 璐,葛 林
(沈陽(yáng)市氣象局,遼寧 沈陽(yáng) 110168)
目前沈陽(yáng)地區(qū)共有250個(gè)氣象自動(dòng)觀測(cè)站,氣象自動(dòng)觀測(cè)站提供所在地的氣溫、降水量、風(fēng)向、風(fēng)速、氣壓、濕度等要素的實(shí)況信息,是預(yù)報(bào)預(yù)警業(yè)務(wù)不可或缺的材料。因此其數(shù)據(jù)的準(zhǔn)確性和及時(shí)性是自動(dòng)站維護(hù)、監(jiān)測(cè)人員必須保障的。為有效支撐氣象自動(dòng)觀測(cè)站正常運(yùn)行,提高中小尺度災(zāi)害性天氣監(jiān)測(cè)預(yù)警和氣象災(zāi)害預(yù)警信息發(fā)布能力,滿足氣象防災(zāi)減災(zāi)需求,信息反饋、交互、考核及評(píng)估等工作,加強(qiáng)科學(xué)管理水平,提高維護(hù)時(shí)效,亟需建立氣象自動(dòng)觀測(cè)站管理監(jiān)控系統(tǒng)。
國(guó)內(nèi)外氣象科研人員在氣象與互聯(lián)網(wǎng)科技的結(jié)合方面做了大量研究。錢崢等[1]基于Android 的移動(dòng)氣象信息服務(wù)系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn),能夠隨時(shí)隨地獲取到氣象信息;帥紅等[2]基于Android的氣象站信息查詢及控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn),在移動(dòng)客戶端能夠隨時(shí)查詢氣象觀測(cè)站相關(guān)數(shù)據(jù)信息;傅仁壯等[3]基于Android的決策氣象服務(wù)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn),在手機(jī)端獲取決策氣象服務(wù)信息取得了較好的應(yīng)用;G.Crowley[4]開發(fā)了一款基于Android系統(tǒng)的展示空間氣象數(shù)據(jù)的軟件;L.Herrera在iPhone[5]平臺(tái)實(shí)現(xiàn)了實(shí)時(shí)瀏覽自動(dòng)氣象站數(shù)據(jù)的功能。借鑒前人的研究成果,將基于Android系統(tǒng)的手機(jī)App作為課題的研究對(duì)象,實(shí)現(xiàn)氣象自動(dòng)觀測(cè)站在手機(jī)客戶端的管理系統(tǒng)。
系統(tǒng)由Android手機(jī)App和Web服務(wù)器組件組成,系統(tǒng)結(jié)構(gòu)如圖1所示。手機(jī)App是系統(tǒng)的用戶訪問接口。服務(wù)器組件是系統(tǒng)的核心服務(wù)層,由4個(gè)子模塊組成,分別是數(shù)據(jù)智能采集分析、設(shè)備故障報(bào)警與反饋、日常維護(hù)與管理、服務(wù)質(zhì)量考核。數(shù)據(jù)智能采集分析模塊的數(shù)據(jù)源包括氣象自動(dòng)觀測(cè)站數(shù)據(jù)庫(kù)、CIMISS系統(tǒng)和省局考核數(shù)據(jù)。設(shè)備故障報(bào)警與反饋模塊將氣象自動(dòng)觀測(cè)站的信息發(fā)送到手機(jī)App,手機(jī)App通過百度地圖提供位置服務(wù),維護(hù)人員通過手機(jī)App反饋維修結(jié)果并上傳照片。日常維護(hù)與管理模塊可制定氣象自動(dòng)觀測(cè)站維護(hù)計(jì)劃并提醒維護(hù)人員按計(jì)劃完成維護(hù)任務(wù)。服務(wù)質(zhì)量考核模塊是對(duì)維護(hù)完成率、修復(fù)及時(shí)率、數(shù)據(jù)質(zhì)量和質(zhì)量抽查結(jié)果進(jìn)行統(tǒng)計(jì)完成考核得出評(píng)分。手機(jī)App可以方便快捷地解決C/S架構(gòu)的單一網(wǎng)絡(luò)模式,其自動(dòng)報(bào)警功能隨時(shí)隨地通知到維護(hù)人員,同時(shí)該系統(tǒng)的服務(wù)器端按日、月、年統(tǒng)計(jì)及時(shí)率,數(shù)據(jù)可用率并將結(jié)果反饋到手機(jī)App,使自動(dòng)站維護(hù)人員和考核業(yè)務(wù)人員及時(shí)直觀地了解自動(dòng)站的考核結(jié)果。
圖1 系統(tǒng)結(jié)構(gòu)
系統(tǒng)主要使用Java編程語(yǔ)言,開發(fā)工具使用了JDeveloper 12c和Android studio。系統(tǒng)部署示意圖如圖2所示,其承載系統(tǒng)應(yīng)用的環(huán)境包括:
(1)Oracle數(shù)據(jù)庫(kù):數(shù)據(jù)對(duì)象和支撐系統(tǒng)頁(yè)面。
(2)Java運(yùn)行時(shí)環(huán)境:原生Java程序,由系統(tǒng)計(jì)劃任務(wù)控制按時(shí)執(zhí)行。
(3)TomCat服務(wù):Web Service接口、js文件接口、圖片發(fā)布。
(4)Android系統(tǒng)手機(jī):下載安裝App應(yīng)用即可運(yùn)行。
圖2 系統(tǒng)部署示意圖
系統(tǒng)開發(fā)服務(wù)組件使用Oracle 11G EX DB和Oracle JDeveloper,這是一款基于Java語(yǔ)言的開發(fā)平臺(tái),開發(fā)程序?qū)崿F(xiàn)功能的同時(shí)構(gòu)建起系統(tǒng)的支撐平臺(tái)架構(gòu)。Java是一種跨平臺(tái)應(yīng)用軟件的面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,且具有簡(jiǎn)單易用等優(yōu)點(diǎn)。Oracle JDeveloper是一個(gè)免費(fèi)的集成開發(fā)環(huán)境(IDE),可簡(jiǎn)化基于Java的SOA和Java EE應(yīng)用開發(fā)。JDeveloper為Oracle[6]融合中間件和融合應(yīng)用產(chǎn)品提供完整的端到端開發(fā),支持整個(gè)開發(fā)生命周期。系統(tǒng)的數(shù)據(jù)庫(kù)采用Oracle 11g,Oracle 11g提供了高性能、伸展性、可用性和安全性,并能更方便地在低成本服務(wù)器和存儲(chǔ)設(shè)備組成的網(wǎng)格上運(yùn)行,相對(duì)過往版本而言,Oracle 11g具有了與眾不同的特性。
在設(shè)計(jì)手機(jī)App時(shí)選用Android系統(tǒng),它是首個(gè)為移動(dòng)終端設(shè)備打造的真正開放和完整的移動(dòng)軟件系統(tǒng),允許開發(fā)人員自由獲取、修改源代碼[7]。以Android平臺(tái)為基礎(chǔ),Google公司專門為開發(fā)Android應(yīng)用程序提供了集成開發(fā)環(huán)境Android Studio,涵蓋了所有Android應(yīng)用開發(fā)相關(guān)的功能。Android應(yīng)用程序主要使用Java語(yǔ)言編寫,要用到開發(fā)工具集SDK(Software Development Kit,提供Java編譯工具、Android系統(tǒng)API等,可以直接在Android Studio[8]中下載)。
Android項(xiàng)目開發(fā)條件容易滿足,手機(jī)Android系統(tǒng)覆蓋廣泛,成為開發(fā)首選。Android系統(tǒng)框架使用了分層結(jié)構(gòu)[9],將Android分成四層結(jié)構(gòu)和五個(gè)區(qū)塊。分別為應(yīng)用層(Applications)、應(yīng)用程序框架(Applications Framework)、庫(kù)(Libraries)、Android運(yùn)行時(shí)(Android Runtime)以及Linux內(nèi)核(Linux Kernel),整個(gè)系統(tǒng)的架構(gòu)如圖3所示。在系統(tǒng)的最底層,Android系統(tǒng)采用Linux作為系統(tǒng)的內(nèi)核,其優(yōu)勢(shì)在于成熟的Linux內(nèi)核可提供穩(wěn)定的操作系統(tǒng)服務(wù),同時(shí)其開源的特點(diǎn)能夠使Android系統(tǒng)更容易被各個(gè)設(shè)備廠商支持[10]。
圖3 Android軟件棧
系統(tǒng)設(shè)計(jì)使用Web Service完成手機(jī)與服務(wù)器組件間交互的工作。Web Service技術(shù),能使得運(yùn)行在不同機(jī)器上的不同應(yīng)用無(wú)須借助附加的、專門的第三方軟件或硬件,就可相互交換數(shù)據(jù)或集成。Web Service是自描述、自包含的可用網(wǎng)絡(luò)模塊,可以執(zhí)行具體的業(yè)務(wù)功能Web Service,也很容易部署,因?yàn)樗鼈兓谝恍┏R?guī)的產(chǎn)業(yè)標(biāo)準(zhǔn)以及已有的一些技術(shù),諸如標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言下的子集XML、HTTP[11]。依據(jù)Web Service規(guī)范實(shí)施的應(yīng)用之間,無(wú)論它們所使用的語(yǔ)言、平臺(tái)或內(nèi)部協(xié)議是什么,都可以相互交換數(shù)據(jù)。Web Service減少了應(yīng)用接口的花費(fèi)。Web Service為整個(gè)企業(yè)甚至多個(gè)組織之間的業(yè)務(wù)流程的集成提供了一個(gè)通用機(jī)制[12]。
從表面上看,Web Service就是一個(gè)應(yīng)用程序,它對(duì)外部系統(tǒng)只露出一個(gè)能夠通過Web服務(wù)的API供外部系統(tǒng)調(diào)用。這就是說(shuō)你能夠用編程的方法通過Web老調(diào)用這個(gè)應(yīng)用程序。把調(diào)用這個(gè)Web Service的應(yīng)用程序叫做客戶[13]。Web Service 模塊簡(jiǎn)圖如圖4所示。
圖4 Web Service模塊簡(jiǎn)圖
手機(jī)客戶端提供的自動(dòng)觀測(cè)站實(shí)況為近24小時(shí)的整點(diǎn)和加密數(shù)據(jù),供用戶查看自動(dòng)站的實(shí)時(shí)性和準(zhǔn)確性。為了便于用戶快速找到站點(diǎn)信息,設(shè)計(jì)了按自動(dòng)站所屬區(qū)縣劃分的下拉選擇框,查找到相關(guān)站點(diǎn)后即可顯示實(shí)況信息以及自動(dòng)站所在地圖的位置,如圖5、圖6所示。
圖5 區(qū)縣劃分自動(dòng)站
圖6 自動(dòng)站實(shí)況信息
在程序設(shè)計(jì)時(shí),向后臺(tái)數(shù)據(jù)接口發(fā)起帶有站號(hào)、站名、所屬區(qū)縣的參數(shù)請(qǐng)求,頁(yè)面將返回?cái)y帶站名、日期、所在經(jīng)緯度和實(shí)況信息的JSON格式字符串。JSON是一種輕量級(jí)數(shù)據(jù)格式,其對(duì)象是屬性、值對(duì)的結(jié)合,是規(guī)范的標(biāo)簽形式,具有很強(qiáng)的可讀性[14]。設(shè)計(jì)中采用的JSON數(shù)據(jù)解析包為fastjson.jar,它是一個(gè)性能很好的Java語(yǔ)言實(shí)現(xiàn)的JSON解析器和生成器,具有快速、強(qiáng)大和零依賴特點(diǎn)[15]。
服務(wù)配置可直接發(fā)布.js擴(kuò)展名的文本文件,要求文件內(nèi)使用JSON格式、數(shù)組格式和js編碼,這樣設(shè)置使用起來(lái)非常便利,App應(yīng)用或網(wǎng)頁(yè)可以直接使用,并且以靜態(tài)文本發(fā)布數(shù)據(jù)安全,系統(tǒng)響應(yīng)速度快不存在安全隱患。
設(shè)備故障報(bào)警與反饋模塊將自動(dòng)站故障信息發(fā)送到手機(jī)App,手機(jī)App通過百度地圖提供位置服務(wù),維護(hù)員通過手機(jī)App反饋維修結(jié)果并上傳照片。維護(hù)人員及時(shí)收到故障信息并將處理情況通過手機(jī)App反饋到服務(wù)器,實(shí)現(xiàn)服務(wù)器端和手機(jī)App高效信息交互。
系統(tǒng)為了方便管理人員編制保障任務(wù),提供了電子地圖功能,系統(tǒng)將近3小時(shí)不在線站點(diǎn)和數(shù)據(jù)質(zhì)量異常站點(diǎn)顯示在頁(yè)面下方,頁(yè)面上方是電子地圖,如圖7所示。管理員查看下方故障站點(diǎn)信息,點(diǎn)選具體站點(diǎn)上方的電子地圖就會(huì)自動(dòng)切換并導(dǎo)航,導(dǎo)航數(shù)據(jù)來(lái)自百度電子地圖api接口,是按照自駕車輛導(dǎo)航的,管理員可根據(jù)目前故障站點(diǎn)分布情況合理安排保障任務(wù),保障人員也可使用電子地圖簡(jiǎn)單了解路線。系統(tǒng)設(shè)計(jì)通過現(xiàn)場(chǎng)拍照實(shí)現(xiàn)證據(jù)留存,提交照片的同時(shí)任務(wù)終結(jié)并記錄完成時(shí)間,任務(wù)的提交也需要驗(yàn)證身份,只有確認(rèn)身份的保障工作人員才能完結(jié)任務(wù),同樣也只支持現(xiàn)場(chǎng)拍照,如圖8所示。
圖7 故障報(bào)警
手機(jī)App要求照片的傳輸必須要是現(xiàn)場(chǎng)實(shí)時(shí)的照片,避免維護(hù)人員使用相冊(cè)中的照片,這樣考慮主要是管理需要。照片只能通過二進(jìn)制方式傳回服務(wù)端,這樣服務(wù)端就要開發(fā)二進(jìn)制的接收功能模塊,并且需要同時(shí)傳回JSON字符串用于標(biāo)注任務(wù)信息。
圖8 故障反饋拍照
自2019年1月起手機(jī)App已經(jīng)運(yùn)用在沈陽(yáng)市氣象局社會(huì)化保障工作中,軟件系統(tǒng)的測(cè)試在使用中進(jìn)行,經(jīng)過一階段的使用驗(yàn)證,系統(tǒng)運(yùn)行穩(wěn)定。截止到2019年12月手機(jī)App已經(jīng)提示故障站點(diǎn)1 460余次,由于網(wǎng)絡(luò)信號(hào)弱等外在原因有些故障站點(diǎn)會(huì)在短時(shí)間內(nèi)無(wú)需維修可恢復(fù)正常。因此維修人員上傳維修記錄1 400余條,少于故障站點(diǎn)次數(shù)。由于手機(jī)App對(duì)于故障站點(diǎn)的及時(shí)報(bào)警,以及對(duì)維修人員的行程追蹤,督促了維修人員的維修進(jìn)度,最終根據(jù)任務(wù)時(shí)間戳的記錄顯示維修人員均能按時(shí)完成維修任務(wù)。根據(jù)每個(gè)自動(dòng)站的自身屬性制定對(duì)自動(dòng)站的定期維護(hù)提醒,及時(shí)更換老化的部件有效保障了自動(dòng)站的正常運(yùn)行。手機(jī)App對(duì)維護(hù)完成率、修復(fù)及時(shí)率、數(shù)據(jù)質(zhì)量和質(zhì)量抽查結(jié)果進(jìn)行統(tǒng)計(jì),方便了管理人員對(duì)自動(dòng)站維護(hù)的直觀了解。該系統(tǒng)的研發(fā)達(dá)到了預(yù)期效果,這充分說(shuō)明了手機(jī)App的自動(dòng)站管理系統(tǒng)在業(yè)務(wù)工作中發(fā)揮了重要作用。
氣象自動(dòng)觀測(cè)站的數(shù)據(jù)是氣象事業(yè)的基本保障,是預(yù)報(bào)預(yù)警的重要依據(jù)。因此保障氣象自動(dòng)觀測(cè)站的正常運(yùn)行,確保數(shù)據(jù)的準(zhǔn)確、及時(shí)、有效是一項(xiàng)十分重要艱巨的任務(wù)。目前基于手機(jī)App的自動(dòng)站管理系統(tǒng)已經(jīng)應(yīng)用在沈陽(yáng)市氣象局社會(huì)化保障工作中,并且取得了顯著的效果。該系統(tǒng)通過服務(wù)器端不間斷掃描實(shí)況數(shù)據(jù),能夠發(fā)現(xiàn)不在線和數(shù)據(jù)異常的站點(diǎn),方便管理人員依據(jù)異常站點(diǎn)安排保障任務(wù)。任務(wù)建立和任務(wù)結(jié)束都有時(shí)間戳標(biāo)記,可以統(tǒng)計(jì)任務(wù)完成的時(shí)間間隔,結(jié)合社會(huì)化保障要求,提高維修工作效率,使得維修任務(wù)執(zhí)行過程數(shù)據(jù)化。執(zhí)行任務(wù)需要提供4張現(xiàn)場(chǎng)照片,只能現(xiàn)場(chǎng)拍照不能上傳圖片,同時(shí)反饋地理位置,雙重取證避免造假,有效約束才能防微杜漸。鑒于該系統(tǒng)的良好效益,目前已經(jīng)推廣到丹東市氣象局的社會(huì)化保障工作中。