Python——ERA5土壤湿度数据根据厚度权重求和

一、前言

第五代再分析数据集(ERA5)提供4类土壤湿度变量,变量名为“Volumetric soil water layer”

包括4个深度层,分别为0~7、7~28、28~100、100~289 cm,单位为土壤体积含水量(m3/m3)

那么如果我需要0~100 cm的土壤湿度数据,应该怎么办呢?

根据文献阅读,方法其实非常简单,只需将土层厚度作为权重因子再求和即可

数据下载链接如下,我这里计算0~100 cm的土壤湿度

ERA5 land数据集下载地址


二、计算方法


三、Python脚本

import os
import rasterio
import numpy as np

# 定义输入文件夹路径
folder1 = r'输入路径' #Volume of water in soil layer 1 (0-7 cm) 
folder2 = r'输入路径' #Volume of water in soil layer 2 (7-28 cm)
folder3 = r'输入路径' #Volume of water in soil layer 3 (28-100 cm)

# 定义输出文件夹路径
output_folder = r'输出路径'

# 获取文件列表
files1 = sorted([f for f in os.listdir(folder1) if f.endswith('.tif')])
files2 = sorted([f for f in os.listdir(folder2) if f.endswith('.tif')])
files3 = sorted([f for f in os.listdir(folder3) if f.endswith('.tif')])

# 确保每个文件夹中的文件数量相同
assert len(files1) == len(files2) == len(files3), "文件夹中的文件数量不一致"

# 批量处理每组栅格文件
for file1, file2, file3 in zip(files1, files2, files3):
    path1 = os.path.join(folder1, file1)
    path2 = os.path.join(folder2, file2)
    path3 = os.path.join(folder3, file3)
    
    # 打开栅格文件
    with rasterio.open(path1) as src1, rasterio.open(path2) as src2, rasterio.open(path3) as src3:
        assert src1.shape == src2.shape == src3.shape, "栅格文件的形状不一致"
        
        # 读取栅格数据
        data1 = src1.read(1)
        data2 = src2.read(1)
        data3 = src3.read(1)
        
        # 逐格点加权相加
        sum_data = (7*data1 + 21*data2 + 72*data3) / 100
        
        # 更新栅格元数据
        profile = src1.profile
        profile.update(dtype=rasterio.float32)
        
        # 定义输出文件路径
        output_path = os.path.join(output_folder, file1)
        
        # 写入新的栅格文件
        with rasterio.open(output_path, 'w', **profile) as dst:
            dst.write(sum_data.astype(rasterio.float32), 1)

print("栅格运算完成,文件已输出到:", output_folder)

结果:

 


四、参考

[1] Z.Q. Zhong, B. He, Y.P. Wang, et al, Disentangling the effects of vapor pressure deficit on northern terrestrial vegetation productivity.Sci. Adv.9,eadf3166(2023).

[2] 金令, 王永芳, 郭恩亮等, ERA5、GLDAS和FLDAS土壤湿度数据在内蒙古地区的适用性评价. 节水灌溉, 2023(3): 53-60.

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Python可以使用xarray和netCDF4等库来处理ERA5降水数据。 首先,我们需要使用netCDF4库来读取ERA5降水数据文件。可以使用`Dataset`函数打开数据文件,并使用`variables`属性检查文件中包含的变量。 接下来,我们可以使用xarray库将数据文件转换为一个数据集(Dataset)对象。数据集中的数据可以通过名称或索引进行检索,以便进行进一步处理和分析。 对于ERA5降水数据,每个时间戳可能包含多个高度层次上的数据。可以使用xarray库的`isel`函数选择所需的高度层次。 对于时间序列数据,我们可以使用`groupby`函数按年、月、季度或其他时间单位进行分组,以便进行统计分析。例如,我们可以计算年度或季度平均值、总和、最大值等等。 如果需要绘制ERA5降水数据的空间分布图,我们可以使用matplotlib或其他可视化库。可以使用xarray库中的`plot`函数绘制不同时间步骤下的降水图,或者使用Cartopy库来绘制地理投影图。 最后,我们可以使用Python中的其他数据处理和分析库,如pandas和numpy,来进一步分析ERA5降水数据。这些库提供了强大的功能,可以进行数据清洗、统计分析、时间序列分析等。 总之,Python提供了丰富的库和工具来处理ERA5降水数据。我们可以使用netCDF4和xarray库读取和处理数据,使用matplotlib和Cartopy库进行可视化,同时结合其他数据分析库进行更深入的分析。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值