数据的保存之使用python手动保存netCDF文件(xxx.nc)

       在网上搜过手动保存NC文件的代码,大多数我都用不了,不是这里报错就是那里不存在某定义项,一看时间,发帖都好几年前……想必都是老NC版本了。后来偶得一保存方式的代码,甚是喜欢。这个保存的代码很简单,就是单纯的把物理量和经纬度分为三个变量(key)保存进去,非常地通俗易懂简便快捷。可是随着我对数据要求越来越高,使用CDO或者NCL进行操作的时候,其鸡肋性的报错便发生了!(报错说文件缺少某某某属性某某维度……)

       于是我果断放弃网络搜索,转向nc官网,将官网的属性、数据、维度等定义都看了一遍,就这样我自闭了一天。直到晚上,在经历了各种报错尝试和bu不断地深入自闭后,我竟然成功了???!!!!

废话太多,果断上代码。

##假设存入物理量TMAX 数据形状(10,18,19)
#首先创建nc文件
ncfile = D('new.nc','w',format = 'NETCDF4')

#添加坐标轴(经度纬度和时间)这边19、18是我经纬格点数目
xdim = ncfile.createDimension('lon',19)
ydim = ncfile.createDimension('lat',18)
tdim = ncfile.createDimension('time',len(TMAX))
    
#添加全局属性,比如经纬度和标题,主要是对数据进行一个简单的介绍
ncfile.setncattr_string('title','TEMPERATURE')
ncfile.setncattr_string('geospatial_lat_min','19.5 degrees')
ncfile.setncattr_string('geospatial_lat_max','45 degrees')
ncfile.setncattr_string('geospatial_lon_min','105 degrees')
ncfile.setncattr_string('geospatial_lon_max','132 degrees')
    
#添加变量和局部属性,存入数据
var = ncfile.createVariable('lon',np.float32,'lon')
var.setncattr_string('long_name','longitude')
var.setncattr_string('units','degrees_east')
var[:]=lon

var = ncfile.createVariable('lat',np.float32,'lat')
var.setncattr_string('long_name','latitude')
var.setncattr_string('units','degrees_north')
var[:]=lat

tvar = ncfile.createVariable('time',np.int,'time')
tvar.setncattr_string('long_name','time')
tvar.setncattr_string('units','days since 0000-01-01')
tvar.calendar = "standard"
tvar[:]=len(TMAX)
    
var = ncfile.createVariable('TMAX',np.float,('time','lat','lon'))
var.setncattr_string('long_name','Temperature')
var.setncattr_string('units','C')
var[:]=TMAX
    
#关闭文件
ncfile.close()

暂且将上面生成的nc称作标准nc文件吧。(已对其进行CDO、NCL等一些操作,包括作图,暂未发现问题。)自闭的我终于舒缓了一口气。

若对你有用,点个赞再走,若有纰漏,尽管讲~~

  • 22
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

清流自诩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值