grads处理多个ctl文件和nc文件
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
grads处理多个ctl文件和nc文件
2011-10-10 21:03:59| 分类:grads学习| 标签:|举报|字号大中小订阅
下载LOFTER我的照片书 |
用grads处理多个相同格式的数据时若单个单个处理非常麻烦,当文件非常多的时候是单个处理是不实际的。下面介绍一种方法;
第一步,在这种情况下可以重新写一个ctl描述文件,其文件变量都和已知的ctl相同,若原来的n 文件只是时间不同,那么新描述文件的时间维数是所有原文件的时间的和。同样,若其他维数不同时也用同样的方法处理。
第二步,在第一行之后添加一行:options template 表示多个时间序列原始数据文件想用一个描述文件统一地描述。这些原数据的原文件名由dset定义的形势命名文件名。
第三步,修改dset 的文件名。原路径不变,把文件名用%表示。其中:
%y2 代表两位数年
%y4 代表四位数年
%m1 代表一位或者两位数的月
%m2 代表两位数月(用0补齐1位数)
%mc 3个字符月份的缩写
%d1 1或2位天
%d2 两位天
%h1 1或者2位时
%h2 2位时
例如:
原文件其中之一的文件名为gdas2006050812f00,且所有文件只有天和时的变化
那么新描述文件的文件名为:gdas200605%d2%h2f00
另外如果源文件里有index项的话,需要修改其idx的文件名,假设改成fnl.idx。并用在dos下用gribmap函数生成一个新的idx文件。gribmap -e -i fnl.ctl(加绝对路径)
open fnl.ctl就可以打开所有文件。
*************************************************************************************************************** *******************
若想要提取从1951-2006年56年nc文件中的某些数据,一个一个处理非常麻烦,这里介绍种较为简易的方法。例如想提取6-8月的位势高度资料。
'reinit'
t5=1951
*作文件名循环
while(t5<=2006)
'set gxout fwrite'
'set fwrite D:\sichuan\hgt1\'%t5%'.dat'
'sdfopen e:\ncep1\hgt\hgt.'%t5%'.nc'
t3=t5-1950
*判断是否为闰年
if(t3=2|t3=6|t3=10|t3=14|t3=18|t3=22|t3=26|t3=30|t3=34|t3=38|t3=42|t3=46|t3=50|t3=54)
to=153
else
to=152
endif
t4=to+91
while(to<=t4)
'set t 'to
t1=1
while(t1<=12)
'set z 't1
'set lon 80 140'
'set lat 15 55'
'd hgt'
t1=t1+1
endwhile
to=to+1
endwhile
*这里必须先观点上述运行的文件,grads最多同时可以打开20个文件左右。
'reinit'
t5=t5+1
endwhile
'reinit'
这样可以提取你想要的年数据,然后你大可运用fortran对数据进行随心所欲的处理。
能否直接生成一个文件还正在探索中。
/forum.php?mod=viewthread&tid=7310&extra=&page=1
批量读取nc数据,用你的方法成功了,谢谢!!!直接配个批量描述的ctl就可以了
有一批nc数据,一个月一个文件,现将文件名改为:197901.nc,197902.nc,依次类推,对二进制的数据知道写ctl文件来进行批处理运算,那么nc数据应该怎么做呢?试过了写ctl 文件,sdfopen ***\%y4%m2.nc,
year=1978
while(year<=2011)
month=01
while(month<=12)
'sdfopen ***\'year''month'.nc'
...
month=month+1
endwhile
year=year+1
endwhile
实我也是糊里糊涂的解决了。。。ctl文件如下:
dset ^%y4%m2.nc
undef 1e+15
options template
title MERRA data
dtype NetCDF
ydef 144 linear -90 1.25
xdef 288 linear -180 1.25
zdef 21 levels 1000 975 950 925 900 875 850 825 800 775 750 725 700 650 600 550 500 450 400 350 300
tdef 396 linear 00Z01JAN1979 1mo
vars 3
qv 21 t,z,y,x Specific humidity
u 21 t,z,y,x Eastward wind component
v 21 t,z,y,x Northward wind component
endvars
然后open ***.ctl就行了,之前的问题是打不开ctl文件,怎么改也不行,后来换了台机子就好了。。。所以我说我也不知道怎么回事,希望对你有帮助。
我之前就这样做的,能打开ctl文件,但是d之后,都显示all undefined values,我的ctl如下,麻烦帮我看看哪里错了?
dset ^%y4%m2.nc
undef 1e+15
options template
title MERRA data
dtype netcdf
xdef 288 linear -179.375 1.25
ydef 144 linear -89.375 1.25
zdef 21 levels 1000 975 950 925 900 875 850 825 800 775 750 725 700 650 600 550 500 450 400 350 300
tdef 396 linear 00Z01JAN1979 1mn
vars 3
qv 21 t,z,y,x Specific humidity
u 21 t,z,y,x Eastward wind component
v 21 t,z,y,x Northward wind component
endvars
可以的,但文件名一定要连续
这个时间长度一定要和你的文件对应好