GrADS绘图学习技巧与实例

上传人:s9****2 文档编号:459541936 上传时间:2023-10-18 格式:DOC 页数:10 大小:70KB
返回 下载 相关 举报
GrADS绘图学习技巧与实例_第1页
第1页 / 共10页
GrADS绘图学习技巧与实例_第2页
第2页 / 共10页
GrADS绘图学习技巧与实例_第3页
第3页 / 共10页
GrADS绘图学习技巧与实例_第4页
第4页 / 共10页
GrADS绘图学习技巧与实例_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《GrADS绘图学习技巧与实例》由会员分享,可在线阅读,更多相关《GrADS绘图学习技巧与实例(10页珍藏版)》请在金锄头文库上搜索。

1、以下技巧总结都是笔者从学习实践过程中总结出来的,基本的问题。不求全面,希望对读者学习有用,如果有问题,敬请留言指正,以促进交流学习!1、 软件综述:grads软件是一款绘图软件除了绘制图形,还可以提取数据,主要应用是在大气科学中,当然只要是数据处理成grads能够读取的数据文件就可以进行相关绘图。软件版本问题,软件本身不是很大,我接触到1.8、1.9、2.0版本的,1.8版本的安装很多情况还要修改环境变量、1.9版本的不识别sdfopen命令,最稳定的版本是2.0版本,所以笔者推荐学习者安装2.0版本,选择默认安装路径就可以。2、 文件类型简述 :grads处理的是网格数据,可以处理的数据类型

