使用xarray或cdo将netCDF数据扩展至全球范围并填充NA值
解决方案
1. Xarray 实现方法
推荐直接使用reindex方法,这是最适配当前场景的功能,你之前尝试的方法不适用的原因如下:
.pad()需要手动计算上下侧需要补充的格点数量,操作繁琐易出错.expand_dims()用于新增全新维度,不能扩展已有维度的坐标范围.assign_coords()用于修改现有坐标的取值,无法自动填充缺失坐标对应的数据
具体操作代码:
import xarray as xr import numpy as np # 读取原始数据 ds = xr.open_dataset("your_input.nc") # 生成目标纬度序列,需和原始数据的纬度分辨率匹配,此处以0.5°分辨率为例 # arange左闭右开,所以终止值设为90可包含89.75 target_lat = np.arange(-89.75, 90, 0.5) # 重索引扩展纬度范围,空缺值填充为NaN ds_extend = ds.reindex(lat=target_lat, fill_value=np.nan) # 保存结果 ds_extend.to_netcdf("global_extend_output.nc")
注意事项:
- 如果你的数据集纬度维度名称不是
lat(比如为latitude),需要替换为对应维度名 - 若原始数据纬度分辨率不是0.5°,修改
np.arange的第三个步长参数为对应分辨率即可
2. CDO 实现方法
直接使用CDO内置的enlarge命令即可一步完成,空缺区域自动填充缺失值:
cdo enlarge,lon=-180/180/lat=-89.75/89.75 input.nc cdo_output.nc
如果你的原始数据已经是全球经度范围,也可以仅指定纬度范围:
cdo enlarge,lat=-89.75/89.75 input.nc cdo_output.nc
内容的提问来源于stack exchange,提问作者Lucia
相关产品推荐
相关产品推荐

