本發(fā)明涉及一種基于流式大數(shù)據(jù)處理方式的降雨徑流預(yù)測計(jì)算方法,降雨徑流預(yù)測技術(shù)領(lǐng)域。
背景技術(shù):
世界各地,洪澇災(zāi)害每年都在不斷發(fā)生,直到今天,對(duì)洪水研究與預(yù)測仍然是工程與學(xué)術(shù)界不斷研究的重要課題。其中,降雨徑流預(yù)測是洪水預(yù)報(bào)的重要組成部分,在較多的降雨徑流預(yù)測模型中,SCS(Soil Conservation Service)模型是目前應(yīng)用最為廣泛的模型之一。SCS模型由于計(jì)算過程簡單,涉及率定的參數(shù)較少,需要的資料易于獲取,適用于缺乏詳細(xì)降雨過程資料的農(nóng)業(yè)小流域,又考慮了土壤、植被、土地利用狀況等下墊面對(duì)產(chǎn)流影響,因此被普遍認(rèn)可和廣泛應(yīng)用。SCS模型最初是針對(duì)小流域水文過程,對(duì)大、中尺度流域水文過程的模擬計(jì)算沒有涉及,針對(duì)SCS模型的不足,不少學(xué)者與科技工作者提出了各種SCS模型的改進(jìn)方法。
在基于SCS模型及其改進(jìn)模型的算法上,各種研究主要集中在算法本身的實(shí)現(xiàn),在考慮算法在實(shí)際應(yīng)用中的性能,尤其是利用SCS模型進(jìn)行及時(shí)洪水預(yù)報(bào)的系統(tǒng)性能,相關(guān)研究涉足較少,同時(shí),SCS模型及其改進(jìn)模型,需要進(jìn)行產(chǎn)流計(jì)算以及匯流計(jì)算,有著較高的算法復(fù)雜度。要得到精度較高的流域徑流,往往需要結(jié)合遙感影像處理、土壤類型圖片處理、數(shù)字高程模型處理、降雨資料處理、徑流資料分析等數(shù)據(jù)分析處理,這些分析與處理的算法復(fù)雜度高,計(jì)算時(shí)間長,特別是改進(jìn)后的SCS模型應(yīng)用于大、中尺度流域的徑流計(jì)算,計(jì)算復(fù)雜度更高、時(shí)間更長,因此,利用常規(guī)計(jì)算流程與方法的非集群線性計(jì)算模式實(shí)現(xiàn)SCS模型及其改進(jìn)模型在大、中尺度流域的實(shí)時(shí)洪水預(yù)報(bào),性能將會(huì)是嚴(yán)重瓶頸,滿足不了系統(tǒng)在實(shí)際應(yīng)用中的要求。隨著大數(shù)據(jù)技術(shù)的發(fā)展,利用流式大數(shù)據(jù)處理方式實(shí)現(xiàn)SCS模型及其改進(jìn)模型在大、中尺度流域的實(shí)時(shí)洪水預(yù)報(bào),能夠有效解決使用SCS模型進(jìn)行實(shí)時(shí)洪水預(yù)報(bào)的系統(tǒng)性能問題。
大數(shù)據(jù)技術(shù)近年來取得快速發(fā)展。大數(shù)據(jù)處理方式主要分為批量型處理方式和流式型處理方式,其中流式型處理方式具有集群非線性、并行處理的特點(diǎn),且計(jì)算能力高效。徑流計(jì)算的傳統(tǒng)計(jì)算機(jī)計(jì)算方式不能滿足實(shí)際應(yīng)用的數(shù)據(jù)計(jì)算能力的要求,這是由于徑流計(jì)算的復(fù)雜度以及要取得高精度的計(jì)算結(jié)果,需要對(duì)流域進(jìn)行更小的網(wǎng)格化,這種更小的網(wǎng)格化將導(dǎo)致計(jì)算量的增加,傳統(tǒng)計(jì)算機(jī)技術(shù)面臨更大的計(jì)算能力的瓶頸,因此使用大數(shù)據(jù)流處理方式,是解決計(jì)算能力瓶頸的有效方式。本發(fā)明通過把大、中尺度流域在邏輯上劃分為不同的子流域,利用大數(shù)據(jù)流式處理方式,結(jié)合每個(gè)子流域?qū)崟r(shí)監(jiān)測的斷面流量,通過對(duì)每個(gè)子流域的并行計(jì)算,解決SCS模型及其改進(jìn)模型在大、中尺度流域的實(shí)時(shí)洪水預(yù)報(bào)中的性能問題。
參考文獻(xiàn)
[1]JP Patil,A Sarangi,AK Singh.Evaluation of modified CN methods for watershed runoff estimation using a GIS-based interface[J].Biosystems engineering,2008,100(1):137-146.
[2]趙晶,黃強(qiáng),郝鵬,等.基于SCS模型實(shí)時(shí)洪水預(yù)報(bào)系統(tǒng)的研究[J].西安理工大學(xué)學(xué)報(bào),2013,29(4):21-27.
技術(shù)實(shí)現(xiàn)要素:
發(fā)明目的:針對(duì)現(xiàn)有技術(shù)中存在的問題,本發(fā)明提供一種基于流式大數(shù)據(jù)處理方式的降雨徑流預(yù)測計(jì)算方法。
技術(shù)方案:一種基于流式大數(shù)據(jù)處理方式的降雨徑流預(yù)測計(jì)算方法,首先設(shè)計(jì)基于實(shí)時(shí)水量的子流域及時(shí)預(yù)測算法和基于SCS模型洪水預(yù)測算法,然后使用流式大數(shù)據(jù)處理方式對(duì)這兩個(gè)算法進(jìn)行處理。
流域劃分與斷面流量計(jì)算原理
在實(shí)時(shí)洪水預(yù)報(bào)中,選擇任何一個(gè)子流域的監(jiān)測流量,能夠預(yù)測出下游第N個(gè)子流域的斷面流量,第N個(gè)子流域的斷面流量為上一個(gè)斷面流量與當(dāng)前子段的SCS模型值的和減去子流域段1的其他流出量。
基于實(shí)時(shí)水量的子流域及時(shí)預(yù)測算法
基于流域劃分與斷面流量的計(jì)算原理,通過傳感器監(jiān)測子流域流入斷面,實(shí)時(shí)獲取每個(gè)子流域的流入量,通過SCS模型計(jì)算子流域徑流,求出子流域的及時(shí)產(chǎn)流。
其中:
Q'n是第n段流域的流出斷面流量,Qn"是第n段流域中傳感器的監(jiān)測量,Qn是第n段子流域利用SCS模型的徑流,是第n段流域其它流出量,這個(gè)是一個(gè)參數(shù)值。
基于SCS模型洪水預(yù)測算法
由兩個(gè)算法構(gòu)成,分別是基于上游子流域產(chǎn)流的及時(shí)預(yù)測與基于上游子流域的迭代預(yù)測。
基于上游子流域產(chǎn)流的及時(shí)預(yù)測
上一子流域到本流域的流出量加本段流域通過SCS模型計(jì)算出的模擬量,見公式2。
其中:
Qrn'是第n段子流域的流出斷面流量,Qr(n-1)'是第n-1段子流域的流出斷面流量,Qn是第n段子流域利用SCS模型的計(jì)算值,是第n段子流域其它流出量,這個(gè)是一個(gè)參數(shù)值。
基于上游子流域的迭代預(yù)測
設(shè)定任意一個(gè)流域段為基點(diǎn),預(yù)測后面第n個(gè)子流域的水量趨勢。這個(gè)基點(diǎn)作為第一個(gè)流域段,監(jiān)測第一個(gè)流域流出斷面的流量,通過公式2,選定的第一個(gè)子流域斷面的實(shí)時(shí)流量通過傳感器獲取并計(jì)算出來,計(jì)算出的第一個(gè)流域段的出水量Q11,則第二個(gè)流域段的入水量:
依次類推,求出流域段3、4…n的入水量。
通過SCS模型計(jì)算每個(gè)子流域段的徑流,SCS徑流計(jì)算如下:
水平衡方程是對(duì)水循環(huán)現(xiàn)象定量研究的基礎(chǔ),用于描述各水文要素間的定量關(guān)系,見公式4。
P=Ia+F+Q (4)
其中:
P:總降雨量(mm);
Ia:初損值(mm),主要指截流、表層蓄水等;
F:累積下滲量(不包括Ia)(mm);
Q:直接徑流量(mm)。
通過比例相等假設(shè),地表徑流Q與總的降雨量P及入滲量、最大滯留量比值相等,可以得到公式5。
其中:
S:初損值,也就是可能最大滯留量(mm)。
初損值可以通過公式6計(jì)算。
Ia=λS (6)
其中:
λ:區(qū)域參數(shù),主要取決于地理和氣候因子[1]。λ可表達(dá)為λ=atp,其中a為Horton常數(shù),tp是降水時(shí)刻到地表徑流形成的時(shí)段,λ的取值范圍為0.1≤λ≤0.3。
基于流式大數(shù)據(jù)的處理方法
大數(shù)據(jù)流處理技術(shù)最主要的開源實(shí)現(xiàn)是Storm,本文使用Storm技術(shù)實(shí)現(xiàn)上述基于SCS模型洪水預(yù)測方法。
上述中每個(gè)流量預(yù)測算法作為Storm框架的拓?fù)溥壿?topology),在“基于實(shí)時(shí)水量的子流域及時(shí)預(yù)測”(公式1)過程中,整個(gè)子流域流量及時(shí)預(yù)測作為一個(gè)拓?fù)溥壿?,提交拓?fù)溥壿嫼?,每一個(gè)子流域的及時(shí)預(yù)測在不同的機(jī)器上并行計(jì)算。
在“基于上游子流域產(chǎn)流的及時(shí)預(yù)測”(公式2)過程中,整個(gè)子流域流量及時(shí)預(yù)測作為一個(gè)拓?fù)溥壿?,提交拓?fù)溥壿嫼螅恳粋€(gè)子流域的流量預(yù)測過程被提交到不同計(jì)算機(jī)進(jìn)行處理,每一個(gè)計(jì)算節(jié)點(diǎn)啟動(dòng)兩個(gè)worker,一個(gè)worker負(fù)責(zé)SCS模型計(jì)算徑流,另外一個(gè)worker接收上一個(gè)子流域的及時(shí)預(yù)測值,并對(duì)本子流域的預(yù)測值進(jìn)行整體計(jì)算。
附圖說明
圖1為流域分段示意圖;
圖2為Storm的拓?fù)溥壿嫞?/p>
圖3為Storm拓?fù)溥壿嫷膱?zhí)行流程;
圖4為基于上游子流域的及時(shí)迭代預(yù)測;
圖5為伊春水系圖。
具體實(shí)施方式
下面結(jié)合具體實(shí)施例,進(jìn)一步闡明本發(fā)明,應(yīng)理解這些實(shí)施例僅用于說明本發(fā)明而不用于限制本發(fā)明的范圍,在閱讀了本發(fā)明之后,本領(lǐng)域技術(shù)人員對(duì)本發(fā)明的各種等價(jià)形式的修改均落于本申請(qǐng)所附權(quán)利要求所限定的范圍。
基于流式大數(shù)據(jù)處理方式的降雨徑流預(yù)測計(jì)算方法,首先設(shè)計(jì)基于實(shí)時(shí)水量的子流域及時(shí)預(yù)測算法和基于SCS模型洪水預(yù)測算法,然后使用流式大數(shù)據(jù)處理方式對(duì)這兩個(gè)算法進(jìn)行處理。
流域劃分與斷面流量計(jì)算原理
通過把大、中流域劃分為不同子流域,利用SCS模型及其改進(jìn)模型對(duì)每個(gè)子流域進(jìn)行徑流計(jì)算,獲取每個(gè)子流域的徑流。大、中型流域劃分為不同子流域的方法抽象為圖1。
如圖1所示,流域各個(gè)斷面流量的計(jì)算原理:
1.子流域1的流出斷面A1的流量為斷面A0的流量與子段1的SCS模型值的和減去子流域段1的其他流出量;
2.子流域2的流出斷面A2的流量為斷面A1的流量與子段2的SCS模型值之和減去子流域段2的其他流出量;
3.以此類推,通過子流域1,計(jì)算出流域4的流出斷面A4的流量。
以此原理,當(dāng)我們?cè)趯?shí)時(shí)洪水預(yù)報(bào)中,選擇任何一個(gè)子流域的監(jiān)測流量,能夠預(yù)測出下游第N個(gè)子流域的斷面流量。
基于實(shí)時(shí)水量的子流域及時(shí)預(yù)測算法
基于流域劃分與斷面流量的計(jì)算原理,通過傳感器監(jiān)測子流域流入斷面,實(shí)時(shí)獲取每個(gè)子流域的流入量,通過SCS模型計(jì)算子流域徑流,求出子流域的及時(shí)產(chǎn)流。
其中:
Q'n是第n段流域的流出斷面流量,Q"n是第n段流域中傳感器的監(jiān)測量,Qn是第n段子流域利用SCS模型的徑流,是第n段流域其它流出量,這個(gè)是一個(gè)參數(shù)值。
基于SCS模型洪水預(yù)測算法
由兩個(gè)算法構(gòu)成,分別是基于上游子流域產(chǎn)流的及時(shí)預(yù)測與基于上游子流域的迭代預(yù)測。
基于上游子流域產(chǎn)流的及時(shí)預(yù)測
上一子流域到本流域的流出量加本段流域通過SCS模型計(jì)算出的模擬量,見公式2。
其中:
Qrn'是第n段子流域的流出斷面流量,Qr(n-1)'是第n-1段子流域的流出斷面流量,Qn是第n段子流域利用SCS模型的計(jì)算值,是第n段子流域其它流出量,這個(gè)是一個(gè)參數(shù)值。
基于上游子流域的迭代預(yù)測
設(shè)定任意一個(gè)流域段為基點(diǎn),預(yù)測后面第n個(gè)子流域的水量趨勢。這個(gè)基點(diǎn)作為第一個(gè)流域段,監(jiān)測第一個(gè)流域流出斷面的流量,通過公式2,選定的第一個(gè)子流域斷面的實(shí)時(shí)流量通過傳感器獲取并計(jì)算出來,計(jì)算出的第一個(gè)流域段的出水量Q11,則第二個(gè)流域段的入水量:
依次類推,求出流域段3、4…n的入水量。
通過SCS模型計(jì)算每個(gè)子流域段的徑流,SCS徑流計(jì)算如下:
水平衡方程是對(duì)水循環(huán)現(xiàn)象定量研究的基礎(chǔ),用于描述各水文要素間的定量關(guān)系,見公式4。
P=Ia+F+Q (4)
其中:
P:總降雨量(mm);
Ia:初損值(mm),主要指截流、表層蓄水等;
F:累積下滲量(不包括Ia)(mm);
Q:直接徑流量(mm)。
通過比例相等假設(shè),地表徑流Q與總的降雨量P及入滲量、最大滯留量比值相等,可以得到公式5。
其中:
S:初損值,也就是可能最大滯留量(mm)。
初損值可以通過公式6計(jì)算。
Ia=λS (6)
其中:
λ:區(qū)域參數(shù),主要取決于地理和氣候因子[1]。λ可表達(dá)為λ=atp,其中a為Horton常數(shù),tp是降水時(shí)刻到地表徑流形成的時(shí)段,λ的取值范圍為0.1≤λ≤0.3。
基于流式大數(shù)據(jù)的處理方法
大數(shù)據(jù)處理方式主要分為大數(shù)據(jù)批處理方式、大數(shù)據(jù)流處理方式,大數(shù)據(jù)批處理與大數(shù)據(jù)流處理方式是當(dāng)前大數(shù)據(jù)處理處理技術(shù)的兩個(gè)重要研究方向,基于這方面技術(shù),學(xué)者與工程師都進(jìn)行了大量的研究。其中大數(shù)據(jù)批處理技術(shù)的開源實(shí)現(xiàn)是Hadoop,現(xiàn)階段已經(jīng)發(fā)展到Y(jié)arn版本,也就是Hadoop 2.0;大數(shù)據(jù)流處理技術(shù)最主要的開源實(shí)現(xiàn)是Storm,本文使用Storm技術(shù)實(shí)現(xiàn)上述基于SCS模型洪水預(yù)測方法。
上述中每個(gè)流量預(yù)測算法作為Storm框架的拓?fù)溥壿?topology),基于Storm的拓?fù)溥壿嬋鐖D2,拓?fù)溥壿嬙赟trom中的執(zhí)行流程如圖3。
以圖2為例,在“基于實(shí)時(shí)水量的子流域及時(shí)預(yù)測”(公式1)過程中,整個(gè)子流域流量及時(shí)預(yù)測作為一個(gè)拓?fù)溥壿?,提交拓?fù)溥壿嫼螅恳粋€(gè)子流域的及時(shí)預(yù)測在不同的機(jī)器上并行計(jì)算。
以圖2為例,在“基于上游子流域產(chǎn)流的及時(shí)預(yù)測”(公式2)過程中,整個(gè)子流域流量及時(shí)預(yù)測作為一個(gè)拓?fù)溥壿嫞峤煌負(fù)溥壿嫼?,每一個(gè)子流域的流量預(yù)測過程被提交到不同計(jì)算機(jī)進(jìn)行處理,每一個(gè)計(jì)算節(jié)點(diǎn)啟動(dòng)兩個(gè)worker,一個(gè)worker負(fù)責(zé)SCS模型計(jì)算徑流,另外一個(gè)worker接收上一個(gè)子流域的及時(shí)預(yù)測值,并對(duì)本子流域的預(yù)測值進(jìn)行整體計(jì)算,計(jì)算過程見圖4。
實(shí)驗(yàn)與結(jié)果分析
利用SCS改進(jìn)模型的算法進(jìn)行洪水預(yù)報(bào)的常規(guī)計(jì)算流程與方法是非集群的線性計(jì)算模式,比如文獻(xiàn)[2]中使用非集群的線性計(jì)算模式,利用Visual Basic開發(fā)工具實(shí)現(xiàn)了SCS模型的洪水預(yù)報(bào)。通過伊春水系湯旺河4個(gè)連續(xù)監(jiān)測站點(diǎn)為參考點(diǎn)來對(duì)常規(guī)計(jì)算流程與方法與本發(fā)明提出的方法進(jìn)行比較驗(yàn)證。
伊春水系是黑龍江湯旺河主要支流之一,圖5是伊春水系圖,圖中圓圈標(biāo)注是五營、伊新、西林、晨明4個(gè)連續(xù)監(jiān)測點(diǎn),通過這4個(gè)監(jiān)測點(diǎn),把湯旺河流域分為五段,五營監(jiān)測點(diǎn)是第一段的流出斷面,伊新監(jiān)測點(diǎn)是第二段的流出斷面,西林監(jiān)測點(diǎn)是第三段的流出斷面,晨明監(jiān)測點(diǎn)是第四段的流出斷面。
基于實(shí)時(shí)水量的子流域及時(shí)預(yù)測算法比較
編寫測試函數(shù)SCSTest,函數(shù)返回值為100000ms到120000ms的隨機(jī)時(shí)間,基于這四個(gè)連續(xù)監(jiān)測點(diǎn)為例進(jìn)行驗(yàn)證計(jì)算,對(duì)最終結(jié)果耗時(shí)進(jìn)行比較。
常規(guī)計(jì)算流程與方法:順序執(zhí)行每個(gè)子流域SCS徑流計(jì)算的SCSTest函數(shù),獲取SCSTest返回值,最后對(duì)每個(gè)子流域的返回值求和。
流式大數(shù)據(jù)的處理方法:并行計(jì)算,4個(gè)子流域的函數(shù)被分發(fā)到不同的節(jié)點(diǎn)進(jìn)行計(jì)算,并行獲取SCSTest的返回值,最后取最大值。
基于流式大數(shù)據(jù)處理時(shí)間是常規(guī)計(jì)算流程與方法處理時(shí)間的114285/453287*100=25.21%。
基于SCS模型洪水預(yù)測算法比較
編寫測試函數(shù)SCSTest,函數(shù)返回值為100000ms到120000ms的隨機(jī)時(shí)間,模擬SCS模型計(jì)算子流域徑流的耗時(shí);測試函數(shù)testSum用于模擬接收上一個(gè)子流域的及時(shí)預(yù)測值并對(duì)本子流域的徑流值求和,函數(shù)返回值為1000ms到1200ms的隨機(jī)時(shí)間?;谶@4個(gè)連續(xù)監(jiān)測點(diǎn)為例進(jìn)行驗(yàn)證計(jì)算,對(duì)最終結(jié)果耗時(shí)進(jìn)行比較。
常規(guī)計(jì)算流程與方法:順序執(zhí)行每個(gè)子流域SCS徑流計(jì)算的SCSTest函數(shù)與匯總函數(shù)testSum,獲取每個(gè)子流域的輸出時(shí)間。
流式大數(shù)據(jù)的處理方法:并行計(jì)算,4個(gè)SCS徑流計(jì)算的SCSTest函數(shù)與匯總函數(shù)testSum被分發(fā)到不同的節(jié)點(diǎn)進(jìn)行計(jì)算,并行獲取testSum的返回值,最后取最大值。
基于流式大數(shù)據(jù)處理時(shí)間是傳統(tǒng)常規(guī)計(jì)算流程與方法處理時(shí)間的119705/450747*100=26.56%。
基于以上實(shí)驗(yàn)驗(yàn)證,使用非流式大數(shù)據(jù)的傳統(tǒng)處理方式與使用流式大數(shù)據(jù)的方式相比,使用流式大數(shù)據(jù)處理方式的情況下,五營、伊新、西林、晨明4個(gè)監(jiān)測點(diǎn)進(jìn)行并行同步計(jì)算,在同一時(shí)間段得到4個(gè)監(jiān)測點(diǎn)的及時(shí)預(yù)測值,而使用傳統(tǒng)處理方式,4個(gè)監(jiān)測點(diǎn)串行計(jì)算,計(jì)算時(shí)間是使用流式大數(shù)據(jù)計(jì)算的4倍,即整體計(jì)算時(shí)間縮短了大約73%。
表1基于實(shí)時(shí)監(jiān)測水量的子流域及時(shí)預(yù)測比較
表2基于上游子流域的迭代預(yù)測比較