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中读取各子流域的流量模拟结果。该文件可以用记事本打开。