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

更新时间:2023-03-11 11:25:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

GrADS

(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) 100 ntinue 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和

oo

SST.dat,其空间范围60-150E,0-40N;层次: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 定义数组

dimension u(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 do 100 it=1,nt

do 50 iz=1,nz irec=irec+1

write(12,rec=irec) ((u(i,j,iz,it),i=1,nx),j=1,ny) 50 continue do 51 iz=1,nz

irec=irec+1

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

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

continue

close(1) close(12) end

注意:1)recl 与rec; 2)循环顺序;

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

三、GRADS

描述文件

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

dset d:\\llp\\data.grd --数据文件名 undef -9.99E+33 ----缺侧值 title NCEP/NCAR REANALYSIS PROJECT ---数据标题 xdef 37 linear 60.000 2.500 ----x方向维数 ydef 17 linear 0.000 2.500 ----y方向维数 zdef 2 levels 850 200 ----z方向维数 tdef 48 linear JAN1982 1mo ---时间维数 vars 3 ----变量总数 u 2 99 u wind (m/s) --U风场2层 v 2 99 v wind (m/s) --v风场2层 sst 1 99 TSFC DATA --海表温度 Endvars --变量描述结束

1、描述文件构成介绍

每个描述文件一般包含以下几项: (1)被描述的数据文件名(dset) (2)该数据说明文件的标题(title)

(3)数据类型、格式和选项(dtype,format,option) (4)时间、空间维数环境设置

(xdef,ydef,zdef,tdef) (5)变量定义(vars,endvars)

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

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

1)DSET data-set-name

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

2)TITLE string

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

定义缺测值,GrADS在运算操作和图形操作时

将忽略这些格点。

4)XDEF number 或 XDEF number

Number:是X方向网格点数,>=1的整型数; LINEAR时:网格点格距均匀; Start:起始经度(单位:度),浮点数表示,负数表示西经,自西向东。

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

LEVELS时:

网格距可不均匀,

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

5)YDEF number mapping start 或 YDEF number

Number:Y方向的格点数,用整数表示 mapping表示映射方式,有以下几种:

LINEAR -- 线性映射

GAUSR15 -- 高斯(Gaussian) R15 纬度 GAUSR20 -- 高斯R20 纬度 GAUSR30 -- 高斯R30 纬度 GAUSR40 -- 高斯R40 纬度

LINEAR时:

Start:起始纬度(单位:度),浮点数表示,负数表示南纬;

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

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

高斯GAUSRxx映射:

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

例如:YDEF 20 GAUSR40 15

表示共有20个Y方向网格点,起始点为高斯

0

R40网格下的高斯纬度15(即64.10S),实际这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

注:常见形式

XDEF number LINEAR start increment YDEF number LINEAR start increment

6)ZDEF number mapping 或 ZDEF number

设置气压面与垂直网格点的映射关系 Number:Z方向网格点数,为整型数 mapping 为映射类型,有如下几种: LINEAR -- 线性映射

Start:Z=1时的值或起始值

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

例如:

ZDEF 10 LINEAR 1000 -100

LEVELS – (常用)

value-list:顺序枚举给出全部对应的等压面。

7)TDEF number LINEAR start-time increment 设置网格值与时间的映射关系。 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)VARS number

abrev levs units description (变量描述格式)

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

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

包括: