Grads保姆级教学——小乌龟考试看这一篇就够了

Grads保姆级教学——小乌龟考试看这一篇就够了

临近考试根据上课内容和ppt整理的grads笔记,ppt翻来翻去太难受了,就看这篇叭,过考试绝对没问题


如有疏漏请大家多多指教

目录

  • Grads保姆级教学——小乌龟考试看这一篇就够了
  • 一、Grads概述
    • 1.Grads是啥
    • 2.为啥用Grads
    • 3.Grads基础需要掌握什么?
  • 二、基础命令
    • 0.如何获得文件绝对路径
    • 1.进入画图模式
    • 2.打开文件操作
    • 3.几个常用基础命令
  • 三. ctl和gs的创建和使用
    • 1.ctl文件
      • 1.ctl是什么
      • 2.如何创建一个ctl文件
      • 3. ctl文件中的属性解释
      • 4.使用ctl
    • 2.gs文件
      • 1. gs是什么
      • 2.创建gs文件
      • 3.编写gs
      • 4.使用gs
  • 四. 绘图要素的设置
    • 1.维度设置
    • 2.图形类型设置
    • 3.设置各种绘图样式
      • 1.对图形类型为contour起作用
      • 2.对图形类型为contour或shaded起作用
      • 3.对于图形类型为contour, shaded, vector, stream起作用的设置
      • 4.对于图形类型为line起作用的设置
      • 5.对于图形类型为vector起作用的设置
      • 6. 设置坐标轴要素
      • 7.地图设置
  • 五.绘图指令补充
  • 六.命令语言中的变量和函数
    • 1.完全变量名
    • 2.函数调用
  • 七. 描述语言的应用
    • 1.什么是描述语言
    • 2.怎么使用描述语言
    • 3.描述语言基础知识
    • 4.选择结构
    • 5.循环结构
    • 6.常用内部函数
    • 7.输入输出


一、Grads概述

1.Grads是啥

  • Grads全称: Grid Analysis and Display System
  • Grads是一款在气象界应用广泛的数据处理和显示的绘图软件

2.为啥用Grads

  • 考试要考呜,不然早去专精matlab和python画图了
  • 体积小,各种操作系统都使用
  • 免费
  • 出图类型多种多样
  • 操作简单上手快

3.Grads基础需要掌握什么?

  • CTL 文件编写
  • gs脚本使用
  • 命令行基础设置操作
  • 命令行基础绘图操作
  • 描述性语言使用
  • 和Fortran联动的数据预处理
  • 保存绘图结果

二、基础命令

0.如何获得文件绝对路径

grads中经常需要修改文件路径,小白同学一定要会这个基础技能

  • 进入文件夹后点上方,可以查看当前文件夹的绝对路径
    Grads保姆级教学——小乌龟考试看这一篇就够了_第1张图片
  • 一定先打开显示文件拓展名
    Grads保姆级教学——小乌龟考试看这一篇就够了_第2张图片
  • 之后拼接文件名在目录的绝对路径后面,就是文件的绝对路径,注意因为当前目录下的东西所以要加一个\ 表示当前目录下
    Grads保姆级教学——小乌龟考试看这一篇就够了_第3张图片

后面频繁用到绝对路径,一定要掌握哦

1.进入画图模式

  • 打开grads会闪退的可能需要手动打开xming后再打开grads
  • xming的位置是 E:\OpenGrADS-2.2\Contents\Resources\Xming 注意\OpenGrADS-2.2前是你grads的安装位置,我安装在E盘根目录下所以是这个地址,找到xming打开
  • 成功进去后第一件事就是按下键盘的l后回车
Landscape mode? ('n' for portrait):  l 
//之后出现
ga->
//说明成功,可以正常使用了

2.打开文件操作

重点记住区分不同文件的打开方式

  • open+文件路径命令用于打开.ctl格式文件,是最常用的命令
ga-> open E:\Grads\h4\JJ-ave-pre-grads.ctl

这里绝对路径也可以不用手动写,直接写完open,加个空格,把ctl文件拖入就可以自动出来
warning:open后面一定要有空格!!!!


  • sdfopen用来打开.nc数据,基本没用过
ga-> sdfopen d:/uwnd.nc

  • run用来打开.gs文件,gs文件也可以不用 run直接可以跑
    很常用
	ga-> run E:\Grads\h3\demo01.gs

	ga-> E:\Grads\h3\demo01.gs
	//两种方式都可以打开gs

3.几个常用基础命令

  • d 变量=>用来将变量画在图上,是最核心的命令
open E:\Grads\h2\CMAP-precip-Jan-Dec-1979.ctl
d uwnd
=> 打开的ctl文件里有一个叫uwnd的变量,d就是把他画出来

