GrADS绘图软件使用手_第1页
GrADS绘图软件使用手_第2页
GrADS绘图软件使用手_第3页
GrADS绘图软件使用手_第4页
GrADS绘图软件使用手_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

10其次章 GrADS绘图模板初学者可以通过“初学指南”既参考GrADS软件的“Tutorial”联机帮助文开头程序—>“tutorial”Tutorial”联机帮助文件。tutorial的条件需要有一组演示数据:Model.le.dat(数据文件—二进制),Model.le.ctl(描述文件—ASCII码)Model.grb,Model.ctl,Model.gmp(GRIB码数据)GRIB格式存储的数据,而*.ctl文件〔ASCII码〕是对应数据文件的描述文件。GrADS用“数据文件GrADS中“翻开一个数据文件”既是指翻开一个数据描述文件。关于GrADS数据格式和用户如何生成该格式的数据,将有特地章节表达;关于GRIB、NETCDF等数据格式的使用也将有特地论述。以下以第一组〔或其次组〕GrADS的使用。在使用数据前,先Model.le.ctl和Model.le.dat文件存于硬盘上的某一名目下,如c:\pcgrads\sample。首先来了解一下数据的内容。Model.le.dat是一组模式输Model.le.ctl清单:GrADS例如演示目的:GrADS的根本使用方法。GrADS的常用命令。GrADSxmanagerMS-DOS窗口。在MS-DOS窗口输入命令:cdc:\pcgrads\sample再输入命令:grads,显示如下提示:首先显示GrADS的一般信息,最底行提示是用“Landscape”模式grads-b以批处理方式运行,不显示图形输出grads-l模式运行。grads-p模式运行。grads-c进入GrADSgrads-cl以上选项可联合使用。〔11X8.5英寸〕或portrait〔8.5X11英寸—GrADS中长度和大小单位都用英寸〕模式显示图形输出窗口。输入 L回车或回车是模式;输入P回车是用portrait模式。之后进入GrADS的命令交互模式 等待用户输入命令此时你的桌面应如以下图所示的直接进入“Landscape”模式或grads-b以批处理方式运行,不显示图形输出grads-l模式运行。grads-p模式运行。grads-c进入GrADSgrads-cl以上选项可联合使用。左上角一个窗口是图形显示区,GrADS的全部图形输出结果在此窗口下显示;MS-DOS窗口,此时正在运行GrADga->,说明正处于GrADS命令等待状态。GrADS的全部命令都只能通过该窗口输出,全部文字信息也都由此窗口输出。GrADS命令承受以下格式:ga->命令<参数<>>式”符号命令交互模既是在GrADSGrADS命令产生各种图形。式GrADSga->quitga->openmodel.le.ctl进入的第一步,翻开一个描述文件〔扩展名ctlga->openmodel.le.ctl进入的第一步,翻开一个描述文件〔扩展名ctl可省略,GrADS据文件ga->qfilega->dps显示GrADS翻开数据的内容,显示结果应与描述文件说明全都。(ga->qq命令所代的参数及多项功能解释。)示”命令ps”是model.le.ctl量名称,代表地面气压。2紧接上例输入以下命令:ga->c 去除图面。如不去除图面,GrADS后续显示的图形将与已存在的图形产生叠加。ga->setlat40ga->setlon-90ga->setlev500ga->sett1GrADS视全部物理量为四维数据,以坐标〔lon|lat〕自动认为是经度/纬度坐标。以x|y|z|t方式表示维数时,每一维都是一组从1开头的序列数,对应网格的序号。本例中:x从1到73〔代表从00到3600共72个格点第73个格点即第1个格点46个格点〕;z从1到7〔从1000hPa开头,共7层〕;t从1到5〔5天〕运行“open model.le.ctl”命令后,lon|lat或x|y是可变的〔lon:00~360;lat:-900~90。而垂直和时间维取固定值lev=1000hPa或z=1; 或t=1。维数参数数值1<2>”命令转变当前维数设定值。当取“数值12”时,表示该维是变化的;而只取一个值时,表示该维取固定值,对于网格坐标可以是分数值,系统会自动作内插。维数参数始终ga->qdimsga->dz 势高度。紧接上例输入以下命令:ga->c紧接上例输入以下命令:ga->c去除图面。ga->setga->dlonz-1800显示沿400N,,1800W至0度,500hPa层,1987.1.2.0hr位势高度剖面图。4ga->cga->setlat去除图面。090ga->d zLon、lev、t设定值承受前例使用值不变。5ga->cga->setgaga->cga->setgaga->d去除图面。tz15动画显示西北半球1987.1.2.0hr位势高度。1987.1.2.0hr至ga->c去除图面。ga->setlat-9090ga->setlon-90ga->setlev1000100ga->sett1ga->dga->dtu温度剖面图。在上图根底上再叠加上东西风重量。ga->cga->setga->cga->setga->setga->setga->setga->d去除图面。latlonlevtz40-180500015500hPa400N,高度的时间剖面。8ga->c去除图面。ga->dsqrt(u*u+v*v)显示500hPa全风速值。或ga->dmag(u,v)GrADS内部定义了多种函数。9ga->c去除图面。ga->dave(z,t=1,t=5)500hPa5天平均。ga->dz-ave(z,t=1,t=5)1987.1.2.0hr高度与平均的偏差。10ga->cga->dz-ave(z,x=1,x=72)去除图面。高度与纬向平均值的偏差。11ga->c去除图面。ga->dga->dz(t=2)-z(t=1)z(t+1)-z两个时刻高度的差。或执12ga->c去除图面。ga->dga->setz(lev=500)-z(lev=700)z 3两个高度间的厚度。或执ga->dz(z+1)-zga->openga->openmodel.ctlga->openga->openmodel.ctlmodel.le.ctl同时翻开两个文件。ga->dga->setz.2(lev=500)-z.1(lev=700)z 3两个高度间的厚度。或执ga->dz.1(z+1)-z.212所示下:变量名·文件序号〔维数参数变量名·文件序号〔维数参数+/-/=某一数值,…〕个文件,并为每个翻开的文件编一个序列号〔1开头。上例中,序列号1lat/lon/lev/timex/y/z/t。下画线局部可省或局部省略。对于有两个不同文件中的数据作运算时,两种数据网格要全都对于有两个不同文件中的数据作运算时,两种数据网格要全都。ga->reinitga->openga->reinitga->openGrADS状态。model.ctlga->setga->setga->dlatlon090-1800vint(ps,q,275)vint(ps,q,top)=1topq的垂直质量积分,计算可降水量。qdp, ps和top:hPa。gps15ga->resetga->setga->setga->setga->dopen命令后的全部设置。latlonlecurl(u,v)由风场导出涡度场。ga->cga->setgxoutshadedga->cga->setgxoutshadedga->d hcurl(u,v)ga->’cbarn 1ga->setgxout0’contour去除图面。以分色图形方式输出。由风场导出涡度场。画图例。1:相对长短,>1放大;0:水平;1:垂直。以等值线方式输出〔缺省方式。ga->dz叠加500hPa高度场。留意叠加次序。ga->draw title 500hPaHeightsandVorticity写图标题。18ga->18ga->cga->setgxoutstreamga->d u;v;q去除图面。以流线方式表示矢量场。风流线场。“<>”内的局部只起标颜色的作用。ga->cga->gxoutvector去除图面。以箭头方式表示矢量场。ga->du;v;q风矢量场显示矢量时,d19ga->cga->setgxoutbarbga->d u;v;q去除图面。以WMO风标方式表示矢量场。风标。192019ga->c去除图面。ga->setgxoutgrid直接输出网格点数值。ga->setdignum0设置保存小数位数。ga->setdigsize0.1设置数字大小〔英寸。ga->du东西风网格点数值。202222ga->c去除图面。ga->setgxout contourga->setlat 15 80ga->setlon-140-40ga->setlev500ga->setmpdraw on〔非经纬度数据需此项〕ga->setpoli onoff不画国界省界等。ga->setmap auto由系统自定地图背景的颜色、线型和粗细。而set map color <line_style <thickness>>由用户自定义。ga->set mpvals -140 -40 15 80 极射投影经纬度范围。ga->setmprojnps北半球极射投影(其它取值:latlon:等比经纬度投影〔缺省scaled经纬度投影并冲满整个sps:Lambert:lambert方式投影;robinson:robinson式投影;off:关闭ga->setmpdset地图投影,缺省是翻开的。)mres lowres/mres/hires分别代表可使用低分〔缺省ga->dzga->cga->cga->gxoutga->setlatga->setlonga->setlevga->mprojga->mpdset去除图面。contourcaledmresga->d z23ga->c 去除图面。ga->gxout contourga->setlat -90 ga->setlon -180 180ga->setlev 500ga->mproj robinsonga->mpdset mresga->d zga->setgxoutga->setgxoutvectorga->du;v;q结果如封面所示。ga->c去除图面。ga->setgxoutga->setlat contour90ga->setlon-180180ga->setlev500ga->mpvalsga->mprojga->mpdsetga->d z-180npsmres1800-90GrADS绘图模板上述使用方法是GrADS的根本使用方法,其特点是在GrADS系统提GrADS命令来完成绘画。但很简洁造成输入错误,特别是有些命令设定后,假设不再重设置,是永久有效,而有些命令只是一次有效。假设用户对初次绘画的效果不满足,要增加一些GrADS的根本方法使用会有需多重复命令,因此效所为“绘图模板”就GrADS下以批处理方式执行。这种文件被称为“模板”或叫“描述语言”文件—“script比照上例编制一些简洁的模板设计。1md01.gs文件清单〔1:’open‘d;model.le.ctl’’open‘d;model.le.ctl’ps’﹡本例中,维数参数承受翻开数据文件后的缺省值。﹡模板文件中以“﹡”开头的行是注解行。﹡命令必需用单引号括起来,行尾肯定要有回车。﹡DOS命令提示符下输入命令:c:\pcgrads\sample\grads –cl sample01.gsc:\pcgrads\sample\grads –cl“sample0112…”(.gs扩张名可以省略)c:\pcgrads\sample\grads –bcl sample01.gsGrADSGrADS命令提示符下输入命令ga->runsample01.gs 12…或ga->sample01 12…〔在在GrADS命令提示符下,可反复执行run命令。但考虑到之间可以先运行“ga->reinit/resetrun〕GrADS在退出前,假设满足,可把图形存于文件。有多种方法:ga->printimfile.pngwhite存于名为“file.png”的文件(png格式)。printim命令格式:ga->printimfile选项1,选项2…选项:gif—gif存于“file”文件〔缺省为。png格式〕white—白色背景。black—黑色背景。xnnn如:ga->printimfile.gifgifwhitex800y600另一种方式是:ga->enableprintfile-name.gmfga->print执行输出,结果存于file-name.gmf—用户指定的文件,metafile格式,最好代gmf后缀,ga->disableprintdisable命令后,print命令的结果才真正存metafile文件可用gv32查看或转换成wmfgxps/gxeps转成ps/epsmetafile和ps/eps格式图象的印刷效果是最正确的。最终退出GrADSga->quit2‘reinit’’openc:/pcgrads/sample/model.le.ctl’DOS不同‘reinit’’openc:/pcgrads/sample/model.le.ctl’DOS不同DOS式的路径。‘set‘set‘set*‘setlat 40’lon -180lev 500’t 1’0’*‘setccolor 0’*设定颜色[注1]。缺省取前风光。*‘setcmark 3’*设定折线图节点标记[注2]。缺省取2。*‘setcstyle 1’*设定线型[注3]1。*‘setcthick 1’*设定线粗细[注4]1。*‘setgridon33’*设定是否画网格线[注5]gridon。‘dz’‘printimsp02.png white’*把图形存于文件[注]0:1:234:567‘printimsp02.png white’*把图形存于文件2]:标记取值:0:不作标记;1:+;2:○;3:●;4:□;5:■;6:X;7:

