目录
前言
项目环境、条件
Dem 数据预览
ArcGIS模型构建器
模型搭建
填洼
流向
流量
河流长度
栅格计算器
河流链接
河网分级
栅格河网矢量化
绘制倾泻点
栅格流域提取
集水区
盆域分析
栅格转面
模型应用
导出 py 文件
完善脚本
最终效果
结束语
前言
在地理信息系统(GIS)领域,水文分析是一项至关重要的任务,它涉及到对地表水流动路径、河流网络、流域划分等关键水文特征分析。这些分析对于水资源管理、洪水预警、环境规划以及城市排水系统设计等众多领域都具有重要的应用价值。
本文旨在探讨ArcGIS中水文分析的全过程,并展示如何构建一个可复用的水文分析模型。通过本文的学习和实践,读者将能够深入了解ArcGIS在水文分析方面的应用,掌握从数据预处理到模型构建、从模型运行到结果输出的整个流程。此外,本文还将介绍如何将ArcGIS模型脚本化,以提高模型的复用性和自动化程度。
在接下来的章节中,我们将详细介绍水文分析的各个步骤,包括资料背景的准备、操作中可能出现的问题及注意事项、分析框架的梳理、水文模型的搭建、模型思维和图形化界面的构建等。通过这些内容的学习,读者将能够全面掌握 ArcGIS 水文分析的相关知识和技能。
项目环境、条件
- ArcGIS 10.8 中文包
- 已开启 Spatial Analyst Tools 分析工具
- Win 10 数据集 30 m dem 栅格数据集
ArcGIS 10.2 也几乎一样,部分工具可能由翻译问题,建议初学者完全按照本文的文档结构进行。
Dem 数据预览
DEM(Digital Elevation Model,数字高程模型)是一种用于表示地表地形起伏的数字模型。它通过规则格网的矩阵形式,记录每个格网单元的高程值,从而在计算机中构建出地形的三维模型。DEM 是地理信息系统(GIS)中重要的空间数据类型之一,广泛应用于地形分析、水文模拟、城市规划、地质灾害评估等多个领域。 Dem 可以通过地理空间数据云、QGIS 插件、CAD 地形文件生产等多种方式获取。此前有介绍,本文不多赘述。
ArcGIS模型构建器
ArcGIS模型构建器是Esri公司开发的ArcGIS软件中的一个强大工具,它允许用户通过图形化界面来创建、编辑和运行一系列自动化的GIS分析模型。模型构建器的核心优势在于能够将复杂的GIS分析流程简化为一系列可视化的步骤,使得用户无需编写代码即可完成复杂的空间分析任务。 可以在空白文件夹下,点击按钮打开,也可以在文件夹内,右键打开。
建议像笔者一样,建立好文件夹框架,依次新建文件数据库-工具集-模型。
在模型构建器中,数据类型如下,本文将用到项目数据、工具、派生数据和值等类型。
将数据、工具等可以直接拖入模型界面中,非常方便。
模型搭建
填洼
dem-填洼-fill
填洼(Fill)是去除 dem 中的洼地(sinks)或凹陷(depressions)。这些洼地在地形分析中可能会导致错误的水流方向和流域划分,需要通过填洼操作来纠正。
流向
fill-流向-FlowDirection
注意选着 fill 时需要选择蓝色循环的那个,为变量值。
流量
FlowDirection-流量-fillacc
根据栅格数值大小隐约能看出河流的线条。
点击栅格可以查询该处的数值,通过这种方法判断最小径流的值,后面有用。
河流长度
FlowDirection-河流长度-flowlength 测量方向选择 upstream。
水流长度工具的主要用途是计算给定盆地内最长水流的长度。该度量值常用于计算盆地的聚集时间。这可使用 UPSTREAM 选项来完成。该工具也可通过将权重栅格用作下坡运动的阻抗,来创建假设降雨和径流事件的距离-面积图。
栅格计算器
栅格计算器 或者条件函数 栅格计算器(Raster Calculator) 条件函数 Con(FlowAccu>R,1) 目的是将流量栅格数据中提取河流的部分,公式为"flowacc" >= 1000。 在模型构建器中使用左右%代表变量。新增一个变量,作为流量限值 R,建议通过流量栅格 (flowacc), 点击查询河流的最小栅格,我这里根据实际情况,选择输入 1000。
具体公式以自己实验为准,添加变量后,修改为"%fillacc%" >= "%任意值%"
记得点击任意值,添加 1000,这样以后只需要修改这个值,就可以调整河流长度了。 Acc 1000 结果,可见满足条件的,也就是河流为 1,不满足的为 0.
河流链接
acc1000+FlowDirection=Streamlink by 河流链接
河流链接的作用有:构建连续的河流网络:河流链接工具能够识别并连接相邻的河流段,确保河流网络在空间上是连贯和正确的。分配唯一标识符:给河流网络中的每个部分分配唯一的 ID,便于管理和进一步分析。这有助于区分不同的河流分支和主流,以及分析它们各自的属性(如流量、长度等)。优化数据结构,减少在模型中处理大量独立线段时的复杂性。
河网分级
acc1000+FlowDirection=StreamOrder by 河网分级
河网结构用于识别河流上下级,常见的河网分级方法有斯特拉勒(Strahler)、希科特(Horton)和谢内(Shreve)等。斯特拉勒法是最常用的,它基于河流交汇规则来分配等级,即每次支流汇入时,如果两支流的等级相同,则合并后的河段等级加1;如果不同,则高等级保持不变。
栅格河网矢量化
StreamOrder+FlowDirection=StreamOrder1000 by 栅格河网矢量化
顾名思义,栅格河网矢量化就是将河流网络的栅格数据转换成矢量数据格式,便于分析、可视化及水文建模应用。注意如果要增加河流长度等字段,需要在投影坐标系下进行。
绘制倾泻点
StreamOrder 1000+end=FeatureVert_1000 By要素折点转点
倾泻点是指汇流区域中具有最低高程的边界象元。它标志着水从一个流域流向另一个流域的出口点,或者是水流离开一个封闭流域(如盆地)的地点。 可以通过要素折点转点生成,也可以根据自己手工增加,形式是一些离散的点。 要素折点转点,顾名思义,指通过矢量线的折点或转点然后生成点,有 all、mindle、end、start、both_ends、dangle(悬挂点,指离散点) 等类型,绘制倾泻选择 end 。
倾泻点非常关键,是汇水区分析的重要参数,除了自动生成的点外,可以根据实际需要,添加、删除点。
栅格流域提取
集水区
FlowDirection+FeatureVert_1000=倾泻点字段为空=watersh
集水区也就是分水岭,根据流向和倾泻点一起做的汇水范围。有倾泻点的会比盆域分析更细,他与倾泻点的点位有很大关系。
盆域分析
流向 FlowDirection 盆域分析= basin 盆域分析,也就是流域分析,可以理解为没有倾泻点的大范围流域分析。
栅格转面
RasterT_basin /RasterT_watersh
上述流域栅格,转为矢量图层。用于可视化和计算,作用与栅格河网矢量化类似。 basin/watersh 栅格转面
至此,水文分析基本结束。 调试模型,运行成功。
调整模型架构,让连接线不交叉。
模型应用
导出 py 文件
可以导出 py 文件,进行模型复用。在 ArcGIS 环境中导入脚本,注意导入前修改绝对地址注意保持一致。另外它基于 ArcPy 模块,一个专为 ArcGIS 设计的空间分析和数据处理库。因此,它的运行环境依赖于 ArcGIS,使用 ArcGIS Python 2.X 环境编写的。不能用于 python 3 中。 经过测试,代码并不能直接使用,需要重新编译后才能使用,后续会出一期 python 水文分析的文章。
完善脚本
- 将 dem 输入变为变量,方法为新增变量-栅格数据集,然后选择对应的 dem 位置。
- 重命名,将 dem 命名为输入 dem。双精度命名为输入流量下限值。
- 完善模型参数,模型-模型属性-参数将输入 dem、输入流量下限值作为必填项
最终效果
点击模型打开,输入 dem 和下限值,点击运行。
运行成功,结果输出在模型内指定的文件夹。
重新运行将会替换结果文件,运行一次后,结果移动出来,再次使用。总之,非常方便。
结束语
本文通过详细探讨ArcGIS水文分析的全过程,不仅展示了如何利用ArcGIS模型构建器来创建一个高效、可复用的水文分析模型,还深入介绍了模型构建器的图形化界面和强大功能。通过本文的学习,读者可以清晰地看到,即使是GIS编程新手,也能通过模型构建器实现复杂的空间分析任务,而无需深入代码层面。
最近,我新开了微信公众号(环境猫 er),坚持发布 python 环境业务解决方案,python 办公自动化,GIS 作图经验,学习笔记,办公技巧,工具分享等内容。 坚持 Bulid in public ,希望与你一起加油,一同成长。
还可以关注我的博客 wallflowers (maoyu92.github.io)