爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 15677|回复: 9

[netcdf] NCL把变量写入nc文件

[复制链接]

新浪微博达人勋

发表于 2021-4-9 17:30:26 | 显示全部楼层 |阅读模式

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

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

x
我想把ERA5的降水资料,1979年全年,一天一个文件,写入一个nc文件当中。首先批量把变量读取出来,然后写入nc。写入nc文件的代码完全是copy《NCL数据处理与绘图基础教程》的,但是试了好多次就是fileattdef(fout, fAtt)这一句有错误,错误提示如下:fatal:Could not create (G:\ERA5\daily\1979.nc)warning:FileSetFileOption: invalid file or format
fatal:["Execute.c":8637]:Execute: Error occurred at or near line 31 in file practice.ncl
有高人的话救救孩子吧,把百度找遍了也不知道是哪里的错误
下面是我的代码:
  1. begin

  2.   list_of_files = systemfunc("ls G:/ERA5/daily/precipitation/1979/era5.precip.197901*.nc")
  3.   file_list = addfiles(list_of_files, "r")
  4.   outfile = "G:\ERA5\daily\1979.nc"
  5.   time = file_list[:]->time
  6.   lat = file_list[0]->lat
  7.   lon = file_list[0]->lon
  8.   tprate = file_list[:]->tprate
  9.   ;printVarSummary(time)
  10.   ;printVarSummary(lat)
  11.   ;printVarSummary(lon)
  12.   ;printVarSummary(pre)
  13.   ntim = dimsizes(time)
  14.   nlat = dimsizes(lat)
  15.   nlon = dimsizes(lon)

  16.   pre = tprate
  17.   pre = tprate*1000*60*60*24
  18.   pre@units = "mm"

  19.   fout = addfile(outfile, "c")
  20.   setfileoption(fout, "DefineMode", True)
  21.   fAtt = True
  22.   fAtt@title = "NCL Efficient Approach to netCDF Creation"
  23.   fAtt@souce_file = file_list
  24.   fAtt@Conventions = "CF"
  25.   fAtt@creation_date = systemfunc("date")
  26.   fAtt@history = "NCL scripts: practice.ncl"
  27.   fAtt@comment = "Convert variable tprate from pricipitation rate to amount"
  28.   fileattdef(fout, fAtt)

  29.   dimNames = (/"time", "lat", "lon"/)
  30.   dimSizes = (/"-1", "nlat", "nlon"/)
  31.   dimUnlim = (/True, False, False/)
  32.   filedimdef(fout,dimNames,dimSizes,dimUnlim)
  33.   filevardef(fout,"time",typeof(time),getvardims(time))
  34.   filevardef(fout,"lat",typeof(lat),getvardims(lat))
  35.   filevardef(fout,"lon",typeof(lon),getvardims(lon))
  36.   filevardef(fout,"pre",typeof(tprate),getvardims(tprate))
  37.   filevarattdef(fout,"time",time)
  38.   filevarattdef(fout,"lat",lat)
  39.   filevarattdef(fout,"lon",lon)
  40.   filevarattdef(fout,"pre",pre)
  41.   setfileoption(fout,"DefineMode",False)

  42.   fout->pre = (/pre/)
  43.   fout->time = (/time/)
  44.   fout->lat = (/lat/)
  45.   fout->lon = (/lon/)
  46.   delete(time)
  47.   delete(lat)
  48.   delete(lon)
  49.   delete(tprate)
  50.   delete(pre)


  51. end

复制代码




密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2021-4-9 17:33:04 | 显示全部楼层
就是提示第31行出错
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-4-9 18:17:35 | 显示全部楼层
救救孩子吧
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-4-11 23:10:35 | 显示全部楼层
ncl写成nc文件:修改出来了嘛?
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-4-11 23:56:30 来自手机 | 显示全部楼层
你的outfile路径可能错了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-4-15 22:06:36 | 显示全部楼层
outfile路径的斜杠是不是反了
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2021-4-16 15:53:12 | 显示全部楼层
一般输出文件的创建和写入:
finame_out = "./*****.nc"
system("rm -rf "+finame_out)
fiout = addfile(finame_out,"c")
fiout->u = data_anal
你可以参考下哈,看是不是缺了什么.
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-4-20 09:43:30 | 显示全部楼层
小羊趴在云朵上 发表于 2021-4-11 23:10
ncl写成nc文件:修改出来了嘛?

没有,,,,,,,,,,
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2021-4-20 09:52:42 | 显示全部楼层
iovedys 发表于 2021-4-15 22:06
outfile路径的斜杠是不是反了

改了之后还是一样的错误提示
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

新浪微博达人勋

发表于 2024-6-17 11:01:26 | 显示全部楼层
我产生这个错误然后修正成功。错误就在output路径。修改前:diro = "data03/***/xinli/models/anom/JMA/t2m/"+year+"_xinli/",修改后:diro = "/data03/***/xinli/models/anom/JMA/t2m/"+year+"_xinli/"。错误就在data03前面那个“/”。供参考。
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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