使用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中做数据分析。
核心分析之外的东西:
- 格栅河网矢量化可以对河网进行分级显示和流向符号化
- 要显示河段出水口或者倾泻点的位置可以使用“要素折点转点工具”,点类型选择“端折点”,提取出来后进行“获取像元值”这些操作就可以标注流量了,要注意这点的流量并不是交汇后下游的流量,自己研究下。数量若少的话可以先将河流格栅或者分级后格栅格栅转点了,然后复制感兴的点对象到新建的元素图层在进行标注。