GrADS教程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一讲 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—以批处理的形式运行GrADS
l—以风景画的形式运行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.2
d slp/100
d 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=1
do 10 i=1,16
write(8,rec=irec)((z(j,k,i),j=1,72),k=1,46)
irec=irec+1
10 continue
Exampl2:
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 Rianfall
1980 1 qqq 34.3 -85.5 123.3
1980 1 rrr 44.2 -84.5 87.1
1980 1 sss 22.4 -83.5 412.8
1980 1 ttt 33.4 -82.5 23.3
如果该资料保存在名为rain.ch的数据文件中,则可以用如下的FORTRAN程序来创建站点数据文件:
character*8 stid
open(8,file=‘rain.ch’,status=‘old’)
open(10,file=‘rain.dat’,form=‘unformatted’,
# recordtype=‘stream’,status=‘unknown’)
iflag=0
10 read(8,9000,end=90)iyear,imonth,stid,rlat,rlon,rval
9000 format(I4,3x,I2,2x,A8,3F8.1)
if(iflag.eq.0)then
iflag=1
iyrold=iyear
imnold=imonth
endif
if(iyrold.ne.iyear.or.imnold.ne.imonth)then
nlev=0
write(10)stid,rlat,rlon,tim,nlev,nflag
endif
iyrold=iyear
imnold=imonth
tim=0.0
nlev=1
nflag=1
write(10)stid,rlat,rlon,tim,nlev,nflag
write(10)rval
goto 10
90 continue
nlev=0
write(10)stid,rlat,rlon,tim,nlev,nflag
stop
end
三、创建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 1
omega 12 99 data testing—定义变量个数以及变量名
ENDVARS
2.数据描述文件中记录的说明
*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方向的增量,即从低向高,该增量可以取负值。
例如:ZDEF 10 LINEAR 1000 –100
value-list—当映射类型为LEVELS时,表示已上升的顺序列出相对应的等压面。
注意:当只有一层等压面时,必须用LINEAR选项
*TDEF number LINEAR start-time increment
设置网格值与时间的映射关系,其中
number—数据集中的时次数
star-time—起始日期/时间
在GrADS中其格式为:
hh:mmZddmmmyyy
hh—小时
mm—分钟
dd —一位或者两位的日期
mmm —月份的缩写(Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec)
yyy —为两位或者四位数的年份
例如:12Z1JAN1990
14:20Z22MAR1987
JUN1960
注意:hh和mm的缺省值为0,dd的缺省值为1号,月份和年份不能缺省,整个时间串中不能有空格increment—时间的增量值,格式为vvkk,vv表示增量值,kk表示增量类型,可以取以下几种形式:mn:分钟
hr:小时
dy:天
mo:月
yr:年
例如:20mn 1mo 1yr
TDEF 24 LINEAR 00Z01JUN1987 1hr
*VARS number
表示变量描述开始
number—数据集中的变量数
*abbrev levs units description
abbrev—变量名,由1至12个字符组成,要以字母开头
lev—该变量在数据集中的层次数
unit—用于表示GRIB数据或者特殊格式的数据的参数,一般取99
description—变量描述语句,最多为40个字符
*ENDVARS
表示变量描述文件结束
*OPTIONS <keywords>
定义数据维数反向,<keywords>包括:
<yrev><zrev><sequential><byteswapped>
<template><big-endian><little-endian>
分别表示:
yrev—y维数方向反向
zrev—z维数方向反向
GrADS中对于一个水平(x,y)的格点资料,数据的摆放在x方向总是从西向东,在y方向从南向北,在垂直方向从低层向高层。
因此如果我们在使用FORTRAN编程存放数据时与GrADS中规定的顺序相反时,可以用这两条记录来加以说明,以保证结果的正确
sequential—原始数据输出格式为顺序记录格式
byteswapped—二进制数据的存放顺序取反序
big-endian、little-endian—在big-endian或者little-endian操作平台上创建的二进制数据template—此选项用于用一个数据描述文件来描述多个时间序列的原始数据文件
3.站点资料的数据描述文件
下面给出一个站点数据描述文件:
DSET F:\grads_exer\pre061.dat
dtype station
stnmap F:\grads_exer\prec06.map
TITLE "precipitation of 160 stations of China in Jun."
UNDEF -999.0
TDEF 1 linear Jan1951 1yr
VARS 1
r 0 99 rainfall data
ENDVARS
其中:
DTYPE—给定数据类型为站点资料
STNMAP—给定站点图形文件的文件的文件名
*.map文件用GrADS下的stnmap命令来创建
例如:创建一个与中国160个测站的降水资料相对应的站点映射文件prec06.map
•4.数据描述文件中的记录
*DSET data-set-name
*DTYPE datatyp
* STNMAP mapfile
*TITLE string
*UNDEF value
*OPTIONS <keywords>
*XDEF number<LINEAR start increment>
XDEF number<LEVELS value-list>
*YDEF number mapping start <increment>
*ZDEF number LINEAR <start increment>
ZDEF number LEVELS <value-list>
*TDEF number LINEAR start-time increment
*VARS number
*abrev levs units description
*ENDVARS
实习:
用pissta1.dat这个数据文件创建一个数据描述文件并画图
此数据文件为41S-41N,29E-81W范围内,包括印度洋和太平洋在内的海温距平月资料。
时间为1950-1999年。
第三讲 GrADS中的变量与表达式
1.维数环境
在GrADS中数据集总是被看作一个4维(经度、纬度、高度、时间)的数组,即使数据集仅是一个4维数组的子集。
当前的维数环境描述了你想对哪一部分的数据进行操作,表达式的运算依据维数环境来进行,图形的生成也取决于维数环境,因此在GrADS中维数环境是一个重要的概念。
在GrADS的命令行中维数环境的定义有两种方式:
set lat|lon|lev|time val1 <val2>
此命令用的是地球坐标
set x|y|z|t val1 <val2>
此命令用的是格点坐标
以上两种坐标是等价的,唯一的区别在于它们取的单位有所不同,在定义维数环境时可以根据需要任选一种。
如果在定义维数环境时,某个维数上仅输入一个值,表示该维数是固定的;如果输入两个值则表明该维数是变化的。
各个维数方向上的定义(固定的或是变化的)共同设定了维数环境。
例子:
set lon -180 0(set x 1 91,假设经度方向的格距为2°)
set lat -40 0(set y 1 21,假设纬度方向的格距为2°)
set lev 500(set z 4,假设高变化为1000、850、700、500···)
set t 4(set time 05Jan1987,假设起始时间为1987年1月2日,时间增量为1天)
•说明:
•当所有的维数均固定时,仅得到一个点
•仅有一个维数变化时,得到一维变量(单线图)
•当有两个维数变化时,得到二维变量(平面图)
•当有三个维数变化时,得到一个二维变量的序列(动画效果)
•2.变量名
变量名的格式为:
abbrev.file#(dimexpr,dimexpr,···),其中
abbrev—变量名,与数据描述文件中定义的变量名一致
file#—包括该变量的文件号,初始的缺省值为1。
可以用命令“set dfile filenumber”来改变缺省值。
dimexpr—维数表达式,用于局部地改变变量当前的位数环境。
绝对维数表达式的格式为:
X|Y|Z|T|LON|LAT|LEV|TIME=value
相对维数表达式(相对于当前的维数环境)的格式为:
X|Y|Z|T|LON|LAT|LEV|TIME+/-offset
例子:
z.3(lev=500)文件3中500mb等压面上的变量z
tv.1(time-12hr)1号文件中相对于当前时间之前12个小时的变量tv
rh缺省的当前文件中的变量rh
q.2(t-1,lev=850)2号文件中相对于当前时刻的前一个时刻、高度为850mb上的变量q
以下几个变量名是GrADS专用的:
lat lon lev
它们表示的是纬度、经度和高度各个维数方向的值,例如:lat.2,表示的是第2个数据描述文件中数据
格点上的所有纬度值。
•3.表达式
GrADS中的表达式由运算符、操作数、圆括弧组成,圆括弧可以改变运算顺序
运算符包括:
+加
-减
*乘
/除
操作数包括:
变量(variable specification)、函数(functions)、常数(constant)
表达式中的操作将在每一个格点上进行,运算中缺测值和被零除的数赋为缺测值。
•注意:运算操作不能在具有不同维数尺度的格点间进行,当我们试图对同时打开的几个数据描述文件中的变量进行运算时,要注意他们是否具有相同的维数尺度。
例子:z-z(t-1)高度z变量的时间变化
t(lev=500)-t(lev=850)500到850mb等压面的温度t的变化
ave(z,t=1,t=5)前5个时次中z变量的平均值
z-ave(z,lon=0,lon=360,-b)高度z的纬向平均偏差,-b表示对每个网格点取同样的权重求平均tloop(aave(p,x=1,x=72,y=1,y=46))在72×46的网格点上的全球平均降水量的时间序列
•4.临时变量的定义:
GrADS中可以在交互操作中定义一些新的临时变量,其定义方式为:
define varname=expr
其中define为定义临时变量的GrADS命令,varname为临时变量的名字,expr为表达式。
当一个新的临时变量被定义以后,它可以用于其后的表达式,以及define和display命令中。
由于新的变量被储存在内存中,而不是硬盘上,因此要避免把变量定义在过大的维数范围内。
define命令是GrADS中唯一的对四维环境均有效的命令,也即可以用define命令来定义最多4维的变量。
例如:
set lon –180 0
set lat 0 90
set lev 1000 100
set t 1 10
define temp=rh
当输入以上命令后,可以得到一个4维的临时变量,此时维数环境在经度、纬度、高度和时间4个维数上均为变化的,因此如果接下来需要用新的变量temp来进行操作的话,还要把为数环境定义为小于4维变化的情形:
set t 5
set lev 500
d temp
这样就可以得到1个2维变化的场。
当定义的临时变量完成其所有的操作任务后,为了节省内存,我们可以通过以下的命令把其注销掉: undefine p
第四讲 GrADS函数
GrADS的强大功能在于它的数据分析能力,这些功能通过调用GrADS的内部函数而得以实现。
函数的调用通过函数名的引用来完成。
函数的自变量放在括号中用逗号分开,表达式也是一种特殊的变量。
函数可以嵌套,有的函数在运算时会改变维数环境。
1.求平均的函数
(1)aave
求X-Y区域平均值,该指数得到的结果通常比用ave函数嵌套两次的结果准确,其格式为:aave(expr,xdim1,xdim2,ydim1,ydim2)
其中:
expr—任何一个有效的GrADS表达式
xdim1—X方向的起始维数表达式
xdim2—X方向的终止维数表达式
ydim1—Y方向的起始维数表达式
ydim2—Y方向的终止维数表达式
说明:
1)在求平均时,如果没有缺测值,则函数aave得到的结果与函数ave嵌套得到的结果是相同的。
例如:ave(ave(expr,x=1,x=72),y=1,y=46)
等价于:
aave(expr,x=1,x=72,y=1,y=46)
但是从得到的结果来看,aave比ave嵌套得到的结果要准确。
并且aave在计算时效率更高。
2)当存在缺测值的时候,aave函数的计算结果与ave函数嵌套得到的结果是不相同的。
(见书P22例子)
(2)amean
与aave函数类似,也用于求区域的平均,但是在求平均时,没有加权重。
格式:
amean(expr,xdim1,xdim2,ydim1,ydim2)
(3)ave
ave(expr,dimexpr1,dimexpr2,<tincr<,flags>>)
通用的求平均的函数,这里:
expr:是由dimexpr1和dimexpr2这两个变量所定义的维数范围内求平均的值。
dimexpr1和dimexpr2:表示的是同一个维数方向上的起始值和终止值。
tincr:当dimexpr1和dimexpr2表示时间维时,用于给定时间间隔,其单位与维数表达式相同。
flags:当该选项给出时取为-b,表示对每个网格点取同样的权重求平均,包括终端点。
例如:我们想要对一个变量z求纬向平均,
ave(z,lon=0,lon=360)
在进行计算时,地球坐标变换为格点坐标,这里x从1 变到181,求平均时端点(0,360这个经度)上的值将被求两次平均,为了得到半权重,我们把选项flags取为-b,也即:
ave(z,lon=0,lon=360,-b)
或者直接用格点坐标:
ave(z,x=1,x=180)
说明:
1)可以用函数ave进行嵌套来求平均,此时嵌套的顺序将影响到计算速度。
我们要记住,在GrADS中,X维数方向变化最快,其次是Y维数方向,再其次是Z维数方向,最后是T维数方向,如果我们在嵌套时把变化较快的维数放在里层,这将会提高运算速度。
例如:ave(ave(ght,x=1,x=180),t=1,t=20)
的计算速度快于以下的嵌套方式:
ave(ave(ght,t=1,t=20),x=1,x=180)
2)还可以用define命令来提高计算效率
例如:sqrt(ave(pow(ave(z,t=1,t=20)-z,2),t=1,t=20)
对于上面这个复杂的表达式,可以先把最里面一层求平均的结果赋值给一个临时变量zave,然后在来计算,这样可以提高计算速度:
define zave=ave(z,t=1,t=20)
sqrt(ave(pow(zave-z,2),t=1,t=20)
3)在把维数表达式由地球坐标转换为格点坐标时,用的是缺省数据文件的维数尺度,注意要使两者的维数尺度一致。
例如:
ave(z.2,t=1,t=10)
(4)mean
mean(expr,dimexpr1,dimexpr2<,tincr<,flags>>)
此函数与ave类似,区别在于用它来求平均时没有考虑权重
(5)vint
vint(psexpr, expr, top)
质量加权垂直积分,计算公式为 top y x r
ps
dp
p
y
x
r
)
,
(
exp
)
,
,
(
exp
psexpr—表面气压场
expr—求垂直积分的变量
top—用一个常数来给定上边界的气压值
注意:该函数要求定义水平维数环境。
由于在z方向上积分时,z维数方向的设置以缺省的数据描述文件为准,因此要保证缺省的数据描述文件与expr具有相同的z方向的维数坐标。
在积分时上边界的值一般取为275mb(对流层顶)。
2.滤波函数
(1)smth9
smth9(expr)
对变量expr进行9点平滑,在调用该函数时,每个格点上的值由其周围8个点的值加权平均得到,缺测值不参加计算,如果格点数据为一维变量,则计算结果为3点平滑的结果。
3.数学函数
(1)abs
abs(expr)
求expr的绝对值,适用于格点和站点数据。
(2)acos
acos(expr)
求expr的反余弦,单位用弧度。
如果expr的值大于或者小于-1,则其值赋为缺测值。
(3)asin
asin(expr)
求expr的反正弦
(4)atan2
atan2(expr1,expr2)
求反正切,这里expr1代表y,expr2x代表x。
(5)cos
cos(expr)
求expr 的余弦,单位用弧度,适用于格点和站点数据。
(6)exp
exp(expr)
求e的expr次幂,相当于e**x,适用于格点和站点数据。
(7)gint(expr)
通用的积分函数,与ave类似,但是没有被区域的加权平均来除.
(8)log
log(expr)
以e为底取对数,如果exprde值小于或等于0,该函数的值将被赋为缺测,适用于格点和站点数据。
(9)log10
log10(expr)
以10为底取对数
(10)pow
pow(expr1,expr2)
求expr1的expr2次幂。
例如:
pow(expr,2)—求expr的2次幂
sqrt(pow(u,2)+pow(v,2))—相当于sqrt(u**2+v**2)
(11)sin
sin(expr)
求变量的正弦值,变量必须以弧度为单位,适用于格点和站点数据。
(12)sqrt
sqrt(expr)
求变量的平方根,如果expr的值为负数,其计算结果赋为缺测值,适用于格点和站点数据。
(13)tan
tan(expr)
求变量的正弦值,变量必须以弧度为单位,适用于格点和站点数据。
4.有限差分函数
(1)cdiff
cdiff(expr,dim)
中央差分函数,对变量expr求某个特定的维数方向的中央差分。
expr—变量、表达式
dim—求差分的维数方向,其值可以取为X,Y,Z或者T
例子:用cdiff函数来求垂直涡度,
垂直涡度:ζ=dv/dx-du/dy
define dv=cdiff(v,x)
define dx=cdiff(lon,x)*3.1416/180
define du=cdiff(u*cos(lat*3.1416/180),y)
define dy=cdiff(lat,y)*3.1416/180
display (dv/dx-du/dy)(6.37e6*cos(lat*3.1416/180))
5.格点函数
(1)const
const(expr,constant<,flag>)
根据flag的取值,部分或者全部expr的值设为一个常数。
expr—Grads表达式
constant—常数,为一个整型数或者浮点数
flag—如果此参数没有定义,则所有的expr的非缺测值被赋为常数,缺测值不变。
flag可以取为以下参数:
-u表示所有的expr的缺测值赋为常数,非缺测值保持不变。
-a表示所有的expr值,包括缺测值,均赋为常数。
该函数可以对格点和站点资料进行操作。
例子:
const(z,0.0,-u)
把一个特定的值赋给缺测值,使之能够参与操作
(2)maskout
maskout(expr,mask)
标记函数,当mask所在的网格点值取为负值时,对应格点上的expr的值设为缺省值。
适用于格点以及站点资料。
例如:
aave(maskout(p,mask.3(t=1)),x=1,x=72,y=1,y=46)
假设mask为一个海陆场,海洋上的值取负数,则通过调用maskout函数,即可求出陆地上降水的区域平均。
例如:
set lon 0 360
set lat –90 90
set t 1 5
define ones=const(const(maskout(p,p-10),1),0,- u)
set x 1
set y 1
display tloop(aave(ones,lon=0,lon=360,lat=-90,lat=90))
得到一个降水量大于10mm/day的全球区域加权平均的时间序列
(3)skip
skip(expr,skipx,skipy)
设定样本取样密度,expr为格点表达式,skipx和skipy分别为X和Y方向跳过的格点数。
例子:
d skip(u,2,2);v
d skip(u,1,5);v
6.站点数据函数
(1)oacres
oacres(grid_expr,stn_expr<,radii<first guess>>)
Cressman客观分析函数,对站点数据进行客观分析,将其插值到格点上。
grid_expr格点数据表达式,该格点资料在经度和纬度方向必须是线性的
stn_expr站点资料表达式
rdii影响半径,缺省的影响半径序列为:10,7,4,2,1
7.特殊用途函数
(1)tloop
tloop(expr)
在维数环境中,当时间是一个变化的维数时,可以对expr固定其实时间维数求值,并在求值过程中对时间维逐个循环。
例如:
set x 1
set y 1
set lev 500
set t 1 100
display tloop(aave(p,lon=0,lon=360,lat=-90,lat=90)
求p变量时间序列的全球面积平均
8.气象函数
(1)tvrh2q
tvrh2q(tvexpr,rhexpr)
给定虚温(tvexpr)和相对湿度(rhexpr,从0 到100),求比湿q,单位为g/g。
该函数仅适用于格点资料。
(2)tvrh2t
tvrh2t(tvexpr,rhexpr)
给定虚温(tvexpr)和相对湿度(rhexpr)求绝对温度,单位为Kelvin度。
9.矢量函数
(1)hcurl
hcurl(uexpr,vexpr)
用有限差分的方法来求相对涡度ζ,
ζ =dv/dx-du/dy
uexpr:u分量
vexpr:v分量
(2)hdivg
hdivg(uexpr,vexpr)
计算水平散度
(3)mag
mag(uexpr,vexpr)
计算全风速,也即:sqrt(uexpr*uexpr+vexpr*vexpr)
•上机实习:用f:\grads_exer\ssta-mon-5099.dat海温资料来计算nino3指数,画图并把计算结果保存到一个数据文件中
•该资料为1950年1月至1999年12月的Reynolds月距平海温资料。
•Nino3区的范围为:5°S—5ºN,150ºW—90ºW
第5讲图形输出类型及图形要素设置
•1.图形输出类型
在用数据资料画图之前,你可能需要设定图形类型以及一些图形参数。
在GrADS中图形类型的缺省值对于一维变量设为单线图,对于二维变量设为等值线图。
我们可以通过设置图形类型的命令来改变缺省的图形类型。
set gxout graphics_type
其中,graphics_type表示图形类型参数,可以取以下一些值:
contour:二维等值线图(缺省)
shaded:二维填色等值线图
grfill:二维填色格点图
grid:网格填值,以网格形式在各网格点中央标出该场的数值
vector:矢量图(缺省),以矢量箭头形式绘二维风场
stream:流线图,以流线形式绘二维风场
bar:直方图
line:单线图(缺省)
barb:以风向杆形式绘二维风场
fgrid:对二维场不绘等值线图,只将特定值的格点用指定颜色来填充,该命令与命令set fgcal value color value color····一起使用
linefill:单线填色绘图
对站点数据:
value:在各站点标值(缺省)
barb:在站点绘风向标(缺省)
wxsys:绘wx天气符号
findstn:搜索最近的站点
model:以天气填图形式将天气观测各分量添放在站点周围
对于每一种图形类型,可以用很多特定的参数来控制画图效果,对此我们将在后面作详细的介绍。
这里需要强调的是,在画矢量图、流线图以及在站点绘风向标的时候,需要同时给两个变量,即u分量和v分量,这两个变量用分号隔开。
对于矢量和流线图,当加上第三个变量以后,将把矢量和流线图变成彩色。
例如:display u;v
display u;v;hcurl(u,v)
•2.图形参数
图形参数控制图形输出的方式,有些参数对于大部分图形输出类型均有效,有些参数仅对一种图形类型有效。
一些参数在设定以后直到重新进行设置才会改变,有些参数的设置在输入clear或者display 命令以后会回到缺省值。
2.1 一维图形
(1)单线图(gxout=line)
•set ccolor color设置单线的颜色,输入clear or display命令以后重新设置颜色。
这里color表示颜色号,有以下一些颜色号:
•0–黑色5–蓝绿色10–嫩绿色
•1–白色 6 –紫红色11–海蓝色
•2–红色7–黄色12–深黄色
•3–绿色8–桔黄色13–浅绿色
•4–兰色9 –紫色14–深紫色
•15–灰色
•set cthick thckns设置单线的线宽,thckns取1至10,代表线条的相对粗细。
当thckns的值大于6时,线条加粗较为明显。
•set cstyle style设置单线的线型,线型号(style numbers)取为:
•1 - 实线
•2 - 长虚线
•3 - 短虚线
•5–点线
输入clear或者display命令重新设置。
•set cmark marker设置单线上的标记符号marker:
0–无标记
1–叉号
2–空心圆
3–实心圆
4–空心方框
5–实心方框
6– X符号
7–◇符号
8–△符号
9–无标记
10–⊙符号
11–实心椭圆
输入clear或者display命令重新设置。
(2)直方图(gxout=bar)
•set bargap val 以百分比值设定直方条之间的间距。
val取值0到100,缺省值为0,表示直方条之间没有间距,当val取100时直方图退化为垂直线条直方图。
•set barbase val|bottom|top如给出val值,则各个直方条从该值处起画(向上或向下),所画直方条取值于y坐标尺度之内;如果给bottom,各直方条从图形框的底边向上绘出;如给top,直方条从图框顶边(y轴上限)向下绘出。
•set baropts opts设置直方条的类型,这儿:
opts =outline表示直方条不填色
filled 表示直方条填色
•set ccolor color - 参见(gxout=line).
•set cthick thckns - 参见(gxout=line).
2.2 二维格点图形
(1)等值线图(gxout=contour)
•set ccolor color- 参见(gxout=line).
也可以这样设置颜色:
set ccolor rainbow- 设置等值线用七彩序列表示
set ccolor revrain- 设置等值线用反七彩序列表示
•set cthick thckns- 参见(gxout=line).
•set cstyle style- 参见(gxout=line).
•set cint value- 设置等值线的间隔,输入clear或者display命令重新回到缺省设置
•set cmin value- 不画低于value值的等值线。
clea r或display命令重新设置。