SWAT| 水文 | SWAT模型(三):土壤数据库制备

Tips:

本期向大家分享SWAT模型的土壤数据库的制备方法 。在开始之前,要注意的是:我的土壤数据是HWSD世界土壤数据,需要进行土壤重新分类。最终要完成的任务有3项,分别是:

(1)重分类后的土壤类型数据(栅格数据文件)

(2)土壤类型索引表(txt文件)

(3)usersoil数据库(替换原来SWAT自带的参数库"SWAT2012"中的"usersoil"表内容),数据最多保留两位小数。

三者关系如下:索引表 起到桥梁的作用,SWAT模型通过索引表 来连接栅格数据usersoil土壤数据库


目录

[1 研究区土壤数据提取](#1 研究区土壤数据提取)

[2 研究区土壤数据重分类](#2 研究区土壤数据重分类)

[2.1 提取研究区土壤数据库](#2.1 提取研究区土壤数据库)

[2.2 研究区土壤数据重分类](#2.2 研究区土壤数据重分类)

[3 研究区土壤索引表制作](#3 研究区土壤索引表制作)

[4 usersoil数据库制备](#4 usersoil数据库制备)

[4.1 HWSD复制至usersoil](#4.1 HWSD复制至usersoil)

[4.2 SPAW计算](#4.2 SPAW计算)

[4.3 USLE方程中可蚀性因子计算](#4.3 USLE方程中可蚀性因子计算)

[4.4 水文分组](#4.4 水文分组)

[4.5 usersoil数据库制备完成](#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:49Clay:24Organic Matter: 就是有机质含量,T_OC除以0.58,值是1.72Salinity: 就是HWSD中的T_ECE,值是0.1Gravel: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时可能报错!)

以上是全部内容,欢迎大家评论区留言,批评指正。

相关推荐
鸿业远图科技1 天前
分式注记种表达方式arcgis
python·arcgis
城市数据匠1 天前
31【干货】Arcgis属性表常用查询表达式实战大全
arcgis·gis·cad·国土空间规划·自然资源局
新中地GIS开发老师1 天前
【Cesium入门教程】第七课:Primitive图元
arcgis·信息可视化·gis开发·webgis·地理信息系统·地理信息科学
梦想的初衷~2 天前
城市排水防涝与海绵城市优化:SWMM模型工程应用及二次开发案例分析
环境·气候·水文
王孝点2 天前
geoserver发布arcgis瓦片地图服务(最新版本)
arcgis
没有梦想的咸鱼185-1037-16634 天前
【大语言模型ChatGPT4/4o 】“AI大模型+”多技术融合:赋能自然科学暨ChatGPT在地学、GIS、气象、农业、生态与环境领域中的应用
人工智能·python·机器学习·arcgis·语言模型·chatgpt·数据分析
新中地GIS开发老师5 天前
【Cesium入门教程】第五课:数据源
arcgis·遥感·gis开发·webgis·地理信息科学
没有梦想的咸鱼185-1037-16635 天前
【大模型ChatGPT+ArcGIS】数据处理、空间分析、可视化及多案例综合应用
人工智能·arcgis·chatgpt·数据分析
玩大数据的龙威6 天前
【ArcGIS技巧】用地块生成界址点去重、顺时针编号挂接DKBM属性
arcgis