【SWAT水文模型】SWAT水文模型建立及应用第五期:SWAT模型运行设置

本博客主要介绍SWAT模型运行设置相关操作,土地利用、土壤和气象数据等处理可参见前期博客。
此外,ArcSWAT建模过程中出现的报错可参见另一博客-【SWAT水文模型】ArcSWAT各种报错总结

运用ArcSWAT工具栏里HRU Analysis 菜单下的命令,描述流域的土地利用、土壤和坡度特征。通过这些工具,可加载土地利用和土壤层到当前工程,分析坡度特征,以及确定流域和各子流域的土地利用/土壤/坡度类型的组合和分布。数据集可以是ESRIGrid、shapefile或地理数据库要素类的格式。
输入土地利用和土壤数据集,并链接到SWAT数据库之后,用户确定HRU分布的标准。可为每个子流域创建一-类或多类土地利用/土壤/坡度组合(水文响应单元或HRUs)。

1 SWAT模型运行设置

1.1 水文响应单元(HRU,Hydrologic Response Unit)划分

水文响应单元(HRU,Hydrologic Response Unit) 是SWAT模型中很有特色的地方。SWAT模型在子流域的基础上,根据土地利用类型、土壤类型和坡度,将子流域内具有同一组合的不同区域划分为同一类HRU,并假定同一类HRU在子流域内具有相同的水文行为。模型计算时,对于拥有不同HRU的子流域,分别计算一类HRU的水文过程,然后在子流域出口将所有HRU的产出进行叠加,得到子流域的产出。HRU数量直接决定着模型运行的速度。
水文相应单元的划分工作关键步骤为:

  • Land use/Soil/Slope定义及覆盖
  • HRU定义
  • 输入气象数据

1.1.1 Land use/Soil/Slope定义及叠加

通过Land Use/ Soils/ Slope Definition 工具,可加载流域和各个子流域的土地利用与土壤数据集,以及确定土地利用/土壤/坡度类型的组合和分布。该数据集可以是ESRI栅格,shapefile和地理数据库要素类的格式。矢量数据自动转化为栅格格式,空间分析需要此格式来计算土地利用和土壤数据集的共同区域。土地利用和土壤数据集的投影必须与用于流域划分的DEM投影一致。
坡度特征基于流域划分的DEM提取。可参见另一博客-【ArcGIS】使用ArcGIS进行坡度分析

提示:定义土地利用、土壤及坡度数据集和进行叠置操作时,必须在一个ArcSWAT中完成。如果在操作过程中关闭并重启ArcMap,软件将保存之前设置。完成叠置操作后,可以保存当前工程,然后退出ArcMap,再返回运行随后的HRU划分。

具体详细操作过程如下:
步骤1: 开始创建
选择HRU Analysis下拉菜单中Land Use/Soil/Slope Definition,打开如下界面:
在这里插入图片描述
步骤2: Land Use Data选项卡
点击按钮:选择要加载的土地利用的图层路径,如下图对话框所示:
在这里插入图片描述
土地利用的图层通过Load Land Use dataset from Disk,路径选择土地利用所在位置。
有提示如下:(必须为投影图层)
此外:土地利用与DEM路径格式要相同,覆盖率不能低于98%
在这里插入图片描述
在Choose Grid Field中,选择【VALUE】字段,点击【OK】,进一步添加查找表(LookUp Table)(即为土地利用索引文件的路径),如下:
在这里插入图片描述
添加查找表后,土地利用重分类完成,如下图所示:已将swat2012数据库内的土地利用类型的属性调用出来,与加载的土地利用图层中一定数字代码的土地利用类型匹配起来。
在这里插入图片描述
步骤3: Soil Data选项卡(与土地利用步骤类似)
点击按钮:选择要加载的土壤数据的图层路径,如下图对话框所示:
在这里插入图片描述
土地利用的图层通过Load Land Use dataset from Disk,路径选择土地利用所在位置。
有提示如下:(必须为投影图层)
在这里插入图片描述
在Choose Grid Field中,选择【VALUE】字段,点击【OK】,未重分类前的土壤类型如下:
在这里插入图片描述
点击【UserSoil】之后,进一步添加查找表(LookUp Table)(即为土壤类型索引文件的路径),如下:
在这里插入图片描述
步骤4: Slope选项卡
同样方法加载坡度信息,如果选择【Single Slope】,则假定坡度均一,但为了模拟更为精确,我们必须利用ARCGIS首先分析出研究区的坡度,再进行坡度定义,并选择【Multi Slope】进行模拟,最后点击【Reclassify】按钮。
在这里插入图片描述
点击【Reclassify】,如下:
在这里插入图片描述
以上三步成功设置后,勾选下方两个选项框,点击【Overlay】按钮,进行叠加,将土地利用、土壤类型、坡度等水文特性叠加到每个HRU上,然后SWAT才能基于HRU进行产流、入渗、水质监测的计算工作。如下:
在这里插入图片描述
完成后,弹出以下界面:
在这里插入图片描述
这样,土地利用,土壤分布及坡面定义完成。

