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

news/2025/2/21 14:21:08/

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: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时可能报错!)

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


http://www.ppmy.cn/news/1573905.html

相关文章

解决 Nginx 代理后 HTTP 头部丢失的问题:以 access_token 为例

文章目录 前言一、问题描述二、问题原因三、解决方案3.1 启用 underscores_in_headers3.2 重新加载 Nginx 配置 总结 前言 在日常开发和运维中,我们经常会使用 Nginx 作为反向代理服务器,将客户端的请求转发到后端服务。然而,在某些情况下&a…

DeepSeek系统架构的逐层分类拆解分析,从底层基础设施到用户端分发全链路

一、底层基础设施层 1. 硬件服务器集群 算力单元: GPU集群:基于NVIDIA H800/H100 GPU构建,单集群规模超10,000卡,采用NVLink全互联架构实现低延迟通信。国产化支持:适配海光DCU、寒武纪MLU等国产芯片,通过…

编写dockercompose脚本,管理redis,activemq,mysql5.7

编写dockercompose脚本,管理redis,activemq,mysql5.7,mysql的root密码设置Duke2007,redis密码设置duke0591 Docker Compose 多服务编排脚本(安全增强版) yaml 复制 services: # # MySQL 5.7 服务配置 #…

ubuntu安装docker docker/DockerHub 国内镜像源/加速列表【持续更新】

ubuntu安装docker & docker镜像代理【持续更新】 在Ubuntu上安装Docker,你可以选择两种主要方法:从Ubuntu的仓库安装,或者使用Docker的官方仓库安装。下面我会详细解释这两种方法。 方法一:从Ubuntu的仓库安装Docker 这种方…

【Linux】HTTP:Cookie 和 Session 详解

一、引入 Cookie 定义 HTTP Cookie(也称为 Web Cookie、 浏览器 Cookie 或简称 Cookie,中文意思为 “曲奇饼,小甜饼”) 是服务器发送到用户浏览器并保存在浏览器上的一小块数据, 它会在浏览器之后向同一服务器再次发…

cenos 安装 /usr/local/nginx/sbin/nginx这个路径的nginx

好的,我现在需要帮助用户解决在CentOS上安装Nginx到指定路径/usr/local/nginx/sbin/nginx的问题。首先,我得确认用户的需求是什么。用户可能已经知道如何安装Nginx,但希望将其安装到特定的目录,而不是默认的yum安装路径。通常&…

http 与 https 的区别?

HTTP(超文本传输协议)和 HTTPS(安全超文本传输协议)是互联网通信的基础协议。随着网络技术的发展和安全需求的提升,HTTPS变得越来越重要。本文将深入探讨HTTP与HTTPS之间的区别,包括其工作原理、安全性、性能、应用场景及未来发展等。 1. HTTP与HTTPS的基本概念 1.1 HT…

机械学习基础-9.进一步的无监督学习:聚类-数据建模与机械智能课程自留

data modeling and machine intelligence - FURTHER UNSUPERVISED LEARNING-CLUSTERING 聚类聚类可视化在聚类分析中定义数据点之间相似性 / 相异性的方法聚类优化问题 K - 均值聚类算法(K - Means Clustering)评估指标非唯一性问题 用于选择K值的肘部法…