本章導讀:ArcGIS水文分析模塊提供了3個工具用做河網提取。GIS和測繪專業人員沒法理解,用做水文分析連DEM數據都能拿到了(精度較高的DEM數據在我國都屬於涉密數據),難道就無法拿到精度較低的線狀河流數據?利用DEM數據來生成河流網絡,除了必定的工做量以外,結果還可能不如實測的河流精度高,這樣作有點畫蛇添足了。筆者認爲這剛好反映出行業的差距。水文分析更多的是關心河流的連接關係,河流與流域之間的關係,而非精確的圖形和空間位置。本章內容在操做上屬於簡單類型,筆者會更多的從水文分析角度去解釋分析結果。 BY 李遠祥node
ArcGIS水文分析工具箱提供了【河流連接】、【河網分級】、【柵格河流矢量化】3個工具用做河流提取和分級定義。以下圖所示程序員
河流提取的全過程爲 建立無凹陷點DEM-->流向分析-->流量統計-->定義地表最小的地表徑流-->河流連接-->柵格河流矢量化 。微信
關於建立無凹陷點DEM能夠參考《ArcGIS水文分析實戰教程(3)DEM數據準備》、《ArcGIS水文分析實戰教程(4)地形預處理》內容;流向分析、流量統計和定義最小的地表徑流,在《ArcGIS水文分析實戰教程(5)細說流向與流量》多了詳細的解讀。網絡
在上一章中講到的針對流量柵格進行了條件函數的定義,河網的形狀大概就出來了。但這個數據表達的只是一系列大於必定蓄積柵格的像元點,原則上它也只是離散點,儘管看起來像連續的河流。以下圖函數
能夠從圖例中看到這個結果的像元值範圍從10000-309111 . 【河網連接】工具就是利用統計後的柵格數據與流向數據,鏈接一個像元點,利用流向判斷出不一樣的河流,並把像元點鏈接成線。說白了就是將像元點串起來並作了不一樣線段的劃分。下圖是河流連接的示意圖工具
這個示意圖是從ArcGIS軟件中截取出來的,通常的水文從業都能看懂,但這個圖不夠專業,顯然是出自於程序員之手。筆者在第二章《ArcGIS水文分析實戰教程(2)ArcGIS水文分析工具的基本原理》曾經引用過相關的示意圖,下圖就是水文學上常見的河流鏈spa
從兩張圖對比可見,水文學上的分類要比ArcGIS上的更加細緻,光是連接便分爲外鏈和內鏈,沒有河流匯入的連接是外鏈,有其餘水系匯入的河流爲內鏈;交互點也分爲河源、節點和出口,分別對應外鏈的起點、內鏈的起點、樹狀河網的最低點。.net
這麼說來,是否是說ArcGIS軟件的河網連接就不夠專業呢?其實並非這樣的!由於在水文學上連接是爲了反映出河流之間的關係,最終是爲河流分級服務的。而ArcGIS還提供了河流分級工具,很好的對應水文分析的要求。code
【河流連接】分析須要的是執行過條件函數後的流量統計柵格,也就是說篩選過流量的柵格數據,而且須要流向柵格進行參考。以下圖blog
從分析結果能夠看到,連接以後離散的像元會被串聯起來,造成獨立的河流。以下圖所示,河網已經被串聯成27條河流,但仍然使用柵格的形式表示。
若是不關注河流的分級,只用做河流線體的提取(測繪專業的人就喜歡這麼幹),直接使用【柵格河網矢量化】工具進行矢量河流數據的生成。以下圖
這裏要求的【河流柵格數據】,最低限度就是執行過河流連接的結果,固然也能夠是【河流分級】以後的結果。
下圖是生成的矢量河流結果
矢量河流會生成一些特殊的字段做爲標記,例如arcid字段,記錄的是元素網格的id,grid_code記錄的是河流的惟一Id,由於在河網連接的時候已經對蓄積像元進行了計算,並肯定了柵格河流,而from_node和to_node就是記錄河段從哪一個流量柵格流向下一個流量柵格。因此,若是將grid_code相同的河段所有選擇,那它就是一個完整的連接(有多是外鏈也有多是內鏈)
若是不考慮分級的狀況生成惟一的河流,那麼可使用【融合】工具對上面的矢量河流線要素進行融合,以下圖設置
最終結果就是合併爲原來的27條河流,以下圖
在水文學上,河流連接不是爲了提取矢量河流,而是爲河流分級作準備。水文學更多的是關注河流之間的關係、河流與流域的關係,而非河流自己的圖形;即使關注的是單個河流的幾何圖形,但通常也會跟高程帶上關係,例如河流比降。因此,河流連接以後,通常就是對河流進行分級了。
前面部分說起過ArcGIS的河流連接與水文學的連接的一些差別,但由於最終提供了河網分級功能,因此在連接部分並無影響。
水文學上的河網分級在第二章《ArcGIS水文分析實戰教程(2)ArcGIS水文分析工具的基本原理》的時候已經作了詳細的論述,經常使用的有霍頓分級、斯特拉勒分級、施裏夫分級、沙依達格分級。經過下圖能夠重溫一下其分級的基本原理
各類分級的方法這裏再也不詳細論述。ArcGIS河網分級工具中之包含兩種分級方法,斯特拉勒分級和施裏夫分級,而分析工具中默認使用的是斯特拉勒分級法。
霍頓分級法:2級以上的河流都可以一直延伸到河源,但實際上它們的最上游都只具備1級河流的特徵。
斯持拉勒法:不可能像霍頓分級法同樣將2級以上河流都一直延伸到河源,於是老是將能經過全流域水量和泥沙量的河流做爲水系中最高級的河流的。斯持拉勒法主要不足是不能反映流域內河流級愈高,經過的水量和泥沙量也愈大的事實。
施裏夫和沙伊達格分級法:很好彌補了上述分級方法的缺陷,很是適合在數值上進行計算。
下圖是使用河流連接的結果數據進行輸入,結合流向柵格去作斯持拉勒河網分級
最終的結果是生成了一個三級分級,用紅綠藍三種顏色表示分級結果,以下圖所示
ArcGIS的幫助提示說的很是的含糊,在【河流柵格數據】中沒有具體說明是那一步驟生成的河流柵格,因此上面的例子就直接使用河網連接後的結果數據。後來筆者思考了一下,由於這個分級工具仍是須要流向柵格,【河流連接】工具也是須要流向柵格做爲參數,那是否是意味着這兩個工具是個平行的工具,而不是一個順序的工具。爲此筆者還特地作了一個嘗試,使用條件函數過濾後的流量數據做爲河流參與分析。
使用條件函數過濾後的流量數據做爲河流參與分析的結果跟想象中的同樣,經過查看圖形和兩個屬性表,發現是徹底一致的。若是使用減法工具,兩個柵格結果相減,結果確定就是徹底爲nodata了。以下圖
使用這個工具還有一些須要注意的地方,若是輸入河流柵格數據和輸入流向柵格數據是從同一DEM數據獲取,則河網分級的輸出質量會更高。若是河流柵格數據是從柵格化的河流數據集獲取(即河流原來是矢量數據,爲了參與分級,先經過工具將矢量河流進行柵格化),則輸出可能不可用,由於各像元的流向與河流像元的位置不對應。
對河網分級後的柵格數據進行矢量化,使用【柵格河流矢量化】工具,以下圖
其結果更加讓人滿意,由於除了轉化爲矢量河流以外,還會自動的建立了河流連接。下圖能夠經過屬性表看到生成的27條河流,跟前面所說的河流連接工具的結果是同樣的。
因此,從這個操做中能夠獲得一個重要的啓示。若是要進行河流連接的分析,最好是在【河網分級】以後進行。
GIS對柵格計算的支持遠沒有對矢量數據的多,因此大多數狀況下都須要將柵格數據轉換爲矢量數據進行分析。雖然ArcGIS提供了柵格轉矢量的工具,如【柵格轉線】、【柵格轉面】等。但做爲水文分析的話,在柵格河流轉換爲矢量河流時,遠沒有使用【柵格河流矢量化】效果那麼好。
從下面這張圖能夠看出【柵格河流矢量化】的特色
利用分級後的河網能夠作什麼?最直接的方式就是繪製河流的分級顯示圖。利用grid_code做爲標註顯示等級,使用【惟一值渲染】用不一樣大小的符號顯示河流,這樣就能夠很直觀的反應出河網關係。下圖是使用斯持拉勒分級的河網分級圖
若是還須要特殊的表達和分析,後期還能夠製做河網的邏輯示意圖,筆者會在後續的章節中介紹河網的邏輯示意圖。
除此以外,還能夠經過河網生成河口出水口。這個很是簡單,由於矢量河流已經生成好了,並且是帶數字化方向的。
數字化方向指的是線圖形在生成的時候從起點到終點的方向。
河網中的每一條河流其流向都是與數字化方向相同的。若是使用箭頭符號去表示其流向,能夠很直觀的看出來。以下圖設置
而後將河網疊加兩次,進行觀察,經過其樹狀結構能夠對比數字化方向與流向的關係
正式由於有這一規則,那麼就可使用【要素折點轉點】工具來捕捉其線段的終點,那這個終點就是河口的位置了。這個工具在【數據管理】--【要素】--【要素折點轉點】,執行時點類型選擇【end】,以下圖所示
這樣提取出來的就是河口的位置。這個點在水文分析中又稱之爲「出水口」或「傾瀉點」。以下圖所示:
這就是提取流域面的時候一個很是重的參數了。
河流提取與河網分級就軟件操做層面是相對簡答的,結合ArcGIS其餘的一些分析工具,能夠計算出更多的水文因子。本章尚未涉及到河網分級後如何進行更多的水文分析,河網分級屬於水文分析的前提準備。只有涉及到流量監測(水文學上的流量監測)和洪峯計算時,經過其分級結合數學模型能夠去推算洪峯來臨時間。
若是讀者對水文分析感興趣的話,能夠持續關注CSDN的GIS製圖樂園,以及微信公衆號【GIS製圖樂園】。BY 李遠祥