三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

保姆级教程:如何为SWAT模型准备土壤和土地利用数据(以HWSD和GLASS_GLC数据库为例)

保姆级教程:如何为SWAT模型准备土壤和土地利用数据(以HWSD和GLASS_GLC数据库为例)

水文建模实战:HWSD与GLASS_GLC数据在SWAT中的全流程处理指南

当研究区域的径流模拟、泥沙输移或农业面源污染评估成为课题核心时,SWAT(Soil and Water Assessment Tool)往往是水文建模师的首选工具。这个由美国农业部开发的分布式流域模型,其精度很大程度上依赖于输入数据的质量——尤其是土壤和土地利用这两类基础空间数据。本文将手把手带您完成从原始数据库到SWAT可用格式的完整转化流程,重点解决中文环境下特有的技术痛点。

1. 数据获取与预处理

1.1 土壤数据库HWSD的获取与解析

HWSD(Harmonized World Soil Database)作为联合国粮农组织主导的全球土壤数据库,其1.2版本包含超过16000个土壤制图单元。获取途径通常有两种:

  • 官方渠道:通过FAO官网提交申请(需注意最新版本可能需签署数据使用协议)
  • 镜像站点:国内科研机构如中科院地理所常提供高速下载节点

下载后的压缩包通常包含以下关键文件:

HWSD.mdb # Access格式主数据库 HWSD_RASTER.zip # 全球1km分辨率栅格数据

栅格数据预处理要点

  • 使用GDAL工具检查坐标系(通常为WGS84)
  • 中国大陆区域建议转换为CGCS2000坐标系
gdalwarp -t_srs EPSG:4490 HWSD_RASTER.tif HWSD_CGCS2000.tif

1.2 GLASS_GLC土地利用数据特点

清华大学开发的GLASS_GLC(Global Land Cover)数据集在时空分辨率上具有显著优势:

版本时间分辨率空间分辨率覆盖时段
V1.01km1985-2010
V2.0500m2010-2020

数据下载后需特别注意分类体系差异:

# GLASS_GLC分类代码示例 class_mapping = { 10: "Cropland", 20: "Forest", 90: "Barren land", # ...其他分类代码 }

2. 空间数据处理实战

2.1 研究区域边界提取

使用DEM数据生成流域边界的标准流程:

  1. 在ArcGIS中加载DEM数据
  2. 运行【水文分析工具箱】→【填洼】→【流向计算】→【流量累积】
  3. 设置子流域面积阈值(建议从2E-7 Ha开始调试)
  4. 导出流域边界为Shapefile格式

常见问题排查表

问题现象可能原因解决方案
生成的河道断裂DEM分辨率不足使用30m或更高分辨率DEM
流域边界包含过多细小多边形阈值设置过小逐步增大面积阈值
坐标系报警告投影信息丢失使用Define Projection工具修复

2.2 数据裁剪与重投影

同时处理HWSD和GLASS_GLC数据时,建议采用批处理模型:

# ArcPy裁剪脚本示例 import arcpy from arcpy.sa import * arcpy.env.workspace = "输入工作空间" boundary = "流域边界.shp" # 批量裁剪流程 datasets = ["HWSD_CGCS2000.tif", "GLASS_GLC_2020.tif"] for ds in datasets: out_raster = ExtractByMask(ds, boundary) out_raster.save(f"裁剪_{ds}")

注意:当处理大范围区域时,建议分块处理以避免内存溢出,可通过设置arcpy.env.extent参数控制处理范围

3. SWAT数据库集成

3.1 土壤数据录入规范

SWAT2012.mdb中的usersoil表需要严格遵循字段格式:

字段名数据类型说明
SNAMText土壤名称(建议用ID+类型)
HYDGRPText水文分组(A/B/C/D)
SOL_ZMXFloat最大根系深度(mm)
ANION_EXCLFloat阴离子排除孔隙度

关键操作步骤

  1. 通过ArcCatalog连接SWAT2012.mdb
  2. 右键usersoil表选择"编辑"
  3. 按F6开始新记录输入
  4. 必填字段标红提示需完整填写

3.2 土地利用重分类技巧

GLASS_GLC原始分类需要转换为SWAT标准分类:

1. 在SWAT界面打开"HRU Analysis" 2. 选择"Land Use/Soils/Slope Definition" 3. 导入裁剪后的GLASS_GLC栅格 4. 在"LandUseSwat"列匹配SWAT分类: - 农田 → AGRL - 森林 → FRST - 荒地 → BARR

语言切换问题解决方案:在Windows控制面板→区域→管理→更改系统区域设置中,临时切换为英语(美国),处理完成后再切回中文

4. 质量控制与验证

4.1 数据一致性检查

完成数据导入后必须执行三项基础校验:

  • 空间覆盖检查:确保所有HRU都有对应的土壤/土地利用数据
  • 属性完整性检查:验证usersoil表中无空值字段
  • 分类匹配检查:确认GLASS_GLC代码与SWAT分类正确对应

4.2 常见错误解决方案

案例:土壤分层数据异常当遇到.sol文件写入失败时,按以下流程排查:

  1. 检查usersoil表中该土壤的分层数(NLAYERS字段)
  2. 确认各层深度(SOL_Z1~5)是否按递增顺序排列
  3. 验证各层物理属性(CLAY、SILT等)在合理范围内

案例:气象数据缺失若运行时报错"Weather data not found",需:

  1. 检查file.cio中气象站ID是否正确
  2. 确认TxtInOut文件夹包含对应的.pcp/.tmp文件
  3. 验证时间范围与输入数据匹配

完成所有数据准备后,建议先用小时间范围(如1年)试运行,确认无误再开展长期模拟。记得定期备份SWAT2012.mdb数据库——这个仅几十MB的文件包含着您所有的前期工作成果。

← 返回列表