楊林邦
(汕頭職業(yè)技術(shù)學(xué)院計(jì)算機(jī)系,汕頭 515078)
隨著移動(dòng)互聯(lián)網(wǎng)、物聯(lián)網(wǎng)等新技術(shù)在智慧城市建設(shè)及“互聯(lián)網(wǎng)+”中的持續(xù)運(yùn)用,政府提出了更高的要求,《國(guó)務(wù)院關(guān)于積極推進(jìn)“互聯(lián)網(wǎng)+”行動(dòng)的指導(dǎo)意見(jiàn)》[1]和《關(guān)于促進(jìn)智慧城市健康發(fā)展的指導(dǎo)意見(jiàn)》相繼出臺(tái)。國(guó)家著力推進(jìn)信息化促進(jìn)工業(yè)化,發(fā)揮后發(fā)優(yōu)勢(shì),實(shí)現(xiàn)社會(huì)生產(chǎn)力跨越式發(fā)展。智慧水利在智慧城市中占有重要地位并有著廣闊前景,智慧水利就是將云計(jì)算、物聯(lián)網(wǎng)、大數(shù)據(jù)、移動(dòng)互聯(lián)網(wǎng)、人工智能等新一代信息技術(shù)應(yīng)用于水利領(lǐng)域,實(shí)現(xiàn)對(duì)水利對(duì)象及活動(dòng)的充分感知互聯(lián),智能應(yīng)用和泛在服務(wù)[2],繼而推動(dòng)水治理體系與能力現(xiàn)代化發(fā)展,切實(shí)提高水利工程使用,管理,效益與效率[3]。
水情監(jiān)測(cè)與預(yù)警系統(tǒng)作為智慧水利工程的重要一環(huán),對(duì)洪水預(yù)報(bào),防洪指揮,安全調(diào)度以及水資源管理與保護(hù)起著決定性作用。隨著我國(guó)經(jīng)濟(jì)建設(shè)發(fā)展步伐的不斷加快,對(duì)水環(huán)境造成影響的問(wèn)題也日益突出。因此,加強(qiáng)水環(huán)境監(jiān)測(cè)及預(yù)警工作顯得尤為重要。目前,傳統(tǒng)水情監(jiān)測(cè)往往是手持設(shè)備親臨現(xiàn)場(chǎng)完成,費(fèi)時(shí)費(fèi)力,而且分析結(jié)果和實(shí)際水質(zhì)變化情況對(duì)比,自動(dòng)化水平不高,不能全面、綜合地考察水體情況,從而難以對(duì)水環(huán)境做出全面、有效的評(píng)估和分析,極大地增加了水環(huán)境治理決策的困難。為了提高水庫(kù)防洪標(biāo)準(zhǔn),增強(qiáng)防洪、防汛能力,強(qiáng)化實(shí)時(shí)預(yù)警,及時(shí)響應(yīng)和統(tǒng)一管理,本文基于微信小程序和HTML5 技術(shù),以廣東省汕頭市為研究對(duì)象,開(kāi)展了智慧水利水情監(jiān)測(cè)與預(yù)警系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)工作,構(gòu)建了一套實(shí)用可靠,先進(jìn)規(guī)范,實(shí)時(shí)公開(kāi)的智慧水利監(jiān)測(cè)與預(yù)警系統(tǒng)。
本系統(tǒng)在全面集成已有水利信息化硬件設(shè)施及軟件系統(tǒng)基礎(chǔ)之上,努力構(gòu)建了由基礎(chǔ)設(shè)施層、數(shù)據(jù)層、運(yùn)維層、服務(wù)層、接口層、訪問(wèn)控制層和應(yīng)用層等組成的完整、規(guī)范、結(jié)構(gòu)化水利信息平臺(tái)架構(gòu)[4],其整體構(gòu)架如圖1所示。
圖1 系統(tǒng)整體框架圖
(1)基礎(chǔ)設(shè)施層是指平臺(tái)的軟件及硬件設(shè)施,包括系統(tǒng)軟件、主機(jī)系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)、存儲(chǔ)系統(tǒng)及安全系統(tǒng)等基礎(chǔ)運(yùn)行環(huán)境。
(2)數(shù)據(jù)層是指數(shù)據(jù)庫(kù)中的物理存儲(chǔ)層,它利用MySQL 數(shù)據(jù)庫(kù)并且利用Redis 與Memcached緩存技術(shù),以此來(lái)提升系統(tǒng)整體性能[5]。
(3)運(yùn)維層是指以整個(gè)軟硬件安全運(yùn)行管理為目標(biāo),以安全管理和性能監(jiān)測(cè)為主線(xiàn),以日志管理為輔線(xiàn),以預(yù)警監(jiān)測(cè)、統(tǒng)計(jì)分析、定期備份為手段[6]。
(4)服務(wù)層是將數(shù)據(jù)庫(kù)的服務(wù)打包,并利用數(shù)據(jù)和信息服務(wù)引擎來(lái)提供對(duì)外部數(shù)據(jù)的服務(wù)。主要有基礎(chǔ)信息封裝,水情數(shù)據(jù)封裝以及視頻數(shù)據(jù)封裝。
(5)接口層是一些特殊的接口,它是以服務(wù)層為基礎(chǔ)來(lái)完成數(shù)據(jù)的處理,包含了基礎(chǔ)信息、水情、視頻等接口。
(6)訪問(wèn)控制層是對(duì)系統(tǒng)提供的服務(wù)進(jìn)行封裝,提供統(tǒng)一認(rèn)證接口,實(shí)現(xiàn)用戶(hù)認(rèn)證及訪問(wèn)控制管理。
(7)應(yīng)用層為用戶(hù)提供應(yīng)用服務(wù)界面,包括后臺(tái)控制臺(tái)、小程序及水利一張圖等。
微信小程序是一款無(wú)需下載即可使用的軟件。它與傳統(tǒng)的APP 相比具有操作簡(jiǎn)單、界面友好、用戶(hù)體驗(yàn)性好等特點(diǎn),符合“互聯(lián)網(wǎng)+”時(shí)代發(fā)展潮流和趨勢(shì)[7]。因此,本系統(tǒng)的移動(dòng)端選擇微信小程序作為支撐平臺(tái)。管理人員通過(guò)微信小程序可隨時(shí)隨地進(jìn)行查詢(xún)和管理。
Bootstrap 是一種流行的前端架構(gòu),主要用于響應(yīng)式網(wǎng)站開(kāi)發(fā)。源于Twitter 的Bootstrap 由開(kāi)發(fā)者M(jìn)ark Otto 與Jacob Thornton 共同研發(fā),該框架是一種以HTML,CSS,JavaScript 等技術(shù)為基礎(chǔ)的技術(shù)框架[8]。此框架在設(shè)計(jì)上編碼簡(jiǎn)單,頁(yè)面優(yōu)雅,滿(mǎn)足了現(xiàn)代網(wǎng)頁(yè)設(shè)計(jì)的視覺(jué)審美。本系統(tǒng)在Bootstrap 支持下,能夠快速、高效地適配電腦、平板、手機(jī)等設(shè)備,實(shí)現(xiàn)跨平臺(tái)適應(yīng)性,使得網(wǎng)頁(yè)能夠根據(jù)不同終端設(shè)備,不同分辨率進(jìn)行頁(yè)面布局自動(dòng)調(diào)整,從而實(shí)現(xiàn)最佳用戶(hù)界面[9]。
ThinkPHP 是一個(gè)以MVC 為基礎(chǔ),面向?qū)ο鬄楹诵模裱瑼pache2 開(kāi)放源碼設(shè)計(jì)的輕量級(jí)PHP 開(kāi)發(fā)框架。自產(chǎn)生之初就秉承著簡(jiǎn)潔、實(shí)用的設(shè)計(jì)理念,在保持優(yōu)秀性能的同時(shí)還能簡(jiǎn)化編碼,尤其注重開(kāi)發(fā)過(guò)程中的可操作性,并具有大量獨(dú)創(chuàng)性的功能與特點(diǎn),有力地支持Web 應(yīng)用開(kāi)發(fā)[10]。本框架能有效提高企業(yè)應(yīng)用程序開(kāi)發(fā)速度和減少繁雜的基礎(chǔ)工作,從而實(shí)現(xiàn)系統(tǒng)的快速開(kāi)發(fā),在ThinkPHP 的支持下搭建了開(kāi)放、集成和整合應(yīng)用平臺(tái)。
ECharts 是一個(gè)以JavaScript 為基礎(chǔ)的數(shù)據(jù)可視化圖表庫(kù),為用戶(hù)提供了直觀、生動(dòng)、可交互、可個(gè)性化自定義的數(shù)據(jù)可視化圖表。它支持多種格式的數(shù)據(jù)視圖,支持用戶(hù)進(jìn)行各種操作,具有良好的使用體驗(yàn)和豐富多樣的顯示方式,并能產(chǎn)生逼真的視覺(jué)效果。大數(shù)據(jù)時(shí)代來(lái)臨,ECharts 為數(shù)據(jù)圖表的再定義提供了一個(gè)絕好的手段[11]。
為確保數(shù)據(jù)安全,該系統(tǒng)在軟硬件兩方面對(duì)數(shù)據(jù)安全進(jìn)行保證:
為了提高系統(tǒng)抗攻擊能力,同時(shí)增強(qiáng)管理人員的數(shù)據(jù)管理監(jiān)控,本系統(tǒng)在系統(tǒng)級(jí)別防護(hù)上,做了安全級(jí)別處理,購(gòu)買(mǎi)了服務(wù)器提供商的高安全等級(jí)的防護(hù)衛(wèi)士,增強(qiáng)各類(lèi)網(wǎng)絡(luò)攻擊,穩(wěn)定端口訪問(wèn)。同時(shí)要求各類(lèi)操作員實(shí)名認(rèn)證注冊(cè)自己的賬號(hào),利用日志審計(jì)功能,記錄各類(lèi)操作員的操作記錄,以便問(wèn)題追蹤,迅速排查。
從硬件角度來(lái)看,該系統(tǒng)會(huì)被部署到阿里云服務(wù)器中,并且會(huì)采購(gòu)先進(jìn)的云安全中心產(chǎn)品,以改善網(wǎng)絡(luò)和硬件安全,降低網(wǎng)絡(luò)暴力攻擊和其他安全隱患,使用SSL 傳輸協(xié)議來(lái)加密網(wǎng)絡(luò)中的傳輸內(nèi)容,以提高數(shù)據(jù)傳輸?shù)陌踩裕?2]。
從軟件的角度來(lái)看,關(guān)鍵個(gè)人信息會(huì)通過(guò)加密的形式保存于數(shù)據(jù)庫(kù)之中,從而規(guī)避了數(shù)據(jù)庫(kù)被突破之后數(shù)據(jù)直接曝光的風(fēng)險(xiǎn)。在應(yīng)用層面,通過(guò)對(duì)核心業(yè)務(wù)系統(tǒng)進(jìn)行改造實(shí)現(xiàn)了重要用戶(hù)身份認(rèn)證功能和權(quán)限管理功能,為信息安全提供可靠保障。最后,本文設(shè)計(jì)開(kāi)發(fā)出一套基于SSH 框架的安全防護(hù)平臺(tái)。編碼方面,重點(diǎn)預(yù)防了包括Xss 跨站注入、SQL 注入、CSRF 跨站請(qǐng)求等常見(jiàn)編碼級(jí)別的攻擊,對(duì)每個(gè)用戶(hù)操作都建立了對(duì)應(yīng)的日志審計(jì)體系,避免了內(nèi)部管理人員信息泄露風(fēng)險(xiǎn)[12]。
水利一張圖子系統(tǒng)依托公共基礎(chǔ)地理數(shù)據(jù)以及水利核心業(yè)務(wù)數(shù)據(jù),通過(guò)融合云計(jì)算、大數(shù)據(jù)、服務(wù)融合等技術(shù)方法,全面管理多時(shí)空的水利數(shù)據(jù),突破數(shù)據(jù)壁壘,旨在實(shí)現(xiàn)水利數(shù)據(jù)資源的整合應(yīng)用和共享。水利一張圖子系統(tǒng)提供標(biāo)準(zhǔn)服務(wù)接口,向水利業(yè)務(wù)使用者提供瀏覽、查詢(xún)、統(tǒng)計(jì)、分析為一體的可視化展示。系統(tǒng)界面如圖2所示。
圖2 水利一張圖
通過(guò)建設(shè)“水利一張圖”,使各種水利業(yè)務(wù)的數(shù)據(jù)成果的使用效率和直觀性得到最大化,并對(duì)各種數(shù)據(jù)進(jìn)行封裝,建立統(tǒng)一的數(shù)據(jù)共享服務(wù)機(jī)制,實(shí)現(xiàn)專(zhuān)業(yè)化、組件化、模型化的管理[13]。
水情管理子系統(tǒng)是水資源的采集與管理,是整個(gè)系統(tǒng)的基礎(chǔ)框架。本系統(tǒng)按照《水文監(jiān)測(cè)數(shù)據(jù)通信規(guī)約SL651-2014》 規(guī)范,設(shè)置socket服務(wù)器定時(shí)對(duì)接并做好數(shù)據(jù)存儲(chǔ)工作,同時(shí)將對(duì)應(yīng)通信接口封裝好以方便各終端接入與監(jiān)測(cè)。
(1)數(shù)據(jù)采集。水情數(shù)據(jù)采集過(guò)程是建立socket服務(wù)器與水情數(shù)據(jù)對(duì)接接口進(jìn)行連接獲取的。訪問(wèn)接口是根據(jù)《水文監(jiān)測(cè)數(shù)據(jù)通信規(guī)約SL651-2014》標(biāo)準(zhǔn)進(jìn)行對(duì)接,項(xiàng)目建立socket服務(wù)器,收取水情數(shù)據(jù)服務(wù)接口發(fā)送的三種報(bào)文進(jìn)行數(shù)據(jù)存儲(chǔ),同時(shí)還可以主動(dòng)發(fā)送查詢(xún)報(bào)文讀取特定需求信息。具體報(bào)文功能如下:
定時(shí)報(bào)文:水情服務(wù)器按定時(shí)發(fā)送水情信息報(bào)文。
鏈路維持報(bào)文:用于判定socket服務(wù)器與水情數(shù)據(jù)服務(wù)器之間的鏈路正常狀態(tài)。
加報(bào)報(bào)文:當(dāng)瞬時(shí)水位超過(guò)指定的高水位或者低水位閾值時(shí),或雨量超過(guò)上報(bào)閾值時(shí)觸發(fā)數(shù)據(jù)加報(bào)。
查詢(xún)報(bào)文:服務(wù)器可以主動(dòng)發(fā)起歷史水情數(shù)據(jù)請(qǐng)求,從而獲取承載查詢(xún)的查詢(xún)報(bào)文。
Socket 服務(wù)器每接收接口發(fā)送過(guò)來(lái)的報(bào)文,都會(huì)發(fā)送一個(gè)確認(rèn)報(bào)文,以告知服務(wù)器報(bào)文正確收到,減少鏈路數(shù)據(jù)風(fēng)暴。
接收到的水情數(shù)據(jù)都會(huì)保存到數(shù)據(jù)庫(kù),同時(shí)研發(fā)統(tǒng)一的訪問(wèn)接口,供終端服務(wù)。
(2)智能監(jiān)測(cè)預(yù)警。本系統(tǒng)預(yù)警值,不以警戒水位或者汛限水位為主,將由各個(gè)站點(diǎn)各自設(shè)定,以實(shí)際的情況設(shè)計(jì)一個(gè)預(yù)警值,如果存在上、下游,則需要設(shè)置上游預(yù)警值和下游預(yù)警值,只要超過(guò)預(yù)警,則會(huì)觸發(fā)預(yù)警響應(yīng)機(jī)制。預(yù)警響應(yīng)需要第一線(xiàn)的管理人員進(jìn)行確認(rèn)實(shí)際水位情況后,再啟動(dòng)實(shí)際預(yù)警動(dòng)作,避免誤報(bào)情況,同時(shí)一旦確定預(yù)警情況,則會(huì)加快水位監(jiān)測(cè)情況,實(shí)時(shí)了解水位情況。站點(diǎn)監(jiān)控界面如圖3所示。
圖3 站點(diǎn)監(jiān)控界面
水利視頻管理子系統(tǒng)能夠?qū)崿F(xiàn)無(wú)人值班和少人值守要求,視頻監(jiān)控系統(tǒng)與自動(dòng)化監(jiān)控系統(tǒng)相輔相成[13]。通過(guò)視頻監(jiān)控,可以實(shí)時(shí)查看現(xiàn)場(chǎng)的情況,如發(fā)生險(xiǎn)情可及時(shí)報(bào)警,確保及時(shí)處理。本系統(tǒng)利用寬帶網(wǎng)絡(luò)把分散而又相互獨(dú)立的視頻監(jiān)控節(jié)點(diǎn)聯(lián)系在一起,對(duì)不同地區(qū)進(jìn)行統(tǒng)一監(jiān)控,給管理決策人員以直觀管理手段。水利視頻管理界面如圖4所示。
水利視頻管理子系統(tǒng)通過(guò)視頻控制采集接口,HTTP 摘要認(rèn)證后與視頻控制服務(wù)器進(jìn)行通信,將設(shè)備列表中各個(gè)攝像頭的ID 列表存儲(chǔ)到數(shù)據(jù)庫(kù)保存。針對(duì)每個(gè)攝像頭ID,繼續(xù)跟視頻控制服務(wù)器進(jìn)行查詢(xún),獲取對(duì)應(yīng)的視頻播放地址和控制接口,并封裝為統(tǒng)一接口,供終端訪問(wèn),目前接口包括:視頻直播、訪問(wèn)接口,視頻全向方向控制接口,視頻對(duì)焦控制接口,視頻變倍控制接口等。
微信小程序功能區(qū)主要包括視頻控制區(qū)、水情數(shù)據(jù)區(qū)、個(gè)人中心三部分。
視頻控制區(qū):如果是站點(diǎn)人員,則將直接查看自己管轄站點(diǎn)的攝像頭列表,如果是市級(jí)管理人員,則能查看所有攝像頭站點(diǎn)列表。通過(guò)控制按鈕,可以對(duì)視頻進(jìn)行方向調(diào)整,對(duì)焦和倍數(shù)控制等。
水情數(shù)據(jù)區(qū):如果是站點(diǎn)人員,則只能看到自己所管轄站點(diǎn)的水情數(shù)據(jù),市級(jí)管理人員能夠看到全市所有站點(diǎn)的水情情況。每個(gè)站點(diǎn)水情數(shù)據(jù)包括實(shí)時(shí)水位、汛限/警戒水位、死水位、流量、預(yù)警水位等。
個(gè)人信息管理區(qū):為了增強(qiáng)移動(dòng)辦公,簡(jiǎn)化操作流程,小程序?qū)⑻峁┙o站點(diǎn)人員注冊(cè)和修改信息功能,提供給市級(jí)管理人員進(jìn)行人員注冊(cè)審核和權(quán)限控制功能。
圖5給出本系統(tǒng)小程序顯示效果的部分截圖。
圖5 部分頁(yè)面展示
針對(duì)目前汕頭的相關(guān)水庫(kù),各個(gè)閘口水流實(shí)時(shí)監(jiān)控能力落后的問(wèn)題,為了在提高工程標(biāo)準(zhǔn),提高水庫(kù)防汛、防洪能力的同時(shí),加強(qiáng)實(shí)時(shí)預(yù)警、及時(shí)響應(yīng)能力和統(tǒng)一管理的目的,本文建立一個(gè)實(shí)用、可靠、先進(jìn)、標(biāo)準(zhǔn)、實(shí)時(shí)、開(kāi)放的水情監(jiān)測(cè)與預(yù)警系統(tǒng)。該系統(tǒng)部署后,取得不錯(cuò)的效果,實(shí)現(xiàn)如下目標(biāo):
(1)信息實(shí)時(shí)及準(zhǔn)確采集。各類(lèi)信息采集點(diǎn)的監(jiān)控設(shè)備要做到監(jiān)控?zé)o死角,運(yùn)行穩(wěn)定,視頻和相關(guān)數(shù)據(jù)能夠?qū)崟r(shí)傳輸服務(wù)器,并統(tǒng)一存儲(chǔ)歷史記錄。相關(guān)數(shù)據(jù)能夠供各級(jí)終端實(shí)時(shí)調(diào)用,方便各級(jí)單位能夠及時(shí)查看所管轄的水庫(kù)、水閘情況。
(2)預(yù)警及時(shí)響應(yīng)。每個(gè)水庫(kù)、水閘點(diǎn)都設(shè)置一個(gè)緊急聯(lián)系人,并保存其聯(lián)系方式,當(dāng)水位、流量達(dá)到預(yù)警位置,則必須及時(shí)啟動(dòng)響應(yīng)機(jī)制,及時(shí)發(fā)送信息給緊急聯(lián)系人,相關(guān)終端、后臺(tái)則會(huì)出現(xiàn)預(yù)警警告。
(3)系統(tǒng)運(yùn)行穩(wěn)定。整套系統(tǒng)要實(shí)時(shí)監(jiān)控各個(gè)采集點(diǎn)數(shù)據(jù)的穩(wěn)定采集,同時(shí)保證中心服務(wù)器的安全穩(wěn)定運(yùn)行。一旦發(fā)現(xiàn)采集點(diǎn)失效,必須及時(shí)發(fā)出響應(yīng),保證數(shù)據(jù)提供穩(wěn)定服務(wù)。