从数字高程模型(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
到这一步流域提取就完成了,下一步就进入各位大侠的个人研究领域了。