一、前言
记录下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,具体提取效果,如下图所示: