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

上传人:b****6 文档编号:4776990 上传时间:2022-12-08 格式:DOCX 页数:19 大小:568.97KB
下载 相关 举报
第四章Grads数据资料转换和数据描述文件解析.docx_第1页
第1页 / 共19页
第四章Grads数据资料转换和数据描述文件解析.docx_第2页
第2页 / 共19页
第四章Grads数据资料转换和数据描述文件解析.docx_第3页
第3页 / 共19页
第四章Grads数据资料转换和数据描述文件解析.docx_第4页
第4页 / 共19页
第四章Grads数据资料转换和数据描述文件解析.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

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

《第四章Grads数据资料转换和数据描述文件解析.docx》由会员分享,可在线阅读,更多相关《第四章Grads数据资料转换和数据描述文件解析.docx(19页珍藏版)》请在冰豆网上搜索。

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

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

GrADS

(GridAnalysisandDisplaySystem)

讲义(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程序如下:

Programmain

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

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

c定义数组

dimensionvar(nx,ny,nz,nt)

c打开原数据文件

open(1,file='d:

\llp\test.dat')

!

!

ccccccccccccccccccccccccccccccccccccccccc!

!

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

do100it=1,nt

do50iz=1,nz

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

50continue

100continue

CCCCCCCCCCCCCCCCCCC

ccccccccccccccccccccccccccccccccccccccccccc

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

open(12,file='d:

\llp\test.grd',

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

c写数据资料

irec=0

do100it=1,nt

do100iz=1,nz

irec=irec+1

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

100Continue

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

do100it=1,nt

irec=irec+1

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

101Continue

Close

(1)

Close(12)

end

另外一种写法:

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

open(12,file='d:

\llp\test.grd',

&form='binary')

c写数据资料

do100it=1,nt

do100iz=1,nz

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

100ntinue

Close

(1)

Close(12)

end

 

注意:

1)recl=:

一次写入的数据量,与Fortran编辑单位有关。

.以字节数为单位:

需要*4,recl=nx*ny*nz*4

.以数据个数为单位,不需*4,recl=nx*ny*nz

2)recl与rec有关联

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

(lonlatlev不同变量time)

(xyz不同变量t)

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

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

现有ASCII码数据资料文件u.dat、v.dat和SST.dat,其空间范围60-150oE,0-40oN;层次:

u、v为850、200hPa;时段:

1982.1-1985.12;分辨率:

2.5*2.5。

要求编写出将这三个文件转换成二进制无格式直接存取文件的Fortran程序,并给出相应的数据描述文件(CTL文件)。

Programmain

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

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

c定义数组

dimensionu(nx,ny,nz,nt),v(nx,ny,nz,nt),sst(nx,ny,nt)

c打开原数据文件

open(1,file='d:

\llp\u.dat')

open(2,file='d:

\llp\v.dat')

open(3,file='d:

\llp\sst.dat')

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

open(12,file='d:

\llp\data.grd',

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

cccccccccccccccccccccccccccccccccccccccccccccc按一定格式把数据文件读入cc

ccccccccccccccccccccccccccccccccccccccccccc

cccccccccc写数据资料ccccccccccc

irec=0

do100it=1,nt

do50iz=1,nz

irec=irec+1

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

50continue

do51iz=1,nz

irec=irec+1

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

51continue

irec=irec+1

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

100continue

close

(1)

close(12)

end

注意:

1)recl与rec;

2)循环顺序;

3)数据描述文件中变量的顺序与此相同;

 

三、GRADS描述文件

下面为相应于例2的CTL文件(data.ctl)

dsetd:

\llp\data.grd--数据文件名

undef-9.99E+33----缺侧值

titleNCEP/NCARREANALYSISPROJECT---数据标题

xdef37linear60.0002.500----x方向维数

ydef17linear0.0002.500----y方向维数

zdef2levels850200----z方向维数

tdef48linearJAN19821mo---时间维数

vars3----变量总数

u299uwind(m/s)--U风场2层

v299vwind(m/s)--v风场2层

sst199TSFCDATA--海表温度

Endvars--变量描述结束

1、描述文件构成介绍

每个描述文件一般包含以下几项:

(1)被描述的数据文件名(dset)

(2)该数据说明文件的标题(title)

(3)数据类型、格式和选项(dtype,format,option)

(4)时间、空间维数环境设置

(xdef,ydef,zdef,tdef)

(5)变量定义(vars,endvars)

 

注意:

数据描述文件的每行记录的各项以空格分开,注释行在第一列打“*”,注释行不能出现在变量列表中,每行记录不超过80个字符,

2、数据描述文件中各记录的含义

1)DSETdata-set-name

二进制原始数据文件的文件名(可包含路径)

2)TITLEstring

