GrADS绘图学习技巧与实例_第1页
GrADS绘图学习技巧与实例_第2页
GrADS绘图学习技巧与实例_第3页
GrADS绘图学习技巧与实例_第4页
GrADS绘图学习技巧与实例_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、学习者安装2.0版本,选择默认安装路径就可以。2、 文件类型简述 :grads处理的是网格数据,可以处理的数据类型有: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程序:p

3、arameter(nx=56,ny=41,nz=1,nt=360)dimension sst(nx,ny,nz,nt)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

4、,nx),j=1,ny) !输出时是txt文件可直接看的数据,有格式输出,有 * enddoenddoclose(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

5、是根据ctl进行划分的,根据ctl中的经度、纬度、层次、时间,精度进行数据分块。ctl实例:dset c:datasst.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 9020

6、0的 纬度18s的从90e200的56个数据.60 90200的 纬度60n的从90e200的56个数据以上为一层的数据,接下来是t=2,t=3t=360的数据,每个时间点的每一层是如上格式,编程时读取和写如的数据循环顺序依次是:时间、层次、纬度、经度,读者参照3中的fortran程序加以理解。ctl文件:具体其他指导书上都有,我这里强调的是 sst 后面的0表示一层,如果是两层以上则是2,3,1层是固定用法,sst后面的99是默认设置;undef -9.99e+33 此处的数值决定了软件将文件中的那些值认定为不绘制的数据,所以这个值一定要与数据对应。gs 文件,批命令文件,与ctl一样是用记

7、事本编写,另存为.gs文件,文件都是命令,方便大段的命令编写、修改,很常用,尤其时绘制的图要求比较多时必须用,免得在命令窗口重复输入命令浪费时间,如下例子: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 of

8、fset gxout gridd u;vprintim c:imagesgxout3uv850.png white; gs文件以 ;结尾,分号后面不能有空格,除了循环命令外都需要 单引号 将命令引起来。nc文件:此类数据不需要ctl可直接用sdfopen命令直接打开,往往需要知道数据文件中的各个纬度特征,可以用:q ctlinfo 命令查询该文件的内置ctl,这样一切都会很清楚,尤其是数据精度:截图如下(下例即2*2的网格经度):以上为基础知识介绍,以下为技巧命令1、 绘图时,图的时间下标可用 set grads off 命令关掉,网格用 set grid off 命令关掉,需注意的是,网格关

9、一次就一直有效,而下标则是每次绘完图就自动开启,所以建议读者在每次的 绘图命令之前加set grads off 。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 上面两种设定等价,左边是实际维度设定法,右边是给点设定法,读者需要确定具

10、体的格点数。需要注意的是,在设定全球尺度时,经度0和360是同一个格点,所以 set 0 360会出错,这时设定格点的方法比较好: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 四个值的范围 取决于vap

11、ge的长度01.010.211,如果是上例中的两张图,那么:set parea 0.5 4.8 0.8 7.9,00.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的部分设

12、定,希望读者注意,命令间的互相干扰6、cbar cbarn命令cabr cbarn 这里只讲解cbarn 命令,cbarn 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、 c

13、min、cmax是命令是用于绘制大于或小于某数值的线或区域图形,在每次绘图之后会重设,所以如果多次使用一定要每次d之前加上,这点与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=17

14、64,12) 定义变量asst放每个月的平均值,随着t从1变化到12,一次求的每个月的平均值,起始时间是t=1405,终止时间是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的时间序列扩

15、展到所有时间里,使得每一年的每个月对应都是该月30年的平均值,方便后面求距平。需要注意的,如果set t 1 4 ,那么这条命令的作用是每年的asst的14月值是一样的,是该月的平均值。由于grads本身软件有一定的问题,当你不是设定一段时间而是一个时间点如:set t 1,步、不用modify命令,所有的时间序列都会有该值set t 1405 1764nasst=sst-asst这两句是求30年(1971 012000 12)每个月的海温距平值,共360各月的距平值。这个不难理解,不做解释。以下为实例:1、利用所提供的数据文件,绘制出2003年7月60-150e、0-40n区域内700hpa

16、流线图,且地形高度场超过2000米以上用黑色阴影显示,并且给出相应标题(请包含姓名拼音与学号),最终将图形保存。所有命令编写于.gs文件中。reinitopen c:datadxgd.ctlopen c:datauv.ctlset grid offset grads offset map 3 1 5set xlopts 3 5 0.18set ylopts 3 5 0.18set parea 0.7 10.4 0.6 7.8set t 1set lon 60 150set lat 0 40 set gxout shadedset rbcols 1 1 1 1 1 1 1set cmin 200

17、0d hset gxout streamset time jul2003set grads offset lev 700d u.2;v.2set annot 5 8draw title dingxiaoli 20081331001printim c:imagesuv200307850.png white2、利用所提供的数据文件,画出2002年1-12月120 e、 0-40n 200hpa纬向风的纬度-时间剖面图。图型要求:(1)纬向风为西风时填色,东风绘制等值线,给出色标,0值线加粗;(2)x轴标注为“time”,y轴标注为“lat”,标题标注为“u 100-120e”。(3)最终将图形保存

18、为gmf格式。所有命令编写于.gs文件中reinitopen c:datauv.ctlset grid offset grads offset xlopts 3 5 0.16set ylopts 3 5 0.16set parea 1 10.4 1.2 7.9set lon 120set lat 0 40set lev 200set t 1 12set annot 5 8enable print c:imagesuv200.gmfset xyrev onset gxout shadedset cmin 0d ucbarn 1 0 5.5 0.3set grads offset gxout co

19、ntourset cmax 0set grads offd uset clevs 0set ccolor 2set cthick 10set grads offd udraw xlab timedraw ylab latdraw title u 100-120eprintdisable print;3、十二个月的nc数据整合到一个文件中(fortran)这个程序可用于整合数据parameter(nx=360,ny=181,nz=26,nt=12)dimension temp(nx,ny,nz,nt)open(1,file=argo_200901.grd,form=binary)open(2,f

20、ile=argo_200902.grd,form=binary)open(3,file=argo_200903.grd,form=binary)open(4,file=argo_200904.grd,form=binary)open(5,file=argo_200905.grd,form=binary)open(6,file=argo_200906.grd,form=binary)open(7,file=argo_200907.grd,form=binary)open(8,file=argo_200908.grd,form=binary)open(9,file=argo_200909.grd,

21、form=binary)open(10,file=argo_200910.grd,form=binary)open(11,file=argo_200911.grd,form=binary)open(12,file=argo_200912.grd,form=binary)open(37,file=argo_2009.grd,form=binary)do iz=1,nz read(1) (temp(i,j,iz,1),i=1,nx),j=1,ny)read(2) (temp(i,j,iz,2),i=1,nx),j=1,ny)read(3) (temp(i,j,iz,3),i=1,nx),j=1,n

22、y)read(4) (temp(i,j,iz,4),i=1,nx),j=1,ny)read(5) (temp(i,j,iz,5),i=1,nx),j=1,ny)read(6) (temp(i,j,iz,6),i=1,nx),j=1,ny) read(7) (temp(i,j,iz,7),i=1,nx),j=1,ny) read(8) (temp(i,j,iz,8),i=1,nx),j=1,ny)read(9) (temp(i,j,iz,9),i=1,nx),j=1,ny)read(10) (temp(i,j,iz,10),i=1,nx),j=1,ny)read(11) (temp(i,j,iz,11),i=1,nx),j=1,ny)read(12) (temp(i,j,iz,12),i=1,nx),j=1,ny)enddodo it=1,nt do iz=1,nz write(37) (temp(i,j

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论