解决 | 海洋数据双线性插值后出错(大陆为缺失值nan)

研究好几天TAT,如题需要对nc文件提高分辨率,进行双线性差值时报错

原始文件:float hus(time=12, plev=17, lat=192, lon=288)

插值后目标:float hus(time=12, plev=17, lat=361, lon=720)


与其他文件不同点在于,大陆数据为缺失值nan

这是原始数据

for file in *.nc; do     cdo remapbil,r720x361 "$file" "${file%.nc}_regrid.nc"; done

cdo差值后变成了

查看数据发现,出错的地方都是大陆区域(数据出现巨大值或巨小值)

而海洋区域数据与原始大致相同

于是想到简单处理办法(找了好几天问题在哪TAT)

只要把错误数据都设置为nan值(我这里设置了<-10和>10的值全部用nan代替)

import os
import numpy as np
import xarray as xr
from glob import glob

input_folder = r'E:\PMIP3\piControl\hus\huslist\plev17'  # 输入文件夹路径
output_folder = r'E:\PMIP3\piControl\hus\huslist\plev17\modified'  # 输出文件夹路径

if not os.path.exists(output_folder):
    os.makedirs(output_folder)

for input_file in glob(os.path.join(input_folder, '*.nc')):
    ds = xr.open_dataset(input_file)
    if 'hus' in ds:
        ds['hus'] = ds['hus'].where((ds['hus'] >= -10) & (ds['hus'] <= 10), np.nan)
        filename = os.path.basename(input_file) 
        output_file = os.path.join(output_folder, filename)  
        ds.to_netcdf(output_file)
        print(f"处理完成: {input_file} -> {output_file}")
    else:
        print(f"文件 {input_file} 中没有 'hus' 变量,跳过处理。")

print("所有文件处理完成!")

输出文件:

问题解决!可以集合平均了!

图上可以看出可能还有一些小点数据有问题,但是无伤大雅,我决定不管

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值