- 积分
- 407
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-4-12
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 www237036 于 2013-9-11 12:17 编辑
最近发现GrADS里面的query很好用,把最近用的几个记录下来,以便后用。
1)q dims
查询现在的维度环境
处理数据有时候设定时间不是很确定,比如想要挑出逐日资料中,1980-2010每年12月的资料,但是有闰年会影响,set t 可能不太好用,这时候可以
iy=1980
while(iy<=2010)
'set time 0001Dec'%iy''
'q dims'
mt=sublin(result,5)
kt=subwrd(mt,9)
it=kt
while(it<=kt+31)
。。。
用set time 代替set t ,直接定位到每年的12月1日,然后q dims,可以给出现在的维度环境,然后用sublin定位到时间维度行,用subwrd定位到代表当前时次的字符串,赋予kt,稍加处理就可以得到每年12.1-12.31的数据了。
2)q defval
查询某点的某个定义变量的值
有的时候计算某个变量,不想用图表述,而是想用字符串在屏幕上显示出来时,可以用这个
'define cor=tcorr(ppt,nino-nino(t=52),t=1,t=51)'
'q defval cor 1 1'
a=subwrd(result,3)
'set strsiz 0.15'
'draw string 0.5 8.1 corr & nino3.4 spfz = 'a''
定义了相关系数,用q defval 查询位置在(1,1)的相关系数的大小,然后以字符串的形式写到屏幕上去。
3)q w2xy
查询图上某点横竖坐标位置相对应的屏幕位置
'q w2xy 160 30'
x1=subwrd(result,3)
y1=subwrd(result,6)
'q w2xy 180 50'
y2=subwrd(result,6)
'set line 4'
'draw line 'x1' 'y1' 'x1' 'y2''
从(160°E,30°N)到(180°E,50°N)画一条直线。
不仅可以用于地图经纬度与屏幕位置的对应,只要有横纵坐标,就可以将某点的屏幕位置找出来。
反过来也有类似的命令,只要在GrADS里面q一下,就可以看到很多很方便的命令。
4)q file
可以得到很多关于当前文件的信息,这次用到的是关系变量的。比如一个文件中有四个变量,ctl如下
vars 4
cor_sst 40 -999 corr with sst
cor_tmp 40 -999 corr with air tmp
cor_hgt 40 -999 corr with height
cor_ugrd 40 -999 corr with zonal wind speed
endvars
当画每个变量时,为了画的好看,set写了一堆,而所有变量的图设定都是一致的。此时当然可以复制粘贴,改下变量名,但是gs文件会很长。故用q file,达到简便的效果。对应上面的ctl,具体gs如下
'reinit'
'open ***.ctl'
ivar=1
while(ivar<=4) *共四个变量
'q file' *得到文件的基本信息,包括x,y,z,t坐标和变量
mt=sublin(result,6+ivar) *取结果中关于变量的信息行,第一个变量对应第7行,第二个对应8行。。。
str=subwrd(mt,1) *取变量信息行中第一个单词,即变量的名称
'draw string 1 1 'str''
'set ****'
'd 'str'' *画这个变量
'c'
'print'
ivar=ivar+1 *循环
endwhile
用循环的方式画多个变量,不用复制粘贴代码了。
现在用到的就这么多,以后用到其他的再补充
|
评分
-
查看全部评分
|