從數字高程模型(DEM)中提取流域是在進行水文、農業、環境等研究中常用的一個數據處理過程。提取高質量和尺度適宜的流域面圖層,可以為后續研究提供有力的支持和幫助。應用Arcgis進行流域提取的技術在9.x版本就已經基本成熟,網上相關的教程也有很多,但是整個流程如何操作并不是說的很清楚。我根據自己的理解和實際工作中所遇到的問題,寫一個簡要的操作流程,既作為自己的備忘,也希望能幫助到需要的朋友。
為了避免不同漢化包翻譯的名稱不一樣,我統一使用英文版本的名稱,如果看不懂可以復制下來直接度娘,就可以知道相對應的中文名稱。
1、flow direction
輸入:dem
結果:flowdir。
獲取目標區DEM后直接使用flow direction進行處理,處理結果有可能是下面的兩種。
如果是第一種,恭喜你,進入第九步。如果是第二種,說明你的dem比較“坑”,需要先進行填坑再提取流域。
2、sink
輸入:flowdir
結果:sink
雖然自然界地形中存在坑很正常,但是自然界出現比10*10m還大的坑就比較罕見了。我們的目的畢竟是為了提取流域,為了保證模擬水流能夠按照流域的方向順利流到出水口,我們需要把坑填上。
3、watershed
輸入:
? ? input flow direction raster:flowdir
? ? input raster or feature pour point data:sink
結果:sinkshed
這一步是通過watershed工具推算出哪些區域的水會流到這些坑里
4、zonal statistics
輸入:
input raster or feature zone data: sinkshed
zone field: Value
Input value raster: dem
statistics type: minimum
輸出:sink_min
通過區域統計得到“坑”的流域內高程的最低值
5、zonal fill
輸入:
input zone raster:sinkshed
input weight raster:dem
輸出:
sink_max
使用區域填充的結果是沿著“坑”流域的邊界,也就是分水嶺,把整個流域填平。這樣就獲得了“坑”流域的最高高程
6、raster calculator
輸入:
sink_max - sink_min
輸出:
sink_depth
這步沒什么好說的,大值減小值得到“坑”的最大深度
7.fill
輸入:
input surface raster: dem
Z limit: sink_depth(max)
輸出:filldem
Z limit中要填sink_depth中的上限值,我這里就是510。
8.flow direction
輸入:filldem
輸出:fill_dir
如果這次輸出的結果還是類似于下圖這樣的,那么英雄請你洗把臉然后重復2-8步。
9.flow accumulation
輸入:fill_dir
輸出:accu
系統開始在無瑕疵的dem上下雨,然后計算流經每個柵格的水流量。
10.raster calculator
計算公式:con(accu>X,1)
輸出:stream_r
公式中的X是要根據所在研究區,計劃要提取的流域大小等因素確定的。過小會造成提取的河流過密,生成的流域細碎。如果過大會造成流域偏大,研究細節也就被埋沒了。
11.stream link
輸入:
input stream raster:stream_r
input flow direction raster:fill_dir
輸出:stream_link
通過stream link可以把柵格的值按照河流分別賦值,同一河段的柵格值都一樣。方便后續轉為矢量線。
12.stream to feature
輸入:
input stream raster:stream_link
input flow direction raster:fill_dir
輸出:river_fea
這一步同樣可以用raster to polyline完成,效果就是把柵格的河流轉化為矢量的線。但據esri官方講,stream to feature因為考慮的流向的原因,轉化效果更好一些。
13.watershed
輸入:
input flow direction raster: fill_dir
input raster or feature pour point data: stream_link
輸出:watershed
到這一步流域提取就完成了,下一步就進入各位大俠的個人研究領域了。