Grads保姆级教学——小乌龟考试看这一篇就够了_第4张图片

  • q ctlinfo 查看ctl文件中的信息,用来查看都有什么变量,各个维度的范围
ga-> q ctlinfo
//下方就是ctl内的信息
dset E:\Grads\h3\cor.ISM.JJ-hgt.79-10.grd
title corr
undef -32766
xdef 144 linear 0 2.5
ydef 73 linear -90 2.5
zdef 17 levels 1000 925 850 700 600 500 400 300
 250 200 150 100 70 50 30 20 10
tdef 32 linear 00Z01JAN1979 12mo
vars 1
cor  17  33,100,0  monthly geopotential heights on pressures levels [gpm]
endvars
  • clear 清理画布
  • reinit 初始化grads,在gs文件的第一行一般加上
  • reset 清除所有set设置
  • gxprint +要保存文件的绝对路径 什么格式,后缀就是什么
gxprint F:\HJG\monsoon\Cor-NAM-SFW.pdf 
保存的就是pdf格式文件
  • enable print 路径+格式
  • printim 路径

三. ctl和gs的创建和使用

重中之重

1.ctl文件

1.ctl是什么

  • ctl是数据的描述文件,用来描述别的文件的各种信息,包括经纬度,气压高度,变量等信息,在grads中读取了ctl之后就可以设定各个参数的数值,之后把变量画出来

2.如何创建一个ctl文件

  • 创建一个文本文件,将后缀改成.ctl,就是个ctl文件(注意要像前文说的打开文件拓展名,否则你的文件会改成xxx.ctl.txt 本质还是txt文件)
    在这里插入图片描述

  • 打开ctl文件——ctl文件不能直接双击打开,可以用打开方式——记事本打开

  • Grads保姆级教学——小乌龟考试看这一篇就够了_第5张图片

3. ctl文件中的属性解释

先看一段完整的ctl文件

dset E:\Grads\h3\cor.ISM.JJ-hgt.79-10.grd
title corr
undef -9999
xdef    144 linear    0.000  2.500
ydef    73 linear  -90.000  2.500
zdef    17 levels 1000 925 850 700 600 500 400 300 250 200 150 100 70 50 30 20 10
tdef  32 linear  01JAN1979  1yr 
vars 1
cor    17 33,100,0 monthly geopotential heights on pressures levels [gpm]
Endvars
  • dset :二进制原始数据文件的完整路径 ctl本质是给一个数据文件写描述,这个文件就是dset中的地址
  • title:这个ctl文件的题目,可以随便写
  • undef:定义缺测值,虽然每次都不知道缺测值是啥,但是必须写上,不然就会报错,数字可以随便写,我喜欢写-99999
  • xdef和ydef:经度方向的范围设置
//骨架
xdef x方向点的数量 linear 起始 增量
ydef y方向点的数量 linear 起始 增量

举个例子
xdef    144 linear    0.000  2.500
ydef    73 linear  -90.000  2.500

表示的就是:
x方向有144个点(可以理解为144个经度) 线性增加 从0度经度开始 间隔2.5个经度
这里2.5*144=360 刚好就是全球的经度
y方向73个点,从南纬90开始间隔2.5线性增加,刚好是全球的纬度
  • zdef 设置气压面
//骨架
zdef 气压层数 levels 一系列气压值

举个例子
zdef    17 levels 1000 925 850 700 600 500 400 300 250 200 150 100 70 50 30 20 10

表示有17个气压面,分别是1000 925 850 700 600 500 400 300 250 200 150 100 70 50 30 20 10百帕高度
  • tdef设置时间映射
//骨架
tdef 时间点数量 linear 起始时间 时间增量

举个例子
tdef  32 linear  01JAN1979  1yr 
表示从1979年1月1日,每间隔一年,总共32年

时间增量的简称:
- mn 分钟 
- hr 小时
- dy 天
- mo 月
- yr 年

起始时间的表达:顺序是 小时:分钟 Z 日期 月份 年 | hh:mmZddmmmyyyy
ex: 
TDEF	60	LINEAR	00Z31dec1999 1mn
TDEF	73	LINEAR	3jan1989 5dy
TDEF	730	LINEAR	00z1jan1990 12hr
TDEF	12	LINEAR	1jan2000 1mo
TDEF	365	LINEAR	12Z1jan1959 1dy
TDEF	40	LINEAR	1jan1950 1yr
  • vars 变量数量
    详细请看这里,有点复杂
//骨架
vars 变量数量
变量名 变量的层数(一般和zdef中层数相同)预设的最大值,比前一个数大就行,(后面的参数请看上面的链接) 变量描述
变量2
变量3 ...
endvars

举个例子
vars 1
uwnd  4 99 u wind (m/s)  
Endvars
=>uwnd变量有四个层次,这里是对应了zdef的四个高度,预设的最大值为99,后面是这个变量的描述

