ArcGIS水文分析实战教程(15)库容和淹没区计算

ArcGIS水文分析实战教程(15)库容和淹没区计算

本章导读:虽然前面已经有章节论述过书库库容计算,但在这里笔者还是需要对整个流程做系统的描述。这部分内容属于水文分析的进阶部分,不再停留在基础的河流、流域提取,而是借助前面的这些基础的原理和操作,使用更多的ArcGIS工具进行辅助分析。 BY 李远祥

库容和淹没区计算 的基本流程

要计算库容就必须先计算出该集水区面积,并且通过不同的水位计算出淹没区,并利用淹没区去裁剪DEM数据,将水面与下垫面的体积计算出来,这就是水库的库容。由于有了前面的基础,这里就不将所有的分析流程都列出来了,只列出关键部分,如下图所示
在这里插入图片描述
这里需要用到的水库出水口,水库的坝口位置或者是水文站位置,其水位高度一般是通过水文站读取出来或者认为设定一个具体的数值。利用分水岭工具提取的集水区,就是这里的库区,而通过条件函数设定了水面高度之后提取低于水面高程的栅格数据,这就是所谓的淹没区。淹没区与下垫面之间的体积就是库容。

裁剪库区的DEM数据

为什么要利用集水区(库区)的面去裁剪DEM。这样做的原因是在下一步使用条件函数去过滤DEM一定高度的像元时可以剔除掉不相关的数据。这部分是非常重要的。
裁剪工具使用的是栅格工具箱里面的裁剪工具,其裁剪的时候需要特别注意的是要根据集水区的边界进行裁剪,不然的话默认只会将集水区的外矩形边框范围裁剪出来。其设置如下图所示
在这里插入图片描述
必须勾选上“使用输入要素裁剪几何”这个选项。

库容计算核心工具

有了前面的集水区分析得出库区范围,后面的计算就可以完全交给条件函数工具去做了。条件函数可以根据一定的高程值对DEM进行过滤,及所谓的淹没区计算。如下图所示
在这里插入图片描述
提取出淹没区的DEM之后,关键部分是使用DEM数据进行体积的计算。在ArcGIS 3D扩展模块中有一个名为表面体积的计算工具,可以计算DEM数据某一平面以下或以上的体积。在这个场景下当然是使用高程以下的体积了。如下图所示
在这里插入图片描述

库容和淹没区计算的建模流程

以下是在ArcGIS Modelbuilder 中建模的流程
在这里插入图片描述
笔者已经将水面的高度作为参数进行建模,在实际操作过程中可以进行调整,这样就比较方便了。如下图所示
在这里插入图片描述
其最终分析的结果会生成一个报告文件,计算出水库的库容及水面面积,并且在地图上加载集水区和淹没区,如下图所示
在这里插入图片描述

总结

库容和淹没区的计算是对水文分析工具和ArcGIS工具的综合运用,没有水文分析计算出集水区范围,光有体积计算工具是没有任何作用的。可以看到,解决实际问题都是需要对所学的知识进行综合运用。

更多的GIS主流和非主流技术,可以持续关注CSDN的GIS制图乐园,以及微信公众号【GIS制图乐园】。BY 李远祥

### 创建处理水库库容曲线 #### 数据准备 为了创建处理水库库容曲线,首先需要准备好高质量的数字高程模型 (DEM) 其他必要的地理空间数据。这些数据用于后续的一系列水文分析过程[^1]。 #### 填洼平滑地形 由于自然地形中的低凹区域可能影响水流模拟效果,在正式开始之前通常会对原始 DEM 进行填洼处理来移除不合理的负向坡度,并通过平滑算法减少噪声干扰,从而获得更精确的地表表示形式。 #### 流向与流量计算 基于修正后的 DEM 文件执行流向分配运算,确定每个像元内的水流方向;接着利用累积流算法估算各位置上的总流入水量大小,这一步骤对于识别潜在蓄水地点至关重要。 #### 集水区定义 应用上述成果定位并提取目标流域边界——即未来形成的人工湖体轮廓线外缘,此步骤可通过捕捉倾泻点(outlet point)实现自动化完成,随后转换成矢量多边形要素类以便进一步操作。 #### 裁剪DEM至研究范围 限定工作区间到仅限于选定集水区内,以此提高效率同时也便于管理输出结果。具体做法是从全局尺度下的栅格层中切割出局部片段保存为新文件供下一步骤调用。 #### 表面体积测量 借助 ArcGIS 的 `Surface Volume` 工具针对特定高度阈值之下部分实施三维量化评估,该功能位于 Spatial Analyst 或 3D Analyst 扩展模块内。设置好参照水平面后即可获取对应储水量数值列表,进而绘制出完整的容量变化趋势图表[^2]。 ```python import arcpy from arcpy.sa import * arcpy.CheckOutExtension("Spatial") # 定义输入参数 dem = r"C:\path\to\your\clipped_dem.tif" water_level_field = "ELEVATION" # 自定义字段名存储不同淹没深度 output_table = r"C:\path\to\save\volumes.dbf" # 使用 Surface Volume 函数批量求解多个截面间的差额 with open(r'C:\path\to\levels.txt', 'r') as f: levels = [float(line.strip()) for line in f.readlines()] for level in levels: out_surface_volume = SurfaceVolume(dem, output_table, "BELOW", str(level)) ``` #### 绘制库容曲线 最后将得到的数据序列按照升序排列整理成表格视图,横坐标代表逐渐增高的水位刻度而纵轴则记录相应时刻所能容纳的最大液态物质数量级。采用折线连接各个离散样本点构成直观易懂的关系映射图形展示给用户查看理解。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值