第一讲 GrADS简介一、G r A D S的应用领域及其功能*GrADS的全称:“The Grid Analysis and Display System”*应用领域:可在UNIX工作站以及个人微机上进行地球科学领域的数据资料分析和绘图*功能:对数据进行访问、分析和绘图1.可以根据需要绘制单线图、直方图、等值线图、填色等值线图、流线图、矢量图、站点模型图等各类图形.2.用描述语言编程,达到理想的绘图效果3.可以把在GrADS中绘制的图形以文件的形式保存起来,以备对其进行编辑4.调用GrADS的内部函数,能够对数据进行某些特定的计算,然后输出计算结果二、GrADS中常用的基本概念*数据格式:GrADS能够识别的数据为二进制无格式直接或顺序记录格式,该种格式数据的生成可以通过Fortran语言编程来实现。
*数据类型:格点数据(NCEP/NCAR的再分析资料)、站点数据(站点实测资料)、Grib数据(NMC产品)。
*维数环境:GrADS的操作对象为4维的数据集(4D data set),包括空间三维(纬度、经度、高度)和时间一维。
可以固定其中的一维或者几维以获得低于四维的数据子集。
此概念是对于格点资料而言的。
维数环境的定义可以在两种坐标上进行。
一种是地球坐标(world coordinate),以经纬度为度量单位;一种是格点坐标(grid coordinate),以网格点数为度量单位。
*几种文件类型:*.dat―数据文件*.ctl—原始数据描述文件*.gs―GrADS控制文件,用命令run执行之*.exe―GrADS在DOS环境下的各种执行文件三、启动和退出GrADS*启动GrADS的两种方式:1.在dos环境下直接输入grads命令即:切换到MS-DOS方式,进入到F:\pcgrads\msdos子目录下输入:grads回车2.从windows桌面上的“我的电脑”进入F:\pcgrads\子目录,然后双击g.exe图标*注意:在启动GrADS时,系统会问你以何种方式进入。
此时有四个参数可供选择:b—以批处理的形式运行GrADSl—以风景画的形式运行GrADS,此时其硬拷贝输出的区域大小为11×8.5英寸。
p—以肖像画的形式运行GrADS,此时其硬拷贝输出的区域大小为8.5 ×11英寸。
c—在GrADS启动后,首先执行其后提供的命令。
如果直接键入回车,GrADS将以风景画的形式启动。
*因此,在画图时要注意,不要把画图区域取得超过硬拷贝输出区域的大小。
*进入GrADS后一般可以看到两个窗口,上面一个为字符窗口,可以输入命令以及显示执行命令后的回应信息;下面一个为图形输出窗口。
两个窗口中红色的为当前窗口。
*退出GrADS时,在字符窗口中键入:quit回车即可。
四、G r A D S中的基本操作*open—打开一个格点或者站点数据文件例如:open f:\grads_exer\omega4.ctl*display(d)—绘图例如:d rain.2d slp/100d mag(u,v)*set—依据其后所选择的参数对维数环境、图形类型、图形要素、字符属性以及地图投影方式等进行设置,例如:set lat–90 0—设置纬度变化从南纬90º-0ºset lon 180 230—设置经度变化从西经180º -130ºset lev 1000—设定高度维数固定为1000hPa等压面set t 12—设定时次固定为数据集中的第12个时次set z1 5—设置高度维数变化从第1至第5层*clear(c)—清屏,清除图形窗口的内容*query(q)—系统环境设置查询命令例如:q dims—查询当前维数环境q time —查询当前时间q files —列出当前打开的数据文件*run—执行形式为*.gs的文件中定义的操作实习:open f:\grads_exer\omega4.ctl设置维数环境、图形类型等,并画图第二讲调用GrADS数据文件一、调用数据文件简介在使用GrADS的命令来分析数据以及画图之前必须先打开数据文件。
可以只打开一个文件,也可以同时打开多个数据文件。
注意:*GrADS只支持格点以及站点资料。
*GrADS调用的数据文件必须是直接访问的二进制文件,并且文件中数据的存放顺序为:时间、层次、变量、纬度、经度例如:如果我们给了一个12层的垂直速度资料(见F:\grads_exer\omega1950.dat,相应的数据描述文件为:omega4.ctl),在读取数据时,先固定时间、层次、变量和纬度,只有经度变化;然后固定时间、层次和变量,纬度变化一次后所有经度又发生变化。
依次类推,对于同一时次的资料,只有当所有层次的资料存放完毕后,才开始存放下一个时次的资料。
*在GrADS中打开数据文件主要是通过数据描述文件(data descriptor file)来实现的,也就是说数据文件和数据描述文件是分离的。
数据描述文件给出了数据文件的名字、画图使用的坐标、变量名以及变量的个数等。
*数据描述文件的形式为*.ctl,也即数据描述文件的后缀为ctl。
编写数据描述文件时可以用记事本、FORTRAN以及dos下的EDIT编辑器,但是要注意文件名要加后缀。
这里我们建议用FORTRAN来写数据描述文件。
*在进行运算或者图形操作之前必须先打开一个数据描述文件,即在GrADS命令窗口中输入命令:open f:\grads_exer\omega4.ctl二、创建GrADS数据文件下面介绍如何创建能够被GrADS识别和调用的格点以及站点数据文件•1.创建格点数据集我们可以用FORTRAN语言中直接存取的输入输出方式来建立二进制文件,下面给出两个例子来加以说明:Exampl1:real z(72,46,16)open(8,file=‘grads.dat’,form=‘unformatted’,# access=‘direct’,recl=72*46)irec=1do 10 i=1,16write(8,rec=irec)((z(j,k,i),j=1,72),k=1,46)irec=irec+110 continueExampl2:real z(72,46,16)open(8,file=‘grads.dat’,form=‘binary’)write(8)(((z(j,k,i),j=1,72),k=1,46),i=1,16)•2.创建站点数据如果我们有形式如下的站点月降水资料:Year Month Stid Lat Lon Rianfall1980 1 qqq 34.3 -85.5 123.31980 1 rrr 44.2 -84.5 87.11980 1 sss 22.4 -83.5 412.81980 1 ttt 33.4 -82.5 23.3如果该资料保存在名为rain.ch的数据文件中,则可以用如下的FORTRAN程序来创建站点数据文件:character*8 stidopen(8,file=‘rain.ch’,status=‘old’)open(10,file=‘rain.dat’,form=‘unformatted’,# recordtype=‘stream’,status=‘unknown’)iflag=010 read(8,9000,end=90)iyear,imonth,stid,rlat,rlon,rval9000 format(I4,3x,I2,2x,A8,3F8.1)if(iflag.eq.0)theniflag=1iyrold=iyearimnold=imonthendifif(iyrold.ne.iyear.or.imnold.ne.imonth)thennlev=0write(10)stid,rlat,rlon,tim,nlev,nflagendifiyrold=iyearimnold=imonthtim=0.0nlev=1nflag=1write(10)stid,rlat,rlon,tim,nlev,nflagwrite(10)rvalgoto 1090 continuenlev=0write(10)stid,rlat,rlon,tim,nlev,nflagstopend三、创建GrADS数据描述文件1.格点数据文件以omega4.ctl为例:DSET F:\grads_exer\omega1950.dat—给定二进制原始数据的文件名TITLE omega—说明该数据集的内容UNDEF -9999.0—定义缺测值XDEF 144 LINEAR 0 2.5—设置X方向格点与经度的映射关系YDEF 73 LINEAR -90 2.5—设置Y方向格点与纬度的映映射关系ZDEF 12 Levels 1000 925 850 700 600 500 400 300 250 200 150 100—设置气压面与垂直网格点的映射关系TDEF 12 LINEAR JAN1950 1mon—设置网格至于时间的映射关系VARS 1omega 12 99 data testing—定义变量个数以及变量名ENDVARS2.数据描述文件中记录的说明*DSET data-set-name给定二进制原始数据的文件名data-set-name,如果该数据文件与描述文件在相同路径下,可以用符号―^‖来代表缺省路径,即:DSET ^data-set-name注意:在文件名之前加路径。
*TITLE string用字符串简略描述数据集内容,该标题将在QUERY命令中出现(q files n)。
*UNDEF value定义缺省值或者缺测值。
* XDEF number<LINEAR start increment>XDEF number<LEVELS value-list>定义x方向网格点值与经度的对应关系,其中:number—为整型数,表示x方向的格点数LINEAR/LEVELS—表示网格的映射类型,取LINEAR时网格点的格距是均匀的,star表示起始经度,正数表示东经,负数表示西经,increment表示网格点间的格距。
当取LEVELS时网格点的格距不均匀,此时在value-list中顺序列出各格点的经度值。
*YDEF number mapping start <increment>定义y方向网格点值与纬度的对应关系,其中:参数number、star、incremen的意义与上一条记录相同,需要说明的是star在这里表示起始纬度,正数表示北纬,负数表示南纬。
mapping—表示映射类型,可以取以下选项:LINEAR—线性映射GAUSR15—高斯R15纬度GAUSR20—高斯R20纬度GAUSR30—高斯R30纬度GAUSR40—高斯R40纬度*ZDEF number LINEAR <start increment>ZDEF number LEVELS <value-list>设置等压面与垂直网格点的映射关系,对于线性映射,increment表示z方向的增量,即从低向高,该增量可以取负值。