- 积分
- 3054
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-5-14
- 最后登录
- 1970-1-1
|
楼主 |
发表于 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) |
|