劉佳嘉,周祖昊,賈仰文,王 浩
(中國水利水電科學(xué)研究院流域水循環(huán)模擬與調(diào)控國家重點實驗室,北京 100038)
近年來基于子流域劃分的分布式水文模型應(yīng)用廣泛,如SWAT模型[1-2]、WEP-L模型[3-4]等。這類模型將研究流域劃分成一系列子流域,分別對各子流域進行參數(shù)計算及水文模擬,從而實現(xiàn)大流域分布式模擬計算?;诹饔駾EM模擬河網(wǎng)的子流域劃分的一般步驟包括:(a)使用DEM提取模擬河網(wǎng);(b)使用某種編碼規(guī)則對模擬河網(wǎng)各個河段進行編碼;(c)對所有流入相同河段的柵格區(qū)域賦值當(dāng)前河段編碼作為子流域編碼[5-8]。因此,可以認為子流域編碼方案即為河網(wǎng)編碼方案。國際通用的主要河網(wǎng)編碼方法有愛爾蘭測站編碼、芬蘭河流編碼、美國Pfafstetter編碼、德國LAWA編碼等[6,9],但大部分編碼方法均不適合子流域編碼。高效的子流域編碼規(guī)則應(yīng)具有以下特點:(a)每個編碼對應(yīng)一條河段,每個河段具有唯一編碼;(b)編碼能夠反映河道間的拓撲關(guān)系,通過編碼可以判別子流域之間的上下游關(guān)系;(c)能夠通過編碼直接計算相鄰上下游子流域編碼,而非低效的遍歷搜索?;谏鲜鎏攸c,廣泛采用的子流域編碼方法主要有2種:Pfafstetter編碼[5,10]和二叉樹編碼[11-13]。
隨著分布式水文模型的應(yīng)用及發(fā)展,對子流域編碼方法提出了更高的要求:(a)能夠處理多河段匯入同一河段的情況,這種情況在農(nóng)田灌溉及城市管網(wǎng)中很常見,而且基于DEM提取的河網(wǎng)也時常會出現(xiàn);(b)能夠加密無分叉河段,避免狹長子流域的出現(xiàn);(c)能夠考慮水庫、水文站位置進行編碼[14-16]。Pfafstetter編碼和二叉樹編碼僅能部分滿足上述要求,鑒于此,筆者結(jié)合Pfafstetter編碼和二叉樹編碼的優(yōu)點,提出一種全新的編碼規(guī)則——干支拓撲編碼規(guī)則。
一般而言,河流都是一條干流加上若干支流的拓撲結(jié)構(gòu),而各支流同樣具有自己的干流和次級支流。干流、支流意義如下:就某級別河道而言(例如第n級河道),它本身所在的河道為干流,而直接流入該河道的第n+1級河道是其直接支流,流入其直接支流的是間接支流;同時第n級河道干流又是第n-1級河道的一條支流。本文中支流是指直接支流,且河流級別數(shù)值小的為高級河流,數(shù)值大的為低級河流。由于子流域劃分同河網(wǎng)中各河段密切相關(guān),河網(wǎng)編碼均可理解為子流域編碼。
1.1 一元干支拓撲碼
干支拓撲編碼規(guī)則是一種基于干流河段的編碼方案,能反映河網(wǎng)拓撲關(guān)系。編碼規(guī)則中,干流由最大集水面積確定。確定干流后,所有流入干流的河流均認為是支流。干流的支流匯入節(jié)點以及干流上的水文站、水庫、排污口等要素將干流分割成若干段,稱之為干流河段,每個干流河段內(nèi)沒有其他支流匯入。分割完干流河段后,由當(dāng)前干流出口逆流而上,對經(jīng)過的每個干流河段依此編碼為1,2,3……直到干流源頭,稱為干流碼;每一級別干流河段都具有相應(yīng)級別的干流碼,都是從1開始編碼。干流碼所使用的編碼字符數(shù)由全流域所有河流最大干流分段數(shù)決定,1個字符能編碼9個干流河段(1~9),2個字符能編碼99個干流河段(1~99),依此類推,本文以2個字符干流碼為例進行編碼說明。
對于1級河流而言,其干支拓撲碼就等于其本身級別的干流碼。對于其他級別的河流而言,編碼規(guī)則為:匯入干流河段的干支拓撲碼+支流標識碼(簡稱支流碼)+當(dāng)前級別干流碼。支流碼是當(dāng)前級別河流相對于其匯入干流河段的支流序列編號,從1開始,依次增加(由于流入相同干流河段的支流數(shù)一般不超過9個,所以使用1個字符編碼就能滿足支流序號的編碼需求,為了便于區(qū)分,筆者使用帶下劃線的數(shù)字表示支流碼)。支流碼的引入使干支拓撲碼能夠?qū)⒍嗪佣螀R流作為一般情況進行處理。如果某級別河流沒有支流,則仍需給該河段編碼,編碼為1(前面補0以滿足干流碼字符數(shù)要求)。例如,圖1中編碼為03 201 101的河段沒有支流,當(dāng)前級別干流碼為01(最右邊2個字符);其直接匯入的河段為03 201河段,它相對于03 2 01河段的支流碼為1。
干支拓撲碼能清晰地反映河流拓撲關(guān)系,并對流域內(nèi)每條河流進行唯一編碼及定位。一般而言,一元干支拓撲碼具有“干流碼-支流碼-干流碼-支流碼-…-干流碼”的形式,即干流碼、支流碼交替出現(xiàn),且編碼最后2位(干流碼字符數(shù))一定是末級河道的干流碼。從編碼結(jié)構(gòu)可以看出,判別2個子流域是否具有上下游關(guān)系,只需要檢測其中一個編碼是否等于另一個編碼左邊若干連續(xù)字符,若等于,則是其下游河段。一元干支拓撲碼能實現(xiàn)對下游流入子流域編碼的直接定位計算:(a)如果當(dāng)前河段干流碼大于1,則干流碼減去1后即為流入河段編碼;(b)如果干流碼等于1,則直接消去最右邊的干流碼和支流碼(圖1實例中,消去右邊3位字符即可,如03 201匯入河段即為03河段)。干支拓撲碼的編碼結(jié)構(gòu)相似度高,可以遞歸完成全流域河網(wǎng)編碼,從而實現(xiàn)計算程序的自動編碼處理。1.2 多元干支拓撲碼
圖1 干支拓撲碼編碼示意圖Fig.1 Sketch map of stem-branch topological codification
一元干支拓撲碼與Pfafstetter編碼很相似,編碼規(guī)則簡單、使用了繼承式編碼方式、每級別河段編碼包含著高級別河段的編碼信息,但其存在編碼字符過多的問題。如果每個級別干流碼使用4個字符進行編碼,則7級河流的一元干支拓撲碼共需要31個字符,編碼字符數(shù)量過多,而且編碼字符利用率低(大部分是占位字符“0”)。為解決上述問題,將一元干支拓撲碼拓展成多元干支拓撲碼,主要思路為:(a)拆分干支拓撲碼為干流流程碼、支流流程碼。(b)引入干流掩碼以減少干流碼占位字符。干流流程碼是指被編碼河段匯入流域出口所流經(jīng)的所有河段的干流碼(包括自身干流碼);支流流程碼則包括所有流經(jīng)河段的支流碼;干流掩碼則是每級別干流碼所使用的字符數(shù)。例如圖1中03 201 101河段所對應(yīng)的多元干支拓撲碼為(111,311,121)。編碼“111”是干流掩碼,表示當(dāng)前河段為3級河流河段(由字符個數(shù)確定),每級干流碼使用1個字符進行編碼。編碼“311”是干流流程碼,根據(jù)干流掩碼數(shù)值,每級別河流河段干流碼分別為“3”,“1”,“1”(消去了占位字符“0”)。編碼“121”是支流流程碼,其中右邊“21”來自原編碼,最左邊的“1”表示整個流域主干流對流域出水口的支流標識,一般等于“1”。干流掩碼、干流流程碼、支流流程碼均延續(xù)了繼承式編碼規(guī)則,靠左的字符表示下游流經(jīng)河段的對應(yīng)編碼,靠右的字符表示上游河段對應(yīng)編碼。干流掩碼字符數(shù)為編碼河段所在河流的級別數(shù),而干流掩碼各數(shù)字總和等于干流流程碼編碼字符數(shù)。由于多元干支拓撲碼完全拓展于一元干支拓撲碼,所以能唯一標識流域中每一個河段,具有一元拓撲碼的所有功能。
以渭河流域為例進行子流域劃分及編碼,來說明干支拓撲碼對新編碼要求的支持能力,其中DEM分辨率為1 km。根據(jù)多元干支拓撲碼的編碼規(guī)則,筆者編寫了子流域劃分程序以自動完成流域劃分編碼。程序輸入數(shù)據(jù)由Arcgis軟件相應(yīng)水文分析模塊從流域DEM數(shù)據(jù)計算獲得。程序生成子流域編碼屬性文件(表1)和子流域劃分圖層(圖2、圖3)(受篇幅限制僅展示局部信息)。從子流域編碼屬性文件中可知,渭河流域總共被劃分成1360個子流域,最小河流級別為7級,干流流程碼最多編碼字符數(shù)為9,平均干流流程碼編碼字符數(shù)為4.35。子流域索引號是唯一的,按自然數(shù)順序排列,用以指示對應(yīng)子流域。
表1 程序計算生成的子流域編碼屬性Table 1 Output attribute table of codification program
結(jié)合表1和圖2,可以看出干支拓撲碼能夠有效表示多匯流子流域上下游拓撲關(guān)系。例如,圖2中編號為700的子流域有3個河段(子流域)匯入,分別為子流域691,698和699。其中子流域700的編碼為(22,1626,12)而子流域691的編碼為(22,1627,12),二級干流碼“27”比子流域700的“26”大1,表示同子流域700處于同一級別河流上,且屬于上游。子流域698和子流域699的編碼分別為(221,16261,122)和(221,16261,121),兩者均以子流域700對應(yīng)編碼開始,表示位于子流域700所在河段的上游支流上,且支流編號分別為“1”和“2”。圖3展示了干支拓撲碼對子流域編碼新要求的支持能力。圖3(a)(b)表明本文編碼可以考慮水庫、水文站位置進行子流域劃分;圖3(c)(d)表明本文編碼能夠?qū)o分叉河段進行加密處理,分割山區(qū)平原區(qū)或避免狹長子流域的出現(xiàn)。
多河段匯流是模擬河網(wǎng)不可避免的河道匯流現(xiàn)象,而對無分叉狹長河道的加密和根據(jù)水文要素點(水庫、水文站)進行子流域分割又是近些年來水文應(yīng)用的具體實踐要求[16],使得流域編碼規(guī)則所能處理的河網(wǎng)結(jié)構(gòu)由理想的二叉樹轉(zhuǎn)變?yōu)椴灰?guī)則樹狀結(jié)構(gòu)(多叉樹或單枝結(jié)構(gòu))。一般而言,河網(wǎng)樹狀結(jié)構(gòu)可以分為3種類型:單枝結(jié)構(gòu)、二叉結(jié)構(gòu)、多叉結(jié)構(gòu)。Pfafstetter編碼僅能夠處理單枝結(jié)構(gòu)[5,14-15]和二叉結(jié)構(gòu)[10],但對多叉結(jié)構(gòu)無能為力。二叉樹編碼對二叉結(jié)構(gòu)處理效率高,但對單枝結(jié)構(gòu)和多叉結(jié)構(gòu)處理能力不強;雖然可以通過引入虛擬節(jié)點的概念應(yīng)用于單枝結(jié)構(gòu)和多叉結(jié)構(gòu)[17],但會喪失計算快捷的優(yōu)勢。干支拓撲碼以河網(wǎng)樹狀結(jié)構(gòu)為一般處理對象,能夠有效處理單枝結(jié)構(gòu)、二叉結(jié)構(gòu)以及多叉結(jié)構(gòu)。從渭河流域劃分實例可以看出,干支拓撲碼能夠很好地實現(xiàn)樹狀河網(wǎng)的子流域劃分及編碼過程,這是相對于Pfafstetter編碼和二叉樹編碼而言其具有的最大優(yōu)勢。
圖2 多河段匯入情況Fig.2 A case of multi-river confluence
圖3 子流域劃分新功能實現(xiàn)示例Fig.3 Cases of a new function of sub-watershed division
流域編碼規(guī)則應(yīng)具有簡潔易懂、無特殊要求、具有編碼一致性等特性。而Pfafstetter編碼和二叉樹編碼均存在不同程度的特殊規(guī)定。Pfafstetter編碼要求取最大集水面積的4條支流參與河道干流編碼;二叉樹編碼也存在特殊要求,例如為克服編碼容量限制而引入分區(qū)編碼,為支持多叉結(jié)構(gòu)而引入虛擬節(jié)點等。這些特殊的編碼要求使得在整個流域河網(wǎng)發(fā)生改變時(如增加或減少河流、河網(wǎng)合并等),必須使用原始數(shù)據(jù)進行重新編碼或更新相關(guān)屬性表,從而使新編碼符合編碼規(guī)范。相對而言,干支拓撲編碼規(guī)則簡單、編碼一致性高,在僅知道子流域編碼的情況(無原始數(shù)據(jù))時也能方便、快捷地實現(xiàn)流域編碼的增加、刪除等操作。
干支拓撲碼采用繼承式編碼方式,能反映被編碼河段匯入流域出口所流經(jīng)的所有河段信息。如果A河段經(jīng)過B河段匯入流域出口,則A河段編碼必然以B河段編碼開頭;如果A河段編碼以B河段編碼開頭,則A河段一定經(jīng)過B河段匯入流域出口。否則不存在聯(lián)系。因此,通過某河流出口干流河段編碼就可以獲取整個支流的表示規(guī)則。一般而言,如果水文模型不關(guān)注任意2個子流域之間的上下游拓撲關(guān)系,而僅僅使用子流域進行河道匯流演算,則根據(jù)表1,使用子流域索引碼即可達成目的,不需要引入干支拓撲碼。本文編碼程序能夠確保子流域索引編號越小則該子流域越靠近上游。即對某子流域進行河道匯流演算時,其上游子流域肯定已經(jīng)完成了對應(yīng)的河道匯流演算,這樣就避免了繁瑣的遞歸迭代運算,提高模型運行速率。
本文提出的干支拓撲編碼規(guī)則是一種基于河流干支流拓撲關(guān)系的編碼方案,能夠較好地實現(xiàn)對不規(guī)則樹狀結(jié)構(gòu)河網(wǎng)進行子流域劃分及編碼。干支拓撲編碼規(guī)則的主體是各級河流干流河段,輔之以支流標識,可實現(xiàn)不同樹狀河網(wǎng)編碼,并能在編碼上反映河流級別以及上下游拓撲關(guān)系。干支拓撲編碼采用繼承式編碼規(guī)則,從流域出水口開始逆流而上,逐河段、逐級別按河段匯流流程進行編碼,且上游子流域編碼始終包括其所流經(jīng)的下游子流域編碼。干支拓撲編碼規(guī)則結(jié)構(gòu)簡單易懂,便于計算機自動處理。相對于已有的
Pfafstetter編碼以及二叉樹編碼,其具有相當(dāng)大的優(yōu)勢。目前干支拓撲編碼規(guī)則主要適用于單向流河網(wǎng),對于多向流河網(wǎng)需要進一步研究。
[1]ARNOLD J G,SRINIVASAN R,MUTTIAH R S,et al.Large area hydrologic modeling and assessment.partⅠ:model development[J].Journal of the American Water Resources Association,1998,34(1):73-89.
[2]SRINIVASAN R,RAMANARAYANAN T S,ARNOLD J G,et al.Large area hydrologic modeling and assessment.partⅡ:model application[J].Journal of the American Water Resources Association,1998,34(1):91-101.
[3]JIA Yangwen,WANG Hao,ZHOU Zuhao,et al.Development of the WEP-L distributed hydrological model and dynamic assessment of water resources in the Yellow River Basin[J].Journal of Hydrology,2006,331(1/2/3/4):606-629.
[4]賈仰文,王浩,王建華,等.黃河流域分布式水文模型開發(fā)和驗證[J].自然資源學(xué)報,2005,20(2):300-308.(JIA Yangwen,WANG Hao,WANG Jianhua,et al.Development and verification of a distributed hydrologic model for the Yellow River Basin [J].Journal of Natural Resources,2005,20(2):300-308.(in Chinese))
[5]羅翔宇,賈仰文,王建華,等.基于DEM與實測河網(wǎng)的流域編碼方法[J].水科學(xué)進展,2006,17(2):259-264.(LUO Xiangyu,JIA Yangwen,WANG Jianhua,et al.Method for delineation and codification of a large basin based on DEM and surveyed river network[J].Advances in Water Science,2006,17(2):259-264.(in Chinese))
[6]于淼,陳雪蓮.基于DEM的河網(wǎng)河段編碼方法[J].人民長江,2009,40(24):36-38.(YU Miao,CHEN Xuelian.The river codification based on DEM drainage networK[J].Yangtze River,2009,40(24):36-38.(in Chinese))
[7]黃娟,申雙和,殷劍敏.基于DEM對江西潦河流域河網(wǎng)信息提取方法[J].氣象與減災(zāi)研究,2008,31(1):49-53.(HUANG Juan,SHEN Shuanghe,YIN Jianmin.Drainage networKextraction in Liaohe Based on DEM [J].Meteorology and Disaster Reduction Research,2008,31(1):49-53.(in Chinese))
[8]朱超,于瑞宏,劉慧穎,等.基于DEM的烏梁素海東部流域河網(wǎng)信息提取[J].水資源保護,2011,27(3):75-79.(ZHU Chao,YU Ruihong,LIU Huiying,et al.Information extraction of drainage networKof the eastern basin of Wuliangsuhai Lake based on DEM[J].Water Resources Protection,2011,27(3):75-79.(in Chinese))
[9]BRITTON P.River coding systems for river basin management and reporting[M].USA:EU GIS Working Group Guidance Document,2002.
[10]VERDIN KL,VERDIN JP.A topological system for delineation and codification of the Earth’s river basins[J].Journal of Hydrology,1999,218:1-12.
[11] LI Tiejian,WANG Guangqian,CHEN Ji.A modified binary tree codification of drainage networks to support complex hydrological models[J].Computers& Geosciences,2010,36(11):1427-1435.
[12]李鐵鍵,王光謙,劉家宏.數(shù)字流域模型的河網(wǎng)編碼方法[J].水科學(xué)進展,2006,17(5):658-664.(LI Tiejian,WANG Guangqian,LIU Jiahong.Drainage networKcodification method for digital watershed model[J].Advances in Water Science,2006,17(5):658-664.(in Chinese))
[13]鄧利,李鐵鍵,劉家宏,等.數(shù)字流域河網(wǎng)編碼方法應(yīng)用實例[J].泥沙研究,2007(3):68-72.(DENG Li,LI Tiejian,LIU Jiahong,et al.Application of the drainage networKcodification method in digital watershed model[J].Journal of Sediment Research,2007(3):68-72.(in Chinese))
[14]雷曉輝,王海潮,田雨,等.南水北調(diào)中線受水區(qū)分布式水文模型子流域劃分研究[J].南水北調(diào)與水利科技,2009,7(3):10-13.(LEI Xiaohui,WANG Haichao,TIAN Yu,et al.Subbasin delineation for the service areas of South-to-North water diversion project[J].South-to-North Water Diversion and Water Science & Technology,2009,7(3):10-13.(in Chinese))
[15]雷曉輝,田雨,白薇,等.基于DEM的子流域劃分方法改進與應(yīng)用[J].人民黃河,2011,33(2):32-33.(LEI Xiaohui,TIAN Yu,BAI Wei,et al.The improving and application of watershed subdivision method based on DEM [J].Yellow River,2011,33(2):32-33.(in Chinese))
[16]張峰,廖衛(wèi)紅,雷曉輝,等.分布式水文模型子流域劃分方法[J].南水北調(diào)與水利科技,2011,9(3):101-105.(ZHANG Feng,LIAO Weihong,LEI Xiaohui,et al.A review on sub-basin delineation methods for distributed hydrological models[J].South-to-North Water Diversion and Water Science& Technology,2011,9(3):101-105.(in Chinese))
[17]王皓,李鐵鍵,高潔,等.大尺度流域河網(wǎng)二叉樹編碼方法[J].河海大學(xué)學(xué)報:自然科學(xué)版,2009,37(5):499-504.(WANG Hao,LI Tiejian,GAO Jie,et al.Binary-tree coding for drainage networKof large-scale basins[J].Journal of Hehai University:Natural Sciences,2009,37(5):499-504.(in Chinese))