GrADS实用绘图--脚本编程
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数学 + - * /
LASG动力论坛版
6
八. 批处理和脚本语言(S)—变量/数组/运算符示例
脚本程序变量类型的“随意”性
yr = 2006 mon = ‘Feb’ day = 13 hr = ‘14:00’ yr = yr + 1 day = day + 10 tchar = hr % ‘Z’ % day % mon % yr say tchar
LASG动力论坛版
1
GrADS实用绘图
第五讲 脚本编程/图形保存
=Funny @ LASG动力论坛=
— 2007年8月22日—
版权所有, 欢迎传播, 请保持文档完整性
LASG动力论坛版
2
内容提要
请注意标记♥♥♥的地方
第 五 讲
一. 引言 二. GrADS绘图软件包安装 三. 运行GrADS绘图软件包 四. 图形显示(D)1 — 格点绘图 五. 数据准备(Gr) 六. 图形显示(D)2 — 站点绘图 七. 数据分析(A) — 函数的使用 八. 批处理和脚本语言(S) 九. 图形保存和转换
数据格式转化
%d %o %x %u %c %s %f %e %g
math_format(format,expr)
以带符号的10进制形式输出整数(正整数无符号), 以8 进制无符号形式输出整数(不输出前导符0), 以16 进制无符号形式输出整数(不输出前导符0x), 以无符号10进制形式输出整数, 以字符形式输出,只输出一个字符, 输出字符串, 以小数形式输出单, 双精度数,隐含输出6 位小数, 以标准指数形式输出单, 双精度数,数字部分小数位数为6 位, 选用%f 或%e 格式中输出宽度较短的一种格式,不输出无意义的0.
res = write(filename, record, { | append } ) res: 状态值 =0 OK =1 打开错误 =8 文件为read打开 res = close(filename) res: 状态值 =0 OK =1 文件未打开
LASG动力论坛版
11
八. 批处理和脚本语言(S) —控制语句
LASG动力论坛版
八. 批处理和脚本语言(S)
— 脚本编程关键运算范例 范例2-相应的.ctl文件
15
范例2-格式转换
‘sdfopen uwnd.2000.nc’ ‘set gxout fwrite’ ‘set fwrite uwnd.500.feb1.bin’ ‘set lev 500’ ‘set time 1feb2000’ ‘set x 1 144’ * 缺省维数是 1~145 ! ‘set y 37 73’ * 取北半球 ‘d uwnd’ ‘disable fwrite’
下拉菜单
‘set dropmenu fc bc oc1 oc2 tfc tbc toc1 toc2 bfc bbc boc1 boc2 soc1 soc2 thick ’ ‘draw dropmenu #widget[0~64] xc yc width height text ’
对话框
‘set dialog #strcol #fcol #bkcol #linecol #thk { | numeric | n }’ ‘q dialog { | xc yc width height } { prompt_string | prompt_and_initial_string }’ say result
绝对值, 对数 三角函数 反三角函数 双曲函数 反双曲函数 幂函数 平方根, e的幂 最接近整数, 截去小数 余数
LASG动力论坛版
8
res = functionname(args) ;
* res为函数值
math_abs(expr), math_log(expr), math_log10(expr) math_sin(radian), math_cos(radian), math_tan(radian) math_asin(expr), math_acos(expr), math_atan(expr) math_sinh(radian), math_cosh(radian), math_tanh(radian) math_asinh(expr), math_acosh(expr), math_atanh(expr) math_pow(expr, exponent) math_sqrt(expr), math_exp(expr) math_nint(expr), math_int(expr) math_fmod(expr1,expr2), math_mod(expr) math_strlen(string) strlen(string) valnum(string) wrdpos(string,int) sublin(string,n) Subwrd(string,n) substr(string,start,length)
LASG动力论坛版
பைடு நூலகம்
12
八. 批处理和脚本语言(S) — 菜单控件
按钮 橡皮擦
‘set rband #widget[0~64] { box | line } x1 y1 x2 y2 ’
-1 表示‘on’状态;0 表示‘off’状态.
‘set button 1 bcol1 bcol2 bcol3 0 fcol1 fcol2 fcol3 thickness’ ‘draw button #widget[0~64] x y width height string’ ‘redraw botton #widget[0~64] { 0 | 1 }’
LASG动力论坛版
13
八. 批处理和脚本语言(S) —脚本编程
(回顾 )
• GrADS批处理 / 脚本程序的异同 • 变量/ 数组/ 运算符 • 内部函数 数学/ 字符/ 格式转换/ 文件操作 • 控制语句
if选择/ while循环/ 终端交互/ 菜单控件 ♥♥♥ 最关键的运算: % , 而 % 常常省略! “拼装”命令, 实现我们需要的功能
在%后和格式字符d、o、x 等之间可插入以下附加符号:
l(L) 用于长整型整数,可加在d, o, x, u 前面, m (正整数m)数据最小的宽度, .n (正整数n)对实数输出n 位小数, 对字符串截取n 个字符, - 输出的数字或字符串在域内向左靠.
LASG动力论坛版
10
八. 批处理和脚本语言(S) —文件操作函数
读文件 写文件 关闭文件 res = read(filename) res = write(filename,record,{ res = close(filename) | append } )
res = read(filename) line1= sublin(res, 1) line2 = sublin(res, 2) 第一行: 状态值 =0 OK =1 打开错误 =2 已到文件结尾 =8 文件为write打开 =9 I/O错误 第二行: 读入的文件内容
LASG动力论坛版
14
八. 批处理和脚本语言(S)
— 脚本编程关键运算范例 范例1
-续行/交互/if块/命令发送
a = ‘set rbcols’ b = ‘9 14 4 11 5 13 3 10 7 12 8 2 6’ c = ‘6 2 8 12 7 10 3 13 5 11 4 14 9’ ab1 = a % ‘ ’ % b ab2 = a ‘ ’ c say ‘1) ’ % ab1 say ‘2) ’ % ab2 prompt ‘ Enter 1 or 2 to run the cmd: ’ pull args if ( args = 1 ) ab1 * 在此作为一个命令发送 endif if ( args = 2 ) * 没有 elseif ! ab2 endif
脚本程序变量类型的“不随意”性
注意:
1.全局变量不可作为 mon = mon + 1 k=1 var.k = 2006 n = ‘01’ var.n = var.n + 1 n=n+0 var.n = var.n + 1 * 错误! * var.1 * 错误! * 正确! * 正确!
自定义函数的参数! 2.数组下标引用!
pow, sqrt 取整 求余
字符串处理函数
math_strlen, valnum, wrdpos, strlen sublin, subwrd, substr
数值格式转换函数
math_format
文件操作函数
read, write, close
八. 批处理和脚本语言(S) —数学/字符函数
脚本函数使用
LASG动力论坛版
3
八. 批处理和脚本语言(S)
本节内容提要
• 基本概念 • 变量/ 数组/ 运算符 • 函数 • 脚本编程
–控制语句
LASG动力论坛版
4
八. 批处理和脚本语言(S) — 基本概念
基本概念
GrADS批处理 GrADS命令的集合 ♥♥♥ 脚本程序 1. 脚本变量的运算 2. “GrADS命令”的运算 ♥♥♥
while 循环块 终端交互/Debug
say string prompt string pull args while ( …… ) …… { break | continue } …… endwhile
if 选择块
if ( …… ) then …… else …… endif
菜单控件
按钮 橡皮擦 下拉菜单 对话框
.
数组
“假”数组 ‘define va’ i ‘=…’
v i =…; v j =…; _v k =… 数组下标可以任意, 如 i=‘a#$xx’ 引用需 v.i 的形式, 而不能 v.a#$xx 数学 + - * / 逻辑 | & = != > < >= <= ! 字符连接 % ♥♥♥
.
♥♥♥
.
.
运算符
1. 引用GrADS命令必须使用 ‘’ 2. 顶格 为注释, ; 为一行结束 3. 不可使用tab键
{exec| run} batch.gs run script.gs
使用脚本编程规则
八. 批处理和脚本语言(S) — 变量/数组/运算符
GrADS 脚 本 程 序
LASG动力论坛版
5
变量
定义变量 全局变量 abbrev.#file(dimexpr,dimexpr,...) 逻辑变量 abbrev.#file(stid=‘...’) 定义变量 ‘define va = vwnd 2 ’ 预定义变量 变量类型 预定义变量 lat, lon, lev, time (向量/矩阵变量) 变量引用方式 t=1 _global = 1 TRUE = 1; FALSE = 0 result, rc “随意/不随意” ♥♥♥
字符串长度 字符串长度 字符串类型, =0非数据, =1整数, =2非整数 第int个单词的开头字符 取第n行 取第n个单词(单词间以空格为分隔符 自第start个字符开始, 取length个字符
LASG动力论坛版
9
八. 批处理和脚本语言(S) — 格式函数
例见: script_math_demo.gs
范例2-多个undef值的处理
1. 对缺测为ud2的变量old2: ‘define new=const(old2, ud1,-u)’ 并fwrite输出; 2. 新.ctl中说明: undef ud1
dset uwnd.500.feb1.bin title Feb.1 2000 500hPa u-wind undef 32766 xdef 144 linear 0 2.5 ydef 37 linear 0 2.5 zdef 1 levels 500 tdef 1 linear 1feb2000 1dy vars 1 uwnd 1 99 u-wind endvars
八. 批处理和脚本语言(S) — 内部函数
GrADS 脚 本 程 序
LASG动力论坛版
7
数学函数
abs, log, log10 sin, cos, tan asin, acos, atan2 math_abs, math_log, math_log10 math_sin, math_cos, math_tan math_asin, math_acos, math_atan math_sinh, math_cosh, math_tanh math_asinh, math_acosh, math_atanh math_pow, math_sqrt, math_exp math_nint, math_int math_fmod, math_mod
LASG动力论坛版
6
八. 批处理和脚本语言(S)—变量/数组/运算符示例
脚本程序变量类型的“随意”性
yr = 2006 mon = ‘Feb’ day = 13 hr = ‘14:00’ yr = yr + 1 day = day + 10 tchar = hr % ‘Z’ % day % mon % yr say tchar
LASG动力论坛版
1
GrADS实用绘图
第五讲 脚本编程/图形保存
=Funny @ LASG动力论坛=
— 2007年8月22日—
版权所有, 欢迎传播, 请保持文档完整性
LASG动力论坛版
2
内容提要
请注意标记♥♥♥的地方
第 五 讲
一. 引言 二. GrADS绘图软件包安装 三. 运行GrADS绘图软件包 四. 图形显示(D)1 — 格点绘图 五. 数据准备(Gr) 六. 图形显示(D)2 — 站点绘图 七. 数据分析(A) — 函数的使用 八. 批处理和脚本语言(S) 九. 图形保存和转换
数据格式转化
%d %o %x %u %c %s %f %e %g
math_format(format,expr)
以带符号的10进制形式输出整数(正整数无符号), 以8 进制无符号形式输出整数(不输出前导符0), 以16 进制无符号形式输出整数(不输出前导符0x), 以无符号10进制形式输出整数, 以字符形式输出,只输出一个字符, 输出字符串, 以小数形式输出单, 双精度数,隐含输出6 位小数, 以标准指数形式输出单, 双精度数,数字部分小数位数为6 位, 选用%f 或%e 格式中输出宽度较短的一种格式,不输出无意义的0.
res = write(filename, record, { | append } ) res: 状态值 =0 OK =1 打开错误 =8 文件为read打开 res = close(filename) res: 状态值 =0 OK =1 文件未打开
LASG动力论坛版
11
八. 批处理和脚本语言(S) —控制语句
LASG动力论坛版
八. 批处理和脚本语言(S)
— 脚本编程关键运算范例 范例2-相应的.ctl文件
15
范例2-格式转换
‘sdfopen uwnd.2000.nc’ ‘set gxout fwrite’ ‘set fwrite uwnd.500.feb1.bin’ ‘set lev 500’ ‘set time 1feb2000’ ‘set x 1 144’ * 缺省维数是 1~145 ! ‘set y 37 73’ * 取北半球 ‘d uwnd’ ‘disable fwrite’
下拉菜单
‘set dropmenu fc bc oc1 oc2 tfc tbc toc1 toc2 bfc bbc boc1 boc2 soc1 soc2 thick ’ ‘draw dropmenu #widget[0~64] xc yc width height text ’
对话框
‘set dialog #strcol #fcol #bkcol #linecol #thk { | numeric | n }’ ‘q dialog { | xc yc width height } { prompt_string | prompt_and_initial_string }’ say result
绝对值, 对数 三角函数 反三角函数 双曲函数 反双曲函数 幂函数 平方根, e的幂 最接近整数, 截去小数 余数
LASG动力论坛版
8
res = functionname(args) ;
* res为函数值
math_abs(expr), math_log(expr), math_log10(expr) math_sin(radian), math_cos(radian), math_tan(radian) math_asin(expr), math_acos(expr), math_atan(expr) math_sinh(radian), math_cosh(radian), math_tanh(radian) math_asinh(expr), math_acosh(expr), math_atanh(expr) math_pow(expr, exponent) math_sqrt(expr), math_exp(expr) math_nint(expr), math_int(expr) math_fmod(expr1,expr2), math_mod(expr) math_strlen(string) strlen(string) valnum(string) wrdpos(string,int) sublin(string,n) Subwrd(string,n) substr(string,start,length)
LASG动力论坛版
பைடு நூலகம்
12
八. 批处理和脚本语言(S) — 菜单控件
按钮 橡皮擦
‘set rband #widget[0~64] { box | line } x1 y1 x2 y2 ’
-1 表示‘on’状态;0 表示‘off’状态.
‘set button 1 bcol1 bcol2 bcol3 0 fcol1 fcol2 fcol3 thickness’ ‘draw button #widget[0~64] x y width height string’ ‘redraw botton #widget[0~64] { 0 | 1 }’
LASG动力论坛版
13
八. 批处理和脚本语言(S) —脚本编程
(回顾 )
• GrADS批处理 / 脚本程序的异同 • 变量/ 数组/ 运算符 • 内部函数 数学/ 字符/ 格式转换/ 文件操作 • 控制语句
if选择/ while循环/ 终端交互/ 菜单控件 ♥♥♥ 最关键的运算: % , 而 % 常常省略! “拼装”命令, 实现我们需要的功能
在%后和格式字符d、o、x 等之间可插入以下附加符号:
l(L) 用于长整型整数,可加在d, o, x, u 前面, m (正整数m)数据最小的宽度, .n (正整数n)对实数输出n 位小数, 对字符串截取n 个字符, - 输出的数字或字符串在域内向左靠.
LASG动力论坛版
10
八. 批处理和脚本语言(S) —文件操作函数
读文件 写文件 关闭文件 res = read(filename) res = write(filename,record,{ res = close(filename) | append } )
res = read(filename) line1= sublin(res, 1) line2 = sublin(res, 2) 第一行: 状态值 =0 OK =1 打开错误 =2 已到文件结尾 =8 文件为write打开 =9 I/O错误 第二行: 读入的文件内容
LASG动力论坛版
14
八. 批处理和脚本语言(S)
— 脚本编程关键运算范例 范例1
-续行/交互/if块/命令发送
a = ‘set rbcols’ b = ‘9 14 4 11 5 13 3 10 7 12 8 2 6’ c = ‘6 2 8 12 7 10 3 13 5 11 4 14 9’ ab1 = a % ‘ ’ % b ab2 = a ‘ ’ c say ‘1) ’ % ab1 say ‘2) ’ % ab2 prompt ‘ Enter 1 or 2 to run the cmd: ’ pull args if ( args = 1 ) ab1 * 在此作为一个命令发送 endif if ( args = 2 ) * 没有 elseif ! ab2 endif
脚本程序变量类型的“不随意”性
注意:
1.全局变量不可作为 mon = mon + 1 k=1 var.k = 2006 n = ‘01’ var.n = var.n + 1 n=n+0 var.n = var.n + 1 * 错误! * var.1 * 错误! * 正确! * 正确!
自定义函数的参数! 2.数组下标引用!
pow, sqrt 取整 求余
字符串处理函数
math_strlen, valnum, wrdpos, strlen sublin, subwrd, substr
数值格式转换函数
math_format
文件操作函数
read, write, close
八. 批处理和脚本语言(S) —数学/字符函数
脚本函数使用
LASG动力论坛版
3
八. 批处理和脚本语言(S)
本节内容提要
• 基本概念 • 变量/ 数组/ 运算符 • 函数 • 脚本编程
–控制语句
LASG动力论坛版
4
八. 批处理和脚本语言(S) — 基本概念
基本概念
GrADS批处理 GrADS命令的集合 ♥♥♥ 脚本程序 1. 脚本变量的运算 2. “GrADS命令”的运算 ♥♥♥
while 循环块 终端交互/Debug
say string prompt string pull args while ( …… ) …… { break | continue } …… endwhile
if 选择块
if ( …… ) then …… else …… endif
菜单控件
按钮 橡皮擦 下拉菜单 对话框
.
数组
“假”数组 ‘define va’ i ‘=…’
v i =…; v j =…; _v k =… 数组下标可以任意, 如 i=‘a#$xx’ 引用需 v.i 的形式, 而不能 v.a#$xx 数学 + - * / 逻辑 | & = != > < >= <= ! 字符连接 % ♥♥♥
.
♥♥♥
.
.
运算符
1. 引用GrADS命令必须使用 ‘’ 2. 顶格 为注释, ; 为一行结束 3. 不可使用tab键
{exec| run} batch.gs run script.gs
使用脚本编程规则
八. 批处理和脚本语言(S) — 变量/数组/运算符
GrADS 脚 本 程 序
LASG动力论坛版
5
变量
定义变量 全局变量 abbrev.#file(dimexpr,dimexpr,...) 逻辑变量 abbrev.#file(stid=‘...’) 定义变量 ‘define va = vwnd 2 ’ 预定义变量 变量类型 预定义变量 lat, lon, lev, time (向量/矩阵变量) 变量引用方式 t=1 _global = 1 TRUE = 1; FALSE = 0 result, rc “随意/不随意” ♥♥♥
字符串长度 字符串长度 字符串类型, =0非数据, =1整数, =2非整数 第int个单词的开头字符 取第n行 取第n个单词(单词间以空格为分隔符 自第start个字符开始, 取length个字符
LASG动力论坛版
9
八. 批处理和脚本语言(S) — 格式函数
例见: script_math_demo.gs
范例2-多个undef值的处理
1. 对缺测为ud2的变量old2: ‘define new=const(old2, ud1,-u)’ 并fwrite输出; 2. 新.ctl中说明: undef ud1
dset uwnd.500.feb1.bin title Feb.1 2000 500hPa u-wind undef 32766 xdef 144 linear 0 2.5 ydef 37 linear 0 2.5 zdef 1 levels 500 tdef 1 linear 1feb2000 1dy vars 1 uwnd 1 99 u-wind endvars
八. 批处理和脚本语言(S) — 内部函数
GrADS 脚 本 程 序
LASG动力论坛版
7
数学函数
abs, log, log10 sin, cos, tan asin, acos, atan2 math_abs, math_log, math_log10 math_sin, math_cos, math_tan math_asin, math_acos, math_atan math_sinh, math_cosh, math_tanh math_asinh, math_acosh, math_atanh math_pow, math_sqrt, math_exp math_nint, math_int math_fmod, math_mod