爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
楼主: mrxiaoan

[分享资料] IDL读取nc文件的代码

[复制链接]

新浪微博达人勋

发表于 2016-3-19 23:16:22 来自手机 | 显示全部楼层
学习了,真好
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-4-4 11:51:21 | 显示全部楼层
cbsdly792 发表于 2015-11-11 15:21
现在就一个语句, ncread

同求ncread命令介绍,我用的是8.3版
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2016-11-20 16:50:16 | 显示全部楼层
学习学习
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

新浪微博达人勋

发表于 2016-12-12 10:00:06 | 显示全部楼层
感谢楼主分享~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-9-19 10:40:11 | 显示全部楼层
好赞,马上试一下
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-9-24 07:54:43 | 显示全部楼层
好东西,感谢分享
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-9-25 14:31:33 | 显示全部楼层
这段代码貌似仍然有问题,有的时候无法得出a、b的值,很奇怪。例如一些ERA资料的nc文件中就读不到a、b,因为找不到'scale_factor'和add_offset。怎么办呢?经过摸索,写出以下代码,绝对能读取出a、b值:
  cdfid=ncdf_open('B:\data\ERA-interim\ERA_slhf_00_12_1979_2017.nc',/nowrite)
  data=make_array(480,241,462,/float)
  slhf_annual=make_array(480,241,462,/float)

  NCinfo = NCDF_INQUIRE(cdfid)
  print,ncinfo
  for ivar=0,ncinfo.nvars-1 do begin
    varinfo=ncdf_varinQ(cdfid,ivar)
    print,"var Name:",Varinfo.Name
    for var_att_id=0,ncinfo.ngatts-1 do begin
      att_name=ncdf_attname(cdfid,ivar,var_att_id)
      print,att_name
      ncdf_attget,cdfid,ivar,att_name,tematt
      if (att_name eq 'scale_factor') then begin
        a=tematt
      endif
      if (att_name eq 'add_offset') then begin
        b=tematt
      endif
      print,string(tematt)
    endfor
  endfor
  lon1=fltarr(480)
  lat1=fltarr(241)
  varid=ncdf_varid(cdfid,'slhf')
  ncdf_varget,cdfid,varid,data
  varid=ncdf_varid(cdfid,'latitude')
  ncdf_varget,cdfid,varid,lat1
  varid=ncdf_varid(cdfid,'longitude')
  ncdf_varget,cdfid,varid,lon1
;  ncdf_attget,cdfid,varid,'scale_factor',a   
;  ncdf_attget,cdfid,varid,'add_offset',b      
  slhf_annual=data*a+b     
  ncdf_close,cdfid
  slhf_annual=reverse(slhf_annual,2)
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-9-25 14:32:44 | 显示全部楼层
mrxiaoan 发表于 2017-9-25 14:31
这段代码貌似仍然有问题,有的时候无法得出a、b的值,很奇怪。例如一些ERA资料的nc文件中就读不到a、b,因 ...

nc文件里模式是从北到南排列,而我们需要从南到北的排列,所以最后一步,颠倒下数组即可。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-10-29 18:35:56 | 显示全部楼层
mrxiaoan 发表于 2015-11-19 20:55
ncread?哪个版本的啊?我IDL8.3还没这个函数呢

ncread不是MATLAB读nc文件的命令嘛。。。。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-11-3 11:57:30 | 显示全部楼层
mrxiaoan 发表于 2015-11-19 20:55
ncread?哪个版本的啊?我IDL8.3还没这个函数呢

不是哪个版本,这是一个程序包
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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