第四章Grads数据资料转换和数据描述文件2013解析
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 定义数组