萬定生,王 坤,朱躍龍,姚 成,朱海南,朱青松
(1.河海大學(xué)計(jì)算機(jī)與信息學(xué)院,江蘇 南京 210098; 2.河海大學(xué)水文與水資源學(xué)院,江蘇 南京 210098)
我國河流眾多,氣候類型較為復(fù)雜,由于受臺(tái)風(fēng)、暴雨等惡劣天氣的影響,發(fā)生在中小流域的洪水越發(fā)頻繁。中小流域降雨具有雨量大且集中、洪水起伏較大的特點(diǎn)[1],目前國家對(duì)于大江大河的洪水治理已具備經(jīng)驗(yàn),而對(duì)于中小流域的洪水治理經(jīng)驗(yàn)相對(duì)缺乏。中小河流洪水防控與應(yīng)急管理要求實(shí)現(xiàn)準(zhǔn)確預(yù)報(bào)、及時(shí)預(yù)警、科學(xué)調(diào)度和有效處置[2],水文預(yù)報(bào)是防洪減災(zāi)的重要非工程措施,開展中小河流洪水預(yù)警預(yù)報(bào)平臺(tái)的建設(shè),將有效提高中小河流的洪水預(yù)報(bào)水平與防洪減災(zāi)能力。
洪水預(yù)警預(yù)報(bào)平臺(tái)始于20世紀(jì)70年代,美國、意大利等發(fā)達(dá)國家先后建立了洪水預(yù)報(bào)系統(tǒng),如美國3S洪水預(yù)警系統(tǒng)、意大利DAMSAFE決策支持系統(tǒng)和歐盟洪水預(yù)報(bào)及報(bào)警響應(yīng)系統(tǒng)等[3]。國內(nèi)洪水預(yù)報(bào)軟件研發(fā)起步較晚,得益于計(jì)算機(jī)技術(shù)迅速發(fā)展,大量的洪水預(yù)報(bào)系統(tǒng)應(yīng)運(yùn)而生,如三峽水庫入庫站洪水預(yù)報(bào)系統(tǒng)、黃河防洪調(diào)度決策支持系統(tǒng)和長江流域防洪調(diào)度系統(tǒng)等,初步構(gòu)建了的防汛抗旱水文監(jiān)測預(yù)報(bào)預(yù)警服務(wù)體系[4]。
長期以來,洪水預(yù)警預(yù)報(bào)平臺(tái)多基于客戶機(jī)/服務(wù)器(C/S)模式構(gòu)建,隨著洪水預(yù)報(bào)需求不斷拓展以及水文模型研究[5-6]的迅速發(fā)展,此類系統(tǒng)在服務(wù)管理、安全性和模型通用性等方面存在明顯不足[7]。隨著Web2.0的興起,瀏覽器/服務(wù)器(B/S)模式與微服務(wù)架構(gòu)[8-9]的洪水預(yù)警預(yù)報(bào)智能平臺(tái)在水文模型集成與共享、服務(wù)管理和平臺(tái)安全性等方面有著明顯的優(yōu)勢[10]。
洪水預(yù)警預(yù)報(bào)平臺(tái)以大量水文數(shù)據(jù)為支撐。目前,中小河流水文數(shù)據(jù)資料的獲取途徑主要來源于全國各地水文站。這些數(shù)據(jù)必須具有準(zhǔn)確性、有效性和代表性,因此,對(duì)中小河流水文數(shù)據(jù)質(zhì)量控制,提高水文數(shù)據(jù)適合使用的程度,是水文數(shù)據(jù)應(yīng)用于預(yù)報(bào)平臺(tái)的關(guān)鍵。
在洪水預(yù)警預(yù)報(bào)過程中,準(zhǔn)確預(yù)報(bào)及展示出洪水演進(jìn)軌跡、影響范圍,為水利部門提供決策支持成為亟須解決的問題。隨著地理信息系統(tǒng)(GIS)和數(shù)字高程模型(DEM)技術(shù)的快速發(fā)展,如何利用這種計(jì)算機(jī)技術(shù)實(shí)現(xiàn)快速、準(zhǔn)確地預(yù)測和模擬出洪水淹沒情況,降低了防洪的成本,對(duì)于防洪減災(zāi)具有十分重要的意義。
針對(duì)中小流域水文數(shù)據(jù)特點(diǎn)進(jìn)行質(zhì)量控制,基于微服務(wù)架構(gòu)進(jìn)行水文模型集成與共享,開發(fā)洪水預(yù)警多重情景仿真技術(shù),并將其應(yīng)用在中小流域洪水預(yù)警平臺(tái),為相關(guān)工作提供決策支持。
中小河流洪水預(yù)警預(yù)報(bào)智能調(diào)度平臺(tái)基于“網(wǎng)格化-虛擬化-可視化”的設(shè)計(jì)理念,圍繞數(shù)據(jù)傳輸、運(yùn)行環(huán)境和功能業(yè)務(wù)等關(guān)鍵點(diǎn),進(jìn)行平臺(tái)框架設(shè)計(jì)。
a. 數(shù)據(jù)網(wǎng)格化。對(duì)不同類型、不同格式的數(shù)據(jù),建立了水文、氣象和土壤等信息一張網(wǎng)的數(shù)據(jù)交換規(guī)范。在示范流域建立1 km×1 km網(wǎng)格平面,從而實(shí)現(xiàn)數(shù)據(jù)網(wǎng)格化處理,提高了數(shù)據(jù)讀取、交換的效率,為平臺(tái)架構(gòu)提供數(shù)據(jù)支持。
b. 運(yùn)行環(huán)境虛擬化。基于微服務(wù)構(gòu)建的水文模型在Docker容器中運(yùn)行。容器與虛擬機(jī)類似,是一個(gè)相對(duì)獨(dú)立的運(yùn)行環(huán)境。容器對(duì)其內(nèi)部的水文模型服務(wù)及其關(guān)聯(lián)性進(jìn)行隔離,從而構(gòu)建起一套能夠隨處運(yùn)行的自容納單元。相比于虛擬機(jī),容器并不需要為每個(gè)應(yīng)用分配單獨(dú)的操作系統(tǒng),因此其擁有更高的資源使用效率、更小的實(shí)例規(guī)模和更快的創(chuàng)建遷移速度。
c. 業(yè)務(wù)可視化。平臺(tái)基于ArcGIS和Unreal Engine 4引擎,結(jié)合洪水淹沒算法,對(duì)預(yù)報(bào)業(yè)務(wù)的結(jié)果進(jìn)行二維和三維的展示,準(zhǔn)確預(yù)報(bào)及展示洪水演進(jìn)軌跡和影響范圍,直觀再現(xiàn)洪澇災(zāi)害的發(fā)生范圍及程度。
平臺(tái)基于上述平臺(tái)框架,結(jié)合動(dòng)態(tài)反射機(jī)制,設(shè)計(jì)高可配置和可擴(kuò)展的3層云平臺(tái)結(jié)構(gòu),集成水文氣象數(shù)據(jù)、模型以及其他各功能模塊以及預(yù)警預(yù)報(bào)和風(fēng)險(xiǎn)評(píng)估模型。平臺(tái)整體結(jié)構(gòu)如圖1所示。
圖1 平臺(tái)整體結(jié)構(gòu)Fig.1 Overall structure of platform
d. 平臺(tái)整體架構(gòu)。包括:基礎(chǔ)資源層、支撐平臺(tái)層和應(yīng)用層。基礎(chǔ)資源層作為IaaS層(Infrastructure as a Service)包括:水文部門實(shí)時(shí)監(jiān)測氣象數(shù)據(jù)、通過數(shù)據(jù)共享接入的氣象數(shù)據(jù)、計(jì)算資源與網(wǎng)絡(luò)資源;基礎(chǔ)資源層為整個(gè)平臺(tái)構(gòu)建提供底層支持。支撐平臺(tái)層作為PaaS層(Platform as a Service)包括數(shù)據(jù)質(zhì)量控制模塊與模型模塊,數(shù)據(jù)質(zhì)量控制模塊對(duì)數(shù)據(jù)資源層提供的水文數(shù)據(jù)進(jìn)行質(zhì)量控制,包括對(duì)缺失數(shù)據(jù)進(jìn)行預(yù)測插補(bǔ)以及異常數(shù)據(jù)檢測,對(duì)處理好的數(shù)據(jù)向上提供數(shù)據(jù)統(tǒng)一服務(wù)接口;模型模塊提供基于微服務(wù)的預(yù)報(bào)模型,包括精細(xì)化網(wǎng)格模型、智能預(yù)報(bào)模型等,并將上述模型進(jìn)行整合,形成模型多層次按需服務(wù),提高模型共享效率。應(yīng)用層為SaaS層(Software as a Service),基于多情景仿真技術(shù),提供面向洪水預(yù)報(bào)和風(fēng)險(xiǎn)分析的業(yè)務(wù)服務(wù),包括基礎(chǔ)數(shù)據(jù)查詢、水雨情監(jiān)視、數(shù)據(jù)分析、集成洪水預(yù)報(bào)、風(fēng)險(xiǎn)分析以及智能調(diào)度等。
通過對(duì)中小河流水文數(shù)據(jù)中主要質(zhì)量問題的分析,中小河流水文數(shù)據(jù)質(zhì)量控制主要分為:缺失數(shù)據(jù)插補(bǔ)、冗余數(shù)據(jù)檢測與處理、異常數(shù)據(jù)檢測等。本文主要分析對(duì)于中小河流水文數(shù)據(jù)缺失值插補(bǔ)方法與異常數(shù)據(jù)處理。針對(duì)缺失數(shù)據(jù)插補(bǔ),提出從單向和多向2個(gè)方面對(duì)缺失數(shù)據(jù)進(jìn)行預(yù)測插補(bǔ);針對(duì)異常數(shù)據(jù),提出若干異常點(diǎn)檢測與異常模式檢測方法。
2.1.1 水文數(shù)據(jù)插補(bǔ)方法
2.1.1.1 基于ARIMA與SVM組合預(yù)測單向插補(bǔ)模型
差分整合移動(dòng)平均自回歸模型(autoregressive integrated moving average model,ARIMA)[11]廣泛應(yīng)用于時(shí)間序列的分析與預(yù)測中。對(duì)于中小河流水文時(shí)間序列數(shù)據(jù),如果缺失數(shù)據(jù)點(diǎn)前存在長度為N的完整序列,則可以利用這n個(gè)數(shù)據(jù)來對(duì)第n個(gè)數(shù)據(jù)以后的數(shù)據(jù)進(jìn)行預(yù)測,構(gòu)造單向插補(bǔ)模型。理論上利用ARIMA模型可以預(yù)測多個(gè)數(shù)據(jù)記錄的缺失值。但是隨著預(yù)測數(shù)值個(gè)數(shù)的增加,會(huì)造成預(yù)測精度下降。而且原始觀測數(shù)據(jù)集中數(shù)值缺失情況不確定,因此設(shè)置固定寬度的滑動(dòng)窗口,結(jié)合ARIMA模型(ARIMA model based on sliding window,SW_ARIMA)對(duì)水文時(shí)間序列進(jìn)行預(yù)測。SW_ARIMA模型構(gòu)建步驟如下:(a)獲取觀測數(shù)據(jù)集x(n),選取其中一段比較完整的數(shù)據(jù)序列x(k)作為預(yù)測模型輸入數(shù)據(jù)集;(b)為了滑動(dòng)窗口內(nèi)的預(yù)測數(shù)據(jù)不隨著時(shí)間的推移而增加,設(shè)置固定滑動(dòng)窗口寬度等于預(yù)測數(shù)據(jù)x(k)的長度k。避免對(duì)數(shù)據(jù)集X(n)中的缺失值進(jìn)行插補(bǔ)時(shí)造成遺漏,設(shè)置滑動(dòng)窗口步長與預(yù)測值個(gè)數(shù)相等。假設(shè)預(yù)測值的個(gè)數(shù)l(l≥1)。為了保障精度,l取值不宜過大;(c)構(gòu)建ARIMA預(yù)測模型,得到預(yù)測值;(d)更新x(k),滑動(dòng)窗口前移一步,直到觀測數(shù)據(jù)集X(n)處理完畢。圖2表示起始數(shù)據(jù)狀態(tài);圖3表示x(k)更新一次,滑動(dòng)窗口前移動(dòng)一步狀態(tài)。
圖2 起始數(shù)據(jù)狀態(tài)Fig.2 Starting data state
圖3 x(k)更新狀態(tài)Fig.3 x(k)’s update status diagram
支持向量機(jī)(support vector machine,SVM)中的主要參數(shù)有懲罰系數(shù)c、核函數(shù)參數(shù)g以及不敏感損失函數(shù)參數(shù)q。其中懲罰系數(shù)c控制超出誤差樣本數(shù)據(jù)的懲罰程度,與核函數(shù)參數(shù)g一起決定了支持向量機(jī)的泛化能力。通過粒子群優(yōu)化
算法(PSO)對(duì)SVM進(jìn)行參數(shù)優(yōu)化,并采用均方誤差(MSE)最小作為最佳適應(yīng)度。
對(duì)于SW_ARIMA與PSO_SVM這2種單一的預(yù)測模型,預(yù)測結(jié)果存在較大誤差。本文將2種單一預(yù)測模型進(jìn)行并聯(lián)加權(quán)組合,減少模型的預(yù)測誤差。組合預(yù)測模型結(jié)構(gòu)如圖4所示,試驗(yàn)結(jié)果見表1。
圖4 組合模型結(jié)構(gòu)Fig.4 Composite model structure
表1 基于SW_ARIMA與PSO_SVM模型預(yù)測結(jié)果
試驗(yàn)發(fā)現(xiàn),在單一模型環(huán)境下,SW_ARIMA模型效果略好于PSO_SVM模型效果。而組合模型得到結(jié)果優(yōu)于前兩種單一模型。因此對(duì)于中小河流水文數(shù)據(jù)中的缺失情況,將組合模型預(yù)測值作為參考值,能夠有效地減少插值誤差。
2.1.1.2 基于Adaboost組合預(yù)測的多向插值模型
中小河流水位流量等水文數(shù)據(jù),在一定的時(shí)間內(nèi)具有時(shí)間序列的特征,即表現(xiàn)出一定的連續(xù)性和周期性。因此,對(duì)中小河流連續(xù)性缺失的數(shù)據(jù),利用存在記錄中的觀測數(shù)據(jù)和歷史相同時(shí)刻的觀測數(shù)據(jù)對(duì)未來相同時(shí)刻缺失的數(shù)據(jù)進(jìn)行預(yù)測,構(gòu)造多向插補(bǔ)模型,將預(yù)測值當(dāng)作參考值。
在Adaboost算法中,弱預(yù)測器是一種不穩(wěn)定的預(yù)測模型或者是各種不同預(yù)測模型。其中循環(huán)神經(jīng)網(wǎng)絡(luò)(resurrent neural networks,RNNs)屬于組合預(yù)測插值模型中的弱預(yù)測模型,因?yàn)槊看斡?xùn)練會(huì)產(chǎn)生不同的網(wǎng)絡(luò)權(quán)重。SVM相比神經(jīng)網(wǎng)絡(luò)有著更強(qiáng)的泛化能力,在相同的樣本情況下訓(xùn)練結(jié)果更加穩(wěn)定。選擇單個(gè)SVM和多個(gè)RNNs作為Adaboost的弱預(yù)測因子,通過弱預(yù)測因子的加權(quán)組合彌補(bǔ)算法的不足。因?yàn)镾VM最初主要用于分類,而應(yīng)用于預(yù)測領(lǐng)域的支持向量機(jī)為支持向量回歸(support vector regress,SVR) ,因此實(shí)際應(yīng)用SVR,采用Adaboost組合算法,建立組合預(yù)測插值模型。圖5表示對(duì)某一時(shí)刻的數(shù)據(jù)進(jìn)行預(yù)測的模型示意圖,其中Tyd表示第y年的d時(shí)刻。
圖5 Tyd時(shí)刻組合預(yù)測插值模型Fig.5 Combination prediction interpolation model of Tyd time
2.1.2 水文數(shù)據(jù)異常檢測方法
2.1.2.1 基于ReMess-iForest算法的異常點(diǎn)檢測
基于孤立森林算法的檢測模型[12]是兩階段構(gòu)造過程,首先對(duì)森林中的子樹iTree進(jìn)行構(gòu)造;其次將已構(gòu)造的iTree組合成孤立森林,對(duì)預(yù)測數(shù)據(jù)進(jìn)行異常分?jǐn)?shù)的計(jì)算。iForest算法在檢測包含多個(gè)正常點(diǎn)群的數(shù)據(jù)集時(shí),局部異常點(diǎn)被密度相似的正常集群所掩蓋,導(dǎo)致iForest算法對(duì)局部異常程度的判定不準(zhǔn)確。
改進(jìn)iForest算法—ReMess-iForest算法模型構(gòu)建時(shí),第一步iTree子樹的構(gòu)建,使用與iForest算法中完全相同的實(shí)現(xiàn)步驟,第二步計(jì)算異常分?jǐn)?shù)時(shí),使用基于相對(duì)質(zhì)量的局部排名度量方法,計(jì)算數(shù)據(jù)x落入1棵子樹的相對(duì)質(zhì)量。
(1)
式中:Ti(x)——數(shù)據(jù)x落入子樹Ti中的葉子節(jié)點(diǎn);i(x)——Ti(x)的直接父節(jié)點(diǎn);m(·)——樹節(jié)點(diǎn)的數(shù)據(jù)質(zhì)量即數(shù)值大小;ε——?dú)w一化項(xiàng),用于生成子樹后的訓(xùn)練數(shù)據(jù)大小,此處使用默認(rèn)值256;si(·)——處于0~1之間,其值越大,越可能是異常。
對(duì)于一個(gè)訓(xùn)練數(shù)據(jù)x,令其遍歷每一棵iTree,然后計(jì)算x最終落在每棵iTree,計(jì)算其相對(duì)質(zhì)量大小,最后得出x在每棵iTree的平均相對(duì)質(zhì)量大?。?/p>
(2)
因此使用iForest算法檢測模型得到了適用當(dāng)前測站的最優(yōu)參數(shù),使用ReMess-iForest算法檢測模型有效解決iForest算法的局限性。
2.1.2.2 基于層次聚類的符號(hào)化水文時(shí)間序列異常模式檢測
基于聚類的異常檢測的步驟是:先對(duì)擴(kuò)展符號(hào)聚集近似(extended symbolic aggregate approximation,ESAX)方法表示得到的特征向量進(jìn)行聚類并得到所有類的聚類中心,再找到與待檢測對(duì)象距離最近的聚類,如果其與聚類中心之間的距離沒有超過閾值,則該對(duì)象是正常數(shù)據(jù);如果其與聚類中心的距離超過了閾值,則被判斷是異常數(shù)據(jù)[13]?;诰垲惖漠惓z測方法中,目前常用的兩階段異常檢測方法[14],該方法分為2個(gè)階段:第一步階段對(duì)時(shí)間序列進(jìn)行聚類,將數(shù)據(jù)分為多個(gè)類,每個(gè)類中的對(duì)象都具有強(qiáng)烈的關(guān)聯(lián)關(guān)系;第二階段是找出待驗(yàn)證對(duì)象所屬的聚類,再度量該對(duì)象與聚類中心的距離,并通過該距離來判斷異常數(shù)據(jù)。
2.1.2.3 基于相似性度量的異常模式檢測
從時(shí)間復(fù)雜度、理論優(yōu)度和實(shí)用優(yōu)度進(jìn)行綜合評(píng)估,基于關(guān)鍵點(diǎn)的分段壓縮法(KPRA)效果較好[15]。原始時(shí)間序列通過關(guān)鍵點(diǎn)進(jìn)行分割,得到的每一段子序列用分段線性(piecewise linear representation,PLR)進(jìn)行模式表示[16-17]。對(duì)于水文時(shí)間序列中異常模式的檢測,首先使用KPRA-PLR算法對(duì)水文時(shí)間序列進(jìn)行降維處理,通過關(guān)鍵點(diǎn)對(duì)時(shí)間序列進(jìn)行分割得到各個(gè)子序列,用線性表示方法得到元模式,相鄰元模式兩兩之間組成序列模式t;其次使用STDW算法對(duì)序列模式進(jìn)行相似性度量,計(jì)算實(shí)時(shí)水文數(shù)據(jù)得到的序列模式t和歷史水文數(shù)據(jù)T上每個(gè)序列模式的相似性度量;序列模式t的異常分?jǐn)?shù)為序列模式t與T上每個(gè)序列模式間的平均距離的倒數(shù),使用k-近鄰原理算出局部異常因子,Top-k最大的異常因子對(duì)應(yīng)的序列模式即為異常模式。
水文模型作為水文過程成熟的模擬手段,一直是水文學(xué)研究的熱點(diǎn)。水文模型在洪水預(yù)報(bào)中應(yīng)用有著十分重要的作用。目前,水文數(shù)據(jù)及水文模型資料大多分散在不同機(jī)構(gòu)和研究人員手中,缺乏水文模型的集成與共享平臺(tái)將分散的資源進(jìn)行整合,所以當(dāng)前水文模型共享率并不高[18]。在開放網(wǎng)絡(luò)環(huán)境下,模型服務(wù)化是當(dāng)前實(shí)現(xiàn)模型封裝與共享的主流方式[19]。
2.2.1 水文模型多層面服務(wù)化封裝策略
為了滿足未來水文模型動(dòng)態(tài)配置的業(yè)務(wù)發(fā)展需求和實(shí)現(xiàn)水文模型資源的集成與共享的目標(biāo),水文模型服務(wù)化封裝策略需要考慮以下內(nèi)容:(a) 服務(wù)中數(shù)據(jù)描述格式需要統(tǒng)一,便于服務(wù)間的數(shù)據(jù)交互;(b) 水文模型需要進(jìn)行多層面拆分,形成各自獨(dú)立的服務(wù),從而降低程序耦合,提高模型資源的復(fù)用率;(c) 各個(gè)獨(dú)立的服務(wù)不對(duì)外暴露實(shí)現(xiàn)細(xì)節(jié),只提供統(tǒng)一的對(duì)外調(diào)用接口。
結(jié)合柵格新安江模型[20]、經(jīng)驗(yàn)?zāi)P偷鹊湫偷乃哪P瓦M(jìn)行分析,在模型實(shí)際研發(fā)過程中,模型的輸入數(shù)據(jù)主要分為3種類型:數(shù)據(jù)庫數(shù)據(jù)、文件數(shù)據(jù)和用戶輸入數(shù)據(jù),并且水文模型在設(shè)計(jì)時(shí)通常會(huì)產(chǎn)生模塊化的概念,每個(gè)模塊的實(shí)現(xiàn)又包含了不同的數(shù)學(xué)算法或物理規(guī)律,如蒸散發(fā)能力計(jì)算、槽面降雨量計(jì)算、地表徑流量計(jì)算等。綜合以上因素,需從水文模型的計(jì)算機(jī)實(shí)現(xiàn)中抽象出數(shù)據(jù)、算法、模塊和模型4個(gè)層面來進(jìn)行水文模型的服務(wù)化封裝方法研究。
水文模型數(shù)據(jù)種類多樣,相應(yīng)的數(shù)據(jù)表示方式也多種多樣。常見的水文模型數(shù)據(jù)類型包括:基本信息、實(shí)時(shí)信息、下墊面信息和模型參數(shù)信息等,總的來說,水文模型主要有3種數(shù)據(jù)來源:數(shù)據(jù)庫、文件和用戶界面輸入。
水文模型在實(shí)現(xiàn)時(shí)會(huì)運(yùn)用到多種多樣的算法,如數(shù)學(xué)公式、物理規(guī)律等。通過分析多種算法的特征,水文模型算法服務(wù)化封裝的組成要素主要包括:算法服務(wù)標(biāo)識(shí)、算法服務(wù)描述、算法服務(wù)輸入、算法計(jì)算流程和算法服務(wù)輸出幾部分。
模塊服務(wù)化封裝思路大致與算法服務(wù)化封裝保持一致,兩者的區(qū)別之處主要在于模塊封裝時(shí)新增的外部調(diào)用流程。水文模塊除了實(shí)現(xiàn)自身特有的計(jì)算邏輯外,有時(shí)還需要組合已定義的算法或模塊,從而需要實(shí)現(xiàn)外部接口調(diào)用的定義。模型服務(wù)化封裝的主要工作便是模塊的組合。根據(jù)流域特征及適用條件等動(dòng)態(tài)組合模塊形成不同的模型,可以極大地增強(qiáng)模型的靈活性,最終形成模型庫實(shí)現(xiàn)模型的集成與共享。模型服務(wù)化封裝分為兩種情況:有源程序的模型封裝和無源程序的模型封裝。
2.2.2 水文模型服務(wù)集成方法
水文模型服務(wù)集成就是指水文模型業(yè)務(wù)流程定義的過程。業(yè)務(wù)流程由一系列服務(wù)節(jié)點(diǎn)組成,通過設(shè)計(jì)流程控制引擎來處理服務(wù)節(jié)點(diǎn)之間的調(diào)用邏輯。業(yè)務(wù)流程的執(zhí)行就是各個(gè)服務(wù)節(jié)點(diǎn)依次按邏輯被調(diào)用的過程,它將原子業(yè)務(wù)功能按需串接在一起,最終形成完整的水文模型服務(wù),對(duì)外提供模型服務(wù)調(diào)用接口。
水文模型服務(wù)集成框架主要由數(shù)據(jù)服務(wù)、業(yè)務(wù)功能和業(yè)務(wù)流程3部分組成。業(yè)務(wù)功能指的是算法服務(wù)層、模塊服務(wù)層和模型服務(wù)層所包含的獨(dú)立的服務(wù)節(jié)點(diǎn)。業(yè)務(wù)流程指的就是服務(wù)節(jié)點(diǎn)之間的調(diào)用邏輯。數(shù)據(jù)服務(wù)為所有的功能服務(wù)節(jié)點(diǎn)提供了數(shù)據(jù)支持。水文模型服務(wù)集成框架如圖6所示,圖中的正方形、三角形和圓形分別代表了不同層面的服務(wù)節(jié)點(diǎn),箭頭方向則代表了服務(wù)的調(diào)用方向。模型服務(wù)會(huì)調(diào)用模塊服務(wù),模塊服務(wù)會(huì)調(diào)用算法服務(wù)。一個(gè)模型服務(wù)可以調(diào)用多個(gè)模塊服務(wù),一個(gè)模塊服務(wù)可以調(diào)用多個(gè)算法服務(wù),一個(gè)算法服務(wù)可以被多個(gè)模塊來調(diào)用,一個(gè)模塊也可以被多個(gè)模型調(diào)用。
圖6 水文模型服務(wù)的集成框架Fig.6 Integrated framework for hydrological model services
在分析水文模型組成時(shí),往往采用自上而下的模型分析方法。首先,從模型整體出發(fā)研究可以分成的模塊數(shù)以及每個(gè)模塊所能提供的功能,然后分析模塊中所包含的水文過程,從每種水文過程中挑選出合適的算法或方程進(jìn)行模擬。水文模型服務(wù)集成過程是一個(gè)與之相反、自下而上的過程,需要先定義算法服務(wù),再組裝模塊服務(wù),最終生成模型服務(wù)。
為準(zhǔn)確預(yù)報(bào)及展示洪水演進(jìn)軌跡和影響范圍,提出一種中小河流垂直河道淹沒算法,從宏觀角度為水利部門提供決策支持;為直觀有效再現(xiàn)洪澇災(zāi)害的發(fā)生范圍及程度,提出一種基于UE4引擎的淹沒仿真設(shè)計(jì)流程,從微觀角度模擬洪水淹沒的動(dòng)態(tài)過程。
2.3.1 中小河流垂直河道淹沒算法
中小流域具有地形較復(fù)雜、洪水來水快以及洪水漫延范圍廣等特點(diǎn)。結(jié)合無源淹沒的優(yōu)點(diǎn)及有源淹沒的思想,同時(shí)考慮大范圍淹沒情況下無源淹沒未考慮連通性所造成的準(zhǔn)確性差以及有源淹沒需要選取種子點(diǎn)而中小流域在發(fā)生大范圍淹沒的情況下無法選取種子點(diǎn),提出一種以河道為考慮對(duì)象的中小流域垂直河道淹沒算法。
垂直河道淹沒算法以流域內(nèi)河道為處理對(duì)象,在每段河流匯流處將河道進(jìn)行分段,形成多個(gè)河段。具體算法實(shí)現(xiàn)步驟如下:
a. 輸入水位數(shù)據(jù)PwaterLevel,輸入流域ASCII格式的DEM數(shù)據(jù)以及河道折點(diǎn)數(shù)據(jù)。
b. 初始化河段類RiverLine,其中包括河段的基本屬性以及河段各折點(diǎn)坐標(biāo)數(shù)組。
c. 讀取流域內(nèi)所有河段數(shù)據(jù)并以RiverLine對(duì)象的形式存儲(chǔ)到集合list中。
d. 取出集合中的一個(gè)河段對(duì)象,從河段端點(diǎn)開始,取出順序的2個(gè)折點(diǎn)Pa(Plng1,Plat1)以及下一折點(diǎn)Pb(Plng2,Plat2),用式(3)計(jì)算線段PaPb長度d,用式(4)計(jì)算線段長度為DEM數(shù)據(jù)像元大小的倍數(shù)。
(3)
(4)
式中:PcellSize——像元大小,即步長。
e. 判斷Pa點(diǎn)與Pb點(diǎn)的相對(duì)關(guān)系,即判斷Pb點(diǎn)在Pa點(diǎn)的什么方向。判斷方法如下:通過式(5)和式(6)計(jì)算2點(diǎn)的經(jīng)度差PdifferLng和緯度差PdifferLat,并計(jì)算線段PaPb與緯線的夾角α。
PdifferLng=Plng1-Plng2
(5)
PdifferLat=Plat1-Plat2
(6)
f. 將線段按等分成t段,得到多個(gè)等分點(diǎn)坐標(biāo)。
g. 在各處等分點(diǎn)(Plng,Plat)做與線段垂直方向上的探測線,沿水流方向在河道左右兩側(cè)進(jìn)行探測,PcountLeft為左側(cè)探測次數(shù);PcountRight為右側(cè)探測次數(shù);通過夾角α獲取到每次探測點(diǎn)的坐標(biāo)(PtempLng,PtempLat)。
h. 獲取到坐標(biāo)點(diǎn)對(duì)應(yīng)的高程值PcellValue,如果PcellValue為-9 999則停止操作,否則計(jì)算水深PwaterDepth的公式如下:
PwaterDepth=PwaterLevel-PcellValue
(7)
i. 判斷PwaterDepth與0的關(guān)系,若PwaterDepth大于0,則將淹沒區(qū)域的水深值賦值給對(duì)應(yīng)的柵格,其余未淹沒區(qū)域值用-9 999填充。
j. 判斷所有河段是否已被計(jì)算完畢,若還未計(jì)算完畢,則重復(fù)步驟(4)至步驟(9)繼續(xù)對(duì)剩余河段操作,求出剩余河段的淹沒情況,直至所有河段計(jì)算完畢。
k. 最后將淹沒結(jié)果以ASCII文件的形式寫出到硬盤。
試驗(yàn)主要是以安徽省屯溪流域?yàn)檠芯繉?duì)象,所有實(shí)際水位數(shù)據(jù)均由屯溪水文站監(jiān)測計(jì)算得到;DEM數(shù)據(jù)來自地理空間數(shù)據(jù)云;根據(jù)獲取到的DEM數(shù)據(jù)并結(jié)合河道特點(diǎn),提取該流域的所有河道柵格數(shù)據(jù)。
當(dāng)水位在180 m、200 m時(shí),由于屯溪流域最低高程值為115 m,且流域內(nèi)高程值低于180 m、200 m的分布于河道兩側(cè)的區(qū)域明顯較多,故在屯溪流域發(fā)生大范圍的淹沒情況,在高程較高的黟縣站附近也發(fā)生小區(qū)域的淹沒情況,且與大淹沒區(qū)域連通,其30 mDEM分辨率淹沒范圍示意圖如圖7(a)和圖7(b)所示。
圖7 30 m DEM分辨率淹沒情況Fig.7 Flood inundation situation of 30 m DEM resolution
2.3.2 基于UE4引擎的淹沒可視化
在UE4平臺(tái)的應(yīng)用基礎(chǔ)之上,提出了一種用于模擬洪水淹沒實(shí)時(shí)研究過程的設(shè)計(jì)流程。結(jié)合DEM數(shù)據(jù),3DM按模型及系列UE4組件,進(jìn)行洪水淹沒的可視化[21]。
總體設(shè)計(jì)流程如下:首先以精細(xì)化DEM數(shù)據(jù)為基礎(chǔ),制作指定流域地貌地形,同時(shí)結(jié)合貼圖材質(zhì)、模型實(shí)例、光照系統(tǒng)等相關(guān)組件搭建流域模擬場景并進(jìn)行優(yōu)化處理。隨后使用藍(lán)圖編輯器設(shè)計(jì)多重觸發(fā)事件及過場動(dòng)畫,從而獲得高擬真度且切合實(shí)際的實(shí)時(shí)淹沒仿真效果。
本文以屯溪流域出口區(qū)域地形地貌和精細(xì)化DEM數(shù)據(jù)為基礎(chǔ),通過UE4引擎處理形成屯溪流域洪水淹沒仿真基礎(chǔ)場景,高度還原了屯溪水文站附近1.588 km2的流域場景。接入實(shí)時(shí)水文數(shù)據(jù)庫,依據(jù)blueprint中斷機(jī)制對(duì)JSON格式水文數(shù)據(jù)進(jìn)行解析,借助Lerp插值方式控制河道水位,為淹沒過程仿真作數(shù)據(jù)準(zhǔn)備。使用基于TimeLine時(shí)間軸線的幀動(dòng)畫渲染,模擬洪水淹沒的動(dòng)態(tài)過程,并在水位超出警戒范圍后發(fā)出模擬預(yù)警預(yù)報(bào),如圖8所示。
圖8 洪水淹沒與預(yù)警預(yù)報(bào)效果Fig.8 Effect of flood inundation and warning
基于上述的系統(tǒng)結(jié)構(gòu),集成數(shù)據(jù)質(zhì)量控制、多層次的按需智能服務(wù)體系和多情景仿真等關(guān)鍵技術(shù),采用Java、Spring Cloud和Docker等技術(shù)棧,構(gòu)建了中小河流洪水預(yù)警預(yù)報(bào)智能調(diào)度平臺(tái)。中小河流洪水預(yù)警預(yù)報(bào)智能調(diào)度平臺(tái)主要功能包括作業(yè)預(yù)報(bào)模塊、預(yù)報(bào)結(jié)果可視化模塊和方案智能調(diào)度模塊。
a. 洪水預(yù)報(bào)模塊實(shí)現(xiàn)了人工預(yù)報(bào)和自動(dòng)預(yù)報(bào)的功能。人工預(yù)報(bào)利用選擇的預(yù)報(bào)方案和經(jīng)過數(shù)據(jù)質(zhì)量控制的實(shí)時(shí)/歷史降雨數(shù)據(jù),根據(jù)預(yù)報(bào)參數(shù)配置水文模型,并調(diào)取相關(guān)微服務(wù)進(jìn)行組合為預(yù)報(bào)模型進(jìn)行預(yù)報(bào),并展示預(yù)報(bào)結(jié)果。自動(dòng)預(yù)報(bào)通過定時(shí)服務(wù),通過指定方案和實(shí)時(shí)信息進(jìn)行預(yù)報(bào)。
b. 預(yù)報(bào)結(jié)果可視化模塊根據(jù)洪水預(yù)報(bào)模塊的結(jié)果,在多重情景下對(duì)結(jié)果進(jìn)行可視化展示,包括淹沒仿真、UE4動(dòng)態(tài)渲染等。
c. 方案智能調(diào)度模塊基于作業(yè)預(yù)報(bào)結(jié)果,結(jié)合地形資料等前置數(shù)據(jù),根據(jù)調(diào)度方案庫智能生成具體調(diào)度方案,供防汛部門參考。
d. 試驗(yàn)選取2016年6月的一場洪水進(jìn)行作業(yè)預(yù)報(bào),作業(yè)預(yù)報(bào)計(jì)算結(jié)果過程統(tǒng)計(jì)與上游網(wǎng)格匯水面積如圖9所示。圖9(a)利用折線圖、柱狀圖直觀展示了流量、水位以及面雨量在洪水演進(jìn)過程中的變化;圖9(b)展示了當(dāng)前網(wǎng)格的流量過程線與上游網(wǎng)格匯水面積及其匯流方向。
圖9 作業(yè)預(yù)報(bào)計(jì)算結(jié)果及其可視化Fig.9 Calculation result of operation forecast and its visualization
目前,中小河流洪水預(yù)警預(yù)報(bào)智能調(diào)度平臺(tái)已在示范流域安徽屯溪得到應(yīng)用,同時(shí)在南京秦淮河、福建漳州平和、龍山和馬口等中小流域得到推廣應(yīng)用。
針對(duì)中小河流水文氣象數(shù)據(jù)缺失、異常以及資料系列短等問題,提出多源水文氣象數(shù)據(jù)質(zhì)量控制技術(shù)和方法;分析中小河流洪水防控與應(yīng)急管理多業(yè)務(wù)協(xié)同關(guān)系,提出針對(duì)“情景-仿真-應(yīng)對(duì)”模式的可視化技術(shù),為實(shí)現(xiàn)預(yù)報(bào)預(yù)警和應(yīng)急處置的快速動(dòng)態(tài)展示提供技術(shù)保障;研發(fā)云環(huán)境下具有狀態(tài)和交互特征的模型封裝服務(wù)技術(shù),實(shí)現(xiàn)不同時(shí)空尺度中小河流預(yù)報(bào)預(yù)警、風(fēng)險(xiǎn)評(píng)估、智能調(diào)度等模型耦合集成,提供數(shù)據(jù)、算法和模型多層次按需服務(wù)?;谏鲜鲫P(guān)鍵技術(shù)與算法,結(jié)合云平臺(tái)構(gòu)建技術(shù),研制中小河流洪水預(yù)警預(yù)報(bào)智能調(diào)度決策支持平臺(tái),開發(fā)數(shù)據(jù)交換接口,接入省和國家防汛指揮系統(tǒng),在示范流域開展應(yīng)用,進(jìn)行成效評(píng)估,有效提高中小河流的洪水預(yù)報(bào)水平與防洪減災(zāi)能力。