使用Arcgis pro做流域分析(河網劃分和流量計算)
流域分析是水文分析的最基礎內容。流域分析主要使用工具箱中的Spatial Analyst組中的“水文分析”工具包和“地圖代數”工具包(或者全部使用搜索)進行分析。下面將以下載的數字高程模型(DEM)格柵文件作為數據源進行演示,首先將將DEM文件導入gis中,根據情況使用投影工具(定義投影)。先看流域分析的大致流程,接著將具體步驟。

生成填洼后柵格
輸入參數選擇導入的格柵文件,輸出格柵重命名為填洼后。
生成流向柵格
輸入選擇填洼后柵格,流向類型選默認D8,輸出格柵重命名為流向。
選擇使用D8流量計算法這一步需要注意該方法的適用范圍。D8指的是一個像元周圍的8個像元,水流會流向周圍8個像元中的唯一一個,地形一點小的改變可能就會引起流向的變化。因此嚴格來說D8流向方法只適合山區丘陵等地形落差較大的地區,不適合平原湖區。 因為平原湖區一個單位像元的水流方向可能不止一個。也就是說該像元的是不可微的,但是現實世界地表大多數是連續光滑的,所以從理論上講提高平原湖區的格柵分辨率,減小像元大小讓原本可能有兩個流向的大像元分割成分別只有一個流向的小像元,削弱尖點對計算的影響也可以在平原湖區使用D8方法。
生成流量柵格
輸入選擇流向柵格,流向類型默認D8,輸出重命名為流量柵格(FlowAccrue,流量增長/產生ac+cure)。
4. 河網分析。使用“地圖代數”中的“格柵計算器”工具進行,目的是篩選出流量大于某個閾值的河流(規范叫“具有地表水流形態的河溝”)。打開“格柵計算器”,右側工具選擇條件函數Con,其中:
Con(condition, value_if_true, value_if_false)
若“真(語句)”或“假(語句)”存在缺失,則對應柵格單元的值賦值為空(NoData)。可以使用這個函數進行河流篩選,語句為Con("流量格柵">5000,"流量格柵"),假語句為空,即即流量大于5000格柵數據為原格柵值,流量小于5000格柵數據為null,輸出格柵重命名為“河流5000”。這一步也可以使用“條件函數”工具
Con函數[https://blog.csdn.net/weixin_44557372/article/details/124085872]
接下來的“河網分級”、“河流鏈”、“格柵河網矢量化”沒有固定的順序,若為了生成分級后的矢量河網,應先“河網分級”,再“格柵河網矢量化”、這樣會使矢量圖形里帶級別(在grid_code字段中),方便符號化;同時為了生成流域劃分,需要在單獨生成一個河流鏈接。
5. 河網分級。輸入流格柵選擇“河流5000”(5000應該是流向格柵點數),輸入流向格柵選擇“流向”,河網分級方法默認或自己研究很簡單,輸出格柵重命名為“河網5000分級后”。
接下來的步驟“河流鏈處理”和“格柵河網矢量化”是平行關系,
6. 河流鏈處理。做這一步的目的是為了后面的流域劃分輸入流格柵選擇分級后的“河網5000分級后”或“河流5000”,輸入流向格柵選擇“流向”,輸出格柵重命名為“河流鏈后”'河流鏈處理:向各交點之間的柵格線性網絡的各部分分配唯一值,河網分析和河網分級后的元素圖層仍然為一個一個的格柵像元,這樣做的目的是是的每條支流或者河段均有唯一的id,方便后面的河網矢量化(這一步gis pro一定要將“環境”設置里的“并行處理因子”設置成0,否則處理出來的結果是錯誤的。處理其他格柵出現錯誤時也可這樣試試,我已經遇到好多并行處理因子設置成0處理結果才是正確的情況了。)
7. 格柵河網矢量化。輸入河流格柵選擇“河流鏈后”格柵,輸入流向格柵選擇“流向”,輸出折線要素重命名為“河網矢量化”。
之后打開屬性表既可以分析河網長度,或復制到excel中,或直接在gis中做數據分析。
8. 流域分析。使用"集水區“工具(gis中叫"分水嶺"),輸入D8流向格柵選擇“流向”,輸入格柵數據或要素傾瀉點數據選擇“河流鏈后”格柵,輸出格柵重命名為“集水區”。
專業的水文分析人員在進行這一步時“輸入格柵數據或要素傾瀉點數據”一般是水文站點的實際位置,因為要研究水文站點水文數據和上游流域的關系,這樣的話因為傾瀉點\出水口位置來自水文站,水文地形并不是來自DEM,該站點位置可能并不是該DEM在該位置附近形成的最大流量。所以若使用實際水文站等傾瀉點位置,必須進行加“捕捉傾瀉點”操作,這一步的目的是找到水文站附近最大的流量位置,并以該位置為新的傾瀉點計算集水區;若不進行捕捉傾瀉點可能會出現只計算出很小而零散的集水區(學習加經驗之談)。若傾瀉點來自于同一份dem生成的,則不需要這一步。

上圖為不捕捉傾瀉點生成的集水區
9. 集水區格柵轉面。使用“柵格轉面”工具,輸入格柵選擇“集水區”,輸出面要素重命名為“集水面”。
之后打開屬性表既可以分析河網流域,或復制到excel中,或直接在gis中做數據分析。
核心分析之外的東西:
- 格柵河網矢量化可以對河網進行分級顯示和流向符號化
![]()
![]()
- 要顯示河段出水口或者傾瀉點的位置可以使用“要素折點轉點工具”,點類型選擇“端折點”,提取出來后進行“獲取像元值”這些操作就可以標注流量了,要注意這點的流量并不是交匯后下游的流量,自己研究下。數量若少的話可以先將河流格柵或者分級后格柵格柵轉點了,然后復制感興的點對象到新建的元素圖層在進行標注。


浙公網安備 33010602011771號