import xarray as xr

# 读取数据
path = '/home/yaodianwen/tp_era5_3hrsum_mekong_mm_defined_invalid_pr.nc'
data = xr.open_dataset(path)

# 获取经纬度变量名
lon_var, lat_var = list(data.coords.keys())[:2]

# 确定新的经纬度范围和间隔
new_lon = data[lon_var].values[::2]
new_lat = data[lat_var].values[::2]

# 重采样
data_resampled = data.sel({lat_var: new_lat, lon_var: new_lon}).resample({lat_var: '0.5°', lon_var: '0.5°'}).mean()

# 保存结果
new_path = '/home/yaodianwen/tp_era5_3hrsum_mekong_mm_defined_invalid_pr_interp.nc'
data_resampled.to_netcdf(new_path)

代码解释:

  1. 导入xarray库: import xarray as xr

    • 导入用于处理NetCDF数据的Python库xarray。
  2. 读取数据: data = xr.open_dataset(path)

    • 使用xr.open_dataset()函数读取指定路径的NetCDF文件,并将其存储在data变量中。
  3. 获取经纬度变量名: lon_var, lat_var = list(data.coords.keys())[:2]

    • 获取NetCDF数据集中经度和纬度变量的名称,并将其分别存储在lon_varlat_var变量中。
  4. 确定新的经纬度范围和间隔: new_lon = data[lon_var].values[::2]new_lat = data[lat_var].values[::2]

    • 使用切片操作[::2]选择原始经纬度数据中每隔一个值,生成新的经纬度数组,实现将分辨率从0.25°变为0.5°。
  5. 重采样: data_resampled = data.sel({lat_var: new_lat, lon_var: new_lon}).resample({lat_var: '0.5°', lon_var: '0.5°'}).mean()

    • 使用sel方法选择新的经纬度范围, 使用resample方法以0.5°间隔对经度和纬度进行重采样,并使用mean()函数计算每个新网格内的平均值。
  6. 保存结果: data_resampled.to_netcdf(new_path)

    • 使用to_netcdf()函数将重采样后的数据保存到新的NetCDF文件中,文件路径为new_path

这段代码展示了如何使用Xarray库对NetCDF数据进行经纬度重采样。通过调整resample()方法中的参数,您可以根据需要更改重采样的分辨率和方法。

使用Xarray对NetCDF数据进行经纬度重采样

原文地址: https://www.cveoy.top/t/topic/btEh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录