GrADS绘图学习技巧与实例(阿木)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

以下技巧总结都是笔者从学习实践过程中总结出来的,基本的问题。不求全面,希望对读者学习有用,如果有问题,敬请留言指正,以促进交流学习!(笔者:阿木)

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 sst

open(15,file='sst.grd',form='binary') !固定的用form=‘binary’就是二进制数据open(16,file='sst.txt') !新建txt文件

do it=1,nt

do iz=1,nz

read(15) ((sst(i,j,iz,it),i=1,nx),j=1,ny) !read后只有文件号,数据是无格式的

enddo

enddo

do it=1,nt

do iz=1,nz

write(16,*) ((sst(i,j,iz,it),i=1,nx),j=1,ny) !输出时是txt文件可直接看的数据,有格式输出,有*

enddo

enddo

close(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,大气的数据要根据数据的层次确定几层。

4、grd 、ctl、、gs、nc详述

grd文件:grd数据不可直接看,为二进制无格式数据,简单的说只有1和0,而且数据间没有间隔,grads识别grd是根据ctl进行划分的,根据ctl中的经度、纬度、层次、时间,精度进行数据分块。ctl实例:

dset C:\data\sst.grd

undef -9.99E+33

title sea surface tempture

xdef 56 linear 90 2

ydef 41 linear -20 2

tdef 360 linear jan1971 1mo

zdef 1 levels 0

vars 1

sst 0 99 surface sea tempture

endvars

上例数据的数据顺序是(以下是数据对应的经纬度)

纬度经度(t=1)

-20 90~200的纬度20S的从90E~200的56个数据

-18 90~200的纬度18S的从90E~200的56个数据

.

.

.

6090~200的纬度60N的从90E~200的56个数据

以上为一层的数据,接下来是t=2,t=3……t=360的数据,每个时间点的每一层是如上格式,

编程时读取和写如的数据循环顺序依次是:时间、层次、纬度、经度,读者参照3中的fortran程序加以理解。

ctl文件:具体其他指导书上都有,我这里强调的是sst 后面的0表示一层,如果是两层以上则是2,3……,1层是固定用法,sst后面的99是默认设置;undef -9.99E+33 此处的数值决定了软件将文件中的那些值认定为不绘制的数据,所以这个值一定要与数据对应。

gs 文件,批命令文件,与ctl一样是用记事本编写,另存为.gs文件,文件都是

命令,方便大段的命令编写、修改,很常用,尤其时绘制的图要求比较多时必须用,免得在命令窗口重复输入命令浪费时间,如下例子:

'reinit'

'open c:\data\uv.ctl'

'set t 7'

'set lev 850'

'set grid off'

'set vpage 0 8.5 0 3.6'

'set parea 0.3 8.5 0.3 3.5'

'set gxout vector'

'set grads off'

'd u;v'

'set vpage 0 8.5 3.6 7.2'

'set grads off'

'set gxout barb'

'd u;v'

'set vpage 0 8.5 7.2 11'

'set grads off'

'set gxout grid'

'd u;v'

'printim c:\images\gxout3uv850.png white'

;

Gs文件以‘;’结尾,分号后面不能有空格,除了循环命令外都需要单引号将命令引起来。

nc文件:此类数据不需要ctl可直接用sdfopen命令直接打开,往往需要知道数据文件中的各个纬度特征,可以用:q ctlinfo命令查询该文件的内置ctl,这样一切都会很清楚,尤其是数据精度:截图如下(下例即2*2的网格经度):

相关文档
最新文档