許輝熙,薛萬蓉,何政偉,張東輝
(1.四川建筑職業(yè)技術(shù)學院交通與市政工程系測量工程研究所,四川德陽 618000;2.成都理工大學數(shù)字國土與生態(tài)科學研究所,四川成都 610059)
修建水庫是水電站建設(shè)的重要內(nèi)容。庫區(qū)地形開闊,河道縱坡緩,水庫蓄水量就大,工程效益也較大;反之,若庫區(qū)地形狹窄,河道縱坡陡,壩雖高,但其蓄水量不一定大。用以反映水庫地形特征的曲線稱為水庫特性曲線,分為水庫水位-面積關(guān)系曲線和水庫水位-庫容關(guān)系曲線(簡稱水庫面積-庫容曲線,下同),它們是水庫的重要技術(shù)指標,是水庫規(guī)劃設(shè)計的重要依據(jù)[1]。
水庫面積-庫容曲線計算,關(guān)鍵在于水庫庫容計算。常用水庫庫容計算方法有兩種[2]:一種是圖上量測;一種是實地量測。在圖上量算的方法中又有“等高線法”[3]、“格網(wǎng)法”、“橫斷面法”[4]和“解析法”[5]。 “等高線法”、“格網(wǎng)法”和“橫斷面法”計算庫容工作量大,耗時多,精度較低;“解析法”計算的精度比前三種方法要高,但算法復(fù)雜,不易實現(xiàn)。實地量測的方法是在庫區(qū)實地,采用測量橫斷面圖的方法進行庫容的量測計算,這種方法的精度要高些,但是實際可操作性不強。GIS技術(shù)的普及應(yīng)用,為水利水電工作者解脫繁重的量算工作、提高工作精度和效率提供了技術(shù)支持。
本文基于數(shù)字高程模型(DEM),提出基于“土地平整法”計算水庫面積-庫容曲線的思想,并通過.NET平臺 C#語言編寫軟件,以期在水電開發(fā)決策的預(yù)可研階段實現(xiàn)水庫面積-庫容曲線的快速計算,提高決策效率和水平,有利于各項參數(shù)比選,真正做到水電站規(guī)劃的優(yōu)化設(shè)計。
圖1 “土地平整法”計算水庫面積和庫容的基本原理
“土地平整法”計算水庫面積-庫容曲線的基本原理:將計算水庫面積和庫容視為一項土地平整工程,水庫面積就是工程設(shè)計標高所在平面面積,水庫庫容計算就是工程土方的填方量,如圖 1所示。
“土地平整法”計算水庫面積和庫容的簡要過程:將“土地平整區(qū)”(庫區(qū))微分成許多相同的正方形單元,且認為每個單元表面是水平的,即高程是均一的,而鄰近單元有差異。這樣,單個柵格單元填方體積實際就是地面與“土地平整設(shè)計標高線”(即水庫設(shè)計水位線)之間構(gòu)成的立方體體積 V=Δh×s,s是微分單元面積,Δh是該單元實際地面高程與“設(shè)計標高”(即設(shè)計水位線)之間的差值。將整個“土地平整區(qū)”(即庫區(qū))所有微分單元體積求和就是“土地平整工程量”(即庫容);而所有單元面積之和就是水庫水面面積。式(1)是水庫面積和庫容計算公式。
式中:a為地面采樣微分單元邊長;h0為某一設(shè)計水位高程;hi為該設(shè)計高程以下淹沒的某一單元的高程;n為淹沒單元個數(shù);V為該設(shè)計高程的水庫庫容;S為該設(shè)計高程下的水庫面積。
根據(jù)式(1)可以計算任意設(shè)計水位高程 h0對應(yīng)的水庫水面 S和水庫容積 V,進而可以繪制水位-面積曲線和水位-庫容曲線。
但是,和土地平整工程不同之處是,水庫庫容計算“只填不挖”,即只算“填方體積”,不算“挖方體積”,包括庫區(qū)中的孤島也不能“開挖”。
系統(tǒng)框架結(jié)構(gòu)設(shè)計見圖2。本系統(tǒng)工作流程為:
(1)對 DEM數(shù)據(jù)進行預(yù)處理操作,生成系統(tǒng)易于導(dǎo)入的數(shù)據(jù)集。
(2)導(dǎo)入符合要求的數(shù)據(jù)集,生成一維數(shù)組,將硬盤數(shù)據(jù)導(dǎo)入到計算機的內(nèi)存儲器中,以便于算法實現(xiàn)。
(3)進行計算前的準備工作,設(shè)置相關(guān)參數(shù),滿足不同數(shù)據(jù)下對系統(tǒng)計算的不同需求,這些設(shè)置包括:設(shè)置高程信息、DEM分辨率和高程計算步長等。
(4)把事先導(dǎo)入的數(shù)據(jù),通過讀取上述設(shè)置信息,代入數(shù)學模型中,分別得出水庫面積和水庫庫容計算結(jié)果。
(5)利用圖形控件,根據(jù)計算結(jié)果,生成水庫水位-面積和水庫水位-庫容曲線,將所有的原始數(shù)據(jù)、中間設(shè)置數(shù)據(jù)和計算結(jié)果(包括文本和圖形)都能夠以一定的方式導(dǎo)出到硬盤中,供研究分析使用。
本系統(tǒng)以 DEM(ASCII碼)數(shù)據(jù)為計算起點,以生成水庫水位-面積和水庫水位-庫容曲線為最終目標,整體功能具有嚴密的流程,數(shù)據(jù)具有明顯時序性。鑒于此,本系統(tǒng)的設(shè)計采用的是流程式架構(gòu),即根據(jù)數(shù)據(jù)運算的先后順序來劃分系統(tǒng)模塊。系統(tǒng)的功能總體上分為5個。
(1)數(shù)據(jù)導(dǎo)入模塊:讀取經(jīng)過預(yù)處理的數(shù)據(jù)文件,并導(dǎo)入到數(shù)組中;
(2)數(shù)據(jù)準備模塊:進行計算前相關(guān)參數(shù)的設(shè)置等準備工作;
(3)數(shù)據(jù)計算模塊:根據(jù)數(shù)學算法,計算水庫面積和水庫容積;
(4)生成圖形模塊:繪制相關(guān)曲線;
(5)導(dǎo)出數(shù)據(jù)模塊:將中間數(shù)據(jù)以及結(jié)果數(shù)據(jù)進行導(dǎo)出。
本系統(tǒng)開發(fā)工具選擇.NET平臺的 C#語言。C#是.NET平臺的主流語言,是一種先進的、面向?qū)ο蟮恼Z言。通過 C#可以使程序開發(fā)人員快速地建立大范圍的基于 Microsoft網(wǎng)絡(luò)平臺的應(yīng)用,并且提供大量的開發(fā)工具和服務(wù),幫助開發(fā)人員開發(fā)基于計算和通信的各種應(yīng)用。C#也可以為 C/C++開發(fā)人員提供快速的開發(fā)手段而不需要犧牲任何 C/C++語言的特點和優(yōu)點。從繼承角度來看,C#在更高層次上重新實現(xiàn)了 C/C++,熟悉C/C++開發(fā)的人員可以很快地轉(zhuǎn)變?yōu)?C#開發(fā)人員。作為一種全新的語言,C#具有許多新特性,其中主要有自動內(nèi)存管理、統(tǒng)一類型系統(tǒng)、版本控制及對網(wǎng)絡(luò)編程新標準的支持等。
圖2 水庫面積-庫容曲線計算系統(tǒng)框架設(shè)計
3.1.1 自動內(nèi)存管理
.Net運行時(Run Time)提供了一個無用單元收集器,負責 C#程序中的內(nèi)存管理。當檢測到過程需要清理時,即調(diào)用無用單元收集器,由其檢測哪些對象不可以從代碼中訪問,并將其刪除。
3.1.2 統(tǒng)一類型系統(tǒng)
所有類型都是從 System Object類型派生而來,并且它們都可被當作對象處理。
3.1.3 版本兼容
版本兼容問題起因于多個應(yīng)用程序都安裝了相同DLL名字的不同版本。.Net平臺通過使用裝配件 (裝配件是自我描述的安裝單元)對應(yīng)用程序提供版本支持,使C#可以更好地支持版本控制。
3.1.4 支持網(wǎng)絡(luò)編程新標準
C#的內(nèi)置特性使任何組件可以輕松轉(zhuǎn)化為 XML網(wǎng)絡(luò)服務(wù),被任何操作系統(tǒng)上運行的任何程序調(diào)用。
本系統(tǒng)采用的是多級數(shù)據(jù)控制結(jié)構(gòu),可以在保護重點數(shù)據(jù)的前提下,利用緩存技術(shù),優(yōu)化文件數(shù)據(jù)的運算和存儲方式。數(shù)據(jù)讀取的方式是后臺處理辦法,一定程度上加速了讀取的速度。表1是系統(tǒng)核心數(shù)據(jù)的定義。
黃河瑪爾擋水電站為西北勘測設(shè)計研究院《黃河上游干流多松至爾多河段水電規(guī)劃》推薦 3級開發(fā)方案中的第 2個梯級電站。壩址位于青海省瑪沁縣拉軍鎮(zhèn)上游約 5 km的黃河干流上,左岸為果洛州瑪沁縣,右岸為海南州同德縣,距上游規(guī)劃的寧木特水電站(正常蓄水位 3 410m)約 75 km,距下游規(guī)劃的爾多水電站(正常蓄水位 3 070m)約 33 km。西寧 ~果洛州省道(S101)通過下壩址右壩肩,距西寧市公路里程約 363 km。工程規(guī)模為Ⅰ等大(1)型工程,主要建筑物為1級,次要建筑物為 3級,是一座以發(fā)電為主的大型水電樞紐工程。工程目前處于預(yù)可研階段。
壩址區(qū)地處青藏高原腹地,為典型高原深切峽谷地貌。河谷彎曲,總體西流,深切 200~250m,河道狹窄,水流湍急,多有跌坎,岸坡陡峭,部分直立,基巖裸露較好,河床覆蓋淺,沖溝支流發(fā)育,多常年有水,兩岸高平臺為黃河高階地侵蝕堆積成因,受局部剝蝕,呈不連續(xù)分布。場內(nèi)勘察工作環(huán)境和條件如氣候(多雨雪、大風)、交通、供水供電、水上作業(yè)等,極為困難。
以瑪爾擋水電站研究區(qū)格網(wǎng)DEM計算初擬正常蓄水位3 270m時的水庫面積-庫容曲線為例,說明軟件的使用過程。
(1)DEM數(shù)據(jù)準備。采用研究區(qū) 1∶10000等高線數(shù)據(jù),在 ArcGIS的 WorkStation工作環(huán)境中,利用 Topogridtool命令生成 2m分辨率格網(wǎng)DEM,根據(jù)水電站水庫設(shè)計的下壩址位置和初擬正常蓄水位 3 270m,通過掩膜(mask)處理得到正常蓄水位線以下的 DEM,利用 ArcGIS的“Raster to ASCII”命令將其導(dǎo)出為 ASCII碼(文本文件),刪除文本文件中記錄原數(shù)據(jù)行列號等信息的頭文件,得到可直接用于本系統(tǒng)計算水庫面積和庫容的數(shù)值文件。
(2)啟動系統(tǒng)(圖 3),讀入 DEM文本文件(圖 4)。
(3)輸入設(shè)計水位線、DEM柵格單元大小和高程計算步長(圖 5)。
(4)計算不同水位時的水庫面積(圖 6)。
(5)計算不同水位時的水庫庫容(圖 7)。
(6)自動生成水庫水位-面積關(guān)系曲線(圖 8)。
(7)自動生成水庫水位-庫容關(guān)系曲線(圖 9)。
(8)文本、圖片等成果輸出(圖 10)。
圖3 系統(tǒng)啟動界面
圖4 讀入 DEM文本數(shù)據(jù)
圖5 設(shè)置計算參數(shù)
圖6 計算不同高程的水庫面積
圖7 計算不同高程的水庫庫容
圖8 自動繪制水庫水位-面積曲線
圖9 自動繪制水庫水位-庫容曲線
圖10 計算成果輸出
通過計算得到的水庫水位-面積關(guān)系曲線和水庫水位-庫容關(guān)系曲線,反映了瑪爾擋水電站的水庫面積和庫容隨著蓄水位變化而變化的趨勢,對水庫地形特征的展示形象直觀,一目了然。
[1]武鵬林,霍德敏,馬存信,等.水利計算與水庫調(diào)度[M].北京:地震出版社,2000
[2]袁勇.基于 DEM庫容計算及可視化研究[D].武漢:武漢大學,2004
[3]葉守澤.水文水利計算[M].北京:水力電力出版社,1992
[4]劉煒,牛占,陳濤.斷面法水庫庫容計算模型的幾何分析[J].人民黃河,2006,28(10):72-74
[5]何習平.解析法計算水庫庫容[J].南昌水專學報,1998,17(3):56-61