加载预定义流域与水系:
A 先从SWAT自动生成的子流域边界导出,作为自定义修改的初稿:
新建文档,导入ArcHydro里面的Watershed和Reach的shp文件,建议备份一个副本。
B 然后把watershed和reach的属性表改成swat所要求的格式
watershed的属性表格式:共4列
reach的属性表格式:共8列
C 建议利用湖泊和宽大河流裁剪掉形状偏离实际的子流域:
像这种子流域边界明显有问题,实际上这里是有湖泊存在的(如子流域85和94),而子流域78、88又是宽大河流的位置。因为它们的地势很平坦,对子流域划分影响较大,所以除利用湖泊裁剪子流域边界外,还可适当用靠近湖泊的宽大河流裁剪掉子流域。
裁剪方法:
- 选中湖泊
- 启动编辑,使用Clip裁剪工具。
D 裁剪后就可以自己合并或删除子流域了,但千万不要手动编辑子流域的节点!如下图(错误示范!):
因为是人工编辑,并不能保证子流域之间没有空隙,这样导入SWAT之后会报错!
正确的方法应该是只使用编辑中的merge和cut polygons工具:
在这当中,分享在裁剪过程中的经验,对于一个横跨湖泊的子流域,裁剪后会存在两个多边形隔岸相望但却是一个多边形的属性或编号(Gridcode)的情况,这样在选择一个子流域时,相隔十万八千里的多边形会被同时选中,如:
![](https://img-blog.csdnimg.cn/811b9c0a6ed340728cf58e2e36bd3e58.png)
![](https://img-blog.csdnimg.cn/59b8603d350a45b7b8a3405dfb341443.png)
这样的结果在流域划分中绝对是错误的
解决办法是,事先利用cut polygons 工具把横跨湖泊的子流域分成若干个不会横跨湖泊的多边形,如图上;这样在裁剪后就不会存在上述情况,如图下:
E 在合并子流域时,会存在编号变动的情况。例如84号的子流域合并到95号子流域中,编号为84号的子流域就不存在了,导致gridcode和subbasin编号不连续,这导致后续swat写入文件时会报错:“文件名或配置错误”。所以在合并之后,还应该挨个检查每个子流域的属性表,修改它们的gridcode和subbasin使其连续:
F 子流域修改后,水系的属性表也要随之改变,且必须一一对应。举一个例子,下图中,选中的河流属于gridcode编号为1的子流域,且从编号为1的子流域出发(FROM_NODE)流向编号为3的子流域(TO_NODE)。在流域出口处,则把TO_NODE和subbasinR改为0即可。
持续学习,持续更新,欢迎讨论交流!