4.使用ctl

  • 在grads中 open+ctl文件绝对路径即可使用
ga-> open E:\Grads\h4\JJ-ave-pre-grads.ctl
  • 在gs中使用

2.gs文件

1. gs是什么

gs就是把一堆在命令行要写的内容写在一个脚本文件中,每次执行gs就等于执行了里面一堆的命令行代码,更加方便,而且描述性语言可以写在gs中

2.创建gs文件

跟创建ctl类似,将文本文件后缀改成.gs,之后用记事本打开就可以进行编辑
在这里插入图片描述

3.编写gs

命令行需要每行用 ''单引号括起来,描述性语言不需要

//举个例子
每一行都是可以在命令行里输入的,写在gs中一次性全部执行,更加方便
'reinit'
'open E:\Grads\h3\cor.ISM.JJ-hgt.79-10'
'q ctlinfo'
'set lat 0 60'
'set lon 40 140'
'set lev 200'
'E:\OpenGrADS-2.2\Contents\Resources\Scripts\subplot 1 2 1'
'set gxout shaded'
'd cor'
'set ccolor 5'
'd abs(cor)>0.35 '
'set ccolor 8'
'd abs(cor)>0.45'

4.使用gs

  • run用来打开.gs文件,gs文件也可以不用 run直接可以跑
    很常用
	ga-> run E:\Grads\h3\demo01.gs

	ga-> E:\Grads\h3\demo01.gs
	//两种方式都可以打开gs

四. 绘图要素的设置

1.维度设置

简单但是重要

  • 维度在grads中可以理解为时空设置——经纬度,气压高度,时间的设置
  • 读入ctl之后,如果需要就得手动设置时空范围
xdef    144 linear    0.000  2.500
ydef    73 linear  -90.000  2.500
zdef    17 levels 1000 925 850 700 600 500 400 300 250 200 150 100 70 50 30 20 10
tdef  32 linear  01JAN1979  1yr 
这些就是时空信息
  • 设置方式 :set关键字设置注意设置的范围不能越界,超过ctl中定义的范围
set lat  20 40 =>设置纬度范围是20到40
set lon  80 120
set lev 500 =>高度设置为500hpa高度
set t 3 =>设置为第三个时间点 比如从2000年作为起始时间增量为一年,set t 3 就是2003年
set t 3 6=>设置时间为第三到第六个时间点

2.图形类型设置

使用set gxout type来设置图形类型

contour: 二维等值线图
shaded: 二维填色图
grid: 二维场不绘图
vector: 矢量箭头形式绘二维风场
stream: 流线形式绘制二维风场
barb: 风向杆形式绘制二维风场
line: 对一维场绘制单线图default)
bar: 对一维场不绘单线图,而绘制直方图
linefill: 两单曲线之间填色

使用时
set gxout shaded =>之后画的图就是填色的

3.设置各种绘图样式

1.对图形类型为contour起作用

  • set ccolor 色号=>设置等值线颜色
set ccolor 0
0 - 黑 1 - 白,2 - 红,3 - 绿 ,4 - 兰
5 - 青,6 - 洋红,7 - 黄 ,8 - 橘黄 ,15 - 灰

set ccolor rainbow 彩虹色
  • set cstyle style=>设置等值线的线型
set cstyle 1
1 - 实线,2 - 长虚线,3 - 短虚线,5 - 点线
  • set cthick 线宽=>设置线宽度
set cthick 1
线宽的取值范围是0~10

2.对图形类型为contour或shaded起作用

  • set cint value --设置间隔几根
set cint 2
间隔2数值画一条等值线

Grads保姆级教学——小乌龟考试看这一篇就够了_第6张图片
彩虹色是间隔1画的,白色是间隔6画的

  • set clevs val1 val2… 只画这几个数值的等值线
set clevs 2 8
只画值为2和8的等值线
d uwnd

Grads保姆级教学——小乌龟考试看这一篇就够了_第7张图片

  • set ccols coll1 coll2 … 设置了只画哪几个等值线后,可以用ccols配合使用,指定那几条等值线的颜色,顺序一一对应
set  clevs  2 6
set  ccols  1 3
d uwnd
指定2,6两根等值线颜色色号是1,3
  • 设置只画范围的等值线
set cmin val =>只画不低于val的等值线
set cmax val =>只画不高于val的等值线
set black val1 val2... =>不画 val1和val2...的等值线

3.对于图形类型为contour, shaded, vector, stream起作用的设置

  • set strmden val 设置流线密度

4.对于图形类型为line起作用的设置

  • set cmark marker 设置线条上的标记符号
set cmark 0
0 -无标记,1 -叉号,2 -空心圆,3 -实心圆,4 -空心方框,5 -实心方框

