王新華
(云南農(nóng)業(yè)大學(xué)水利學(xué)院,云南 昆明 650201)
大斷面是河道水道斷面擴(kuò)展至歷年最高洪水位以上0.5~1.0m的斷面,用于研究測站斷面變化情況以及在測流時(shí)不施測斷面可供借用的斷面。根據(jù)大斷面測量的起點(diǎn)距、河底高程需要繪制大斷面形狀并計(jì)算出不同水位下的過水?dāng)嗝婷娣e,配合測流資料、水位流速曲線可進(jìn)行高低水位的水位流量關(guān)系曲線的展延。根據(jù)大斷面測量資料進(jìn)行大斷面水位面積計(jì)算是水文與水資源專業(yè)工程技術(shù)人員必備的一項(xiàng)技能,以往都是手工繪制大斷面圖并量算不同水位下的面積,即在格網(wǎng)紙上設(shè)置適當(dāng)?shù)目v橫坐標(biāo)刻度比例尺,將斷面測量起點(diǎn)距及高程點(diǎn)成對點(diǎn)繪在格網(wǎng)紙上,從左到右依次用直線連接各測點(diǎn)可得到大斷面圖。計(jì)算某一水位下的過水?dāng)嗝婷娣e時(shí),常用格網(wǎng)法、平行線法。格網(wǎng)法是通過統(tǒng)計(jì)該水位下河道斷面所占據(jù)的總的方格數(shù)(不滿整格的一律按1/2格計(jì)算),乘以每個(gè)方格所代表的面積得到過水?dāng)嗝婷娣e;平行線法是將水面以下面積分割成高位△z的梯形,通過量算梯形上下底所代表的水面寬度,利用梯形面積計(jì)算公式計(jì)算出該層面積,從河底累加各層面積至指定水位處可得到該水位下的面積。在斷面測量數(shù)據(jù)較多時(shí),手工繪制大斷面圖比較費(fèi)時(shí),在手工繪制大斷面圖上量算不同水位下的面積,進(jìn)而繪制水位面積曲線,不論是平行線法還是格網(wǎng)法,任務(wù)都非常繁重,極易出錯(cuò)。隨著計(jì)算機(jī)的普及應(yīng)用,人們嘗試采用計(jì)算機(jī)編程來解決這類問題[1- 3],但程序代碼一般都較為晦澀難讀,對于不熟悉編程語言的測站工作人員而言,理解和使用軟件有一定的難度,開發(fā)出一個(gè)簡便實(shí)用的大斷面繪圖及面積計(jì)算工具,顯得十分必要。Excel表格作為一款最常用的辦公軟件,內(nèi)置了大量函數(shù),具有強(qiáng)大的數(shù)據(jù)處理功能,靈活運(yùn)用這些功能將會大大提高工作效率。一些研究人員和工程技術(shù)人員開始探索利用Excel軟件解決工程實(shí)際問題[4- 16]。本文結(jié)合作者的使用經(jīng)驗(yàn),介紹如何使用一些常用的Excel函數(shù)命令,實(shí)現(xiàn)水平分層累加求和法和垂直分塊累加求和法大斷面面積計(jì)算,可以大大提高工作效率,具有較高的實(shí)用價(jià)值。
某河道大斷面測量數(shù)據(jù)見表1。打開OFFICE2010版Excel軟件,將大斷面測量的測點(diǎn)編號、起點(diǎn)距和河底高程數(shù)據(jù)依次輸入到Excel工作簿A、B、C三列中。
水平分層累加求和法適用于對大多數(shù)水文測站,這類測站河道橫斷面地形變化特征一般自中泓線向兩岸高程依次遞增,河底以上任一高程的水面線與河床左岸和右岸分別只有一個(gè)交點(diǎn)。其交點(diǎn)處的起點(diǎn)距可根據(jù)相鄰兩河床測量點(diǎn)起點(diǎn)距及其高程,采用線性內(nèi)插法求出,右岸交點(diǎn)起點(diǎn)距減去左岸交點(diǎn)起點(diǎn)距就可得到該水位下的水面寬度。相鄰兩水位水面寬度的平均值乘以水位差就是該層的面積,自河底向上逐層求面積并累加求和至指最高水位以上1.0m水位處,就可得到該水位以下各水位對應(yīng)的面積。
表1 某水文站大斷面測量數(shù)據(jù)表
在EXCEL中實(shí)現(xiàn)水平分層累加求和法水位面積計(jì)算,主要用到的函數(shù)有:求最小值的函數(shù)min()、排序位置查找函數(shù)match()、偏移引用區(qū)域函數(shù)offset()、計(jì)數(shù)函數(shù)count()、線性內(nèi)插函數(shù)forecast()、單元格絕對地址查找函數(shù)address( )、文本字符串指定區(qū)域數(shù)值的引用函數(shù)indirect(),各函數(shù)的語法和用法可在Excel幫助中查看。
仍以上文中的大斷面測量數(shù)據(jù)為例,說明在EXCEL中如何實(shí)現(xiàn)大斷面面積計(jì)算。在E1單元格中輸入公式==MIN($C:$C),用于查找C列中河底高程測量的最小值。在E2單元格中輸入公式=MATCH(E1,$C∶C,0)-1,用于確定河床最低高程在高程數(shù)值中的排序位置,在該位置以前的地形點(diǎn)序列是降序排列的,稱為左岸測量數(shù)據(jù);從該位置以后的地形高程點(diǎn)序列是升序排列的,稱為右岸測量數(shù)據(jù)。在E3單元格中輸入公式=OFFSET($B$1,$E$2,0),用于獲得河床最低點(diǎn)的起點(diǎn)距。在E4單元格中輸入公式 =COUNT(B∶B),用于統(tǒng)計(jì)C列中高程測點(diǎn)個(gè)數(shù)。在E5單元格中輸入擬定的水位增量值,比如1m。
在F列用于產(chǎn)生水位級系列。F2單元格輸入河床最低高程值或略高于河床最低點(diǎn)高程1cm左右,F(xiàn)3單元格輸入公式 =F2+$E$5,并將F3單元格中的公式復(fù)制粘貼到該列F3單元格以下其他單元格中(可通過將鼠標(biāo)放到F3單元格并移至該單元格右下角,待鼠標(biāo)變成黑色小十字型時(shí),向下拖拽若干行完成復(fù)制粘貼),就可生成以$E$單元格數(shù)值為水位增量的遞增的水位序列。
G列用于存放F列中水位與左岸交點(diǎn)的起點(diǎn)距。在G2單元格中輸入公式=FORECAST(F2,OFFSET($B$1,MATCH(F2,INDIRECT(ADDRESS(2,3)&":"&ADDRESS($E$2+1,3)),-1),0,2),OFFSET($C$1,MATCH(F2,INDIRECT(ADDRESS(2,3)&":"&ADDRESS($E$2+1,3)),-1),0,2)),該嵌套函數(shù)的功能是:在左岸至河底最低點(diǎn)的降序排列的高程數(shù)值中,找到大于等于F2單元格中所給水位Z的最小值的排列序號n,分別以$B$1、$C$1為參考,向下偏移n行、0列,以此為起點(diǎn)向下選取高度為2(即兩行)的引用數(shù)組區(qū)域(即Zi和Zi+1兩個(gè)高程點(diǎn)數(shù)據(jù),及其對應(yīng)的bi和bi+1起點(diǎn)距數(shù)據(jù)),在引用數(shù)組區(qū)域內(nèi),已知水位用內(nèi)線性內(nèi)插法求得交點(diǎn)的起點(diǎn)距。將G2單元格中的公式復(fù)制粘貼到該列G2單元格以下其他單元格中,就可生成各水位與左岸交點(diǎn)的起點(diǎn)距。
H列用于存放F列中水位Z與右岸交點(diǎn)的起點(diǎn)距。在H2單元格中輸入公式=FORECAST(F2,OFFSET($B$1,$E$2- 1+MATCH(F2,INDIRECT(ADDRESS($E$2+1,3)&":"&ADDRESS($E$4+1,3)),1),0,2),OFFSET($C$1,$E$2- 1+MATCH(F2,INDIRECT(ADDRESS($E$2+1,3)&":"&ADDRESS($E$4+1,3)),1),0,2))該嵌套函數(shù)的功能是:在河底最低點(diǎn)至右岸的升序排列的高程數(shù)值中,找到小于等于F2單元格中所給水位Z的最小值的排列序號n,分別以$B$1、$C$1為參考,向下偏移n行、0列,得到高度為2(即兩行)的引用數(shù)組區(qū)域(即Zi和Zi+1兩個(gè)高程點(diǎn)數(shù)據(jù),及其對應(yīng)的Li和Li+1起點(diǎn)距數(shù)據(jù)),在引用數(shù)組區(qū)域內(nèi)由已知水位線性內(nèi)插法求得交點(diǎn)的起點(diǎn)距。
I列存放各水位下對應(yīng)的水面寬度。在I2單元格中輸入公式=H2-G2,將I2單元格中公式復(fù)制粘貼到該列其他單元格中即可完成水面寬度計(jì)算任務(wù)。
J列存放分層水面面積、K列存放逐層累加后的面積(即各相應(yīng)水位下的過水?dāng)嗝婷娣e)。因?yàn)樵谠诤哟沧畹忘c(diǎn)的水面面積近似為0,故在J2、K2單元格中都輸入0,在J3單元格輸入公式=(I3+I2)/2*(F3-F2),并將其復(fù)制粘貼到該列J3以下其他單元格中,即可完成水位分層水面面積,在K3單元格輸入公式=K2+J3,并將其復(fù)制粘貼到該列K3以下其他單元格中,即可完成各水位對應(yīng)的水面面積計(jì)算。
表2 某測站水位面積計(jì)算成果表(水平分層累加求和法)
水平分層累加求和法的理論基礎(chǔ)是假定相鄰兩個(gè)水位分級之間的面積為梯形,即相鄰兩個(gè)水位分級之間不能有實(shí)測河底高程的轉(zhuǎn)折點(diǎn)。當(dāng)天然河床橫斷面凸凹不平時(shí),在某些低水位下,水面與河床的交點(diǎn)可能不止兩個(gè),而可能是4個(gè)或更多(即因水位較低,河道中間某些地方可能會露出水面)。在這種情況下,水平分層累加求和法計(jì)算的面積與真實(shí)斷面面積出入可能會很大。事實(shí)上,這也是水平分層法計(jì)算面積的弊端,它忽略了河床橫斷面凸凹變化的事實(shí),將河床橫斷面地形高程變化簡化為從左岸到河底的遞減序列和從河底到右岸的遞增系列。
要精確計(jì)算某一水位下的面積,可采用垂直分塊累加求和法。設(shè)指定水位為Z,它與河床的交點(diǎn)的起點(diǎn)距為bx;相鄰兩測點(diǎn)的高程分別為Zi和Zi+1,對應(yīng)的起點(diǎn)距分別為bi和bi+1;在大斷面圖上,以上三點(diǎn)的坐標(biāo)分別為(bx,Z)、(bi,Zi)、(bi+1,Zi+1)。相鄰兩測點(diǎn)的高程Zi、Zi+1與指定水位Z的關(guān)系不外乎四種情況:
(1)Z>Zi且Z>Zi+1,即相鄰兩測點(diǎn)都位于水面線以上。在這種情況下,兩個(gè)測點(diǎn)之間不可能有過水?dāng)嗝妫催@部分的水面寬為0、過水?dāng)嗝婷娣e為0。
(2)Z (3)Z≤Zi且Z>Zi+1,即水位介于相鄰兩個(gè)測點(diǎn)之間。此時(shí)過水?dāng)嗝嫘螤钍且粋€(gè)直角三角形,兩個(gè)直角邊長分別為水深(Z-Zi+1)、水面寬(bi+1-bx),其面積為Ai=(bi+1-bx) ×(Z-Zi+1)/2。但此時(shí)起點(diǎn)距bx是未知的,因此水面寬(bi+1-bx)也是未知的。在草圖上示意性畫兩個(gè)測點(diǎn)(bi,Zi)、(bi+1,Zi+1)的位置關(guān)系,并用直線段將其連接起來,點(diǎn)(bx,Z)必然落在(bi,Zi)、(bi+1,Zi+1)的連線上;過點(diǎn)(bi,Zi)、(bx,Z)分別向右引出一條水平線,過點(diǎn)(bi+1,Zi+1)向上引出一條鉛垂線與兩條水平線的交點(diǎn)分別為M、K,則交點(diǎn)M、K的坐標(biāo)分別為(bi+1,Z)、(bi+1,Zi),這五個(gè)點(diǎn)構(gòu)成的兩個(gè)直角三角形是相似的,由相似定理可求出水面寬(bi+1-bx)=(bi+1-bi) ×(Z-Zi+1)/((Zi-Zi+1),從而可求出過水?dāng)嗝婷娣eAi=[(bi+1-bi) ×(Z-Zi+1)/(Zi-Zi+1)] ×(Z-Zi+1)/2=[(bi+1-bi) ×(Z-Zi+1)2/(Zi-Zi+1)] /2 (4)Z>Zi且Z≤Zi+1,即水位高于左側(cè)地形點(diǎn),但小于等于右側(cè)地形點(diǎn)高程。此時(shí)過水?dāng)嗝嫘螤钊匀皇侵苯侨切?,過(bi,Zi)向上引出鉛垂線,過點(diǎn)(bi+1,Zi+1)、(bx,Z)向左引出水平向,三線的交點(diǎn)和已知的三個(gè)點(diǎn)構(gòu)成兩個(gè)相似直角三角形,由相似定理可求出水面寬度為(bx-bi)=(bi+1-bi) ×(Z-Zi)/((Zi+1-Zi),過水?dāng)嗝婷娣eAi=[(bi+1-bi) ×(Z-Zi)/(Zi+1-Zi)] ×(Z-Zi)/2=[(bi+1-bi) ×(Z-Zi)2/(Zi+1-Zi)] /2 自左岸向右岸依次計(jì)算各相鄰測點(diǎn)過水?dāng)嗝婷娣eAi并累加求和可完成水面面積計(jì)算和水面寬計(jì)算。按照這個(gè)思路,在EXCEL中使用邏輯判斷函數(shù)IF()、求最大值函數(shù)max()、求最小值函數(shù)min()、求和函數(shù)sum(),編制相應(yīng)公式可實(shí)現(xiàn)面積計(jì)算功能。 仍以表1中的斷面測量數(shù)據(jù)數(shù)據(jù)為例,插入一張新的工作表,將起點(diǎn)距、河底高程數(shù)據(jù)復(fù)制粘貼到這張表格中A列和B列,要計(jì)算C1∶F1單元格區(qū)域中水位為6m、8m、10m時(shí)的水面面積,并將面積依次存放到單元格區(qū)域C2∶F2中。可以在D3單元格中輸入公式=IF(D$1<=MIN($B2,$B3),0,IF(D$1>=MAX($B2,$B3),($A3-$A2)*(2*D$1-$B3-$B2)/2,IF(AND(D$1<=$B2,D$1>=$B3),(D$1-$B3)*(D$1-$B3)*($A3-$A2)/2/($B2-$B3),(D$1-$B2)*(D$1-$B2)/($B3-$B2)*($A3-$A2)))),該單元格的功能是通過邏輯判斷語句if來判斷D$1單元各種的水位與相鄰兩測點(diǎn)高程$B2、$B3的大小關(guān)系,選擇相應(yīng)的面積計(jì)算公式來計(jì)算在該水位下兩測點(diǎn)之間水面面積。將鼠標(biāo)放到D3單元格,單擊鼠標(biāo)后將鼠標(biāo)移至單元格右下角,待鼠標(biāo)變成黑色小十字時(shí),壓下鼠標(biāo)左鍵并向下拖拽至最后一個(gè)高程測點(diǎn)所在行,即可完成水位為6m時(shí)的所有相鄰測點(diǎn)的過水?dāng)嗝婷娣e計(jì)算。將D3單元格中的公式復(fù)制粘貼到E3和F3單元格,并向下拖拽直至最后地形測點(diǎn)所在行,即完成E列、F列的單元格公式復(fù)制粘貼,得到水位為8m和10m時(shí)所有相鄰測點(diǎn)的過水?dāng)嗝婷娣e。在C2單元格輸入求和公式=SUM(D3∶D200),將公式復(fù)制粘貼到E2和F2單元格,可完成三個(gè)水位下面積計(jì)算。如果想計(jì)算更多水位下面積,只需在第一行F列以后輸入水位,并將F列F2單元格及其以下單元格公式向右拖拽完成公式的復(fù)制粘貼任務(wù)即可。 表3 某水文站水位面積計(jì)算成果表(垂直分塊累加求和法) 水位面積計(jì)算是水位測站的一項(xiàng)基本工作,面積計(jì)算的準(zhǔn)確與否直接影響流速儀測流成果的精確度。人工圖上量算水位面積精確度不高,采用軟件編程計(jì)算面積專業(yè)性較強(qiáng),一般工程計(jì)算人員難以掌握。EXCEl軟件是目前最常用的辦公軟件,具有強(qiáng)大的數(shù)據(jù)處理功能,利用EXCEL內(nèi)置的函數(shù)套用可以實(shí)現(xiàn)進(jìn)行水位面積計(jì)算,計(jì)算效率高、簡單直觀,計(jì)算過程清晰明了,便于使用者分析和掌握計(jì)算原理和計(jì)算過程,使用者不需要掌握較強(qiáng)的計(jì)算機(jī)知識和編程語言即可掌握并快速計(jì)算出水位面積,利于推廣使用。2 結(jié)語