资源描述:
《GrADS学习资料:第2章 数据处理.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第2章数据处理在使用GrADS绘图前,必须使所用数据文件满足GrADS的数据格式要求。2.1各类数据格式的特点一般二进制无格式直接或者顺序记录的数据格式:可以是格点数据或站点数据,可以用Fortran或者C语言读写。需要数据描述文件.ctlGRIB码数据格式:是自定义的数据格式,压缩率高,占用空间小。例如NCEP提供的数据资料。NETCDF(.nc)等通用数据格式:自定义数据格式,精确性好,便于传输。文件中自带描述文件。2.2数据文件的转换1.转换方法转换文件的数据存放格式,一般是通过PowerStation或VisualFo
2、rtran等软件使用Fortran或者C语言来编程转换。2.数据存放形式二进制数据排放顺序从内循环到外循环依次是:x(经度):从西到东y(纬度):从南到北z(高度层数):从低层到高层vars(各种物理变量)t(时次)x(lon)y(lat)z(lev)vars(不同变量)time任何一维可省略。12345………..xy………54321Z3.举例(格点资料)现有ASCII码(十进制存放格式)数据资料文件u.dat、v.dat和sst.dat,其空间范围:60-150°E,0-40°N;层次:u、v为850、200hPa;时段:1
3、982.1-1985.12;分辨率:2.5*2.5。要求编写出将这三个文件转换成二进制无格式直接存取(Grads格式.grd)文件的Fortran程序。编程时数组大小: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年,共48个月Fortran程序编写如下:!定义一个X,Y,Z方向的格点数以及总时次ntparameter(nx=37,ny=17,nz=2,nt=48)!定义数组dime
4、nsionu(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,file='mhy.grd',form='unformatted',#access='direct',recl=nx*ny*4)
5、!把数据文件读入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=0do200it=1,ntdo30iz=1,nzirec=irec+1write(12,rec
6、=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,rec=irec)((u(i,j,iz
7、,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
8、,nz,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='bina