GrADS站点文件作图详细解决方案
GrADS实用绘图--基本操作
• 关闭数据文件
ga-> close 3 ↵ ga-> close 2 ↵ ga-> close 1 ↵
文件打开从1 开始依次编号, 文件关闭时先 关闭序号最大 的文件
26
LASG动力论坛版
三. 运行GrADS绘图软件包
• 设置维数环境
ga-> set x 1 73 ↵ ga-> set lat -20 60 ↵ ga-> set lev 850 ↵ ga-> set time 00z01Apr2007 ↵
♥♥♥
18
LASG动力论坛版
二. GrADS绘图软件包的安装
• Windows下的安装(2)
– 设置环境变量 ♥♥♥ “我的电脑”右键菜单 属性 高级 环境变量
• 新建变量 GASDIR c:\PcGrADS\dat GASCRP c:\PcGrADS\lib GAUDFT c:\PcGrADS\udft\udft.list • 修改PATH变量, 增加路径 c:\PcGrADS\win32;c:\PcGrADS\lib;c:\PcGrADS\dat;
8
LASG动力论坛版
一. 引
• GrADS实用文档
言
– LASG编 《GrADS实用手册》 ♥♥♥ 中文, 较全面, 可用来自学 – GrADS reference card 英文, 绘图命令和函数速查 – GrADS scripting language reference card 英文, 脚本语言语法速查 – GrADS Documentation Index 联机英文索引, 最全面
12
LASG动力论坛版
二. GrADS绘图软件包的安装
• 操作系统
基于GRADS和GIS的离散站点绘图技术研究与实现
批 处理 操作 。该 软件 具有 操作 简单 、 能强 大 、 功 显示 快 速 、 图类 型 多样 化 、 出 图形 美 观 等 特 点 , 同时 兼 具
有 多种 地 图投影 坐标 系统 , 经成 为 国 内外 气 象 数 已
气 象离 散站 点二 进制 文 本 数据 一 般 包 括 “ 号 站 经度 纬度 要 素” 内容 , 等 格式 如下 :
5 08 1 3. 5 3 73 2 7 3 1 4 4. 4 57 81 1 3. 5 3 7 3 0 1 5 3. 3 4
有 机结 合起 来 , 构建 离散 站 点 的绘 图 系统 , 为公 众气 象 服务 、 策气 象服 务提 供更 有针 对性 的产 品 , 决 可有 力 地支 撑气 象 防灾减 灾业 务 。
收 稿 日期 :0 1—1 21 2—1 ; 订 日期 :0 2— 3— 3 9修 2 1 0 2
将文 本按 照如 下数 据格 式读取 并 写入二 进制 文
作 者 简 介 : 学 峰 (9 9 , , 东 菏 泽 人 , 程 师 , 士 , 要 从 事 台 风 降 水 预 报 技术 研 究 . — i: sx@16 tm 范 17 -) 男 山 工 学 主 Ema l tf 2 .o la f
1 研 究 思 路
研究 开发 该 系统 遵 循 设计 模 块 化 、 程序 维 护 简
单、 用户使 用方 便 等原 则 。研 究开 发 时根据 G A S RD 、 G S的 自身 功能 , 托 c +B i e 编 程工 具 将 两 者 I 依 + ul r d 有机 结合 起来 。具 体思 路如 下 :
范 学峰 ,席世 平
GrADS实用绘图--站点图 函数使用
存放在 系统变量 result中
16
六. set gxout其它选项(D)2—print / fwrite
输出格式
set prnopts format(%g) line_n(8) blank_n(1) { |u}
LASG动力论坛版
数据写屏输出 set gxout print binary数据输出 set gxout fwrite
• 注意点
♥♥♥
– 为避免插值出现虚假结果, 参考网格的间隔与站点 间距相近为好; – 具体情况具体分析, 并不一定Cressman函数更好!
12
LASG动力论坛版
六. 图形显示(D)2
• 变量定义技巧
— 站点绘图扩展
♥♥♥
– define命令只适用于格点数据; – 在当前缺省文件为格点数据时, 可以用define 命令将站点数填色(马赛克图) stat 按set fgvals指定值填网格颜色 print 网格填值 fwrite
findstn 寻找最近的站点 model 站点填图 stnmark 标记站点位置 value 标站点值
tserbarb 单站的风羽时间序列 tserwx 单站天气现象时间序列 wxsym 在站点上标记天气符号(set wxopt)
天气符号颜色
set wxcols #c1 #c2 …
字符大小
set digsize #inch
粗 细
set cthick #thick
颜 色
set ccolor #color
u,v,t,d,slp,Δp: 风,温度,露点,地面气压,变压 cloud: [1~9] 标记的类型, [20~25]云量: 20晴, 21少云, 22中云, 23多云, 24阴; 25缺测(M)
GrADS画图入门
命令:query dims
ga-> q dims Default file number is: 1 X is varying Lon = 100 to 150 X = 1 to 101 Y is varying Lat = 0 to 40 Y = 1 to 81 Z is fixed Lev = 1000 Z = 1 T is fixed Time = 00Z19JUL2005 T = 1
• 3、图形显示类型及绘图设置:
(1)一维:直方、折现、散点、误差图....(excel 2003) (2)二维:标量场——等值线、阴影图 矢量场——风矢量、流线图 站点—— (3) draw line/string/title/mark……
标量场分析
1. 等值线
2. 阴影图 1. 等值线
设置 set gxout contour
Outline
• 1、grads功能概述(不讲) • 2、Grads数据准备:
(1)ncep资料的直接读取 (2)mm5out_to_Grads,wrfoutput_to_grads (3)二进制格点数据dat的生成和数据描述文件ctl作用 (4)站点数据的准备以及站点图形的绘制
• 3、图形显示类型及绘图设置:
ga-> q files File 1 : TC0801-StrkPro024 2008041714 Descriptor: strike024_041714.ctl Binary: strike024_041714.dat File 2 : TC0801-StrkPro024 2008041720 Descriptor: strike024_041720.ctl Binary: strike024_041720.dat
GrADS绘图学习技巧与实例
以下技巧总结都是笔者从学习实践过程中总结出来的,基本的问题。
不求全面,希望对读者学习有用,如果有问题,敬请留言指正,以促进交流学习!1、软件综述:grads软件是一款绘图软件除了绘制图形,还可以提取数据,主要应用是在大气科学中,当然只要是数据处理成grads能够读取的数据文件就可以进行相关绘图。
软件版本问题,软件本身不是很大,我接触到1.8、1.9、2.0版本的,1.8版本的安装很多情况还要修改环境变量、1.9版本的不识别‘sdfopen’命令,最稳定的版本是2.0版本,所以笔者推荐学习者安装2.0版本,选择默认安装路径就可以。
2、文件类型简述:grads处理的是网格数据,可以处理的数据类型有:grd、grib、nc(海洋常用的数据),cdf(雷达卫星数据),其中nc、cdf数据都是自带描述文件,不需要ctl,grib数据要通过命令生成ctl、index数据才可以调用,常用的是grd数据,需要ctl。
3、数据文件转换:grads软件识别的数据是二进制无格式数据,文件类型是‘binary’,写入和生成时是不需要格式的如read(20) sst(i,j,iz,it),20为文件号,通常是十进制数据与grd数据间转换,这里给一个grd转换成txt数据的fortran程序:parameter(nx=56,ny=41,nz=1,nt=360)dimension sst(nx,ny,nz,nt)real sstopen(15,file='sst.grd',form='binary') !固定的用form=‘binary’就是二进制数据open(16,file='sst.txt') !新建txt文件do it=1,ntdo iz=1,nzread(15) ((sst(i,j,iz,it),i=1,nx),j=1,ny) !read后只有文件号,数据是无格式的enddoenddodo it=1,ntdo iz=1,nzwrite(16,*) ((sst(i,j,iz,it),i=1,nx),j=1,ny) !输出时是txt文件可直接看的数据,有格式输出,有*enddoenddoclose(15)close(16)end写程序时:注意格点数要与数据对应,如:上程序对应的数据是经度90~200,纬度-20~60,时间:1971.01~2000.12共360个月的海面温度数据,数据格点精度2*2 ,nx=(200-90)/2+1,ny=(60-(-20))/2+1,nt=360,nz=1,大气的数据要根据数据的层次确定几层。
第二讲GrADS绘图的各种设置
draw xlab string draw ylab string 分别在水平坐标轴或垂直坐标轴左侧写字符串
string,作为x轴或y轴的说明。
set annot color <thickness> 设置上述图注所用的颜色和线宽,缺省为白色,
线宽为6,该命令同时设置了坐标轴线以及刻 度的颜色和线宽,坐标刻度和标尺的线宽为图 注设置的线宽再减1。
例:draw title Geopotential Hight (October 2010)
set xyrev on 交换水平和垂oj 设置当前地图投影方式。
常用proj取值包括: latlon:缺省设置,用固定的投影角进行Lat/lon投影
; scaled:用不固定的投影角进行latlon投影,地图比例
失效; nps | sps:北半球|南半球极地投影; robinson:robinson投影,x:-180 180;y:-90 90 off:不画出地图,坐标轴也不代表lat/lon。
(缺省时即按数据描述文件的维数进行绘图。)
特别地, 当数据文件为全球多层次多时次资料时,例如全球
144*73*12的多时次资料,缺省时维数为x、y方向为 (0-360E,90S-90N),z方向和t为第一个点。
GrADS最擅长画2-D图,即全球数据的缺省维数。
维数说明分为两类:
set lon | lat | lev | time val1 <val2> set x | y | z | t val1 <val2> 两者对应于同一组数据,前者是地球坐标
set grid on|off|value|horizontal|vertical <style> <color>
GrADS绘图软件使用手册
GrADS绘图软件实用手册2002年1月目录第一章 GrADS绘图软件概述1.GrADS绘图软件简介2.Internet上的GrADS资源2.1GrADS在Internet上的主页2.2 windows环境下GrADS资源3.GrADS绘图软件的安装(windows环境)3.1在windows环境下安装GrADS软件包3.2X server 的安装第二章 GrADS绘图模板1.GrADS示例演示1.1 启动GrADS1.2 退出GrADS1.3 示例演示GrADS命令的使用2.GrADS绘图模板3.GrADS模板的高级应用3.1GrADS描述语言3.2GrADS高级模板的应用第三章 GrADS数据格式1.格点数据描述文件1.1 数据描述文件各项解释1.2 生成model.le.dat和model.le.ctl文件的程序代码片段2.站点数据的格式附录1.如何精确控制图形输出的尺寸—Landscape纸型2.台站资料的显示3.Linux环境下的安装第一章 GrADS绘图软件概述1GrADS绘图软件简介The Grid Analysis and Display System(GrADS) 是一套应用广泛、使用方便的科学数据绘图软件包。
其主要特点:z GrADS属于自由软件,可以从Internet上免费获得。
z可运行于各种Windows 和Unix工作平台。
z GrADS可用于4D数据的分析。
既经度、纬度、层(气压层、高度层等)和时间/xyzt 4维。
数据可以是格点化的数据或离散点数据。
GrADS特别适用于气象类数据的分析。
但也完全可以用于更广泛类型的数据分析。
z GrADS有多种显示方式:等值线、流线、矢量图、风矢量图、站点填图、折线图、直方图等多种两维图形。
z可处理多种数据格式的数据。
GRIB、NetCDF、HDF-SDS等通用数据格式和系统自定义的一种二进制数据格式。
z采用命令行输入的方式交互式地显示图形。
GrADS实用绘图(基5)
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(exexpr) 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)
res = write(filename, record, { | append } ) res: 状态值 =0 OK =1 打开错误 =8 文件为read打开 res = close(filename) res: 状态值 =0 OK =1 文件未打开
LASG动力论坛版
11
八. 批处理和脚本语言(S) —控制语句
GrADS实用绘图--图形显示
• 改变维数环境
‘set ‘set ‘set ‘set x 1 10’ y 1 10’ z 6’ t 15’ ‘set lon 120 180’ ‘set lat -20 20’ ‘set lev 500’ ‘set time 00z01jan2007’
3
LASG动力论坛版
四. 图形显示(D)1
本节内容提要
• 基本概念
– 数据文件 – .ctl文件 – 维数环境
— 格点绘图
• 内建图形样式及其定制
– 1-D序列图 – 2-D平面图 – 定制
• 自由图形 • 动画*
4
LASG动力论坛版
四. 图形显示(D)1
基本概念
– 数据文件 – 数据描述文件*.ctl
• 绘图区范围设置
ga-> set parea 1 10.5 1 8
9
LASG动力论坛版
四. 图形显示(D)1
— 实现一页多图
• 将画布分成几个小的虚页
panels_demo.gs ~ 各虚页相对独立, 不能跨虚页作图写字符
• 在一个虚页上设置多个绘图区
pages.gs
• 设置绘图窗口尺寸
‘set xsize x y’
7
LASG动力论坛版
四. 图形显示(D)1
内建图形及其定制
– 布局/ 一页多图
• 画布/ 虚页/ 绘图区大小
— 格点绘图
命令顺序 set display draw print
– 图形类型
• 等值线/ 填色/ 流线/ 风矢/ 站点/…
– 图形要素
• • • • • 标题/ 标值 坐标和坐标轴 线型/颜色/标记 字符/天气符号 地图底图 / 投影方式 / 分辨率
Grads站点资料的多层次绘图
Grads站点资料的多层次绘图看了很多关于如何使用grads和fortran转换站点资料的帖子,大多数都集中在地面或者单层的,对于高空的多个层次很少有提到,而且大多数有些模糊,不好理解,我把自己做的一些整理传上来,供大家参考参考。
欢迎大家指出理解和程序的错误。
一,首先是数据的说明选用micaps高空观测资料850hpa,700hpa,600 hpa,500hpa,200hpa,100 hpa 六个层次作为例子。
为了方便,时间层次就选择1个时间。
micaps高空观测资料的说明如下:diamond 2 10年07月28日20时200百帕高空观测10 07 28 20 200 419因此定义mt=419,nz=4数据每行的排列分别是:站号,经度,纬度,高度……..具体详见micaps 的使用手册,这里不再赘述。
根据这些定义变量。
二,fortran读取站点资料注:1.根据micaps的高空资料定义相应的变量,由于850-100这6个层次的站点是相同的,站号,经纬度等只需定义成一维的,如lat(mt),而lev(nz)表示有6个层次,也为一维;高度场等又有mt个站的资料又有nz个层次,因此定义为2维的。
2.由于micaps资料分别在不同的文件内,文件名重复,我修改为100_2820,200_2820,500_2820…….然后使用trim函数顺序读取资料。
3.为了更好的说明地面和高空资料的读取,将地形高度high(mt)设置为地面的量,nlev定义为7,即高空六层,地面一层4.以输出地面一个变量,高空三个变量为例。
先进行站点的循环,再进行高空层次的循环。
5.前面我们定义了lev(nz),现在给lev(nz)赋值,使用select case.,分别赋值为850,700,600,500,200,100。
在使用是发现如果不进行赋值,后续工作也无法进行,会出现错误。
程序如下:program stationparameter (mt=419,nz=6) ! mt 总站数,nz总层次character stid(mt)*8integer flag,nlevreal lat(mt),lon(mt),tim,high(mt),number(mt),lev(nz) realheight(mt,nz),temp(mt,nz),ttd(mt,nz),ud(mt,nz),us(mt,nz),u(mt,nz),v(m t,nz),td(mt,nz)!顺序读取资料character stationfile(6)*8data stationfile/'850','700','600','500','200','100'/do k=1,nzopen(k,file=''//trim(stationfile(k))//'_2820.000')read(k,*)read(k,*)!跳过micaps开头两行的说明文字do i=1,mtread(k,*)stid(i),lon(i),lat(i),high(i),number(i),height(i,k),temp(i,k ),ttd(i,k),ud(i,k),us(i,k)end doend do !结束k的循环tim=0.0flag=1nlev=7 !高空+地面open(40,file='20.grd',form='binary')do i=1,mt !站点循环write(40)stid(i),lat(i),lon(i),tim,nlev,flag,high(i)do k=1,nz !高空循环!对lev(nz)进行赋值select case(k)case(1)lev(k)=850.0case(2)lev(k)=700.0case(3)lev(k)=600.0case(4)lev(k)=500.0case(5)lev(k)=200.0case defaultlev(k)=100.0end select!在lev(k)后将要输出的所有高空变量一次性输出write(40)lev(k),height(i,k),temp(i,k),ttd(i,k)end doend donlev=0write(40)stid(mt-1),lat(mt-1),lon(mt-1),tim,nlev,flag close(40)end三,ctl及map文件的生成注:看到相关帖子说在站点资料的ctl文件中也要设置zdef,我试了下,设置和不设置都是可以的Ctl文件如下:dset f:\20.grddtype stationstnmap f:\20.mapundef 9999.0title 20zdef 6 levels 850 700 600 500 200 100tdef 1 linear 28jul2010 1DYvars 4high 0 99 Terrain Heighth 6 99 heightt 6 99 temperaturettd 6 99 ttdendvarsCtl文件编写完成后,就可以在grads中生成map文件了,相关命令如下:! stnmap -i f:/20.ctl注意,斜杠一定是“/”,方向不能反第三步结束后,站点资料的读取就结束了,可以通过grads打开Ctl文件看到相关站点的值了。
GrADS绘图学习技巧与实例(阿木)
以下技巧总结都是笔者从学习实践过程中总结出来的,基本的问题。
不求全面,希望对读者学习有用,如果有问题,敬请留言指正,以促进交流学习!(笔者:阿木)1、软件综述:grads软件是一款绘图软件除了绘制图形,还可以提取数据,主要应用是在大气科学中,当然只要是数据处理成grads能够读取的数据文件就可以进行相关绘图。
软件版本问题,软件本身不是很大,我接触到1.8、1.9、2.0版本的,1.8版本的安装很多情况还要修改环境变量、1.9版本的不识别‘sdfopen’命令,最稳定的版本是2.0版本,所以笔者推荐学习者安装2.0版本,选择默认安装路径就可以。
2、文件类型简述:grads处理的是网格数据,可以处理的数据类型有:grd、grib、nc(海洋常用的数据),cdf(雷达卫星数据),其中nc、cdf数据都是自带描述文件,不需要ctl,grib数据要通过命令生成ctl、index数据才可以调用,常用的是grd数据,需要ctl。
3、数据文件转换:grads软件识别的数据是二进制无格式数据,文件类型是‘binary’,写入和生成时是不需要格式的如read(20) sst(i,j,iz,it),20为文件号,通常是十进制数据与grd数据间转换,这里给一个grd转换成txt数据的fortran程序:parameter(nx=56,ny=41,nz=1,nt=360)dimension sst(nx,ny,nz,nt)real sstopen(15,file='sst.grd',form='binary') !固定的用form=‘binary’就是二进制数据open(16,file='sst.txt') !新建txt文件do it=1,ntdo iz=1,nzread(15) ((sst(i,j,iz,it),i=1,nx),j=1,ny) !read后只有文件号,数据是无格式的enddoenddodo it=1,ntdo iz=1,nzwrite(16,*) ((sst(i,j,iz,it),i=1,nx),j=1,ny) !输出时是txt文件可直接看的数据,有格式输出,有*enddoenddoclose(15)close(16)end写程序时:注意格点数要与数据对应,如:上程序对应的数据是经度90~200,纬度-20~60,时间:1971.01~2000.12共360个月的海面温度数据,数据格点精度2*2 ,nx=(200-90)/2+1,ny=(60-(-20))/2+1,nt=360,nz=1,大气的数据要根据数据的层次确定几层。
利用Grads画站点图(contour、shaded、grfill等)
利用Grads画站点图(contour、shaded、grfill等)1.利用Fortran程序将数据输出为grd格式。
参考程序如下:parameter(num=160) (站点数)character*8 sta(num) (站名名数组,可任意)dimension xlon(num),ylat(num),rc(num) (经、纬度数组及其上对应的数值) open(30,file='cor.grd',form='unformatted') (工作站)open(30,file='cor.grd',form='binary') (微机)do 100 lev=1,20 (共输出20个时间上的观测或结果)tim=0.0ilev=1nflag=1do 10 i=1,numsta(i)=char(i)write(30) sta(i),ylat(i),xlon(i),tim,ilev,nflagwrite(30) rc(i)10 continueilev=0write(30)sta(num),ylat(num),xlon(num),tim,ilev,nflag (每个时次的结束) 100continueclose(30)2.ctl文件(创建与步骤1中输出的站点数据配对的station.ctl文件):dset cor.grdformat sequentialdtype stationstnmap cor.mapundef -9.99e33tdef 20 linear jun1958 1movars 1r 0 99 correlationendvars3.为插值函数准备格点数据grid.grd及对应的grid.ctldset grid.grdundef -99.0xdef 71 linear 70 1ydef 41 linear 15 1zdef 1 linear 1 1tdef 20 linear jun1958 1movars 1g 0 99 grid data prepared for oacres functionendvars注意:两个ctl(station.ct l和grid.ctl)文件中的时间要严格一致。
GrADS利用站点数据画空间等值线分布图
由于很多同志是做业务的,接触的都是站点资料,这里将详细的介绍如何利用站点资料,画出某变量的等值线图。
第一步:站点资料(txt格式,即十进制格式)转成二进制格式GrADS画等值线图是有要求的,即只能画格点上的二进制数据。
首先,将观测资料按如下格式放在txt文件中:第一列为某站点的纬度,第二列为该站点的经度,第三列为该站点某月平均某一个指数,也就是变量,它可以是降水、气温等。
然后,将该数据转换为二进制,使用以下fortran程序:c----------------------------------------------------------c This program is used to change the format of ascii datac into the form of binary ,which is supported by the GrADSc----------------------------------------------------------program mainreal, dimension(160) :: lat, lon, indopen(1,file='d:\drought\index.txt',status='old')do i=1,160read(1,*) lat(i), lon(i),ind(i)enddoclose(1)call stntogrd(ind)endsubroutine stntogrd(x)character*8 stid(160)do i=1,160stid(i)=char(i)enddoopen(3,file='e:\drought\index.grd',form='binary')tim=0.0nlev=1nflag=1do i=1,160write(3) stid(i),lat(i),lon(i),tim,nlev,nflag,x(i)enddonlev=0write(3) stid(i-1),lat(i-1),lon(i-1),tim,nlev,nflagclose(3)returnend于是得到了二进制格式的变量index.grd,接着我们需要给该二进制数据写一个描述性文件如下(新建一个写字板,取名为"index.ctl"):dset d:/drought/index.grddtype stationstnmap d:/drought/index.mapundef -999.0title drought indextdef 1 linear Jul1951 1movars 1ind 0 99 drought indexendvars到此,二进制数据文件的描述文件写完了,然后,在GrADS命令窗口输入命令“!stnmap”如:ga_> !stnmap系统会提示如:“Enter stn ctl filename:” 输入: d:/drought/index.ctl 系统会生成"index.map"文件。
GrADS绘图软件使用手3
GrADS绘图软件使用手3第三章GrADS数据格式每一组GrADS数据应至少包括两组数据文件,数据描述文件—ASCII 码和数据文件—二进制,数据的真正存放地。
数据文件中只是用户数据的有序排放,而关于数据种类、排放次序等是单独放在一个文件中的称—数据描述文件。
而象GRIB和NETCDF等通用数据格式,以上两者是存于同一个文件的—或称为自定义/自解释格式数据。
但考虑到GrADS传统,对这类自定义格式数据仍将生成相应的数据描述文件。
上一章中我们已使用过了这样的一组数据。
以此为例,介绍用户如何按GrADS的格式,将自己的数据生成相应的数据文件和数据描述文件。
1.格点数据描述文件model.le.ctl文件清单:以某开始的行为注解行。
1.1数据描述文件各项解释1.DSET数据文件名定义与此数据描述文件相对应的数据文件名。
若两者位于同一目录,前面的路经可以省略或以“^”开始,代表两者位于同一目录。
若不在同一目录下,应给出路经参数。
如:c:/pcgrad/ample/model.le.dat56注意路经的给法与DOS不同,而与UNI某环境一致,便于移植!或c:\\pcgrad\\ample\\model.le.dat,两种都行。
2.TITLE数据文件说明文字串。
3.UNDEFvaule定义缺测值。
一般给一很大的正/负值,表示,当取值超过这一正值/低于定义的负值,认为该值无效。
(GrADS采用跳过或用周围有效点的值处理。
)4.OPTIONS这里定义了与二进制存储有关的选项,二进制存储的一大特点是可移植性差,因此通过keyword项来增加可移植性。
若keyword省略,则OPTIONS也可省略。
可取:equential:顺序无格式方式。
yrev:Y维与YDEF定义相反方式存放。
zrev:Z维与ZDEF定义相反方式存放。
big_endian:如数据是在un,gi,hpcray机器上生成的,而目前不在此类机器上使用。
气象图形软件应用-GrADS绘图软件的使用
气象图形软件应用——G r A D S绘图软件的使用成都信息工程学院大气科学系巩远发主要内容一、GrADS的一般介绍二、GrADS的数据结构详解三、GrADS数据数据处理和绘图详解四、GrADS绘图编程(脚本)语言第一讲 GrADS的一般介绍什么是GrADS相关的关于GrADS的网络资源启动和退出GrADS最基本的GrADS操作(命令)GrADS使用文件的分类GrADS的主要功能介绍1. 什么是GrADS?G r A D S——Grid data Analysis and Display System 格点数据分析和显示系统GrADS(Grid data Analysis and Display System)是一个全32 位的交互操作的气象格点数据和站点数据的分析和显示环境。
系统具有气象数据分析功能强、地图投影坐标丰富、高级编程语言使用容易、图形显示快速,并具有彩色动画功能等特点。
目前是国内外气象数据显示的标准平台之一。
2. 相关的关于GrADS的网络资源WWW Sites/grads/head.html/home.htmlGrADS论坛动力论坛专业绘图软件格点资料下载http://www.ecmwf.int//cdc/reanalysis/3. 启动和退出GrADSgrads 启动GrADSga-> GrADS的系统提示符help给出GrADS的主要命令quit 退出GrADS4. 最基本的GrADS操作Open :打开一个网格点或站点数据文件供GrADS使用(sdfopen: 打开netCDF数据)Query (或仅用q) :查看当前GrADS环境的各种参数Display (或仅用d) :显示(绘制)一幅GrADS “表达式”的图形Set : 设置绘图的操作方式(包括绘什么图,在那里绘图,怎样绘图……)Clear (或仅用c) : 清除当前显示的图形5. GrADS使用文件的分类数据文件: 二进制无格式记录的原始数据,可以是格点的,也可以是站点的。
GrADS绘图与编程(值得收藏)
由GrADS.exe文件调用 产生格点资料映射文件(*.idx)
看Grib码资料,转为TXT格式文件
显示*.gmf格式的图形文件 产生台站资料的映射文件(*.map)
Grib码资料的解读程序
将*.gmf格式的图形文件转换为*.wmf 格式
10
启动和退出GrADS
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
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
[转]grads中站点处理和oacresmaskout函数应用心得
[转]grads中站点处理和oacresmaskout函数应⽤⼼得SJ 发表于: 2011-1-05 13:22 来源:昨⼉刚刚帮同事画了两张降⽔图(不同时间段的),很是费劲,中间碰到若⼲问题,但好在最后基本达到了满意的效果,下⾯把这次画图中遇到的问题及解决办法贴出来,供⼤家参考或指正:1,数据处理的问题由于micaps的24⼩时降⽔资料中,并不是每个时次的⽂件⾥的站点个数都是相同的,就更不⽤提两个⽂件⾥有完全相同的站点了,这样就给各个站点降⽔的累加处理造成了极⼤的困难(如果⼀开始就有⼈或专门的机构来做这件事,将⼤⼤提⾼科研⼈员的⼯作效率),但本帖不打算过多描述数据处理的情形,因此这个问题就到此为⽌。
2,站点数据中打⽹格和maskout的联系降⽔的站点资料处理完毕并转成grads能识别的⼆进制格式后,就需要给站点数据打⽹格了,这个⽹格是⽤于站点资料差值使⽤的(如果⽤grads,就要⽤格点资料),此时就涉及到要打⼀个什么分辨率的⽹格了,在这次画图过程中,我⼀共打了两个全球⽹格,⼀个是0.1X0.1(细⽹格)的另⼀个是0.5X0.5(粗⽹格)的。
然后按部就班的使⽤了如下的语句:'set mpdset china' * 设定⼀个地图,⽤于只画中国范围内的物理量'define a=oacres(g,tt.2,XXXX)' * 插值函数,把变量tt插值到⽹格g上,其中XXXX代表影响半径'define a1=maskout(a,a-8)' * maskout(n1,n2)⾥第⼀个变量n1是我们要画的物理量,第⼆个变量n2的意思是只画当其值⼤于零时的物理量n1,* 当然n1和n2是⼀⼀对应的,⽽这个例⼦中的意思是,只画物理量a的值⼤于4的部分'define aa=smth9(a1)' * 平滑函数'run province-basemap china aa' * 只画中国范围内物理量下⾯通过格点的分辨率-2种,和oacres中的影响半径做组合实验:(1)粗⽹格+XXXX(50,30,20,10,5,1)见图⼀(2)细⽹格+XXXX(20,10,5,1)见图⼆(3)细⽹格+XXXX(50,30,20,10)见图三(4)粗⽹格+XXXX(50,30,20)50是grads中默认最⼤的数值见图四从这四张图中,可以看到⽐较⼤的差别,这也是我画图时思考的⼀个顺序。
Grads插图处理过程中的一个技巧
!((% , !" 陈庄) 以 7.8 为核心的 01,2 插图处理方法) 科技与出版, (!) : 6! 5 6% %" 杨蓓) 科技期刊插图处理策略分析及实例) 中国科技期刊研究, !((! , *% (%) : !!* 5 !!% 4" 周海英, 陈恩暄, 周菁菁等) 01,2 插图转换前的处理技巧) 中国 科技期刊研究, !((4 , *9 (%) : !3: 5 !33
’& !"#$% 插图处理方法
!"#$% 软件提供了一个具有简单处理功能的 ;=?’ 应用 其中, 后 程序, 该应用程序可以将插图由!: ;0P 转为!: Q0P, 者为 K2>L<Q9 图元文件, 可以 在 K2>L<Q9 环 境 下 方 便 地 打 开, 但这一应用程序的功能常被用户忽视。利用这一应用程 序可以将彩虹颜色绘制的等值线图和阴影图转换为质量较 高的黑白图和灰度图。这就要求作者提供 !"#$% 软件绘制 。 输出的原图 ( !: ;0P) 处理前的等值线彩虹图 ( 如图 +1 所示) 若以彩色图出版 不存在问题, 但以黑白图出版则线条颜色较淡, 而且会出现 断线。利用 ;=?’ 应 用 程 序 中 的 “ 彩 色 或 单 色” 转换按钮 ( 图 ’) , 即可将彩虹颜色的等值线转换为单色 ( 黑色) 等值 线, 而且图中的地形和数字均很清晰 ( 如图 +4 所示) 。同时 还可以利用 ;=?’ 应用程序中将线条由细变粗, 使显示的线 条更加清晰 ( 图略) 。
%" 结束语
科技论文需要以大量的图表来反映其所要论述的内容, 因此提高插图的出版印刷质量是编辑工作中的一项重要内 容, 为了使每幅插图清晰、 美观, 科技期刊编辑付出了大量的 劳动, +,-./ 插图的处理技巧就是其中一个例子。为了打造 精品期刊, 我们在实际工作中必须不断更新自己的知识, 努 力使作者的成果以最佳效果呈现在读者面前。通过对相关 专业的了解和常用软件的应用, 可以使科技期刊质量稳步 提高。 参考文献
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Fortran+GrADS站点作图详解mofangbao@气象家园帖子导读:以前论坛也有过相关的帖子,但是到目前为止,仍然不断的有朋友看了那些帖子之后还是不知道如何下手,于是我打算为纯粹的新手写一份说明,这份文档会非常详细,因此适合刚接触GrADS的朋友来参考。
帖子介绍了fortran文件中读写数据的基本知识,grads的站点文件的存放格式,如何通过fortran来写出这个格式的文件,如何建立站点文件的CTL文件,如何为站点数据生成映射文件,站点映射文件的作用,如何通过站点CTL文件来预览站点数据,如何用fortran生成grads支持的格点文件,如何给格点配置CTL文件,如何编写GS文件来进行插值,如何绘制等值线以及阴影图,如何屏蔽区域外的图形等内容。
如果你对以上问题存在疑惑,希望这个帖子能够对你有所帮助,因此,看完这份文档之后,您应该可以做到这些:(会的就跳过吧,我也是犹豫了很久要不要写的,算是新手礼包的一部分吧)开始之前,先了解站点数据的基本内容一般情况下,我们看到的站点数据是这样的:50353 126.39 51.43 100 8950632 121.55 48.46 100 5450527 119.45 49.13 100 2950434 121.41 50.29 100 4650557 125.14 49.10 100 8350745 123.55 47.23 100 8050756 126.58 47.26 100 7450788 131.59 47.14 100 3650873 130.17 46.49 100 3150978 130.57 45.17 100 59第一列为站号,第二、三列为经纬度,第四、五列为其他数据。
当然,也可能是把经纬度单独存放,然后数据单独存放,比如气候中心免费开放的160站的月平均温度降水值。
如果是micaps资料可以查看micaps用户手册。
这个例子中使用的就是micaps的第三类数据格式,示例文件可以从这里下载:(资料下载)除了了解这些,还必须了解该数据的缺测值用什么来表示,这个在后面的数据描述文件中要用到。
1、在fortran中读入这些资料在使用fortran之前,请确保你已经安装了fortran编译器,如果你是xp系统,建议安装CFV6,如果是win7系统,那么可以安装microsoft fortran powerstation4.0(以下简称4.0),这两个软件在气象资料站均有下载,安装完成后,请在你磁盘的某个文件夹下面新建一个文件夹用于本次作图,如果使用的是CVF6,该文件夹的路径中不要包含中文名。
新建文件夹完成后,从开始菜单打开fortran编程窗口,然后点击file->new,新建一个free format的自由格式fortran文件,4.0的直接建立一个TextFile即可:CVF中新建fortran文件4.0中新建TextFile即可注意:CVF中先选路径和文件名,然后会建立该文件,4.0中直接建立一个临时文件,当你按保存按钮时才会提示你选择保存的路径,如果你之前用4.0的fortran 编译过其他文件,那么请先关闭工作区再新建,从file->close workspace可以关闭。
当然也可以直接建立一个文本文件,然后重命名为sta2grd.f90,记住,要修改后缀为.f90,表示该文件为自由格式的fortran源文件。
现在就可以开始着手读取数据了。
(1)先把fortran的开头和结尾写了,并且用implicit none声明不能使用未定义的变量,同时添加一个注释,自由格式中可以用一个英文的!来表示该行该符号往后均为注释内容,不参与编译:Program sta2grdImplicit none!这里是程序的变量声明!变量声明结束!程序开始!程序结束End(2)定义几个变量Fortran中常用的变量类型有整型:integer,单精度实型real,双精度实型double,字符型character,关于fortran变量的更多内容请参考彭国伦的fortran95程序设计。
通过观察我们要读取的文件:diamond 3 2011年05月降水量值0 0 0 0 0 0 1 0 0 1 100050353 126.39 51.43 100 8950632 121.55 48.46 100 54…第一行和第二行对我们转换没有什么作用,因此我们只需要定义必须要用到的变量,站号stid,类型为字符型,长度为8,其余的经度lon、纬度lat,一个无意义的变量(列中的100)var和降水数据rain,均为实型,原因在下面的GrADS中的存放方式有说明。
Character*8 stidReal lon,lat,var, rain(3)打开数据文件并读入数据Fortran中使用open语句来实现打开文件,同时指定一个打开的文件号和文件路径,以及其他一些指定参数,下面的语句即可打开这次示例的文件:Open(1,file=’raindata.txt’,status=’old’)这里的1是一个文件号,是读写时需要用到的,file后的是文件名,直接写文件名表示在和程序同一个文件夹,status表示当前文件的状态,old表示该文件已经存在,这样就能避免通过write语句误写入数据覆盖了数据文件。
(4)开始读入数据到变量中在fortran中使用read语句来读入数据,每读取一行文件的指针就会自动向下移动一行(关于文件指针指向这一行你可以想象成该行被选中,要从该行读取数据了)比如read(1,*)var,就表示从打开的1号文件中按默认格式读取数据到var中。
我们先跳过两行“没用”的数据:Read(1,*)Read(1,*)这样后面不接任何变量就表示把这两行跳过去了,现在文件指针在第三行的开头了,也就是我们需要的数据了,来读一行:Read(1,*)stid,lon,lat,var,rainFortran 会自动把这五个数值分别给后面的五个变量了,现在文件的指针已经在第四行的开头了,我们需要继续读取数据,当然不能够又写一行,应该继续使用上面这一行来读取,可以通过goto语句实现,goto语句的含义是让程序跳转到指定的标号执行,这里就应该是去刚才的那个语句执行,所以在刚才的Read(1,*)stid,lon,lat,var,rain 前面加上一个标号10,然后在下面写上一句goto 10,如下所示:10 Read(1,*)stid,lon,lat,var,rainGoto 10这样,程序就会不断的往下读取了,但是,文件的行数是有限的,这样做一旦到文件结束,fortran就会报出运行时错误,通常是end-of-file…的错误,这时候可以通过END标签来避免这种情况的出现。
End标签能够让read语句读取到文件末尾的时候自动跳转到指定的标号去执行,再次修改这个读取的语句:10 Read(1,*,end=100)stid,lon,lat,var,rainGoto 10100 contine这样,当文件读取结束时,就会到100 continue来执行了,continue的意思就是接着按顺序往下执行,本身没有什么含义。
我们现在只是读取数据,没有对数据进行任何输出和处理,读取完毕后应该及时关闭这个文件,使用close方法即可。
在100 continue的下面加上close(1),1同样是open里的那个文件号。
这段程序就完成了这个示例文件的读取,每读取一次,上面几个变量的值就会被刷新一次,如果需要验证读取是否正确,可以在标号为10的read语句和goto 10之前加上一个输出到屏幕的命令,然后用pause命令暂停执行,以便检查:10 Read(1,*,end=100)stid,lon,lat,var,rainPrint*,stid,lon,lat,var,rainpauseGoto 10现在,这段程序应该是这样子的:Program sta2grdImplicit none!这里是程序的变量声明Character*8 stidReal lon,lat,var, rain!变量声明结束!程序开始Open(1,file=’raindata.txt’,status=’old’)read(1,*)read(1,*)10 Read(1,*,end=100)stid,lon,lat,var,rainPrint*,stid,lon,lat,var,rainpauseGoto 10100 continueClose(1)!程序结束End这时候就可以编译运行一下了,4.0中点击窗口中左上角的build按钮(shift+f8),弹出的对话框中选择是,然后下面的消息窗口会提示:sta2grd.exe - 0 error(s), 0 warning(s),表示编译通过了,可以开始执行了,选择build菜单的Execute sta2grd.exe,就可以开始执行了;CVF中直接点击红色的感叹号左侧有两个朝下箭头的按钮编译,无错后点击红色感叹号可以执行,每行输出后都会暂停,等按下回车后会继续读取下一行并暂停,经过对比,发现读取成功,然后删除用于测试的print*和pause语句:4.0中的编译2、按照GrADS的规定将数据进行输出接下来所增加的语句都在10号语句和goto 10语句之间,因为这时候几个变量的值是刚刚从文件中读出来,所以要及时把他们写出去。
在输出为GrADS可用格式之前,必须先了解GrADS中的站点数据是如何存放的,只有知道GrADS中规定的存放格式,才能够明白输出时该如何写。
GrADS中的站点数据也是二进制格式,并且按照时间来分组,(本例子中仅有一个时次,多时次的相信你看完后也会写出来了),每个时次下面包括了N个站该时次的数据,每个站的信息由一个表示该站的文件头信息以及数据值组成,每个时次结束后写入一个特殊的标记表示这个时次结束,文件头信息结构如下:struct reportheader {char id[8]; /* 站号 */float lat; /* 纬度*/float lon; /* 经度 */float t; /* 相对于该时次的相对单位值 */int nlev; /* 总层次 */int flag; /* 表示有无高空资料 */};上面的定义是C语言中的定义,转换到fortran中就是我们开始定义的几个变量,但是还没有定义t(避免和总时次混淆,定义为tim)、nlev和flag,所以先去上面的定义变量的地方补上这上个变量,把real那一行改为:real lon,lat,var, rain,tim ,在real行下面增加一行:integer nlev,flag。