matlab读取EAR5数据——nc文件中的坑

1 问题描述

本人最近需要处理ERA5-Land中的温度、降水数据,以往读取nc文件时,常用的命令为:

info = ncinfo(filepath);  
fid=netcdf.open(filepath);    
temper_id=netcdf.inqVarID(fid,'t2m');
temper=netcdf.getVar(fid,temper_id,'double');    % 按double类型读取

读取出来的结果为(单位为:K):
在这里插入图片描述
考虑到温度肯定不可能数值这么大,而且发现读取出来的info中包含了scale_factor和add_offset,那么实际的数值应该为scale_factor*给出的数值+add_offset
在这里插入图片描述

2 ncread读取出来的NetCDF数据不需要自己修正scale_factor和add_offset等参数,它会自动修正

使用以下命令傻瓜式读取nc文件:

temper=ncread(pathname,'t2m');

读取出来的结果为(单位为:K):
在这里插入图片描述
这个结果就是正常的,说明1中方式读取出来的为原始数据。

3 给出的数值需要直接写代码读取,不要直接复制!!!

上图中给出的两个数值小数点后都是四位,直接复制也是只有四位,但是写代码读出来的数发现是double,小数点后有很多位。
如果利用1中介绍的方式读取原始数据,再复制只有四位小数的scale_factor和add_offset进行修正,计算出来的数值和2中ncread读取出来的有差别,虽然差别不大,如下(简略图):
在这里插入图片描述
如果写代码读取这两个数值,再对1中的原始数据进行处理,则可以得到ncread一样的结果。

4 python中nc文件读取的说明

使用python包读取nc文件时,一般和matlab的ncread命令一样,这些scale_factor和add_offset是自动进行修正了的,无需其他处理。

  • 20
    点赞
  • 68
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值