5.对于图形类型为vector起作用的设置

  • set arrscl size 设置矢量箭头的长度 范围一般取0.5~1.0
  • set arrowhead size 设置矢量箭头的大小 范围一般取0.05,0则没有箭头的头

6. 设置坐标轴要素

  • set vrange y1 y2
  • set vrange x1 x2 分别设置x,y坐标尺的取值范围
  • set zlog on z维度方向的对数尺度是否开启,z代表高度,不用对数会不直观
  • set grid on是否画网格
  • set xlopts或ylopts color 坐标轴的数值标示的颜色

7.地图设置

  • set map color style thickness 设置地图背景的颜色color、线型style和线宽thickness
  • set mproj proj设置当前地图投影方式

五.绘图指令补充

draw各种东西

  • draw x y string 在图(x,y)的地方写下字符串
  • set string color设置字符串颜色

  • draw line x1 y1 x2 y2画线
  • set line color style thickness 设置线的样式

  • draw rec xlo ylo xhi yhi 画一个不填色的长方形
  • draw recf xlo ylo xhi yhi 画一个填色的长方形

  • draw title string 给图一个标题
  • draw xlab|ylab string 给x,y轴一个名字

六.命令语言中的变量和函数

1.完全变量名

varName.fileNum=>varName是ctl中变量的名字,fileNum就是文件序号

ga->open model.ctl=>文件编号为1
ga->open model.le.ctl =>文件编号就是2

2号文件中有个变量叫uwnd,表示这个变量就叫uwnd.2
d uwnd.2 就是把2号文件中的uwnd画出来

可以直接用括号在后面设置纬度
d uwnd(lev=850, t=2)

2.函数调用

比较重要
调用方式:函数名(参数)
常用函数:

  • ave(变量对象,范围1,范围2) =>用来求平均(一维)
open model.ctl
set lev 500
d ave(z,t=1,t=5)  

用ave求纬向平均
ave(uwnd,lon=0,lon=360
  • aave(变量对象,x范围,y范围) =>用来求面积平均(二维)
ave(uwnd,lon=0,lon=360,lat=-30,lat=30)参数是一个矩形的范围
  • mag(a,b) =>返回模长(sqrt(a2+b2))
  • tloop(表达式)=>按时间循环执行里面的表达式,成为一个时间序列图
set t 1 120
d tloop(ave(uwnd,lat=60,lat=75)) 按时间序列重复计算平均

七. 描述语言的应用

1.什么是描述语言

描述语言是GrADS软件包中自带的高级语言。通过描述语言,如 if / else / endif和 while / endwhile 语句块,可以进行流程控制,实现较为复杂的绘图控制功能。

2.怎么使用描述语言

在gs脚本文件中使用,不用引号引起来
示例代码

'reinit'
'open E:\Grads\h2\CMAP-precip-Jan-Dec-1979.ctl'
t=4
y=1
WHILE(t<=9)  //while循环,不需要用单引号括起来
'set t 't''
'query time'
time=result
'E:\OpenGrADS-2.2\Contents\Resources\Scripts\subplot 2 3 'y''
'd precip'
say time
month=substr(time,13,3)
'draw title 'month''
t=t+1
y=y+1
ENDWHILE

3.描述语言基础知识

  • 变量名:由1至8个字符组成,以字母开头,仅包含字母和数字,变量名区分大小写
  • 赋值语句
a=3 =>直接赋值给变量就可以了
b='hello world'
  • 运算符
    Grads保姆级教学——小乌龟考试看这一篇就够了_第8张图片

4.选择结构

//骨架
if(判断条件)
 
else

endif

5.循环结构

//骨架
while(判断条件)
 =>代码块
endwhile

//
示例代码
t=1
while ( t<10 )
‘set t ’t
‘d z’
t = t + 1
endwhile

6.常用内部函数

  • substr(string,start,length)=>截取字符串
从stirng中切下从start开始,length个字符
substr('hello",1,3) =>hel
  • subwrd(string,wordNum) =>从string中截取第wordNum个词语
subwrd('hello Chris Redghost',2) 第二个次是Chris

7.输入输出

  • say expression

  • prompt expression 屏幕上要显示的提示信息

  • pull var 要用户输入的,赋值给var变量

line = ‘I Love GrADS’
say line
prompt ‘Enter latitude:=>屏幕提示输入纬度
pull lat  =>让输入的赋值给lat
prompt ‘Enter longitude: ’
pull lon
‘set lat ’ lat
‘set lon ’ lon
  • query +一个要查找的变量,之后会自动生成一个result对象表示查询的结果(这是个命令行输入,并不是描述语言)
'query time'
say result
=>此时result就是查询出来的time

你可能感兴趣的:(grads,南信大,开发语言,经验分享)