GrADS第2章 数据处理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
XDEF number <LINEAR Start increment>
或 XDEF number <LEVELS value-list>
number(>=1)给定格点数,整形;
LINEAR指明是等间隔分布格点,
Start起点坐标,负数表示西经;
increment网格间距。 LEVELS参数指明是不等间隔分布格点,列 出具体每个格点的坐标值(以空格分开)。
编程时数组大小: X方向:150-60=90,90/2.5+1=37
Y方向:40-0=40,40/2.5+1=17
Z方向: u、v为850、 200hPa ,Z为2
sst为海表温度,只有一层,Z为1
T时次:月资料,4年,共48个月
! 把数据文件读入
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 do 51 iz=1,nz read(2,*) ((v(i,j,iz,it),i=1,nx),j=1,ny) 51 continue read(3,*) ((sst(i,j,it),i=1,nx),j=1,ny) 100 continue
!将数据资料写入新文件中, irec重新进行记录累加
irec=0 do 200 it=1,nt do 30 iz=1,nz irec=irec+1 write(12,rec=irec) ((u(i,j,iz,it),i=1,nx),j=1,ny) 30 Continue do 31 iz=1,nz irec=irec+1 write(12,rec=irec) ((v(i,j,iz,it),i=1,nx),j=1,ny) 31 continue irec=irec+1 write(12,rec=irec) ((sst(i,j,it),i=1,nx),j=1,ny) 200 continue end
如果不考虑采用无格式直接方式存取文件的 话,可以使用下面的编程形式,较为简单。
parameter(nx=37,ny=17,nz=2,nt=48)
dimension u(nx,ny,nz,nt),v(nx,ny,nz,nt),sst(nx,ny,nt)
! 打开原始数据文件,如果数据文件和Fortran程序在一个文件 !夹下,打开数据文件时可以不写路径
TITLE Upper Air Data DTYPE grid OPTION byteswapped UNDEF -9.99E33
二进制数据的位存放顺序取反序
西经140度
XDEF 80 LINEAR -140.0 1.0
YDEF 50 LINEAR 20.0 1.0
ZDEF 10 LEVELS 1000 850 700 500 400 300 250 200 150 100 TDEF 4 LINEAR 0Z10apr1991 12hr
!将数据资料写入新文件中
do 200 it=1,nt
do 30 iz=1,nz
write(12) ((u(i,j,iz,it),i=1,nx),j=1,ny)
30 Continue do 31 iz=1,nz
write(12) ((v(i,j,iz,it),i=1,nx),j=1,ny)
31 continue
而是通过“数据描述文件”间接使用 “数据文件”。
1. 数据描述文件的概念
数据描述文件是原始数据文件的描述文件。 用以描述原始数据集的基本信息,包括数 据集文件名、数据类型、数据结构、变量 描述等等 。
2. 数据描述文件的形式
以下是另一个格点数据描述文件的例子:
* this is an example to demonstrate the data descriptor file *注释行 DSET ua.dat
open(1,file='u.dat') open(2,file='v.dat') open(3,file='sst.dat')
! 打开目标文件
open(12,file='mhy.grd',form='binary')
! 把数据文件读入
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 do 51 iz=1,nz read(2,*) ((v(i,j,iz,it),i=1,nx),j=1,ny) 51 continue read(3,*) ((sst(i,j,it),i=1,nx),j=1,ny) 100 continue
格式,压缩率高,占用空间小。例如 NCEP提供的数据资料。
NETCDF(.nc)等通用数据格式:自
定义数据格式,精确性好,便于传输。
文件中自带描述文件。
2.2 数据文件的转换
1. 转换方法
转换文件的数据存放格式,一般 是通过Power Station或Visual Fortran等软件使用Fortran或者C 语言来编程转换。
在linear中,Start起点坐标负数表示南纬; 在高斯映射中, Start起点坐标表示高斯纬度。
xdef ydef
方向 维数 定义
144 73
格 点 数
linear linear
坐标值 线性 增加
0 -90
起始 坐标
2.5 2.5
坐标 间隔
方向: 自西向东, 自南向北 (永远不变!) 单位: 个 纬度/经度 正负值: 以东为正/以北为正
vars 6
slp 0 99 sea level pressure
z 10 99 heights
t 10 99 temps td 6 99 dewpoints u 10 99 u winds v 10 99 v winds endvars
3.数据描述文件的构成
(1)每个数据描述文件一般包含以下几项: 被描述的数据文件名(dset) 该数据说明文件的标题(title) 数据类型、格式和选项(dtype, format, option) 时间、空间维数环境设置(xdef, ydef, zdef, tdef) 变量定义(vars, endvars)
第2章 数据处理
在使用GrADS绘图前,必须使所 用数据文件满足GrADS的数据格 式要求。
2.1 各类数据格式的特点
一般二进制无格式直接或者顺序记
录的数据格式:可以是格点数据或 站点数据,可以用Fortran或者C语 言读写。
需要数据描述文件.ctl
GRIB码数据格式:是自定义的数据
设臵垂直网格点与气压面的对应关系
ZDEF number < LINEAR Start increment>
YDEF 20 GAUSR40 15 表示共有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
y………5
2.数据存放形式
二进制数据排放顺序 从内循环到外循环依次是: Z x(经度):从西到东 y(纬度):从南到北 1 2 3 4 5……….. x z(高度层数):从低层到高层 vars(各种物理变量) t(时次) x(lon) y(lat) z(lev) vars(不同变量) time 任何一维可省略。
例如:
正确的替换为: %y2 两位数年 %y4 4 位数年 %m1 1 或2 位数月 %m2 2 位数月(用 0补齐 1 位数) %mc 3 字符月份缩写 %d1 1 或2 位数天 %d2 2 位数天 %h1 1 或2 位数小时 %h2 2 位小时
设臵X方向格点与经度的对应关系
设臵Y方向格点与纬度的对应关系
YDEF number <LINEAR Start increment>
或 YDEF number <LEVELS value-list>
或 YDEF number < mapping Start> mapping表示映射方式,有以下几种: GAUSR15 -- 高斯R15 纬度 (Gaussian) GAUSR20 -- 高斯R20 纬度 GAUSR30 -- 高斯R30 纬度 GAUSR40 -- 高斯R40 纬度
write(12) ((sst(i,j,it),i=1,nx),j=1,ny)
200 continue end
注意事项:
二进制写入的数据必须是实型的(real) 若数据为整型,写入时要转换成实型的
real(iu(i,j,k,it))
2.2 数据描述文件(.ctl)
GrADS绘图不能直接使用“数据文件”,
irec=0 do 200 it=1,nt do 30 iz=1,nz irec=irec+1 write(12,rec=irec) ((u(i,j,iz,it),i=1,nx),j=1,ny) 30 Continue do 31 iz=1,nz irec=irec+1 write(12,rec=irec) ((v(i,j,iz,it),i=1,nx),j=1,ny) 31 continue irec=irec+1 write(12,rec=irec) ((sst(i,j,it),i=1,nx),j=1,ny) 200 continue
big-endian、little-endian 用于自动改变二进制位存放顺序
<template> 多个时间序列原始数据文件用一个数据描 述文件统一地描述描述这些原始数据时采用的选项, 这些数据文件的文件名形式由 dset 定义的形式命名 文件名,提示所含数据的时次。
例如:一个逐小时的数据集每 24小时数据放到一个 文件中,每个文件名形式为: 1may92.dat ,2may92.dat,3 may92.dat dset %d1%mc%y2.dat options template tdef 72 linear 0Z1may1992 1hr 定义时间范围和增量
UNDEF value 定义缺测值。 一般给一很大的正值或负值。 GrADS在运算操作和图形操作时将 忽略这些值点。
OPTIONS <keywords>
定义数据格式选项,keywords 有: <yrev><zrev><sequential><byteswapped> <template><big-endian><titlee-endian> 缺省时为 direct 直接记录格式(form='binary')
<yrev>
自北向南的数据
<zrev> 自高层到低层的数据 <sequential> 顺序无格式存贮的数据
<byteswapped>二进制数据的位存放顺序取
反序
<big-endian>在SUN, SGI等机器上生成
的数据
的数据
ቤተ መጻሕፍቲ ባይዱ
服务器
<litlee-endian>在PC, DEC等机器上生成
个人电脑
(2)数据描述文件中各记录的含义:
DSET <路径/>数据文件名 给定与此数据描述文件相对应的二进 制原始数据文件名(可包含路径)。
若两者位于同一目录,前面的路径可 以省略或以“^”开始,代表两者位于 同一目录。若不在同一目录下,应给 出路径参数。如:d:/mydata/test.grd
TITLE string 用字符串string简略描述数据文件的 内容。即:数据的标题
4 3 2 1
3. 举例(格点资料)
现有ASCII码(十进制存放格式)数据资料文 件u.dat、v.dat和sst.dat, 其空间范围:60-150°E,0-40°N; 层次:u、v为850、 200hPa; 时段:1982.1-1985.12; 分辨率:2.5*2.5。 要求编写出将这三个文件转换成二进制无格式 直接存取(Grads格式.grd)文件的Fortran程 序。
或 XDEF number <LEVELS value-list>
number(>=1)给定格点数,整形;
LINEAR指明是等间隔分布格点,
Start起点坐标,负数表示西经;
increment网格间距。 LEVELS参数指明是不等间隔分布格点,列 出具体每个格点的坐标值(以空格分开)。
编程时数组大小: X方向:150-60=90,90/2.5+1=37
Y方向:40-0=40,40/2.5+1=17
Z方向: u、v为850、 200hPa ,Z为2
sst为海表温度,只有一层,Z为1
T时次:月资料,4年,共48个月
! 把数据文件读入
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 do 51 iz=1,nz read(2,*) ((v(i,j,iz,it),i=1,nx),j=1,ny) 51 continue read(3,*) ((sst(i,j,it),i=1,nx),j=1,ny) 100 continue
!将数据资料写入新文件中, irec重新进行记录累加
irec=0 do 200 it=1,nt do 30 iz=1,nz irec=irec+1 write(12,rec=irec) ((u(i,j,iz,it),i=1,nx),j=1,ny) 30 Continue do 31 iz=1,nz irec=irec+1 write(12,rec=irec) ((v(i,j,iz,it),i=1,nx),j=1,ny) 31 continue irec=irec+1 write(12,rec=irec) ((sst(i,j,it),i=1,nx),j=1,ny) 200 continue end
如果不考虑采用无格式直接方式存取文件的 话,可以使用下面的编程形式,较为简单。
parameter(nx=37,ny=17,nz=2,nt=48)
dimension u(nx,ny,nz,nt),v(nx,ny,nz,nt),sst(nx,ny,nt)
! 打开原始数据文件,如果数据文件和Fortran程序在一个文件 !夹下,打开数据文件时可以不写路径
TITLE Upper Air Data DTYPE grid OPTION byteswapped UNDEF -9.99E33
二进制数据的位存放顺序取反序
西经140度
XDEF 80 LINEAR -140.0 1.0
YDEF 50 LINEAR 20.0 1.0
ZDEF 10 LEVELS 1000 850 700 500 400 300 250 200 150 100 TDEF 4 LINEAR 0Z10apr1991 12hr
!将数据资料写入新文件中
do 200 it=1,nt
do 30 iz=1,nz
write(12) ((u(i,j,iz,it),i=1,nx),j=1,ny)
30 Continue do 31 iz=1,nz
write(12) ((v(i,j,iz,it),i=1,nx),j=1,ny)
31 continue
而是通过“数据描述文件”间接使用 “数据文件”。
1. 数据描述文件的概念
数据描述文件是原始数据文件的描述文件。 用以描述原始数据集的基本信息,包括数 据集文件名、数据类型、数据结构、变量 描述等等 。
2. 数据描述文件的形式
以下是另一个格点数据描述文件的例子:
* this is an example to demonstrate the data descriptor file *注释行 DSET ua.dat
open(1,file='u.dat') open(2,file='v.dat') open(3,file='sst.dat')
! 打开目标文件
open(12,file='mhy.grd',form='binary')
! 把数据文件读入
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 do 51 iz=1,nz read(2,*) ((v(i,j,iz,it),i=1,nx),j=1,ny) 51 continue read(3,*) ((sst(i,j,it),i=1,nx),j=1,ny) 100 continue
格式,压缩率高,占用空间小。例如 NCEP提供的数据资料。
NETCDF(.nc)等通用数据格式:自
定义数据格式,精确性好,便于传输。
文件中自带描述文件。
2.2 数据文件的转换
1. 转换方法
转换文件的数据存放格式,一般 是通过Power Station或Visual Fortran等软件使用Fortran或者C 语言来编程转换。
在linear中,Start起点坐标负数表示南纬; 在高斯映射中, Start起点坐标表示高斯纬度。
xdef ydef
方向 维数 定义
144 73
格 点 数
linear linear
坐标值 线性 增加
0 -90
起始 坐标
2.5 2.5
坐标 间隔
方向: 自西向东, 自南向北 (永远不变!) 单位: 个 纬度/经度 正负值: 以东为正/以北为正
vars 6
slp 0 99 sea level pressure
z 10 99 heights
t 10 99 temps td 6 99 dewpoints u 10 99 u winds v 10 99 v winds endvars
3.数据描述文件的构成
(1)每个数据描述文件一般包含以下几项: 被描述的数据文件名(dset) 该数据说明文件的标题(title) 数据类型、格式和选项(dtype, format, option) 时间、空间维数环境设置(xdef, ydef, zdef, tdef) 变量定义(vars, endvars)
第2章 数据处理
在使用GrADS绘图前,必须使所 用数据文件满足GrADS的数据格 式要求。
2.1 各类数据格式的特点
一般二进制无格式直接或者顺序记
录的数据格式:可以是格点数据或 站点数据,可以用Fortran或者C语 言读写。
需要数据描述文件.ctl
GRIB码数据格式:是自定义的数据
设臵垂直网格点与气压面的对应关系
ZDEF number < LINEAR Start increment>
YDEF 20 GAUSR40 15 表示共有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
y………5
2.数据存放形式
二进制数据排放顺序 从内循环到外循环依次是: Z x(经度):从西到东 y(纬度):从南到北 1 2 3 4 5……….. x z(高度层数):从低层到高层 vars(各种物理变量) t(时次) x(lon) y(lat) z(lev) vars(不同变量) time 任何一维可省略。
例如:
正确的替换为: %y2 两位数年 %y4 4 位数年 %m1 1 或2 位数月 %m2 2 位数月(用 0补齐 1 位数) %mc 3 字符月份缩写 %d1 1 或2 位数天 %d2 2 位数天 %h1 1 或2 位数小时 %h2 2 位小时
设臵X方向格点与经度的对应关系
设臵Y方向格点与纬度的对应关系
YDEF number <LINEAR Start increment>
或 YDEF number <LEVELS value-list>
或 YDEF number < mapping Start> mapping表示映射方式,有以下几种: GAUSR15 -- 高斯R15 纬度 (Gaussian) GAUSR20 -- 高斯R20 纬度 GAUSR30 -- 高斯R30 纬度 GAUSR40 -- 高斯R40 纬度
write(12) ((sst(i,j,it),i=1,nx),j=1,ny)
200 continue end
注意事项:
二进制写入的数据必须是实型的(real) 若数据为整型,写入时要转换成实型的
real(iu(i,j,k,it))
2.2 数据描述文件(.ctl)
GrADS绘图不能直接使用“数据文件”,
irec=0 do 200 it=1,nt do 30 iz=1,nz irec=irec+1 write(12,rec=irec) ((u(i,j,iz,it),i=1,nx),j=1,ny) 30 Continue do 31 iz=1,nz irec=irec+1 write(12,rec=irec) ((v(i,j,iz,it),i=1,nx),j=1,ny) 31 continue irec=irec+1 write(12,rec=irec) ((sst(i,j,it),i=1,nx),j=1,ny) 200 continue
big-endian、little-endian 用于自动改变二进制位存放顺序
<template> 多个时间序列原始数据文件用一个数据描 述文件统一地描述描述这些原始数据时采用的选项, 这些数据文件的文件名形式由 dset 定义的形式命名 文件名,提示所含数据的时次。
例如:一个逐小时的数据集每 24小时数据放到一个 文件中,每个文件名形式为: 1may92.dat ,2may92.dat,3 may92.dat dset %d1%mc%y2.dat options template tdef 72 linear 0Z1may1992 1hr 定义时间范围和增量
UNDEF value 定义缺测值。 一般给一很大的正值或负值。 GrADS在运算操作和图形操作时将 忽略这些值点。
OPTIONS <keywords>
定义数据格式选项,keywords 有: <yrev><zrev><sequential><byteswapped> <template><big-endian><titlee-endian> 缺省时为 direct 直接记录格式(form='binary')
<yrev>
自北向南的数据
<zrev> 自高层到低层的数据 <sequential> 顺序无格式存贮的数据
<byteswapped>二进制数据的位存放顺序取
反序
<big-endian>在SUN, SGI等机器上生成
的数据
的数据
ቤተ መጻሕፍቲ ባይዱ
服务器
<litlee-endian>在PC, DEC等机器上生成
个人电脑
(2)数据描述文件中各记录的含义:
DSET <路径/>数据文件名 给定与此数据描述文件相对应的二进 制原始数据文件名(可包含路径)。
若两者位于同一目录,前面的路径可 以省略或以“^”开始,代表两者位于 同一目录。若不在同一目录下,应给 出路径参数。如:d:/mydata/test.grd
TITLE string 用字符串string简略描述数据文件的 内容。即:数据的标题
4 3 2 1
3. 举例(格点资料)
现有ASCII码(十进制存放格式)数据资料文 件u.dat、v.dat和sst.dat, 其空间范围:60-150°E,0-40°N; 层次:u、v为850、 200hPa; 时段:1982.1-1985.12; 分辨率:2.5*2.5。 要求编写出将这三个文件转换成二进制无格式 直接存取(Grads格式.grd)文件的Fortran程 序。