Tips:
本期向大家分享SWAT模型的土壤数据库的制备方法。在开始之前,要注意的是:我的土壤数据是HWSD世界土壤数据,需要进行土壤重新分类。最终要完成的任务有3项,分别是:
(1)重分类后的土壤类型数据(栅格数据文件)
(2)土地利用类型索引表(txt文件)
(3)usersoil数据库(替换原来SWAT自带的参数库“SWAT2012“中的”usersoil“表内容)
三者关系如下:索引表起到桥梁的作用,SWAT模型通过索引表来连接栅格数据与usersoil土壤数据库
目录
1 研究区土壤数据提取
2 研究区土壤数据重分类
2.1 提取研究区土壤数据库
2.2 研究区土壤数据重分类
3 研究区土壤索引表制作
4 usersoil数据库制备
4.1 HWSD复制至usersoil
4.2 SPAW计算
4.3 USLE方程中可蚀性因子计算
4.4 水文分组
4.5 usersoil数据库制备完成
1 研究区土壤数据提取
将“HWSD”栅格文件加载至ArcMap,通过第一期内容得到的澜沧江DEM数据进行掩膜提取,得到澜沧江土壤数据。
①加载HWSD栅格土壤数据。
②在ArcToolbox中找到“数据管理工具”——“投影和变换”——“定义投影”,对HWSD栅格土壤数据定义一个GCS_WGS1984的地理坐标系。
③在ArcToolbox中找到“Spatial Analyst 工具”——“提取分析”——“按掩膜提取”,通过澜沧江DEM数据lcrdem_prj对HWSD栅格数据按掩膜提取,得到澜沧江土壤数据lcr_soil。
④在ArcToolbox中找到“数据管理工具”——“投影和变换”——“栅格”——“投影栅格”,对澜沧江土壤数据进行投影,直接选择与澜沧江DEM数据相同的投影坐标系。
⑤将投影后的澜沧江土壤数据lcrlu_soprj添加至ArcMap。
2 研究区土壤数据重分类
2.1 提取研究区土壤数据库
打开HWSD世界土壤数据库,即HWSD.mdb。我们需要用到其中的表是HWSD_DATA,将其导出为Excel格式,将澜沧江土壤数据的属性表导出,用Excel的VLOOKUP函数提取研究区澜沧江的土壤数据库。
①导出HWSD_DATA表。
②将澜沧江土壤数据lcrlu_soprj的属性表导出为txt格式。
③在导出的HWSD_DATA表中新建Sheet2工作簿,将从ArcGIS中澜沧江土壤数据导出的txt文件导入Sheet2中。
④用VLOOKUP函数结合COLUMN函数,一对多匹配,获取对应VALUE列的所有土壤数据,即澜沧江的土壤数据。VALUE列的数据对应HWSD_DATA表的U_GLOBAL列的数据,以此来进行VLOOKUP匹配。蓝框标黄是从ArcGIS中导出的txt文件内容,红框是函数内容,具体的VLOOKUP函数和COLUMN函数使用步骤在网上有很多教程,这里不做赘述。
2.2 研究区土壤数据重分类
①新建一个Sheet3工作簿,将Sheet2中的所有内容按保留值格式粘贴到Sheet3,避免后续操作导致公式改变。在Sheet3的COUNT列后面插入新的一列,将SU_SYM74的前两个值Ao和Lf复制到新的一列,利用Excel的LEFT函数将SU_YM90的所有值的前两个字母延续复制到新的一列。所有前两个字母相同的土壤,我们将其归为一类,然后看同类中谁的COUNT最大,这意味着该土壤在流域中占比在同类中最大,用该土壤代表同类的所有土壤,以这样的思路来进行土壤重分类。
②新建一列,用来存储新的VALUE值(命名为NEW_VALUE)即COUNT最大的土壤的VALUE列的值。比如,筛选AC类的土壤,这其中12537最大,那么就在NEW_VALUE列填入11788。同理将所有类共23类土壤重复上述操作,得到完整的NEW_VALUE列。
③新建Excel文件,将原来Excel表格的VALUE列和NEW_VALUE列放进里面,保存为CSV格式。
④打开ArcMap,右键澜沧江土壤数据lcrlu_soprj,点击“连接和关联”——“连接”。
⑤基于澜沧江土壤数据lcrlu_soprj的VALUE字段,和Re.csv文件中的VALUE字段匹配进行连接。
⑥打开澜沧江土壤数据lcrlu_soprj的属性表,发现已经连接成功。
⑦在ArcToolbox中找到“Spatial Analyst 工具”——“重分类”——“重分类”,输入栅格选择上述连接过的澜沧江土壤数据lcrlu_soprj,重分类字段选择NEW_VALUE,点击唯一,命名输出栅格。
⑧将重分类后的澜沧江土壤数据relcr_soil添加至ArcMap,重分类后的土壤类型减少至23种,至此土壤重分类完成,完成了第一项任务。
3 研究区土壤索引表制作
①打开先前的Excel表格HWSD_DATA,新建Sheet4,后续根据此工作簿制作索引表 ,将Sheet3中的NEW_VALUE复制到Sheet4中的第一列,然后删除重复值,保留唯一值。在Excel工具栏中选择“数据”——“删除重复值”,这样能够保证每个VALUE都是唯一值。
②重复2.1中④的VLOOKUP函数结合COLUMN函数操作,获取重分类后的土壤数据。
③新建一个Excel表格,命名为“索引表”,将HWSD_DATA表格Sheet4中的SU_SYM74和SU_YM90中的土壤名称复制到“索引表”中的第二列,列名为“NAME”。在第一列命名列名为“VALUE”,根据ArcGIS土壤重分类结果,将序号从0开始编号,下拉至22。
④在Excel工具栏中选择“文件”,另存为逗号分隔的CSV格式,再将文件名后缀改为txt。
——>修改后缀名为txt——>
⑤打开索引表.txt文件,为列名添加英文双引号(eg:VALUE——>"VALUE"), 土壤索引表制作完成,完成了第二项任务。
4 usersoil数据库制备
我们先前获取的重分类到土壤数据归根还是HWSD土壤数据库,SWAT无法直接读取,所以我们要将其换一个格式,制备成SWAT2012.mdb参数数据库中uersoil表的格式,usersoil就是SWAT的土壤数据库。所有的操作我们在Excel中进行,这样方便批量复制数据,HWSD中的部分列可以直接复制到uersoil中的指定列,具体复制到哪些指定列,下面我会给出一个表格来一一对应两者的列名。usersoil其余的空白部分需要我们用SPAW软件来计算。
4.1 HWSD复制至usersoil
①导出usersoil为Excel格式。usersoil表是在下载ArcSWAT时自带的,一个SWAT工程包含3个数据库,分别是:工程库(工程名.mdb)、栅格库(RasterStore.mdb)、参数库(SWAT2012.mdb)。usersoil表在参数库中可以找到,参数库的默认路径是:
电脑下载ArcSWAT的路径\ArcSwat\Databases\SWAT2012.mdb
②HWSD与usersoil列名对照表。将usersoil里的第一行列名保留,其余内容删除,将与之对应的HWSD中的列的数据复制进去。注意深度的转换,在复制到usersoil时要乘10,有机质的值是HWSD中的TOC除以0.58。其中SOL_BD土壤湿容重也可以用SPAW计算。
思路参考:SWAT模型土壤数据库的建立教程(一)———土壤数据的裁剪,投影以及重分类处理_哔哩哔哩_bilibili
③usersoil的其他列的含义和数值见下表。表中还有一些未提及的列,这些列对应的值都是任意的,沿用SWAT自带的usersoil原本的值即可。
④把目前能填的列都填到usersoil中,如下图。
4.2 SPAW计算
①打开SPAW软件,首先将度量单位由英制English改为公制Metric。
②输入参数。以土壤Ao的表层为例:
Sand:49;Clay:24;Organic Matter:就是有机质含量,T_OC除以0.58,值是1.72;Salinity:就是HWSD中的T_ECE,值是0.1;Gravel:10。
每次输入参数都要敲击回车Enter!!得到的结果在SPAW界面右上角:
(1)TextureClass对应usersoil的TEXTURE土壤结构SandyClayLoam(注意这个参数对后续SWAT计算没什么影响,所以随便填个值也是没问题的,比如用土壤名称Ao代替);
(2)AvailableWater对应SOL_AWC1,0.11;
(3)SatHydraulicCond对应SOL_K1,9.25;
(4)MatricBulkDensity对应SOL_BD1,1.51。上面提到过,SOL_BD土壤湿容重也可以直接用HWSD中的REF_BULK_DENSITY来代替。
这样就完成了一个土壤表层的参数计算,将计算结果填入usersoil中。由于大部分土壤不仅要计算表层参数,还要计算深层的参数,所以几乎每个土壤要操作SPAW2次,共有23个土壤类型,所以要重复操作SPAW40多次,工作量比较大。
4.3 USLE方程中可蚀性因子计算
将usersoil中的各土壤类型的Clay粘土、Silt粉土、Sand沙土、Rock砾石、OC有机碳含量分别填入Excel中,自动计算出最后一列的ULSE_K可蚀性因子。表层深层都要输入,所以共需输入40多行数据,但是因为Excel中编辑好了公式,所以计算起来工作量不大。
可蚀性因子计算表格是网上一个大佬做的,需要的话可以评论区留言
4.4 水文分组
将usersoil中的各土壤类型的表层和深层Sand沙土含量填入Excel中,自动计算出最后一列的水文分组。公式思路:利用含沙量计算平均颗粒粒径,利用平均颗粒粒径计算下渗率,选择表层和深层下渗率两者中最小的一个,由最小下渗率来判断土壤的水文分组。
思路参考:
SWAT土壤属性数据库构建——水文分组及USLE可蚀性因子的确定(5.5)_哔哩哔哩_bilibili
SWAT模型土壤数据库的建立教程(二)———数据库的处理及字段的计算_哔哩哔哩_bilibili
4.5 usersoil数据库制备完成
将可USLE方程中可蚀性因子和水文分组结果填入usersoil,完成usersoil土壤数据库的制备,将其导入自己工程文件夹中的SWAT2012.mdb的usersoil中。
(注意:导入SWAT2012.mdb后小数最多保留两位,否则在后续运行SWAT时可能报错!)
以上是全部内容,欢迎大家评论区留言,批评指正。