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