SWAT模型学习(三)

3 SWAT模型测试

3.1 介绍

由于长江流域面积巨大,土壤类型众多,测试、修改的成本太高,所以我们选择一个较小的区域进行试验。

试验区域为河西走廊的石羊河流域,我们选择了一个30km×20km的小区域,该区域包含了石羊河支流大西河的出口,作为水系划分的出口(http://slt.gansu.gov.cn/syhglj/)。

3.2 流域水系划分

操作详情见https://www.bilibili.com/video/BV1H7411n7Vs

打开Arcmap,新建SWAT工程,进入Automatic Watershed Delineation界面,导入BJ54空间坐标系的DEM,子流域面积阈值选择2E-7Ha,自动填洼后生成河道。确定出口后生成了10个子流域,将显示为红色框的Basin要素导出为shp文件。

3.3 土壤数据库建立

操作详情见https://www.bilibili.com/video/BV1H7411n7Vs

打开Arcmap,进入3.2新建的SWAT工程,利用3.2导出的shp文件裁剪HWSD,提取出流域内的土壤分布类型,经统计共6种。

打开SWAT工程数据库,SWAT2012.mdb,将6种土壤依次录入,为方便查询,土壤名称直接用土壤ID表示,例如上图左栏中的11291、11352等。注意,11387只有一层。记录完毕,保存。

3.4 land use文件

我们选择GLASS_GLC数据库,由清华大学土地覆盖监测网站提供(http://data.ess.tsinghua.edu.cn/),全球范围的土地利用情况如下所示:

注意:

这时我们需要把语言换成英语,否则后续载入landuse栅格文件时会报错(http://muchong.com/html/201406/7534220.html),更换语言方法参考(https://jingyan.baidu.com/article/ab0b5630b670dbc15afa7d02.html)。

利用3.2导出的shp文件裁剪GLASS_GLC,获取研究区域内的土地利用信息,只有一种,数值为90,查阅分类表后确定该区域的土地利用类型为荒地:

GLASS_GLC数据库包含分类文件labelInstruction.docx,内容为:

Label 
0No data
10Cropland 农田,耕地
20Forest 森林
30Grassland 草原
40Shrubland 灌木
70Tundra 冻土带
90Barren land 荒地
100Snow/ice 雪/冰

3.5 HRU分析

打开SWAT工程,HRU Analysis - Land Use/Soils/Slope Definition

3.5.1 Land Use Data控件

在Land Use Grid下导入已经定义投影的landuse数据,Choose Grid Field选择VALUE,点击OK,下方会出现对应表格。

双击LandUseSwat空格,可以手动选择土地类型,选择crop,选择BARR,点击Reclassify。

3.5.2 Soil Data控件

同样的,依次填入,点击Reclassify:

3.5.3 Slope控件

选择坡度,为了方便我们直接选择Single Slope,也就是不用分层,点击Reclassify:

 

3.5.4 重载

以上三步完成后,勾选下方两个选项框,点击Overlay按钮,进行叠加,将土地利用、土壤类型、坡度等水文特性叠加到每个HRU上,然后SWAT才能基于HRU进行产流、入渗、水质监测的计算工作。

点击确定,大功告成!

3.5.5 筛选

点击HRU Analysis - HRU Definition,进入筛选设置。SWAT为了简化计算,提供了筛选功能,我们可以设置阈值,将小于该阈值的水文特性类型删除,这里我们选择10%,点击Create HRU。

3.6 气象数据库

打开Write Input Tables - Weather Stations,选择气象数据库。这里有很多备用选项,可以导入其他数据库,也可以自己输入。我们选择CFSR_World(https://www.bilibili.com/video/BV1H7411n7Vs下提供了链接),需要将下载到的CFSR_World.mdb手动复制到项目下的SWAT2012.mdb数据库中,如下图所示:

点击Weather Generator Data按钮,在下拉框选择WGEN_CFSR_World(如果不进行上一步复制操作,这里将不显示WGEN_CFSR_World),点击OK,等待约1分钟完成,点击“确定”,然后点击Cancel退出。

3.7 生成输入参数表格

打开Write Input Tables - Write SWAT Input Tables,弹出清单表格, 点击Select ALL,点击Create Tables。

等待约1分钟完成,点击“确定”,然后点击Cancel退出。

3.7 运行SWAT

做完上述工作,我们已经完成了SWAT运行的全部准备工作,打开SWAT Simulation - Run SWAT,进入最后的时间跨度和分辨率、SWAT编译器等设置(我偷偷换了个PC,嘿嘿):

选择时间跨度2000/1/1 - 2015/12/31,时间分辨率1个月,点击Setup SWAT Run,完成预备工作,点击Run SWAT,开始计算。

但是出现了这一幕:

问题描述:Fortran编译过程出错,读数据时读到文件末尾。我们打开出现问题的文件000120004.sol,发现它竟然是空的,而000120001.sol - 000120003.sol都没有问题。

查阅SWAT使用手册(https://wenku.baidu.com/view/5f1d74eb0975f46527d3e195.html),.sol文件是土壤输入文件,可能是soil部分出了问题。参考(https://blog.csdn.net/Chris_Ning/article/details/98242315?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159841213819724839203572%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=159841213819724839203572&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_ecpm_v3~pc_rank_v3-1-98242315.pc_ecpm_v3_pc_rank_v3&utm_term=SWAT%E8%BF%90%E8%A1%8C%E5%A4%B1%E8%B4%A5&spm=1018.2118.3001.4187),检查土壤数据库usersoil,果然发现第四行的11387号土壤的描述有误,本来只有1层,但第二层却有了相关记录,且与第一行的11291号土壤一致,可能是导入时出现错误。将第二层数据全部改为0,保存。

再次测试,还是出现同样的问题:

考虑是否是参数范围的问题,对照SWAT2012.mdb的solrng.dbf数据库(如下图所示),对数据库进行检查:

检查完毕,并没有问题。

看一下.sol文件的命名规律,根据各个.sol文件的内容,我们推测:前5位000xx为subbasin编号,后四位00xx为每个subbasin中的HRU编号,这样一来就是第12个子流域的第4个HRU出现问题,没有写入土壤信息。

打开Edit SWAT Input - Subbasins Data,选中11561号土壤,点击OK

出现如下界面,证明该土壤类型已被正确导入:

返回文件夹,打开000120004.sol,发现已经写入文本了:

重新测试,刚才的问题解决了,但是又出现了新问题(我人傻了):

只能从配置文件入手了。打开file.cio文件(位于工程目录/Scenarios/Default/TxtInOut/下),发现降雨和温度数据均为空,说明WGEN_CFSR_World数据库在该区域没有站点,导致计算失败。

此时我们需要手动添加该区域的气象数据。打开下载到的中国地面气候资料日值数据集V3.0(原地址http://data.cma.cn/data/cdcdetail/dataCode/SURF_CLI_CHN_MUL_DAY_V3.0.html,但是下载很不方便,好在本站有资源,可以花C币下载之,时间跨度2010-2019年),查看站点分布,利用matlab inpolygon函数,发现共有3个站点位于石羊河流域,但是方块里(红色区域)一个都没有:

有种前功尽弃的绝望感。。。

本次测试到此为止,虽然没有成功,但熟悉了SWAT的流程,掌握了许多实用的ArcGIS技巧,比如关于数据库的建立、坐标系统的转化、异常事件查询与解决等,都为下一次的成功积累经验。

让我们期待SWAT模型学习(四)吧!

 

 

  • 22
    点赞
  • 127
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值