【SWAT模型】Python批处理SWAT模型气象要素数据

本文记录了使用Python处理气象数据,包括nc文件转换、站点经纬度提取、值提取到Excel、批量转tif及整理成SWAT模型输入格式的详细步骤,主要涉及nc数据的批处理和Excel、tif的交互操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 一、前言

        记录下SWAT气象数据构建过程,由于我的研究区位于干旱区且研究区面积大,实测的气象站点稀少,时间序列上也不满足要求,因此我们一般都会采用气象数据产品来代替实测站点数据,那么就涉及到对气象要素进行批处理,处理成SWAT模型输入数据的格式,本篇博文就是记录下自己处理数据的过程和经验,以防自己忘记。

1、气象数据

         SWAT模型输入的气象数据主要包括六个气象要素,分别是日降水量、日最高温、日最低温、日相对湿度、日平均风速以及日太阳辐射,这些要素都有相应的气象数据集,后面会整理出一些气象要素所对应的气象数据产品。这个博文主要是分享批处理气象数据的代码。

2、气象数据处理

 2.1 气象数据格式

气象数据一般是存储为nc格式,我下载的各个气象要素的格式如下: 

(1)日降水量、日最高温、日最低温,这三个气象要素是每年存储为一个nc文件,如图所示:

(2) 日相对湿度和日平均风速,这两个气象要素是41年的逐日数据都存储在一个nc文件里,如图所示:

(3)日太阳辐射,我是下载的ERA5_Land中的气象数据集,这个数据下载后是每个月一个nc文件,每个压缩包里面是一个名为Data.nc的数据,如图所示:

        之前我采用的方法是,将nc数据批量转为tiff,然后利用代码来批量提取值,主要在arcgis中的IDLE中运行,这种方法我也用过,非常的耗费时间(苦哈哈的我还花了一段时间去处理,想想就心酸),有需要的话我也可以总结一下这个方法。

2.2 站点经纬度提取

       日降水量、日最高温、日最低温、日相对湿度、日平均风速这五个气象要素是利用python代码,将nc文件里的数据按照站点的经纬度,直接提取每个站点1980-2020年的气象数据值。提值之前我们需要每个站点的经纬度,这个我们可以利用arcgis中的“栅格转点”以及其他工具,然后在属性里添加字段,计算经纬度坐标,然后将属性表导出来(不懂的可以百度一下如何操作)。

最后我们就得到了一张包含站点名称和经纬度的excel表,如图所示:

2.3 nc文件提值到Excel文件的代码

代码来源:NCDC气象数据的提取与处理(四):python批量读取、写入nc数据经纬度格点数值-CSDN博客

利用这个代码将每个气象要素从nc提值到Excel,具体提取效果,如下图所示:


                
SWAT模型中气象数据的计算翻译By:94527257 The Program pcpSTAT User’s Manual Stefan Liersch, Berlin, August 12, 2003 stliersch@freenet.de 下载地址:http://www.brc.tamus.edu/swat/pcpSTAT.zip 引言 pcpSTAT.exe 程序用来计算SWAT 模型气象发生器所需要的每日降水数据的统计 参数(userwgn.dbf)。表1 中列出的一些参数能毫不费力地利用MICROSOFT EXCEL 等 工具计算出来,而PR_W1 和 PR_W2 比较难计算。 表 1:SWAT 所用的降水统计参数 PCPMM(mon) = average or mean total monthly precipitation PCPSTD(mon) = standard deviation for daily precipitation in month PCPSKW(mon) = skew coefficient for daily precipitation in month PR_W1(mon) = probability of a wet day following a dry day PR_W2(mon) = probability of a wet day following a wet day PCPD(mon) = average number of days of precipitation in month 输入文件 存储着每日降水数据的输入文件必须是只有一列数字的 ASCII 码文本文件(图1)。 观测期必须是开始于1 月1 日,结束于12 月31 日。换句话说,第一个数据值是1 月1 日的,最后一个是12 月31 日的。虽然对利用的总年数没有限制,但每一次的计算都 必须是基于一整年。 若是有缺失的数据,需要用空值(必须是数字)来填充这些缺失的数据值。程序 会询问这些值,并用整个系列的平均值取代空值。 图1: Example of a Precipitation Input File 翻译By:94527257 创建输入文件 降水数据文件通常是文本文件,一列是日期,一列为降水值。用EXCEL 打开数据 文件,若有必要可以缩减日期,以使其从1 月1 日开始,12 月31 日结束。随后,删除 日期列,只剩降水数据列,并保存为文本文件(filename.txt)。 若是使用其它软件创建输入文件或是之后使用文本编辑器操作文件,确保最后存 在一个空行。若是没有空行或是超过一个空行,程序将会中断并弹出消息“End of file during read”,且将会产生错误的输出数据 运行 pcpSTAT.exe 程序 将程序和输入文件放在同一个目录,双击 pcpSTAT.exe 或是从DOS 窗口中启动程 序(图2)。键入输入、输出文件的名字(包括其扩展名),至于输出文件,可以任意命 名。下一步,需要输入起始年份,用来判断一个年份是否是闰年。只要键入第一年(4 位数字)回车。此后,需要输入无数据值,若降水数据有缺测,需要输入一个并不存 在的数字,例如“999”。 图2: Program pcpSTAT.exe 在计算结束后,输出文件(图3)会自动保存在程序目录中。此外,还会生成2 个文件:totalpcp.sta 和mean_pcp.sta。totalpcp.sta(图4)包含了每年每个月的总降水, mean_pcp.sta 则包含每年每个月的平均每日降水。 翻译By:94527257 图3: Example of an Output File 翻译By:94527257 图4: Example of the File totalpcp.sta
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wennnndo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值