爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4750|回复: 0

nc文件变量属性写入

[复制链接]

新浪微博达人勋

发表于 2019-10-12 11:27:29 | 显示全部楼层 |阅读模式
Python
系统平台: windows10 spyder python3.6.5 netcdf4
问题截图: -
问题概况: 想要将下载的包含多个变量ERA5的NC文件分割成包含单个变量的NC文件,但不知道该如何将变量属性信息写入新文件中
我看过提问的智慧: 看过
自己思考时长(天): 2

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
代码如下
import netCDF4 as ncimport numpy as np



file_obj = nc.Dataset(r'F:\\Data\\ERA5\\pressure-levels\\20180621\\pressure-levels-2018062101.nc')
all_vars = file_obj.variables.keys() #获取全部变量名称
all_vars = list(all_vars)

all_vars_info = file_obj.variables.items()
all_vars_info = list(all_vars_info)

lat = file_obj.variables['latitude'][:]
lon = file_obj.variables['longitude'][:]
level = file_obj.variables['level'][:]
time = file_obj.variables['time'][:]
cc0 = file_obj.variables['cc'][:]
data = np.array(cc0)


file_path = pathlib.Path(r'F:\\Data\\ERA5\\pressure-levels\\Fraction of cloud cover\\cc_2018062101.nc')
if file_path.is_file:
    file_path.unlink()
else:
    print(f"Error:{file_path} file not found")

f_w = nc.Dataset(file_path, 'w', format = 'NETCDF4')

f_w.createDimension('time',1)  
f_w.createDimension('level',29)
f_w.createDimension('lat',721)   
f_w.createDimension('lon',1440)


f_w.createVariable('time',np.int32,('time'))  
f_w.createVariable('level',np.int32,('level'))  
f_w.createVariable('latitude',np.float32,('lat'))  
f_w.createVariable('longitude',np.float32,('lon'))


f_w.variables['time'][:] = time[:]
f_w.variables['level'][:] = level[:]
f_w.variables['latitude'][:] = lat[:]
f_w.variables['longitude'][:] = lon[:]


f_w.createVariable('cc', np.float64, ('time','level','lat','lon'))
f_w.variables['cc'][:] = data
print('data have been written')


f_w.close()
file_obj.close()

#这部分代码可将cc变量写入,但如图所示,没有属性信息
——————————————————————————————————————————————————————————
在查阅过程中发现setattr函数可以创建变量的局部信息,变量赋值后想要写入属性信息,代码如下
for i in range(len(all_vars)):
    setattr(all_vars[i],'variables',all_vars_info[i])


报错信息如下:
setattr(all_vars[i],'variables',all_vars_info[i])

AttributeError: 'str' object has no attribute 'variables'

——————————————————————————————————————————————————————————
这两天刚接触NC文件,恳请各位不吝赐教!


原始文件变量属性信息

原始文件变量属性信息

新写入文件变量属性信息

新写入文件变量属性信息
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表