当前位置:文档之家› GrADS绘图与编程(值得收藏)

GrADS绘图与编程(值得收藏)

16
二、文本格式数据
GrADS格式
现有如下资料: 名称: U850,V850,U200,V200,H500 和TSFC 范围: 60~150E,0~40N 分辨率:2.5×2.5 时间: 1982年1月~1985年12月的逐月资料。
如何将上述资料写成GrADS下的数据格式?
lon) y (或lat) z (或lev) t (或time)
从西向东的水平坐标 从南到北的水平坐标 从地面到高空的垂直坐标 时序坐标。
如 : set lon 40 160 ;set lat 0 60 定义了水平变化范围 set lat 30;set lon 0 180 定义了沿30N的纬向变化范围 set time jan81 dec94 定义了从81年1月到94年12月的时段
z
(X,Y) (X,Y)
v
t
• T=1 • T=2 • T=3
U V H T
U200
分(z)
时(v)
5月20日(t)
秒(x,y)
18
FORTRAN源程序
Parameter(ii=37,jj=17) Real var(ii,jj) Open(1,file=„u850.dat‟) Open(2,file=„v850.dat‟) Open(3,file=„u200.dat‟) Open(4,file=„v850.dat‟) Open(5,file=„h500.dat‟) Open(6,file=„tsfc.dat‟)
7


• GrADS 是Grid Analysis and Display System的缩写,它由美国马里兰大学气象 系Brian E. Doty开发。利用该系统可实现 包括格点数据和站点数据的彩色气象图 形分析和显示。具有操作简便、功能丰 富、图形美观、显示快速的特点。在国 内外气象界得到广泛应用。 • 版本:V1.5, V1.6.8, V1.7.7,V1.7.9等
8