用字符串string简略描述数据文件的内容。

3)UNDEFvalue

定义缺测值,GrADS在运算操作和图形操作时将忽略这些格点。

4)XDEFnumber

XDEFnumber

Number:

是X方向网格点数,>=1的整型数;

LINEAR时:

网格点格距均匀;

Start:

起始经度(单位:

度),浮点数表示,负数表示西经,自西向东。

Increment:

网点间距,单位为度,正浮点数。

LEVELS时:

网格距可不均匀,

value-list顺序列出各格点的经度值,可续行表示,至少有两个以上格点时方可用LEVELS。

 

5)YDEFnumbermappingstart

YDEFnumber

Number:

Y方向的格点数,用整数表示

mapping表示映射方式,有以下几种:

LINEAR--线性映射

GAUSR15--高斯(Gaussian)R15纬度

GAUSR20--高斯R20纬度

GAUSR30--高斯R30纬度

GAUSR40--高斯R40纬度

LINEAR时:

Start:

起始纬度(单位:

度),浮点数表示,负数表示南纬;

Increment:

Y方向网格距,正浮点数表示,由南向北。

LEVELS时:

value-list:

顺序枚举一系列网格点对应的纬度值,可续行表示,至少有两个以上格点时方可用LEVELS。

高斯GAUSRxx映射:

start为第一个高斯网格数,1表示最南端格点纬度

例如:

YDEF20GAUSR4015

表示共有20个Y方向网格点,起始点为高斯R40网格下的高斯纬度15(即64.100S),实际这20个网格点对应的纬度值为:

-64.10,-62.34,-60.58,-58.83,-57.07,-55.32,-53.56,

-51.80,-50.05,-48.29,-46.54,-44.78,-43.02,-41.27,

-39.51,-37.76,-36.00,-34.24,-32.49,-30.73

注:

常见形式

XDEFnumberLINEARstartincrement

YDEFnumberLINEARstartincrement

6)ZDEFnumbermapping

ZDEFnumber

设置气压面与垂直网格点的映射关系

Number:

Z方向网格点数,为整型数

mapping为映射类型,有如下几种:

LINEAR--线性映射

Start:

Z=1时的值或起始值

Increment:

Z方向的增量,从低到高,该增量可取负值。

例如:

ZDEF10LINEAR1000-100

 

LEVELS–(常用)

value-list:

顺序枚举给出全部对应的等压面。

7)TDEFnumberLINEARstart-timeincrement

设置网格值与时间的映射关系。

Number:

总时次数,用整型数表示;

start-time:

起始日期/时间,格式为:

hh:

mmZddmmmyyyy

hh:

两位数的小时

mm:

两位数的分钟

dd:

一位或两位数的日期

mmm:

三个字符的月份缩写

yyyy:

两位或四位数年份,

注:

缺省值:

hh=00,mm=00,dd=1号;

月、年值不能省缺,整个时间串中不能有空格。

例如:

12Z1JAN1990

14:

20Z22JAN1987

JUN1960

Increment:

时间增量,

格式为vvkk,

vv:

增量值,用1位或2位整型数表示

kk:

增量类型,

mn表示分钟,

hr表示小时,

dy表示天,

mo表示月,

yr表示年,

如:

20mn---表示增量为20分钟,

1mo表示增量为1个月,

2dy表示增量为2天。

 

8)VARSnumber

abrevlevsunitsdescription(变量描述格式)

ENDVARS

变量描述部分

number:

变量个数,

abrev:

变量名,1-8个字符,以字母(a~z)开头,由字母和数字组成;

levs:

整型数,变量含有的垂直层次数,

0表示该变量只有一层,如地表变量;units:

为以后使用预留,暂时设为常数99;description:

一段说明该变量的字符串,最多40个字符.

ENDVARS:

表示数据描述文件结束。

9)dtype

说明数据格式的类型,当binary时省略;

包括:

-grid(省略)

-grb

-station

-bufr

-hdfsds

-netcdf

v1.9新增

9)OPTIONS

可替代"format"的功能且具有更广泛的用途。

包括: