资源描述:
《最新GrADS第2章-数据处理解析PPT课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、GrADS第2章-数据处理解析2.1各类数据格式的特点一般二进制无格式直接或者顺序记录的数据格式:可以是格点数据或站点数据,可以用Fortran或者C语言读写。需要数据描述文件.ctlGRIB码数据格式:是自定义的数据格式,压缩率高,占用空间小。例如NCEP提供的数据资料。NETCDF(.nc)等通用数据格式:自定义数据格式,精确性好,便于传输。文件中自带描述文件。编程时数组大小:X方向:150-60=90,90/2.5+1=37Y方向:40-0=40,40/2.5+1=17Z方向:u、v为850、200hPa,Z为2sst为海表温度,只有一层,Z为1T时次:月资料,4
2、年,共48个月Fortran程序编写如下:!定义一个X,Y,Z方向的格点数以及总时次ntparameter(nx=37,ny=17,nz=2,nt=48)!定义数组dimensionu(nx,ny,nz,nt),v(nx,ny,nz,nt),sst(nx,ny,nt)!打开原始数据文件,如果数据文件和Fortran程序在一个文件夹下,打开数据文件时可以不写路径。open(1,file='u.dat')open(2,file='v.dat')open(3,file='sst.dat')!打开目标文件,recl为记录的长度,对于直接存取文件必须指定记录长度。open(12,
3、file='mhy.grd',form='unformatted',#access='direct',recl=nx*ny*4)!把数据文件读入do100it=1,ntdo50iz=1,nzread(1,*)((u(i,j,iz,it),i=1,nx),j=1,ny)50continuedo51iz=1,nzread(2,*)((v(i,j,iz,it),i=1,nx),j=1,ny)51continueread(3,*)((sst(i,j,it),i=1,nx),j=1,ny)100continue!将数据资料写入新文件中,irec重新进行记录累加irec=0do20
4、0it=1,ntdo30iz=1,nzirec=irec+1write(12,rec=irec)((u(i,j,iz,it),i=1,nx),j=1,ny)30Continuedo31iz=1,nzirec=irec+1write(12,rec=irec)((v(i,j,iz,it),i=1,nx),j=1,ny)31continueirec=irec+1write(12,rec=irec)((sst(i,j,it),i=1,nx),j=1,ny)200continueendirec=0do200it=1,ntdo30iz=1,nzirec=irec+1write(12
5、,rec=irec)((u(i,j,iz,it),i=1,nx),j=1,ny)30Continuedo31iz=1,nzirec=irec+1write(12,rec=irec)((v(i,j,iz,it),i=1,nx),j=1,ny)31continueirec=irec+1write(12,rec=irec)((sst(i,j,it),i=1,nx),j=1,ny)200continue如果不考虑采用无格式直接方式存取文件的话,可以使用下面的编程形式,较为简单。parameter(nx=37,ny=17,nz=2,nt=48)dimensionu(nx,ny,n
6、z,nt),v(nx,ny,nz,nt),sst(nx,ny,nt)open(1,file='u.dat')open(2,file='v.dat')open(3,file='sst.dat')!打开目标文件open(12,file='mhy.grd',form='binary')!打开原始数据文件,如果数据文件和Fortran程序在一个文件!夹下,打开数据文件时可以不写路径do100it=1,ntdo50iz=1,nzread(1,*)((u(i,j,iz,it),i=1,nx),j=1,ny)50continuedo51iz=1,nzread(2,*)((v(i,j,
7、iz,it),i=1,nx),j=1,ny)51continueread(3,*)((sst(i,j,it),i=1,nx),j=1,ny)100continue!把数据文件读入do200it=1,ntdo30iz=1,nzwrite(12)((u(i,j,iz,it),i=1,nx),j=1,ny)30Continuedo31iz=1,nzwrite(12)((v(i,j,iz,it),i=1,nx),j=1,ny)31continuewrite(12)((sst(i,j,it),i=1,nx),j=1,ny)200continueen