;8:△;9:不作标记;10:①。3]:线型:1:实线;2:长断线;3:短断线;4:一长一短断线;5:点线;6:点划线;7:点点划线。[注4]:线粗细取值:1-10〔个点阵。取值1-5〔含〕在屏幕上不显示变化,5以上才显示。因此,对于Printim,5变化。on <线型值> <颜色值>;画网格并可指定线型和颜〔之一或全部或按缺省。gridhorizontal<线型值><颜色值>;只画水平网格。gridvertical<线型值><颜色值>;只画垂直网格。gridoff不画网格。[注6]以“*”开使的命名行表示用户可选择是否使用。很多设置可首先考由GrADS自行打算,如不满足,再由用户自定义,以免画蛇添足。3’open‘set‘set‘setmodel.le.ctl’lat’open‘set‘set‘setmodel.le.ctl’latlonlev090’-180500’0’*‘set*‘set*‘set*‘set*‘set*‘setcsmoothrgbrgb1617ccoloron’15622233’156234133’16’用户自定义颜色[注1]。clab %.1f’clskip 2等值线标记方式[注2]。每隔一条等值线标记数值。*‘setcint8’指定等值线间隔。*‘setcterpon’样条平滑“ON”或“OF。*‘setclopts30.10.2’等值线标记的颜色<粗细<大小>>‘dz/9.8’‘‘printim;md03.gufgif white’[注1]:‘set rgb 用户自定义颜色序号〔16到99—1到15系统定义〕红绿蓝‘“红绿蓝”取值范围0-255[注2]:set clab on〔等值线标数值〕/off〔不标记〕/forded〔强制标记加上字符保存%03·1f〔33位,前部用0补齐〕模板4’open‘set‘set‘setmodel.le.ctl’lat’open‘set‘set‘setmodel.le.ctl’latlonlev090’-180 0’500’*画指定值的等值线。‘set‘set‘d;clevsccolsz/9.8’495523534556560564572584588’123’可以分别指定以上每一条线的颜色。模板5md05.gs文件清单:’open’open‘setmodel.le.ctl’lat090’*‘setcmin0’不画低于0〔含〕以下的等值线。*’set‘dcmax 0’ 0〔不含〕以上的等值线。hdivg(u,v)*1.e5’ 散度*‘setblackoff’‘setclevs0’‘setccols1’‘setcthick8’‘set‘set‘set‘set‘set‘setlonlevblack-180 0’500’-0.10.1’跳过-0.10.1〔0线〕不画。black“d“of特别处理“0”线画法。‘d;hdivg(u,v)*1.e5’’open‘set‘set‘set*‘set’open‘set‘set‘set*‘set‘set*‘setc:/pcgrads/sample/model.le.ctl’latlonlevtccolorgrid40’-180 0’500’1’3’on33’以直方图方式输出。直方图间隔〔20。在直方图中的矩形中填色outline”只画矩形框而不填色。直方图中的矩形从底部向上画to”从‘setgxoutbar’‘setbargap20’‘setbaroptsfilled’‘setbarbasebottom’顶部向下画画。*GrADSGrADS*2D坐标,X轴指垂直轴。*与数据中定义的4D坐标是两个概念。‘setxaxis-180010’‘setyaxis51505850 50’‘setylint200’‘setxlint20’‘setxflipon’‘setyflipoff’‘setxlpos0 b’‘setannot8 8’‘setxlopts‘setxaxis-180010’‘setyaxis51505850 50’‘setylint200’‘setxlint20’‘setxflipon’‘setyflipoff’‘setxlpos0 b’‘setannot8 8’‘setxlopts4 80.2’‘d;z’X轴翻转。[注3]X轴位置。4]坐标轴颜色和线粗细。[注5]标记特性。6][注1]:set xaxis 开头完毕<间隔>/set yaxis 开头完毕<间隔;设置X轴/Y轴标记范围,留神“开头完毕开头—束范围要与维数参数的范围一set lon -180 如不一制图形数据将没有代表,此时你给什么,它标什么,而图形不变。如不能预先定出范围,可由先由GrADS 自己打算或调整间隔〔xlint/ylin使用xaxis/yaxis的状况是当你处理非经纬度数据时,GrADS总是把水平坐标处理成经纬度来标记。[注2]:set xlint/ylint 间隔,如在此设置间隔,将取代xaxis/yaxis设置的间隔。[注3]:X/Y轴,同时图像也作相应的翻转。[注4]:set xlpos offset〔+/-英寸〕b〔底部〕/t〔顶部〕set ylpos offset〔+/-英寸〕l〔左〕/r〔右〕[注5]:set annot 颜色〈粗细;边框的颜色和线粗细。[注6]:set xlopts/ylopts 颜色〈粗细〈大小—英寸;标记数字的颜色、线粗细和字大小。7’open‘set’open‘set‘set‘set‘setc:/pcgrads/sample/model.le.ctl’latlonlevt160’42’10003’100’*分左右放置两幅图‘set‘set‘set‘set‘set‘set‘dvxyrevannotxloptsyloptszlogt’05.506’on’8413on’8’120.15’0.2’设置虚页面大小〔英寸。[注1]坐标轴特性将始终保持。标记特性将始终保持。Z坐标取对数坐标〔将始终保持。‘set‘set‘set‘set‘d;vxlintxloptsyloptst’5.510’1341106’120.15’0.2’标记特性。[注1]:一个物理页是指:水平11英寸X垂直8.5英寸(Landscape)或18.5X11(portrait),其上可以画分出多块区域,实现多图同时输出。Set v 水平开头 完毕 垂直开头 完毕8’open‘set’open‘set‘set‘set‘setc:/pcgrads/sample/model.le.ctl’latlonlevt0160’42’700’1’*分左右放置两幅图。左图中Y轴尺度由GrADS自定。‘set v 0 5.5 0 6’连接断点。设置Y〔vrangeX轴的尺度。*‘setxyrevon’‘setannot8 8’‘setxlopts4 10.2’‘set‘d‘set‘dyloptst’yloptsz/9.8’1 23’0.2’‘setv5.511 0 6’*‘setxyrevon’‘setmissonnon’‘setylopts1’‘d‘dvranget’z/9.8’240 330’‘cbar_l‘cbar_l-x2.5-y1.5–t“temp”“heigh”’标图例。-x2.5-y1.5位置;–t“temp“heigh”标名称。md09.gs文件清单:md09.gs文件清单:‘set*‘set‘set*‘set‘run‘set‘setv 3803.4’arrlabon’onarrowhead-0.2’arrsclsp17’vstrmden0.1’17。3 83’3.46.8’调整流线密度〔1稀—10疏。‘run‘setsp18.gs’v 3 8 6.811’18。*‘setdigsize 0.04’调整风向标大小。‘runsp19.gs’19。‘printimmd09.png white’sp17.gssp17.gs文件清单”open”set”set”set”set”d*’dc:/pcgrads/sample/model.ctl”lonlatlev-180 0”090”500”gxoutu;v;q”vector”skip(X_skip,Y_skip),通过X_skip,Y_skip”XY方向的取样密度〔1可省略不给u,vXYvector或sp19.gssp19.gs文件清单”open”set”set”set”setc:/pcgrads/sample/model.ctl”lonlatlev-180 0”090”500”gxoutbarb””d u;v;q”barbskip函数调整密度。sp18.gssp18.gs文件清单”open”set”set”set”setc:/pcgrads/sample/model.ctl”lon-180 0”latlev090”500”gxoutstream””d u;v;q”10md10.gsmd10.gs文件清单:‘open‘set‘set‘setmodel.le.ctl’lonlatlev0 180’30’500’”define zv=ave(z/9.8,lat=20,lat=40)”定义zv20~40N纬度带间的平均位势高度。”set gxout linefill”**setlfcols23’”d z/9.8;zv”z/9.8zvz/9.8<zv〔z/9.8>zv时用绿色〔。md11.gs文件清单:md11.gs文件清单:‘open‘set‘set‘set‘setmodel.le.ctl’lonlatlev00180’90’500’rbcols914411513310712826’设置彩虹色。‘d z/9.8’*以下给出GrADS一组根本绘图指令的使用方法。‘*第一组:‘set font2’选择字型库〔0-5〕颜色、位置、粗细、角度。字水平大小、垂直大小。‘drawstring83 firtgroup’。位置可先运行‘qpos’命令打算。‘draw title first line\second line’“”起分行作用。’setstring1c245’‘setstrsiz0.30.6’‘drawline3457’‘drawrec3456’‘drawrecf2133’*其次组:‘set line346’‘draw‘draw‘drawmark 10polyf 5wxsym 26177 0.5’6 2 6设置线的颜色、线型、粗细到〔5,7〕画直线。画矩形(3,4),(5,6)对角点。画填充色矩形〔当前线色〕=5。70.54’-1画多边形8’*其次组:‘set line346’‘draw‘draw‘drawmark 10polyf 5wxsym 26177 0.5’6 2 6设置线的颜色、线型、粗细到〔5,7〕画直线。画矩形(3,4),(5,6)对角点。画填充色矩形〔当前线色〕=5。70.54’-1画多边形8’颜色为-18的气象符号=2。set strsiz 字水平大小 垂直大小>set line 线的颜色<线型 粗细>>set string 字串的颜色 <位置 <粗细 <角度>>>位置取以下值:tl/tc/tr/l/c/r/bl/bc/br其中,c代表以起点位置居中;r从起点向右,等等。角度取正值逆时针,取负顺时针转。draw wxsym 气象符〔1-41〕x y 大小<颜色 <粗细>>颜色取负值时表示将由系统自定。预知每个符号的图形,运行runwxsym.gs,结果如以下图:GrADS模板的高级应用模板12‘openmodel.le.ctl’21-24,设计通用地图投影图模板。‘openmodel.le.ctl’21-24,设计通用地图投影图模板。lon1=-140;lon2=-40。lat1=15;mp=nps*mp=spslat2=80!!不需用单引号括起来*mp=lambert*mp=robinson‘set lev 500’‘set‘set‘set‘sett 1’lon ’lon1‘’lon2lat’lat1‘’lat2只有GrADS命令局部需要用单引号括起。。‘definevar=zzzz=z/9.8’ 必需在setlon/lat后定义留意以上两种“变量定义”方式的不同,不能直接定义*maps(zz,mp,lon1,lon2,lat1,lat2)maps(var,mp,lon1,lon2,lat1,lat2)件中。调用函数!!函数必需在同一文functionmaps(vars,mpj,ln1,ln2,lt1,lt2)定义函数。‘set‘set‘setmpdrawon’polimap*’setmapoff’auto’556’*‘setmpvals‘set mproj‘set mpdset’ln1‘’ln2‘’lt1‘’lt2’mpjmres’‘display;’vars函数和调用不在同一文件中‘openmodel.le.ctl’21-24,设计通用地图投影图模板。lat1=15;mp=npslat2=80!!不需用单引号括起来*mp=lambert‘set‘set‘set‘setlevt 1’lon500’’lon1‘’lon2lat’lat1‘’lat2只有GrADS命令局部需要用单引号括起。。‘definevar=zzzz=z/9.8’ 必需在setlon/lat后定义*‘md132 ’var‘’mp‘’lon1‘’lon2‘’lat1‘’lat2‘md132 ’var‘’mp!!调用函数不再是以函数名,而是以函数所在的文件名。参数可以从后向前省略;md132.gsmd132.gs文件清单—函数局部:function maps(args)定义函数。args,代表了全部参数。vars=subwrd(args,1) 取args的第1个字。mpj=subwrd(args,2) 取args的第2个字ln1=subwrd(args,3)ln2=subwrd(args,4)lt1=subwrd(args,5)lt2=subwrd(args,6)‘set‘set‘setmpdrawon’polimap*’setmapoff’auto’556’*‘setmpvals ’ln1‘’ln2‘’lt1‘’lt2‘set mproj ’mpj‘set mpdset mres’‘display;’var设计在一页纸上输出多幅图功能的模板md14.gs文件清单:FunctionFunctionall_in_one_(args)*setgradsoff”setimprundefault.gs”在每次”d”命令前运行default.gs模板。usage1=“putseveraltempletsinonereal.arrangthemintwocollons/rows.“usage2=“md14<file.gmf>>“templet1templet2...<-printim<file.png>>/<-printgeteachsinglemapfromcommandlineargsi=0pt=0out_file=””wrd=subwrd(args,1)if(wrd=””);sayusage1;say“usage:“usage2;return;endifwhile(wrd!=””)getoutputoptionsif(wrd=”-printim”)pt=”-printim”out_file=subwrd(args,i+2)breakendifif(wrd=”-print”)pt=”-print”out_file=subwrd(args,i+2)breakendifgettempletnamesmd.i=wrdsaymd.i” i=”ii=i+1wrd=subwrd(args,i+1)endwhileputthelasttempletaszeromd.i=0;num=math_nint(i/2)*2say“numberoftemplets“i“in“num“virtualsintwocollons/rows.“say“outputoption-pt=“pt“out_file=“out_filegetinformation”querygxinfo”result代表querygxinfo命令产生的一个多行输出结果。rec2=sublin(result,2) sublin(result,2)取result的第2行=rec2xsiz=subwrd(rec2,4) 取rec2的其次个字。ysiz=subwrd(rec2,6)*say“width=“xsiz“andhiegh=“ysizif(ysiz<xsiz)=“landscape“else=“portrait“endif*setvandploteachsinglemapineachvirtual.if(=“landscape“)sayif(num<4)i=0x1=0x2=xsiz/numwhile(i<num)y1=0y2=ysiz”setv”x1””x2””y1””y2”run”md.isay”setv”x1””x2””y1””y2x1=x2x2=x2+xsiz/numi=i+1endwhileif(0) drawaboxoneachvirtul”setvoff”i=1x1=xsiz/numwhile(i<num)”drawline”x1”0”x1””ysizi=i+1x1=x1+xsiz/numendwhileendifelsei=num/2x1=0x2=xsiz/iy1=ysiz/2y2=ysizk=0while(k<i)”setv”x1””x2””y1””y2*say”setv”x1””x2””y1””y2”run”md.k”setv”x1””x2””0””y1*say”setv”x1””x2””0””y1j=k+iif(md.j);”run”md.j;endif* say“ “x1=x2x2=x2+xsiz/ik=k+1endwhileif(0)drawaboxoneachvirtul”setvoff””drawline0”ysiz/2””xsiz””ysiz/2k=1x1=xsiz/iwhile(k<i)”drawline”x1”0”x1””ysizk=k+1x1=x1+xsiz/iendwhileendifendifendifif(=“portrait“)sayif(num<4)i=0y1=0y2=ysiz/numwhile(i<num)x1=0x2=xsiz”setv”x1””x2””y1””y2say”setv”x1””x2””y1””y2j=num-1-i”run”md.jy1=y2y2=y2+ysiz/numi=i+1endwhileif(0) drawaboxoneachvirtul”setvoff”i=1y1=ysiz/numwhile(i<num)”drawline0”y1””xsiz””y1y1=y1+ysiz/numi=i+1endwhileendifelsei=num/2x1=0x2=xsiz/2y1=0y2=ysiz/ik=0j=num-1while(k<i)”setv”x1””x2””y1””y2say”setv”x1””x2””y1””y2l=j-1”run”md.l”setv”x2””xsiz””y1””y2say”setv”x2””xsiz””y1””y2if(md.j);”run”md.j;endifsay“ “y1=y2y2=y2+ysiz/ij=j-2k=k+1endwhileif(0) drawaboxoneachvirtul”setvoff””drawline”xsiz/2”0”xsiz/2””ysizk=1y1=ysiz/iwhile(k<i)”drawline0”y1””xsiz””y1y1=y1+ysiz/ik=k+1endwhileendifendifendif”setvoff””drawrec00.03”xsiz-0.01””ysiz”drawrec00.0”xsiz ””ysizif(pt=”-printim”)if(out_file!=””)”printim”out_file”white”else”printimtmp.pngwhite” ”printimtmp.gifgifwhite”endifreturnendifif(pt=”-print”)if(out_file!=””)”enableprint”out_fileelse”enableprinttmp.gmf”endif”print””disableprint”returnendifsay“entertheprintim<file.png>orprint<file.gmf>forprintouttoafile. “say“ORJUSTPRESSENTERKEYFORNOTHING. “pullargwrd=subwrd(arg,1)if(wrd=”printim”)out_file=subwrd(arg,2)if(out_file!=””)”printim”out_file”white”else”printimtmp.pngwhite” ”printimtmp.gifgifwhite”endifreturnendifif(wrd=”print”)out_file=subwrd(arg,2)if(out_file!=””)”enableprint”out_fileelse”enableprinttmp.gmf”endif”print””disableprint”returnendif*say”out_file=”out_filereturn;‘setgrads‘setgradsoff’;执行模板:dos>grads–cl“md14sp21sp22sp23sp24sp16”grads后执行:ga->md14 sp12sp22sp23sp24sp16处显示出由于多个模板同时运行,某些设置相互干扰〔单独运行都是正常的。图中图片大大小小,规格不能统一。如何准确掌握图片大小是个难题。setimprundefault.gsdisplay命令前执行一个模板default.gs或其它display命令后,setgradson自动打开。GrADS描述语言GrADS描述语言GrADS的一行写一变量间需要用空格分开〔GrADS单/1个或多个空格单/双引号的方式来。定义变量变量名〔1~8字母数字〕=数值/“字串”/‘字串’名2=变量名1 使用变量。while(表达式)变量名·i=值 定义数组“”取一数值范围。endwhile以下画线开头的变量为全局变量。_variable=123 变量才能超越函数,超越文件使用,但不能作函数的参数。以下变量名用户不要定义,为系统保存字。lat,lon,lev,result,recfunction语句方式1——函数过程体与函数过程的调用在同一文件中定义函数过程functionname(variable1,variable2,…)紧接函数过程体;〔函数过程体完毕标志〕函数调用过程语句…name(variable1,variable2…)name 假设没有定义变量语句…目前GrADS要求函数过程的调用与函数过程体在同一文件中。方式2——函数过程体与函数过程的调用不在同一文件中定义函数过程函数过程文件清单functionname(variable)紧接函数过程体;〔函数过程体完毕标志〕函数调用过程函数调用过程文件清单:语句…件名参数1‘’参数2‘’…语句留意单引号和强制参加空格运算符和表达式数学运算:+,-,*,/规律运算:=,!=,>,>=,<,<=, |,&,!,%(连接符)表达式即由运算符连接起来的变量,其结果为0—假或非0—即真。掌握语句if(express)语句elseendifif(express);语句;语句;endifwhile(express)语句endwhile内部函数subwrd(string,nwd)从stringnwd〔数字〕个字。subline(string,nl) 从stringnl〔数字〕行一整行。Substr(string,start,nl)从字串中取从start字开头nl长的字串。杂项输出line=”PeterPan,theflyingone”;say“Shesaiditislineprompt“Shesaiditis“line输入pullvariable遇到pull语句后,程序等待用户输入,variable将代表用户的输入的值。query/q<参数>命令是一个格外重要的命令,用它可以获得很多图原信息。以下片段说明其一种用法及与描述语言其它局部信息交换确实方式。”querygxinfo”result代表querygxinfo命令产生的一个多行输出结果。rec2=sublin(result,2) sublin(result,2)取result的第2行=rec2xsiz=subwrd(rec2,4) 取rec2的其次个字。ysiz=subwrd(rec2,6) 〔xsiz,ysiz〕是图形左上角的坐标〔英寸。GrADS高级模板的应用pcgrads\lib以作为有用的工具和学习参考。由于该名目是一个特别名目,因此这些工具可ascii码文件,具体使用方法可直接参考文件说明。basemap.gs—陆地或海洋填色背景图Usage:basemapL(and)/O(cean)<fill_color><outline_color><hi/lo>调用数据:lpoly.asc/lpoly_hires.asc;opoly.asc/opoly_hires.ascbasemap.gs文件,在数据文件前加上路径。”open”openc:/pcgrads/sample/model.ctl””setlon-180180””setlat-9090””setlev500””sett 1””setmpdrawoff” 不画海陆线”setcmin9999” 用basemap前要求画任意图,”dz/9.8” setcmin9999使等值线并不显示出来。D命令后自动矢效。”basemapl3” 给陆地填绿色。”basemapo4” 海洋填蓝色。”setccolorrainbow” 设为彩虹色,d命令后彩虹色自动矢效。”dz/9.8”;cbar_l.gs(cbar_line.gs)—为线条图画图例。Usage:cbar_l<-xX-yY-n#>-ttext<p>见模板8,cbar_line.gs与其作用一样。cbarn.gs(cbar.gs,cbarc.gs)—为填色图画图例Usage: cbarn<sf<vert<xmidymid>>>cmap.gs—调整颜色gs->cmap numberconnect_the_dots.gs—通过点击鼠标画折线。define_colors.gs—定义颜色值:21~79defval_demo.gs—演示“qdefval”和“setdefval…”的使用。可对坏点数据进展修改。font.gs—演示字库样本。gs->font <0/1/2/3/4/5>isen.gs—等熵面图。md16.gs”openc:/pcgrads/sample/model.ctl””setlon50 140””setlat0 90””sett 1””setlev1000100””defineue=”isen(u,t,lev,320)320K等熵面层风场ue,ve;u,v,t三维要素场.”defineve=”isen(v,t,lev,320) lev气压层(hPa)”set z 1””d ”isen(z,t,lev,320) 320等熵面高度.”setgxoutbar””due;ve;q”以下要把isen.gs文件的内容包括内。functionisen(field,tgrid,pgrid,tlev)..map.gs—设置地图投影方式。mconv.gs—计算水气辐合。panels_demo.gs,panel.gsf—演示在一个物理页上输出多幅图的方法,_vpg.panel”openc:/pcgrads/sample/model.ctl””set”openc:/pcgrads/sample/model.ctl””setlon50140””setlat0 90””setlev1000100”*”definet225=”pinterp(t,lev,225)”sett 1””setz1”与上例一样,这里总有这样一惊异的维数设定。”d”pinterp(z,lev,225) 225hPa高度。”definet225=”pinterp(t,lev,225)”dt225” 225hPa温度以下要把以下要把pinterp.gs文件的内容包括内。functionpinterp(field,pgrid,plev)..md18.gs”openc:/pcgrads/sample/model.ctl””setlon140””setlat30”*definethevariablevirticalscale”setlev1000100””sett 1””querydims”rec=sublin(result,4)ztype=subwrd(rec,3)if(ztype=“varying“)z1=subwrd(rec,11)z2=subwrd(rec,13)elsesay“youmustsetlevvariable...quit“returnendif”definetc=t-273.16””definetd=”q2td(q,tc,lev,z1,z2)*changem/stoknot”definewsp=mag(u,v)*1.943844””definedir=atan2(v,u)*180/3.1415926”*extradefinethevirticalscaleforthet_skewmap”setlev1050200”*plotskew(-1,-1,-1,-1)plotskew(tc,td,wsp,dir)functionq2td(q,tc,plevs,z1,z2)*functiontoconvertspecifichumidityintodewpointtemperature*qkg/kg(afunctionofp)*tccelsius(afunctionofp)*plevshPa*tdcelsius(returndewpointtemperature)”definet=”tc”+273.16””definep=”plevs”*100”rd=287.05;rv=461.51;tmelt=273.16;c1es=610.78;c2es=rd/rv;c3les=17.269;c4les=35.86;c3ies=21.875;c4ies=7.66;rvd=rv-rd*sayrd””rv””tmelt””c1es””c2es””c3les””c4les””c3ies””c4ies””rvd”definealfa=log(”rv”*p*q/(”c1es”*”rd”+q*”rvd”))”*”dalfa”if(”t”<tmelt)c3es=c3iesc4es=c4ies”definetdk=(”c3es”*”tmelt”-”c4es”*alfa)/(”c3es”-alfa)”elsec3es=c3lesc3es=c3lesc4es=c4les”definetdk=(”c3es”*”tmelt”-”c4es”*alfa)/(”c3es”-alfa)”endif“definetd=tdk-273.16“*”dtd”return(td);以下要把plotskew.gs文件的内容包括内。functionplotskew(sndtemp,snddewp,sndspd,snddir)。。script_math_demo.g—演示数学函树的使用。其中很多math_开头的在很多手册中并未提到,但值得一。string.gs—写字串。ga->stringstring 位置用鼠标点击图上的位置即可。wxsym.gs—演示气象符号”openc:/pcgrads/sample/model.ctl””setlon50”openc:/pcgrads/sample/model.ctl””setlon50140””setlat0 90””setlev1000100””sett 1””setz1””d”d”zinterp(lev,z,6000)”definet225=”zinterp(t,z,6000)6000米等高面上的气压场。6000米等高面上的温度场。”dt225”以下要把zinterp.gs文件的内容包括内。functionzinterp(field,zgrid,zlev)..xanim.gs—增加的动画显示工具。use.gs—增加的open命令.traj.gs—计算水平向前和向后的轨迹。sweat_index.gs—计算出汗指数。cress_section.gs—依据defval_demo.gs设计的画剖面图工具。cress_section.gs”openmodel.ctl””setimprundefault.gs”*getthedimensionmaximumlimilations.”queryfile”rec =sublin(result,5)_xsize=subwrd(rec ,3)_ysize=subwrd(rec ,6)_zsize=subwrd(rec ,9)*say_xsize””_ysize””_zsize”setx1”_xsize”sety1”_ysize”setz1”_zsizegetinformation”querygxinfo”rec =sublin(result,2)_pxsiz=subwrd(rec,4)_pysiz=subwrd(rec,6)*say“width=“_pxsiz“andhiegh=“_pysiz******************************** changebelow ************************ifyouwanttoprintatestdata,setthisto1orhaveonleonegraphicarea;youcanoutputthecrosssectionmapbesideahorizontialfielsbytosetprint_grid=0print_grid=0giveavariableandaleveltoindicatwherethecross_sectionwillbeonthemap.zlev=500”definedisplay=z(lev=”zlev”)/9.8”givethevariablestoindictwhichvariablesyouwanttomakethecross_sectmap.nowonlyworkwithonevariable,thisshouldbeupdattoservalvariables”definevarb =t-273.16”*”definevarb2=*”definevarb3=*definethelimitationfortheinterestingarea.lon1=70;lon2=140;lat1=15;lat2=60;lev1=1000;lev2=100*ifyouusetheworldcoordinatesgiveworld=1;forgridcoordinatesworld=0world=1******************************** changeabove ***************************???Problemwhitvarpasstofunction???????*cross(zlev,dpv,var,70,140,15,60,1000,100,1);*functioncross(zlev,display,varb,lon1,lon2,lat1,lat2,lev1,lev2,world)assign11(odd)gridpointsalongthecross_sectionx-axis.youcanchangethisvaluebyassignnp=newnumbertohavemoregridpoints.np=11np1=np-1restrictthedimensionenvironmenttotheinterestingareaif(world)converttheworldcoordinatestogridoneif(world)”setlon”lon1-0.5””lon2+0.5”setlat”lat1-0.5””lat2+0.5”setlev”lev1””lev2”querydims”ln2=sublin(result,2);ln3=sublin(result,3);ln4=sublin(result,4)lon1=subwrd(ln2,11);lon2=subwrd(ln2,13);lat1=subwrd(ln3,11)lat2=subwrd(ln3,13);lev1=subwrd(ln4,11);lev2=subwrd(ln4,13)lon1=math_int(lon1); lon2=math_int(lon2) ;lat1=math_int(lat1)lat2=math_int(lat2); lev1=math_int(lev1); lev2=math_int(lev2)”setx”lon1-0.5””lon2+0.5”sety”lat1-0.5””lat2+0.5”setz”lev1””lev2else”setx”lon1-0.5””lon2+0.5”sety”lat1-0.5””lat2+0.5”setz”lev1””lev2endifthe“defval“commandswillonlyworkwith2-Ddefinedvariables”set lev”zlev”definevar=”varbDisplaythevariablewithcoloredgridcellsandtheirvaluesif(print_grid)”setgxoutgrid””setgridoff””setmprojoff””setdigsiz0.18”else”setmprojscaled””setgxoutcontour”endifsettwoareatoshowthemaps,thelifeshowahorizontialfieldandcrosssectionlineandtherightshowthecoress_sectionmapsforlandscapeortop/bottomforportrait.if(!print_grid)if(_pysiz<_pxsiz)landscape“”setv0”_pxsiz/2” 0 ”_pysizelseportrait“”setv0”_pxsiz” ”_pysiz/2””_pysizendif”display”displayelse”d”var”setgxoutcontour””d”var ”printimcr_0.pngwhite””display”displayendif*”qdims”;sayresult*Usethemousetoclickonagridpoint.say”Clickonanygridpointtogetacrosssectionstartpoint””qpos”xscreen_s=subwrd(result,3)yscreen_s=subwrd(result,4)Convertvirtualpositionstoscreenpositions”qpp2xy”xscreen_s””yscreen_sxscreen_s=subwrd(result,3)yscreen_s=subwrd(result,6)Convertscreenpositionstogridcoordinates”qxy2gr”xscreen_s””yscreen_sxg.0=subwrd(result,3)yg.0=subwrd(result,6)Convertgridcoordinatestoworldcoordinates”qgr2w”xg.0””yg.0lon.0=subwrd(result,3)lat.0=subwrd(result,6)say”Clickonanygridpointtogetaendpoint””qpos”xscreen_e=subwrd(result,3)yscreen_e=subwrd(result,4)Convertvirtualpositionstoscreenpositions”qpp2xy”xscreen_e””yscreen_exscreen_e=subwrd(result,3)yscreen_e=subwrd(result,6)Convertscreenpositionstogridcoordinates”qxy2gr”xscreen_e””yscreen_exg.np1=subwrd(result,3)yg.np1=subwrd(result,6)Convertgridcoordinatestoworldcoordinates”qgr2w”xg.np1””yg.np1lon.np1=subwrd(result,3)lat.np1=subwrd(result,6)if(0)say”(xscreen_s,yscreen_s)=(”xscreen_s””yscreen_s”)”say”(xscreen_e,yscreen_e)=(”xscreen_e””yscreen_e”)”say”(xg.0,yg.0) =(”xg.0””yg.0”)”say”(xg.np1,yg.np1)=(”xg.np1””yg.np1”)”say”(lon.0,lar.0) =(”lon.0””lat.0”)”say”(lon.”np1”,lat.”np1”) =(”lon.np1””lat.np1”)”say””endif*drawalineasthecrosssectionline”drawline”xscreen_s

温馨提示

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

评论

0/150

提交评论