2、有:grd、grib、nc(海洋常用的数据),cdf(雷达卫星数据),其中nc、cdf数据都是自带描述文件,不需要ctl,grib数据要通过命令生成ctl、index数据才可以调用,常用的是grd数据,需要ctl。3、 数据文件转换:grads软件识别的数据是二进制无格式数据,文件类型是binary,写入和生成时是不需要格式的如 read(20) sst(i,j,iz,it),20为文件号,通常是十进制数据与grd数据间转换,这里给一个grd转换成txt数据的fortran程序:parameter(nx=56,ny=41,nz=1,nt=360)dimension sst(nx,ny,nz,n

3、t)real sstopen(15,file=sst.grd,form=binary) !固定的用form=binary就是二进制数据open(16,file=sst.txt) !新建txt文件do it=1,nt do iz=1,nz read(15) (sst(i,j,iz,it),i=1,nx),j=1,ny) !read后只有文件号,数据是无格式的 enddoenddodo it=1,nt do iz=1,nz write(16,*) (sst(i,j,iz,it),i=1,nx),j=1,ny) !输出时是txt文件可直接看的数据,有格式输出,有 * enddoenddoclose(

4、15)close(16)end 写程序时:注意格点数要与数据对应,如:上程序对应的数据是 经度90200,纬度-2060,时间:1971.012000.12共360个月的海面温度数据,数据格点精度 2*2 ,nx=(200-90)/2+1,ny=(60-(-20)/2+1,nt=360,nz=1,大气的数据要根据数据的层次确定几层。4、 grd 、ctl、gs、nc详述grd文件:grd数据不可直接看,为二进制无格式数据,简单的说只有1和0,而且数据间没有间隔,grads识别grd是根据ctl进行划分的,根据ctl中的经度、纬度、层次、时间,精度进行数据分块。ctl实例:dset C:data

5、sst.grdundef -9.99E+33title sea surface tempturexdef 56 linear 90 2ydef 41 linear -20 2tdef 360 linear jan1971 1mozdef 1 levels 0vars 1sst 0 99 surface sea tempture endvars上例数据的数据顺序是(以下是数据对应的经纬度)纬度 经度(t=1)-20 90200的 纬度20S的从90E200的56个数据-18 90200的 纬度18S的从90E200的56个数据.60 90200的 纬度60N的从90E200的56个数据以上为一层

6、的数据,接下来是t=2,t=3t=360的数据,每个时间点的每一层是如上格式,编程时读取和写如的数据循环顺序依次是:时间、层次、纬度、经度,读者参照3中的fortran程序加以理解。ctl文件:具体其他指导书上都有,我这里强调的是 sst 后面的0表示一层,如果是两层以上则是2,3,1层是固定用法,sst后面的99是默认设置;undef -9.99E+33 此处的数值决定了软件将文件中的那些值认定为不绘制的数据,所以这个值一定要与数据对应。gs 文件,批命令文件,与ctl一样是用记事本编写,另存为.gs文件,文件都是命令,方便大段的命令编写、修改,很常用,尤其时绘制的图要求比较多时必须用,免得

7、在命令窗口重复输入命令浪费时间,如下例子:reinitopen c:datauv.ctlset t 7set lev 850set grid offset vpage 0 8.5 0 3.6set parea 0.3 8.5 0.3 3.5set gxout vectorset grads offd u;vset vpage 0 8.5 3.6 7.2set grads offset gxout barbd u;vset vpage 0 8.5 7.2 11set grads offset gxout gridd u;vprintim c:imagesgxout3uv850.png white

8、; Gs文件以 ;结尾,分号后面不能有空格,除了循环命令外都需要 单引号 将命令引起来。nc文件:此类数据不需要ctl可直接用sdfopen命令直接打开,往往需要知道数据文件中的各个纬度特征,可以用:q ctlinfo 命令查询该文件的内置ctl,这样一切都会很清楚,尤其是数据精度:截图如下(下例即2*2的网格经度):以上为基础知识介绍,以下为技巧命令1、 绘图时,图的时间下标可用 set grads off 命令关掉,网格用 set grid off 命令关掉,需注意的是,网格关一次就一直有效,而下标则是每次绘完图就自动开启,所以建议读者在每次的 绘图命令之前加set grads off 。

9、2、3、 reinit命令是让窗口恢复到刚打开时的界面,会恢复所有的set,同时关掉所有的打开文件,为为防止前面打开文件的干扰,建议读者在每个gs文件的第一条就加上这条命令(参考gs描述的例子)。4、5、 数据维度设定: set lon 90 set x 1 set lat 80 set y 20 set lev 1000 set z 1 set t 1 12 set time jan1970 dec1970 上面两种设定等价,左边是实际维度设定法,右边是给点设定法,读者需要确定具体的格点数。需要注意的是,在设定全球尺度时,经度0和360是同一个格点,所以 set 0 360会出错,这时设定格

10、点的方法比较好:set x 1 180。6、 vpage和parea的区别:vapge是对整个绘图区分块,需要几张图就划分成几块,给英寸时不需要给标注、标题预留空间,如:要横着绘制两张图 那么就是set vpage 0 5.5 0 8.5(11*8.5) 绘制第一张图 set vpage 5.5 11 0 8.5 绘制第二张图parea 是描述的绘图时图形的四根边线的大小,而且是虚页的尺寸如:画一张图 set parea 1.0 10.2 0.8 7.8 四个值的范围 取决于vapge的长度01.010.211,如果是上例中的两张图,那么:set parea 0.5 4.8 0.8 7.9,0

11、0.54.85.5 ,数值范围取决于水平、垂直的长度,与起点无关如 set vpage 0 11 3.5 7 set parea 0.8 10 0.3 3.2 y上满足00.33.2(7-3.5) 即可,实际y长度决定范围,与起点无关。 5、set annot 5 8set xlopts 3 5 0.18set ylopts 3 5 0.18上面这两条命令是设定的x、y轴下标数字的颜色、粗细、字号set annot 5 8是设定坐标轴线、标题的颜色 粗细,会重置xlopts的部分设定,希望读者注意,命令间的互相干扰6、cbar cbarn命令cabr cbarn 这里只讲解cbarn 命令,c

12、barn sf vert xmid ymid 其中sf 为标尺,1为全尺寸0.5为半尺寸;vert为放置位置,0为水平,1为垂直;xmind 、ymid为色标的中心位置如:cbarn 0.5 0 2.5 1.5 色标 半尺度长,水平放置,色标的中心英寸坐标(2.5,1.5)。如果只是cabrn或cbar命令,会按照默认的全长,水平或数值取决于图的哪边空位大绘制。强调一点,加色标和加标题都是在绘制出图形后才能加,因为色标是根据阴影图确定对应色值,标题根据图形大小确定标题位置。7、 cmin、cmax是命令是用于绘制大于或小于某数值的线或区域图形,在每次绘图之后会重设,所以如果多次使用一定要每次d

13、之前加上,这点与set grads off相似。8、求12个月每个月的海温距平值set t 1 12asst=ave(sst,t+1404,t=1764,12)modify asst seasonalset time jan1971d asstset t 1405 1764nasst=sst-asstset time JAN1998d nasstset t 1 12 是设定asst变量有12个时间序列,每个时间格点放一个平面的平均值,asst=ave(sst,t+1404,t=1764,12) 定义变量asst放每个月的平均值,随着t从1变化到12,一次求的每个月的平均值,起始时间是t=140

14、5,终止时间是1764,t=1时,相当于1+13+25+37,即每年的1月份的值求平均(这里t=1+1404=1405是1971年1月,因此是求19712000年每年1月份的平均值),t=2,3.4,,12 与1同理。如此将12个月的平均值都放在了asst里。Modify asst seasonal 本来12个月的平均值知识放在了112的时间序列里,(这里调用的文件数据开始时间是1854年1月),所以asst的值只是在设定112以内才能画出,假了这条命令,可以将asst的时间序列扩展到所有时间里,使得每一年的每个月对应都是该月30年的平均值,方便后面求距平。需要注意的,如果set t 1 4 ,那么这条命令的作用是每年的asst的14月值是一样的,是该月的平均值。由于grads本身软件有一定的问题,当你不是设定一段时间而是一个时间点如:set t 1,步、不用modify命令,所有的时间序列都会有该值set t 1405 1764nasst=sst-asst这两句是求30年(1971 012000 12)每个月的海温距平值,共360各月的距平值。这个不难理解,不做解释。以下为实例:1、利用所提供的数据文件

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号