HEC-RAS软件简介及其在水文建模中的应用

HEC-RAS(Hydrologic Engineering Center’s River Analysis System)是由美国陆军工程师兵团水文工程中心开发的一款免费、开源的水力分析软件。自20世纪90年代发布以来,HEC-RAS已从最初的一维恒定流水面线计算工具,逐步发展成为支持一维/二维耦合模拟、非恒定流计算、泥沙输移和水质分析的综合平台。该软件凭借其稳定的计算性能、良好的GIS集成能力以及广泛的用户社区,已成为国内外水利部门、科研机构及工程咨询公司进行洪水模拟的主流工具之一。在洪水淹没分析中,HEC-RAS能够利用高精度地形数据和流量边界条件,模拟洪水在河道及滩区中的演进过程,并输出淹没范围、水深分布及流速场等关键结果。

地形数据处理与网格划分方法

HEC-RAS接受DEM(数字高程模型)、TIN(不规则三角网)或LAS点云数据作为地形输入。地形预处理通常在ArcGIS、QGIS或HEC-RAS内置的RAS Mapper中进行,包括:合并大范围DEM、裁剪至研究区域、去除异常高程(如建筑物、植被引起的噪点)、修补河道缺失断面等。对于二维网格划分,推荐采用非结构化三角网格或结构化矩形网格。

目录

一、数据准备:

1.DEM:

2.曼宁糙率shp:

二、HEC-RAS 2D建模

1.新建工程

2.打开RAS Mapper初始化

3.在Terrains中创建地形:

4.绘制BC线

5.糙率设置

6.开始计算

7.计算结果

参考


一、数据准备:

1.DEM:

加载防洪堤,铁路,道路等矢量数据,修正dem

首先收集导入分析区域内的道路、轨道、防洪堤这类会影响行洪水的建筑物,另外要统计其高于地面多少米以及宽度;由于轨道,高速,防洪堤的宽度和高度都大不相同,所以分开依次对dem数据进行修改。

使用缓冲区工具定义宽度[分析工具-邻域分析-缓冲区],随后将其转为栅格,最后使用栅格计算器抬升高度。

这里末端类型选择了FLAT,可以根据实际情况进行调整选择是圆形末端还是平整末端。

定义宽度后如下所示,注意重叠的部分要使用编辑工具将其分开,否则在定义高度是会出现部分区域高程高于实际值的结果。

使用转换工具将面转为栅格。

转为栅格后使用栅格计算器抬高dem数据

设置环境将处理范围设置为研究区域全范围,否则将只处理上一步所做出的栅格所在最小范围,并将像元大小设置一致。

栅格计算器公式如下:

Con(IsNull("国道.tif"), "原始DEM.tif", "原始DEM.tif" + 国道高出地面的高度)

修正后的dem数据如下所示,在符号系统中选择使用山体阴影效果,可以很明显的观察到处理结果。

2.曼宁糙率shp:

根据土地利用数据,赋值糙率

这里根据不同的土地利用类型,赋值糙率:

ID Class Color NAME n
1 Cropland 250,227,156 农田 0.06
2 Forest 68,111,51 森林 0.1
3 Shrub 51,160,44 灌木 0.08
4 Grassland 171,211,123 草原 0.05
5 Water 30,105,180 水域 0.035
6 Sonw/Ice 166,206,227 冰雪 0.025
7 Barren 207,189,163 裸地 0.025
8 Impervious 226,66,144 不透水面 0.015
9 Wetland 40,155,232 湿地 0.07

将土地利用数据栅格图层转为栅格后便于赋值。

可以看到,转换后内容较多,工作量较大,这里用字段计算器进行赋值

添加字段ManningN,选择双精度,右键使用字段计算器,勾选显示代码块,输入代码进行赋值。

由于这里分类字段是数字,使用python更加便捷,代码如下:

def get_n(code):
    if code is None:
        return 0.060
    n_dict = {1: 0.060, 2: 0.100, 3: 0.080, 4: 0.050, 5: 0.035, 6: 0.025, 7: 0.025, 8: 0.015, 9: 0.070}
    return n_dict.get(code, 0.060)
get_n( !gridcode! )

这里gridcode是分类字段名称,使用时要根据自己的属性表中内容进行调整。

二、HEC-RAS 2D建模

1.新建工程

注意路径及名称要全英文

修改单位系统为公制:

2.打开RAS Mapper初始化

这里简单说一下界面功能。

Features 查看导入的SHP/栅格图层
Geometries 编辑几何数据(画2D流场、边界线、堤线)
Event Conditions 设定边界条件流量/水位
Results 查看计算结果(水深/流速/淹没范围)
Map Layers 管理地图图层显示
Terrains 创建/管理地形数据

设置工程投影:

这里我用的是2000高斯坐标,直接使用从国家2000投影的官方定义抄下来的WKT定义,然后导入:

3.在Terrains中创建地形:

右键Terrains,选择Create a New RAS Terrain。

然后导入我们之前做好的dem数据

完成后得到带有色带的dem渲染图:

右键Geometries创建

展开Domain,左键单击选中 2D Flow Areas,上方工具栏点击画笔图标,单击选中Perimeters

在地图上沿最大可能淹没范围画多边形:包住三条沟口、沟口以下整片平地、防洪堤及其背后

双击闭合多边形,弹出设置窗口:point spacing:填 15(设置网格间距)

等待计算完成后点击close,完成后关闭编辑并保存,选择是。

看到Geometry这一栏是空的,需要手动关联,点击Edit—Geometric Data

点击File—Open Geometry Data

选择我们刚刚做好的Domain

完成后关闭Geometric Data,可以看到已经关联

4.绘制BC线

接下来回到Ras Mapper中绘制BC线,找到Boundary Condition Lines,开始绘制

这里由于研究区域共有四个山洪沟,所以要画四条上游的出水口,和一条下游的,注意下游边界要画在外侧。

在主界面点击Edit—Unsteady Flow Data

选中一个出水口,点击Flow hydrolograph

根据历时设定填入设计频率的洪量,点击ok即可,注意仅几个出水口需要设置洪量,需要注意的是,这里要根据研究区域的洪水过程来填对应的流量

在设置完上游的四条BC线后,设置下游的BC线,选择BC out,点击Normal Depth

在 Friction Slope: 后面的输入框里,填 0.001。(山丘区平坦下游河段的典型摩擦坡度)

5.糙率设置

保存后回到主界面,由于一开始设置糙率都是默认的0.06,现在进行糙率的精细化设置。打开RAS mapper,左侧 Map Layers  → Create a New RAS Layer → Land Cover Layer

导入之前制备好的shp文件,将Import Extents修改为Geometries,name field修改为gridcode,修改像元值Cell Size为15,如下:

查看绑定糙率是否生效:

可以看到已经绑定了。

6.开始计算

回到主界面启动计算,点击Run—Unsteady Flow Analysis(确认Plan中Geometry file是Domain,Unsteady flow file是设好的流量),Simulation Time Window保持和流量过程性一致,Computation Interval填30秒,其余勾选如下所示

另外还要勾选Flooplain Mapping 不然不会出图

点击compute开始计算

7.计算结果

计算完成后打开RAS mapper,点击Results勾选之前创建的项目目录下Depth就能看到淹没结果了

参考

HEC-RAS 2D User's Manual

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