1、将系统软件拷入硬盘某一子目录 下,如:c:\grads
2、修改autoexec.bat文件,加上 path c:\grads;%path% set gaddir=c:\grads set gascrp=c:\grads
9
GrADS 软件包的组成
• • • • • • • • Grads.exe Dos4gw.exe Gribmap.exe Gribscan.exe Gxtran.exe Stnmap.exe Wgrib.exe Gv.exe
11 8.5
11
所需预备知识
DOS和Windows基础 FORTRAN编程 WORD基础
学习要求
强调上机编程实践
12
第二章 GrADS 数据格式
• 目标 (1)能将文本格式数据转为GrADS格式
(2)能写出数据描述文件(*.ctl)
重要概念
一、维数环境的概念
1、含义:GrADS视每一个变量(VAR)场为一个四维数据集, 即包括三维空间(x,y,z)和一维时间(t)。 2、作用:说明和指定随后的分析或图形操作时参加的原 始数据集的维数范围。 3、定义方法: Set lat|lon|lev|time val1 <val2> 地球坐标 Set x|y|z|t val1 <val2> 格点坐标 13
100 continue 200 continue 1000 format(2i7) 2000 format(37f6.2) 3000 format(37f8.1) 4000 format(37f7.2) end
三、数据描述文件
Data.ctl 文件内容:
Dset data.grd Undef –9.99e+33 Title Ncep/Ncar reanalysis project Xdef 37 linear 60 2.5 Ydef 17 linear 0 2.5 Zdef 2 levels 850 200 Tdef 48 linear jan1982 1mo Vars 4 U 2 99 u wind (m/s) V 2 99 v wind(m/s) H 1 99 H500 T 1 99 Tsfc data endvars
24
有1may92.dat,2may92.dat,…..等数据文件,需用一个共同的描述文件, 这时的CTL文件可写为: Dset %d1%mc%y2.dat ….. Options template …… Tdef 72 linear 0z1may92 1 dy 其中:%y2:2位数年;%y4:4位数年;%m1:1或2位数月;%m2:2位数 月;%mc:3个字符的月份英文缩写;%d1:1或2位数天;%d2:2位 数天;%h1:1或2位数小时;%h2:2位数小时 5、xdef number linear start inc 或 xdef number levels <value-list> 设置网格点与经度的对应关系。其中number是x方向网格点数, linear或 levels表明网格点映射类型, start起始经度, inc格距大小, value-list表示X方向各格点的列表。
文本格式数据源
Open(9,file=„data.grd‟,form=„unformatted,access=„direct‟,recl=ii*jj*4)
Irec=1 Do 200 iy=1,4 Do 100 m=1,12 Read(1,1000) Read(1,2000) ((var(I,j),I=1,ii),j=1,jj) Write(9,rec=irec) ((var(I,j),I=1,ii),j=1,jj) Irec=irec+1
GrADS绘图与编程
图例1 1月份500hPa位势高度场
2
图例2 500hPa高度场(1、4、7、10月)
3
图例3 亚洲季风区7月850hPa流场图
4
图例4 SST和Sea Level分布图
5
图例5(130E,25N)处的感热和潜热的时间演变
6
第一章
★ ★ ★ ★ ★ ★
概述
简介 GrADS的安装 GrADS软件的组成 GrADS的启动和退出 所需预备知识 学习本课程的要求
以下详细说明数据描述文件中各记录的含义: 1、DSET data-set-name 给定二进制原始数据文件的文件名(可包含路径),若数据 文件与描述文件在同一路径下,可用省缺路径符号“^”代表。
23
2、title string 用字符串string简略描述数据文件的内容。 3、undef value 定义缺测值,GrADS在运算操作时和图形操作时将忽略这些格点。 4、options <keywords> <keywords>可以是 <yrev><zrev><sequential><byteswapped><big_endian><little_endian ><template> 其中:sequential表示数据是以顺序无格式形式存放,每个记录为一 个(x,y)场;yrev表示 y维数方向与 ydef中说明的方向相反,即为由 北到南; zrev表示 z维数方向与 zdef中说明的方向相反,即为由 上到下;byteswapped表示二进制数据的位存放顺序取反序; big_endian和 little_endian不同机器之间二进制位存放顺序的自动 改变; template表示 多个时间序列原始数据文件共用一个数据描 述文件。例如:
15
说出下列维数环境的含义
Set lon 60 150 Set lat 0 30 Set t 7 Set lev 200
Set lat 30 Set lon 60 130 Set t 1 12 Set z 1
Set lon 120 Set lat 30 Set z 1 12 Set t 1
Set lon 60 150 Set lat 0 30 Set t 1 12 Set lev 200
关键词:如dset, undef, title,xdef ,ydef 等
被描述的数据文件名
缺测标记 标题
起始值
确定维数环境 间 隔 指定变量名 层次数
22
数据描述文件一般包含以下几项: (1)被描述的数据文件名(DSET) (2)该数据说明文件的标题(TITLE) (3)数据类型、格式和选项(DTYPE ,FORMAT,OPTION) (4)时间、空间维数环境设置(XDEF,YDEF,ZDEF,TDEF) (5)变量定义(VARS,ENDVARS)
25
6、ydef number mapping start inc 或 ydef number levels values-list 设置Y方向格点与纬度的映射关系。其中number为Y方向的格点数, mapping表示映射方式,有: Linear:线性映射 Gausr15:高斯R15纬度,Gausr20,gausr30,gausr40等 对于线性映射linear,start 为起始纬度,inc为Y方向格距。 对于高斯映射,start为第一高斯网格数。 对于levels映射, value-list为Y方向取值表 7、zdef number linear start inc 或 zdef number levels value-list 设置气压面与垂直网格点的映射关系。如: Zdef 10 linear 1000 –100 Zdef 10 levels 1000,925,850,700,600,500,400,300,200,100
无格式,直接记录
Read(3,1000) Read(3,2000) ((var(I,j),I=1,ii),j=1,jj) Write(9,rec=irec) ((var(I,j)I=1,ii),j=1,jj) Irec=irec+1 Read(2,1000) Read(2,2000) ((var(I,j),I=1,ii),j=1,jj) Write(9,rec=irec) ((var(I,j)I=1,ii),j=1,jj) Irec=irec+1 Read(4,1000) Read(4,2000) ((var(I,j),I=1,ii),j=1,jj) Write(9,rec=irec) ((var(I,j)I=1,ii),j=1,jj) Irec=irec+1 Read(5,1000) Read(5,3000) ((var(I,j),I=1,ii),j=1,jj) Write(9,rec=irec) ((var(I,j)I=1,ii),j=1,jj) Irec=irec+1 Read(6,1000) Read(6,4000) ((var(I,j),I=1,ii),j=1,jj) Write(9,rec=irec) ((var(I,j)I=1,ii),j=1,jj) Irec=irec+1
相关主题