第四章Grads数据资料转换和数据描述文件2013解析

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

G r ADS

(Grid Analysis and Display System)

讲义(4)

内容提要

一、GrADS所能处理的数据格式

二、数据资料的准备(binary)

ASCII码数据文件向二进制数据文件的转换

三、数据描述文件的构成

四、其它数据文件简介(netCDF/GRIB)

五、GrADS控制文件简介

一、GrADS所能处理的数据格式

--Binary:自制,直接、顺序存取,Fortran 可以读写。*.grd

--netCDF(自描述):精确性好,便于传输;*.nc

--GRIB:压缩率高。*.grb

--HDF-SDS(卫星资料)

--ASCII(台风路径)

--站点

--BUFR(V1.9版本):二进制通用数据表示格式(BUFR),用于非格点气象数据的保存,便于网络传输,是世界气象组织(WMO)规定的标准格式,目前使用的常规气象资料数据以及雷达、卫星数据资料转换为BUFR格式

二、Binary格式介绍

1、简介

1)GrADS最基本的数据格式;

2)常用后缀:*.grd,.bin,.dat;

3)可用fortran读写;

4)一般为二进制无格式文件(form=‘unformatted’);

5)访问形式

直接(access=‘direct’)

顺序(access=sequential)--ctl文件中说明6)格式说明由数据描述文件(*.ctl)描述;

数据资料———数据描述文件———GrADS

翻译器

注意:数据文件和数据描述文件是分开的。后者为纯文本格式,可用一般的编辑器产生(如记事本等);

2、GrADS中数据的存放形式

1)5-D的数据集

(x,y),z,VAR,t

排放顺序为先经度、纬度、高度,然后是物理变量,最后是时次变化。一个x、y数据场构成一个记录。

2)3—D空间的排列

x从西---东,

y从南---北,

z从下--上

3、如何由ASCII码数据生成一个直接存取的无格式数据文件

----------借助于Fortran程序完成

例1:有一个4-D要素场,将其由ASCII码数据转为无格式直接存取文件,Fortran程序如下:

Program main

C 定义一个X,Y,Z方向的格点以及总时次nt

parameter(nx=144,ny=73,nz=17,nt=48)

c 定义数组

dimension var(nx,ny,nz,nt)

c 打开原数据文件

open(1,file='d:\llp\test.dat')

!!ccccccccccccccccccccccccccccccccccccccccc

!!ccccccc 一定格式把数据文件读入

do 100 it=1,nt

do 50 iz=1,nz

read(1,*) ((u(i,j,iz,it),i=1,nx),j=1,ny) 50 continue

100 continue CCCCCCCCCCCCCCCCCCC

ccccccccccccccccccccccccccccccccccccccccccc c 打开目标文件,recl为记录的长度。

open(12,file='d:\llp\test.grd',

&form='unformatted',access='direct', recl=nx*ny*4)

c 写数据资料

irec=0

do 100 it=1,nt

do 100 iz=1,nz

irec=irec+1

write(12,rec=irec) ((var(i,j,iz,it),i=1,nx),j=1,ny)

100 Continue

Close(1)

Close(12)

end

还可以用另外的一种方式写资料,见下:

c 打开目标文件,recl为记录的长度。

open(12,file='d:\llp\test.grd',

&form='unformatted',access='direct', recl=nx*ny*nz*4)

c 写数据资料

irec=0

do 100 it=1,nt

irec=irec+1

write(12,rec=irec)

(((var(i,j,iz,it),i=1,nx),j=1,ny),iz=,1,nz) 101 Continue

Close(1)

Close(12)

end

另外一种写法:

c 打开目标文件,recl为记录的长度。

open(12,file='d:\llp\test.grd',

&form='binary')

c 写数据资料

do 100 it=1,nt

do 100 iz=1,nz

write(12) ((var(i,j,iz,it),i=1,nx),j=1,ny) 100n tinue

Close(1)

Close(12)

end

注意:

1)recl=:一次写入的数据量,与Fortran编辑单位有关。

.以字节数为单位:需要*4,recl=nx*ny*nz*4 .以数据个数为单位,不需*4,recl=nx*ny*nz 2)recl与rec有关联

3)不同维数的循环嵌套顺序

(lon lat lev 不同变量 time )

(x y z 不同变量 t )

(内循环-------------外循环)

例 2、如何将多个要素写入同一个数据文件中?

现有ASCII码数据资料文件u.dat、v.dat和SST.dat,其空间范围60-150o E,0-40o N;层次:u、v为850、 200hPa;时段:1982.1-1985.12;分辨率:2.5*2.5。要求编写出将这三个文件转换成二进制无格式直接存取文件的Fortran程序,并给出相应的数据描述文件(CTL文件)。

Program main

C 定义一个X,Y,Z方向的格点以及总时次nt

parameter(nx=37,ny=17,nz=2,nt=48)

c 定义数组

相关文档
最新文档