1.1.2 HRU的定义

进入HRU definition,目的是限制HRU不要生成过多,手动分割,将极小的响应单元取消。
在这里插入图片描述
为保证计算的准确性与速度,一个子流域内的响应单元一般为3-4个
在本实例中将三个设定值定为10%、15%、10%。意为低于10%、15%、10%的土地利用、土壤分布、坡度类型等将被拆分合并到其他类型中。设置完成后点击Creat HRUs按钮退出。
在这里插入图片描述

1.1.3 气象数据的导入

打开Write Input Tables下拉菜单中得Weather Data Definition对话框,如下图所示,天气发生器降水气温三者数据是必须要填的数据,其他相对湿度、太阳辐射、风速三类数据已经在提前构建好的天气发生器中设置了模拟功能,在数据不全时,可以不添加,直接调用天气发生器的模拟值。
在这里插入图片描述
选择天气发生器、降水与气温输入文件路径后,点击下拉菜单中得Write All,提示如下图所示,确定后开始计算。
在这里插入图片描述
在这里插入图片描述

1.2 写入数据库

成功写入后,如下:
在这里插入图片描述

1.3 添加水库信息

若在子流域划分过程中已设置水库位置,利用【Edit Swat input】菜单可以添加水库信息。

2 ArcSWAT模型运行

注意:SWAT模型中设置预热期是为了消除模型初期参数默认值为0的现象。

进入模型模拟过程,可按需求选择模拟的时间步长,预热期等参数,点击【Setup Swat Run】后点击【Run SWAT】,开始运行。
在这里插入图片描述
模拟窗口如下所示:
在这里插入图片描述
运行完成后,弹出以下界面:
在这里插入图片描述
运行后可对模拟结果进行保存,在【Swat Simulation】下拉菜单中选择【SWAT Output】,出现如下窗口:
勾选前三个,然后点击Import Files to Database,可定义本次模拟名称,点击 【Save Simulation】按钮。
在这里插入图片描述
保存成功后,弹出以下界面:
在这里插入图片描述
单击 Open output.std,可以查看“output.std”文件。

要将选择的 SWAT 输出文件输入进 Access 数据库,可以选择所感兴趣的输出文件,然后单击 Import Files to Database 按钮,所选择的输出文件将会输入到lScenarios\SWATsim0628\TablesOut\SwatOutput.mdb 中。

输出结果从建立工程所在文件夹下Scenarios/SWATsim0628/TxtInOut:output.rch中读取各子流域的流量模拟结果。该文件可以用记事本打开。
在这里插入图片描述

参考

SWAT模型(Soil and Water Assessment Tool)是一个流域水文模型,用于模拟水库的水文过程。下面是一个基于SWAT模型的与水库有关的简化代码示例: ```python # 导入所需的库 from pyswat import SWAT # 创建SWAT模型对象 swat_model = SWAT() # 设置模型输入参数 swat_model.set_param('StartDate', '2000-01-01') swat_model.set_param('EndDate', '2010-12-31') swat_model.set_param('HRU', 10) swat_model.set_param('Sub', 1) swat_model.set_param('Rch', 1) swat_model.set_param('Res', 1) swat_model.set_param('Lte', 1) # 设置水库参数 swat_model.set_param('Reservoir', True) swat_model.set_param('ReservoirName', 'MyReservoir') swat_model.set_param('ReservoirCapacity', 1000000) # 水库容量(立方米) swat_model.set_param('ReservoirRelease', 'MyReleaseFile.csv') # 水库放流数据文件名 # 运行模型 swat_model.run() # 获取模型结果 reservoir_outflow = swat_model.get_output('Reservoir', 'Outflow') # 打印水库出流结果 print(reservoir_outflow) ``` 上述代码中,我们首先导入了`pyswat`库,并创建了SWAT模型对象。然后,我们设置模型的输入参数,如模拟时间范围、HRU(Hydrological Response Unit)数量等。接着,我们设置了与水库相关的参数,包括水库名称、容量和放流数据文件名。最后,我们运行模型,并获取水库出流结果。 请注意,这只是一个简化的示例代码,实际使用SWAT模型需要更多的设置和数据准备工作。你可以根据具体需要修改代码,并确保正确设置模型参数和输入数据。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WW、forever

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值