爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 23100|回复: 18

[其他] 用ncl将变量写入nc文件,出错,求助

[复制链接]
发表于 2016-3-24 19:53:15 | 显示全部楼层 |阅读模式

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

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

x
ncl是不是对写入的数据大小有限制,当删掉几个变量就可以写入,或者写进两个nc文件里就不报错,可是现在要写进一个文件,求大神帮助。

错误提示为:
ncendef: ncid 131072: NetCDF: One or more variable sizes violate format constraints
fatal:NetCDF: Operation not allowed in define mode: error attempting to write variable (tc) to file
fatal:["Execute.c":8128]:Execute: Error occurred at or near line 196 in file tiqu3.ncl
ncclose: ncid 131072: NetCDF: One or more variable sizes violate format constraints


脚本如下:就是简单的将wrfout数据读出来再写入另外一个文件。

  t=0
   ; do nt=3,ntimes-1,3
      do nt=3,4
         qc(t,:,:,:) = wrf_user_getvar(aa,"QCLOUD",nt)
         qr(t,:,:,:) = wrf_user_getvar(aa,"QRAIN",nt)
         qi(t,:,:,:) = wrf_user_getvar(aa,"QICE",nt)
         qs(t,:,:,:) = wrf_user_getvar(aa,"QSNOW",nt)
         xlat(t,:,:)= wrf_user_getvar(aa,"XLAT",nt)      
         xlong(t,:,:)= wrf_user_getvar(aa,"XLONG",nt)
          psfc(t,:,:) = wrf_user_getvar(aa,"PSFC",nt)*0.01
   
          tg(t,:,:)= wrf_user_getvar(aa,"TSK",nt)   
         tc(t,:,:,:) = wrf_user_getvar(aa,"tc",nt)
   
          u(t,:,:,:) = wrf_user_getvar(aa,"ua",nt)
          v(t,:,:,:) = wrf_user_getvar(aa,"va",nt)
          ter(t,:,:) = wrf_user_getvar(aa,"ter",nt)
         qv(t,:,:,:) = wrf_user_getvar(aa,"QVAPOR",nt)
          h(t,:,:,:) = wrf_user_getvar(aa,"height",nt)

       if(i .ne. 4 )then
            qg(t,:,:,:) = wrf_user_getvar(aa,"QGRAUP",nt)
            qt(t,:,:,:) = qc(t,:,:,:)+qr(t,:,:,:)+qi(t,:,:,:)+qs(t,:,:,:)+qg(t,:,:,:)
               else
           qt(t,:,:,:) = qc(t,:,:,:)+qr(t,:,:,:)+qi(t,:,:,:)+qs(t,:,:,:)
       end if
      
           t= t+1
    end do
         fout->qc=qc
         fout->qr=qr
         fout->qi=qi
         fout->qs=qs  
        fout->xlat=xlat
        fout->xlong=xlong  
       if(i .ne. 4 )then
            fout->qg=qg
       end if
       fout->tc=tc
       fout->ter=ter
       fout->u=u
       fout->v=v
       fout->qv=qv
       fout->h=h
       fout->psfc=psfc
       fout->tg=tg
   
       fout->qt=qt
    print("success: test"+a(i))
end do

密码修改失败请联系微信:mofangbao
发表于 2018-9-5 11:30:59 | 显示全部楼层
可以试试将setfileoption()中的value设置成“NetCDF4Classic”,主要是nc文件的version不一样,对应允许的大小也不一样,但是为了往前兼容,所以在输出大文件的时候需要设置一下。
setfileoption("nc", "Format", "NetCDF4Classic")
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 1

使用道具 举报

发表于 2016-9-30 09:54:48 | 显示全部楼层
楼主好!我也遇到同样问题了,你这个是如何解决的?谢谢指点
密码修改失败请联系微信:mofangbao
发表于 2016-9-30 10:38:16 | 显示全部楼层
好脚本,保存了
密码修改失败请联系微信:mofangbao
发表于 2017-5-3 19:34:28 | 显示全部楼层
我也遇到了这样的问题,请问楼主有解决方法嘛?
密码修改失败请联系微信:mofangbao
发表于 2017-8-11 18:18:48 | 显示全部楼层
看看。不知道怎么解决。
密码修改失败请联系微信:mofangbao
发表于 2017-9-17 16:51:39 | 显示全部楼层
请问楼主有解决这个问题吗?
密码修改失败请联系微信:mofangbao
发表于 2017-10-16 08:42:04 | 显示全部楼层

我也遇到了这样的问题,请问楼主有解决方法嘛?
密码修改失败请联系微信:mofangbao
发表于 2018-3-12 15:08:11 | 显示全部楼层
输出文件大于2G,创建输出文件前加上   setfileoption("nc","Format","LargeFile")   就可以了。
密码修改失败请联系微信:mofangbao
发表于 2018-4-29 19:38:49 | 显示全部楼层
Karen2 发表于 2018-3-12 15:08
输出文件大于2G,创建输出文件前加上   setfileoption("nc","Format","LargeFile")   就可以了。

我的文件大概5.3G,加了这个还是不行哎
密码修改失败请联系微信:mofangbao
发表于 2018-4-30 09:45:03 来自手机 | 显示全部楼层
我也是有这样的问题 就输出成了两个脚本 然后再批量读取两个脚本再进行运算
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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