水文模型构建过程中,气象数据的完整性和准确性直接影响模拟结果的可靠性。然而实际工作中,研究人员常遇到历史气象数据缺失或不完整的难题——可能是设备故障导致的记录中断,也可能是早期观测项目不完善留下的空白。这类"数据缺口"往往成为SWAT模型应用的绊脚石。
SwatWeather作为专为SWAT模型设计的气象数据预处理工具,能够基于不完整的历史观测数据,通过统计方法生成符合模型要求的完整逐日序列。本文将结合洮河流域临洮气象站1970-2020年的实际案例,详解从原始数据整理到最终生成WGEN_User数据库的全流程操作,特别针对软件使用中的常见报错提供解决方案。
SwatWeather作为轻量级工具无需复杂安装,但需注意以下要点:
注意:部分杀毒软件可能误报,使用时需临时关闭实时防护或添加信任
从中国气象数据网下载的原始数据通常需要格式转换。以临洮站为例,原始TXT文件需按以下标准整理:
text复制年 月 日 降水量(mm) 最高气温(℃) 最低气温(℃) 风速(m/s) 日照时数(h) 相对湿度(%)
1970 1 1 0.0 -5.3 -16.2 1.2 7.8 52
1970 1 2 0.0 -4.1 -15.8 1.5 8.1 49
...
关键格式要求:
python复制# 示例:使用Pandas进行数据清洗
import pandas as pd
df = pd.read_csv('raw_data.txt', sep='\s+')
df['相对湿度'] = df['相对湿度'].round().astype(int) # 湿度取整
df.to_csv('formatted_data.txt', sep='\t', index=False, header=True)
降水是水文模拟中最敏感的要素,SwatWeather通过马尔可夫链-伽马分布联合模型处理缺失值:
| 参数名 | 含义 | 示例值(1月) |
|---|---|---|
| PCP_MM | 月平均降水量(mm) | 12.5 |
| PCPSTD | 降水标准差 | 8.2 |
| PCPSKW | 降水偏度系数 | 1.35 |
| PR_W1 | 干日转换概率 | 0.67 |
| PR_W2 | 湿日转换概率 | 0.33 |
提示:当连续缺失超过15天时,建议人工检查插补结果合理性
温度数据需分别处理最高温和最低温:
临洮站温度处理常见问题解决方案:
当辐射数据缺失严重时,可采用Angstrom-Prescott模型基于日照时数估算:
bash复制Rs = (a + b*n/N)*Ra
其中:
Rs:地表太阳辐射(MJ/m²)n:实际日照时数N:最大可能日照时数Ra:地外辐射a,b:经验系数(临洮站取0.25,0.50)SwatWeather要求露点温度而非相对湿度输入,转换公式为:
$$
T_d = \frac{bγ(T,RH)}{a-γ(T,RH)} \
γ(T,RH) = \frac{aT}{b+T} + \ln(RH/100)
$$
参数设置要点:
将各要素CSV文件按以下结构整合:
| 字段名 | 数据类型 | 必填 |
|---|---|---|
| MONTH | Int | 是 |
| PCP_MM | Float | 是 |
| PCPSTD | Float | 是 |
| WND_AV | Float | 否 |
| SOL_RAD | Float | 否 |
操作流程:
在SWAT-CUP中执行参数敏感性分析时,应特别关注:
洮河流域案例显示,经SwatWeather处理后的数据使Nash系数提升0.12~0.15。