用Grads处理GRIB格式文件的准备_2007-07-12
GrADS学习资料:第2章 数据处理
big-endian、little-endian 用于自动改变二进制位存放顺序
<template> 多个时间序列原始数据文件用一个数据描 述文件统一地描述描述这些原始数据时采用的选项, 这些数据文件的文件名形式由 dset 定义的形式命名 文件名,提示所含数据的时次。
例如:
正确的替换为: %y2 两位数年 %y4 4 位数年 %m1 1 或2 位数月 %m2 2 位数月(用 0补齐 1 位数) %mc 3 字符月份缩写 %d1 1 或2 位数天 %d2 2 位数天 %h1 1 或2 位数小时 %h2 2 位小时
设置X方向格点与经度的对应关系
XDEF number <LINEAR Start increment> 或 XDEF number <LEVELS value-list>
number(>=1)给定格点数,整形; LINEAR指明是等间隔分布格点, Start起点坐标,负数表示西经; increment网格间距。 LEVELS参数指明是不等间隔分布格点,列 出具体每个格点的坐标值(以空格分开)。
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
GrADS处理台站数据精讲
废话不说,开始讲解第一步:处理站台id文件:文件处理成三列数据,第一列为站台号,第二列为纬度,第三列为经度注意,如:站号纬度经度50136 52.97 122.5250246 52.35 124.7250349 51.70 124.3350353 51.72 126.65上述数据中50136连同后面的空格要保证一共有8位(这点不容质疑)第二步:处理数据一般要将所要的要素,如日照时间,单个要素放到一个txt文件中,数据的顺序是:同一个时间点371个站数据,然后放下一个时间点的371个要素值,如此直到最后时刻。
第三步:处理成对应格式数据grd文件案例程序(371个站18263天的数据):说明:这里的rct_50years_371_5vars\50year_371id.txt 为第一步生成的台站id文件rct_50years_371_5vars\371_sd_1956_2005.txt 为第二步生成的数据文件注意:1、数据必须设成实型的,站号必须为8位字符型(与第一步照应);2、数据存放依然是先站,后时次,即最外层为时间循环3、每一行数据:站号—纬度—经度—相对时次—记录标志—nflag—要素数据4、程序中tim为相对时次,指的是相对于一天的世界时,如果数据本身是日数据,那么time就取0.0,一般都是这样,除非是有08时、20时等多个时刻,才考虑time不为0.0,此处设为0.0恒定,元数据为日数据5、程序中nlev标志一个时刻记录开始,结束时赋值为0,对应程序;6、nflag为有没有地面报,有为1,否则为0,此处为地面观测相对湿度,为17、循环中每个时次的371个站数据输完后,要加一行标志记录(红色)8、生成的文件为二进制grd文件,所以为write(30),没有格式说明;直接加文件号9、第一二三步数据的顺序一定要与站号顺序对应。
program ex00implicit noneinteger nlev,nflag,i,jreal lat(371),lon(371),tim,sd(371)character*8 stid(371)tim=0.0nflag=1open(10,file='D:\Program Files\FORTRAN6.0\txt_grid\rct_50years_371_5vars\50year_371id.txt') open(20,file='D:\ProgramFiles\FORTRAN6.0\txt_grid\rct_50years_371_5vars\371_sd_1956_2005.txt')open(30,file='D:\ProgramFiles\FORTRAN6.0\txt_grid\rct_50years_371_5vars\371_sd_1956_2005.grd',form='binary') do i=1,371read(10,*) stid(i),lat(i),lon(i)enddoclose(10)do i=1,18263nlev=1do j=1,371read(20,*) sd(j)write(30) stid(j),lat(j),lon(j),tim,nlev,nflag,sd(j)enddonlev=0write(30) stid(371),lat(371),lon(371),tim,nlev,nflagwrite(*,*) "Finish writting:",ienddoclose(20)close(30)end第四步:写相应数据grd的ctl,如下dset c:\371yue\371_sd_1956_2005.grddtype stationstnmap c:\371yue\sd50.mapundef 32766title sun hourtdef 18263 linear 01jan1956 1dyvars 1sd 0 99 sunhour(0.1h)endvars第五步:写标准的格点文件用于后期插值这里经度为1°*1°,70E-140E,15N-55-N注意:grd的经纬度范围要大于格点的范围,时间可对应。
实验三 GrADS软件的应用(2)
实验三 GrADS软件的应用(2)一.实验目的1.掌握一维线形图的绘制。
2.掌握fnl数据的转换方法。
3.熟悉GrADS的生成ctl文件的常用命令。
4.熟悉GrADS的生成idx文件的常用命令。
5.掌握GrADS画图的方法。
6.掌握查看画好的图片的方法。
二.实验内容1.实验代码解释'open ' 打开数据文件'set lat 40' 设定经度变化为东经40度'set lon -180 0' 设定纬度变化为南纬180度到0度'set t 1' 设定时次固定为数据集中第一个时次'set gxout line' 设定gxout线'set ccolor 2' 设置等值线颜色为红色'set cmark 3' 设置线上的标记符号为实心圆'set cstyle 1' 设置等值线形为实线'set cthick 6' 设置等值线线宽为6'set grid on 3 3' 设定网格线为红色实现2.绘制线性图3.转换fnl文件4.运行fnl文件生成图像三.实验步骤1.绘制线性图把事先做好的.gs,.ctl和.dat文件复制到D:\grads19下面,打开grads.exe,将.gs文件拖动到dos界面,回车就会在rcl窗口显示所画图像,对应在D:\grads19也会生成一个.png文件;2..转换fnl文件(1)生成描述文件.ctl:打开grads.exe,对应输入gs->grib2ctl grib_file>grib_file.ctl,这样就可以生成描述文件.ctl(2)利用grads自带的grabmap.exe生成索引文件gs-> !gribmap -v -i D:/grads19/grib_file.ctl > a.txt,这样就会在D:/grads19路径下生成.idx 的索引文件,并会把整个映射过程写入a.txt文件中,这样就可以开始用grads读取fnl文件进行画图3.运行fnl文件生成图像将fnl_20090808_00_00_c文件对应的.gs文件拖到里面,即可生成它的.gmf文件。
Grads使用手册
1
令。详见§6。 (4) .exe 系统命令文件,是 GrADS 系统在 DOS 环境下的各执行文件。如 grads.exe 为 GrADS
图形分析和显示命令;dos4gw.exe 为 DOS 的扩展环境;gxps.exe、gxpsc.exe、gxpscw.exe 都是图元文件转换为 postscript 文件的执行文件;gxtran.exe 是图元文件转换到显示器上 显示的执行文件;gx.exe 是将图元文件转换为各种不带 ps 解释器的打印机输出的执行文 件。详见§1.3。 (5) .gmf(.met) GrADS 系统图元输出文件,格式由 GrADS 内定,文件名随用户自定,
GrADS 的绘图工作区分三个层次,一层是实际页(real page),即硬拷贝的 A4 纸大小, 单位为英寸(注意横放或竖放);一层是虚拟页(virtual page),单位也是英寸,缺省时虚页 等同于实页;第三层是在虚页中指定绘图区域,其单位用的虚页中的虚英寸,即缺省时等同 于实际英寸,当设置虚页后按比例度量。注意第三层所定义的区域只包含图形,不包括坐标 轴、标题等附属信息的位置,即要预留出附属信息的区域。
(1) .dat 二进制无格式记录的原始气象数据文件,其数据既可以是格点数据,也可以是站 点数据。它们是从其它气象数据(如站点气象报、格点气象报、模式格点输出结果)转 换生成的。对格点数据而言,其格式为二进制无格式直接或顺序记录格式。总之对格点 数据,整个数据集是一个大的五维数据场,包括三维物理空间、一维物理变量、一维时 间变量,存放时以二维数组片的形式按水平、垂直、物理变量、时间序列的顺序排放, 详情参见§4。
本手册下载: GrADS 中文讨论区:
/grads/ /grads/gadoc/library.html /atmos/gadoc/library.html (本地) /grads/index.html /cgi-bin/forum/forums.cgi?forum=3
气象常用绘图软件grads
默认输出的图形格式为GrADS meta file,可用附带程序Gv.exe 或者Gv32.exe查看并拷贝到Word文档中。
30
Gv图形处理程序
31
麦卡托投影
Mercator‘s projection
等值线
32
麦卡托投影
Mercator‘s projection等值线+色斑
45
地理网格数据说明
从控制文件可以看到,地理网格资料其实是一个 71×41的数组资料。 在GrADS中打开此控制文件(Grid.ctl), 设定图形输出类型 set gxout grid 可看到所有的数据均由0和1组成。其中需要绘制等 值线的区域由1填充,而其他的区域由0填充。
46
47
地理数据的进一步说明
28
常用的绘图控制语句
等值线线形、间隔…… set cstyle style set cint value set cmin(cmax) set black value1 value2 设置绘图区大小 set parea 1 10.5 1 8
29
图形的输出方式
图形输出语句:
printim d:\300.gif gif white x1024 y768
41
对以上流程的检验
需要初步检验一下成果,以确保下一步绘制等值线 的资料成功。 在GrADS命令窗口中打开相应站点资料控制文件名 并显示变量,可看到数据标记在相应的站点上。
42
带有国界的地图:
Set mpdset mres
Set mpdset hires
43
特定的地理网格数据
此文件为创建插值网格而建立。一般而言,我们不 需自己创建。对于特定的问题,需要特定的地理网 格数据。
如何从grib文件中提取温度、相对湿度廓线
整理BY junewu@ 2009一、GRIB数据的获取相关气象资料的获取可以参考如下网站:/article/2009-07/133.html现在用到的主要是来自ucar的NCEP再分析资料。
链接如下:/datasets/ds083.2/数据获取步骤如下:1.打开上述网页,如图2.在该页面的下部,有一个“Data Access”,单击:3.进入如下页面,该页面上提供了两种访问方式,任选其一即可(这里选用第二种方式,即Internet Download:4.后续页面还是询问获取方式,任选其一(这里选Static List):5.后续页面上列出了可获取的两种格式(都是6小时间隔的再分析资料,分Grib1和Grib2两种格式,这里我们使用Grib1格式):后续页面上选择2009年的数据:后续页面上列出了整个2009年的再分析数据,找到所需日期和时间(每天4组,6小时间隔),下载即可:二、GRIB数据的转换必备工具:包括Ultra Edit、WinRAR、Grads(Win32版本)等;下载下来的数据文件是tar格式的压缩文件,用winrar将其解压到一个文件夹,可以看到里面的grib文件:将解压获得的grib文件(这里为fnl_20091004_00_00_c)拷贝到Grads安装目录的win32e 文件夹下,打开grads,输入如下命令行:这时文件夹下就生成了20091004_00_00_c.ctl,可以用Ultra Edit打开,查看其内容。
该文件的内容主要是对数据字段的定义等。
该文件还不能直接使用,要先转换成Unix格式才能继续。
利用Ultra Edit,文件->转换->DOS到UNIX,转换ctl的编码方式,然后保存。
UltraEdit默认的“文件”菜单中可能没有这个转换项,需要自己配置一下,如图:打开“配置”对话框以后,找到“工具栏/菜单”->“定制”->“定制菜单”:在下面的对话框中,从右边的选项栏中找到相应的功能(这里要使用“转换”),将其拖到左边就行了(这里已经添加到左边了):在Grads中继续输入如下命令行:然后在文件夹下就生成了相应的idx文件,就可以使用idx文件来打开grib文件的转换结果了。
grads处理grib资料
相关附件:(共323223 字节)funny给你一个小程序,是用perl写的,然后funny转成了exe文件,你可以用它生成ctl,但生成的ctl文件还需要自己去掉这个程序强制添加上去的一些信息,然后,你用gribmap.exe生成index文件,就可以显示了。
这个zip包里有原始的perl程序,转好的exe文件和gribmap.exe三个文件。
C:\drawing\ncep-monthly\ex>grib2ctl -i prs.grib.mean.y1980>y1980.ctlUsing NCEP reanalysis table, see -ncep_opn, -ncep_rean optionsUsing NCEP reanalysis table, see -ncep_opn, -ncep_rean optionsC:\drawing\ncep-monthly\ex>gribmap -i y1980.ctlOpen Error: Unknown keyword in description file--> The invalid description file record is:--> this exe file was created with the evaluation version of perl2exe.The data file was not opened.File name is: y1980.ctl"Using NCEP reanalysis table, see -ncep_opn, -ncep_rean options"就是说你应该用-ncep_opn 或-ncep_rean 的选项,具体看帮助下面就不用说了,ctl都没有形成,自然不行的了Hi,funnyThanks!错误与“-ncep_opn, -ncep_rean options”无关,是ctl中endvars后“--> this exe file was created with the evaluation version of perl2exe.”的这句话作怪,删掉后可正常得到idx。
第2章GrADS数据格式
• ZDEF number LINEAR start increment 或ZDEF number LEVELS value-list
设置垂直网格点与气压面的映射关系。
• TDEF number LINEAR start-time increment
设置网格值与时间的映射关系 。
2. 数据描述文件的形式 以上述格点数据描述文件为例:
DSET D:\model.le.dat UNDEF 2.56E33 TITLE 5 Days of Sample Model
Output
XDEF 72 LINEAR 0.0 5.0 YDEF 46 LINEAR -90.0 4.0 ZDEF 7 LEVELS 1000 850 700 500 300 200
tdef 4 linear jan1994 1mo
vars……
2.3 其他格式数据资料的使用
1. NetCDF数据格式的资料(*.nc) GrADS可以直接处理这种格式的数据,
不需要另外编写数据描述文件。
使用命令: ga_> sdfopen <路径>文件名.nc
2. GRIB码数据格式的资料
GrADS可以直接读取该格式的数据,但是 须使用“grib2ctl”和“gribmap”命令先生 成该文件的数据描述文件(.ctl)和指针 文件(.idx)。
• NetCDF网络通用数据格式:自定义 数据格式,精确性好,便于传输。
• GRIB码数据格式:是自定义的数据 格式,压缩率高,占用空间小。
2.2 Binary数据格式文件的使用
GrADS绘图不能直接使用“Binary 数据文件”,而是通过“数据描述文 件”间接使用“数据文件”。
GrADS应用中fnl资料下载以及解码
.Fnl资料下载地址:/datasets/ds083.2/注册选择grib1中的web file listing选择complete file list选择年份选择月份点击点击即可完成下载如需下载grib2资料,步骤也是一样的。
下面介绍如何解码grib1资料,grib2资料目前还不会解码。
安装grads1.9进入安装目录C:\GrADS19\win32将目录下的四个文件拷入fnl所在文件夹目录(本次示范数据放在F:\ncep)在网上下载grib2ctl 程序同样放入fnl目录F:\ncep打开运行(window键+R)输入cmd进入dos环境生成ctl文件PS:如果出现:missing or not grib file or wgrib is not on your path则需要以管理员什么运行Win7默认的是,用户平时都不以管理员模式运行任何程序,即便你是管理员帐户也是如此,这是为了安全起见。
命令提示符模式也是Windows 7 里面的一个子程序,因此当你需要用它进行一些系统级别的操作时,必须使用管理员模式运行。
在开始菜单里找到“命令提示符”,右键点击,从弹出的菜单里选择“以管理员身份运行”就可以了。
生成idx文件至此,单个文件解码完成。
批处理fnl资料介绍:批处理的结果就是多个fnl资料公用一个ctl和idx。
现将2013年8月11日00时至18日18时资料存入F:\ncep\201308按照上述步骤生成fnl_20130811_00_00_c 的ctl文件和idx文件,将生成好的ctl文件做如下修改(红色字体为改动部分),其中32代表共有32个文件,可根据具体文件数量的多少做相应改动,其他地方保留原有即可。
重新gribmap -i 这个改完之后的ctl文件,生成一个公用的fnl.idx。
由于是不同时刻的数据共用一个ctl和idx,在grads作图的时候,需要对时间t进行设置,在本例中,201308011_00_00_c的时间为1,201308011_0,6_00_c的时间为2,依次类推。
GrADS第2章 数据处理解读
格式,压缩率高,占用空间小。例如 NCEP提供的数据资料。
NETCDF(.nc)等通用数据格式:自
定义数据格式,精确性好,便于传输。
文件中自带描述文件。
2.2 数据文件的转换
1. 转换方法
转换文件的数据存放格式,一般 是通过Power Station或Visual Fortran等软件使用Fortran或者C 语言来编程转换。
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
y………5
2.数据存放形式
二进制数据排放顺序 从内循环到外循环依次是: Z x(经度):从西到东 y(纬度):从南到北 1 2 3 4 5……….. x z(高度层数):从低层到高层 vars(各种物理变量) t(时次) x(lon) y(lat) z(lev) vars(不同变量) time 任何一维可省略。
open(1,file='u.dat') open(2,file='v.dat') open(3,file='sst.datn(12,file='mhy.grd',form='binary')
GrADS绘图软件使用手3
GrADS绘图软件使用手3第三章GrADS数据格式每一组GrADS数据应至少包括两组数据文件,数据描述文件—ASCII 码和数据文件—二进制,数据的真正存放地。
数据文件中只是用户数据的有序排放,而关于数据种类、排放次序等是单独放在一个文件中的称—数据描述文件。
而象GRIB和NETCDF等通用数据格式,以上两者是存于同一个文件的—或称为自定义/自解释格式数据。
但考虑到GrADS传统,对这类自定义格式数据仍将生成相应的数据描述文件。
上一章中我们已使用过了这样的一组数据。
以此为例,介绍用户如何按GrADS的格式,将自己的数据生成相应的数据文件和数据描述文件。
1.格点数据描述文件model.le.ctl文件清单:以某开始的行为注解行。
1.1数据描述文件各项解释1.DSET数据文件名定义与此数据描述文件相对应的数据文件名。
若两者位于同一目录,前面的路经可以省略或以“^”开始,代表两者位于同一目录。
若不在同一目录下,应给出路经参数。
如:c:/pcgrad/ample/model.le.dat56注意路经的给法与DOS不同,而与UNI某环境一致,便于移植!或c:\\pcgrad\\ample\\model.le.dat,两种都行。
2.TITLE数据文件说明文字串。
3.UNDEFvaule定义缺测值。
一般给一很大的正/负值,表示,当取值超过这一正值/低于定义的负值,认为该值无效。
(GrADS采用跳过或用周围有效点的值处理。
)4.OPTIONS这里定义了与二进制存储有关的选项,二进制存储的一大特点是可移植性差,因此通过keyword项来增加可移植性。
若keyword省略,则OPTIONS也可省略。
可取:equential:顺序无格式方式。
yrev:Y维与YDEF定义相反方式存放。
zrev:Z维与ZDEF定义相反方式存放。
big_endian:如数据是在un,gi,hpcray机器上生成的,而目前不在此类机器上使用。
grads order
1、Run *.gs2、把grib2格式数据资料转换为grib1格式数据资料:把转换程序cnvgrib.exe、cygwin1.dll、fwrite.gs考入任意一个目录x(但最好不是c:\pcgrads\win32e),然后进入DOS(运行cmd),然后在该目录下x转换数据格式,运行“cnvgrib -g21 *****(grib2格式数据路径) ######(转换之后grib1 格式数据路径)”。
3、处理grib1格式数据,生成ctl文件:把grib2ctl.exe、grib2ctl.pl和gribmap.exe 拷入c:\pcgrads\win32e覆盖,在c:\pcgrads\win32e运行“grib2ctl ******(grib1数据路径) > ######(ctl文件路径)”。
4、生成索引文件:c:\pcgrads\win32e运行“gribmap –i ******( ctl文件路径) -0 ”。
一切OK,接下来就可以写gs文件,画图啦。
5、grads lpbc:l 为横放;p为竖放;b 为批处理,不显示图形;c为进入grads 后首先处理run后gs文件。
6、转换图元文件的显示形式:(1)转换为单色(灰色):“gxps -i ***** -o ps #####”(2)转换为彩色:“gxpsc -i ***** -o ps #####”(3)转换为白底彩色:“gxpscw -i ***** -o ps #####”7、将输出图形文件转换为gif图形格式:“gxgif –i **.gmf –o ###.gif”8、q系统环境设置查询命令9、define ***=表达式10、draw绘制线条、字符、标记等。
11、enable print ****(磁盘图元文件名),指定磁盘文件存放print生成的当前屏幕图形的图元数据。
12、print将屏幕图形转化成为图元数据。
13、disable print关闭图形输出。
生成idx文件
grads批处理ctl文件和用cmd生成idx文件的步骤(2009-07-31 14:30:09) 转载
标签:grads软件ctl idx批处理气象
分类:科研笔记
教育
一:grads批处理涉及idx文件的grib资料时,编辑grads批处理所需要的ctl文件:
(一般可以把已存在的第一个时次的ctl文件进行更改后另存为一个新的ctl文件即可,比如本次批处理的原来的ctl名字都是200206xxxx.ctl形式,则可以新建一个200206.ctl作为grads 将来要调用的ctl文件)
)
grib200206%d2%h2 时间循环
options template 多个时间序列原始数据文件想用一个数据描述文件统一地描述这些原始数据时采用的选项。
必不可少,且注意其位置。
grib200206.idx 将要生成的idx文件
120 本次批处理总共的时次个数
00Z01jun2002 批处理的起始时间
6hr 相邻时次的时间间隔
其他的部分不需要更改。
二:用cmd生成idx文件
进入cmd界面
“>”后输入’gribmap –e’,然后回车键,出现以下界面
提示行后输入ctl文件的路径和名字
按回车键后开始运行
运行结束后显示以下界面,idx文件生成。
GrADS数据格式
2. 数据描述文件的形式 以上述格点数据描述文件为例:
DSET D:\model.le.dat
UNDEF 2.56E33 TITLE 5 Days of Sample Model
Output
XDEF 72 LINEAR 0.0 5.0 YDEF 46 LINEAR -90.0 4.0 ZDEF 7 LEVELS 1000 850 700 500 300 200 100
3.数据描述文件的建立
数据描述文件为纯文本格式,可 用一般的文本编辑器产生(如记事本, 写字板等)。描述文件编辑完成后, 保存时后缀名为.ctl。
*关于plate使用
多个连续时间序列原始数据文件想用一个数据描 述文件统一地描述这些原始数据时采用该选项。
dset h%y4%m2.grd sample grid 9999 template
在使用GrADS绘图前,必须确保
所用数据文件满足GrADS的数据格式 要求。
2.1 常用数据格式的文件特点
• Binary(二进制)数据格式:可以是 格点数据或站点数据,可以用Fortran
或者C语言读写。
• NetCDF网络通用数据格式:自定义
数据格式,精确性好,便于传输。
• GRIB码数据格式:是自定义的数据
• DTYPE <option> option:grid 或 station
说明数据文件的数据类型。 默认设置: dtype grid
• OPTIONS <keywords>
定义数据存放方式的选项,keywords 有: <yrev> <zrev> <sequential> 详见P22 <byteswapped> <big-endian> <little-endian> <template>
grib数据处理注意事项
grib数据处理注意事项在处理GRIB格式的数据时,以下是一些注意事项:1.数据格式:确保你处理的数据是GRIB格式。
GRIB是一种用于气象数据的二进制格式,因此,确保你的数据是这种格式是非常重要的。
2.数据完整性:检查数据是否完整。
有时,数据可能会在传输或存储过程中丢失或损坏。
确保数据的完整性是处理数据的第一步。
3.数据预处理:在处理数据之前,可能需要进行一些预处理步骤。
例如,你可能需要清理数据,删除无效或错误的数据,或者对数据进行标准化。
4.使用正确的工具:处理GRIB数据需要专门的工具。
确保你使用的是能够处理GRIB数据的工具,例如GRADS(General Regularly-Distributed Data Services)或其他专门用于处理GRIB数据的软件。
5.注意数据单位和范围:GRIB数据通常具有特定的单位和范围。
在处理数据时,确保你了解并正确处理这些单位和范围。
6.注意数据精度:GRIB数据的精度也可能不同。
有些数据可能是整数型,而另一些可能是浮点型。
在处理数据时,确保你了解并正确处理这些精度问题。
7.注意数据的时效性:GRIB数据可能具有时效性。
有些数据可能只在特定的时间范围内有效。
在处理数据时,确保你了解并正确处理这些时效性问题。
8.备份原始数据:在处理数据之前,最好备份原始数据。
这样,如果处理过程中出现任何问题,你都可以回滚到原始数据。
9.文档记录:对所有的数据处理步骤进行记录是非常重要的。
这样,如果将来出现问题,你可以快速找到问题的来源。
用Grads处理GRIB格式文件的准备_2007-07-12
Grads处理GRIB格式文件的准备LYanbing2007-7-2初稿,2007-7-12修改1 开场说明WHAT IS GRIB?GRIB (GRIdded Binary) is an international, public, binary format for the efficient storage of meteorological/oceanographic variables. Typically, GRIB data consists of a sequence of 2-D (lon,lat) chunks of a (in most general sense) 4-D variable (e.g., u comp on the wind = f(lon,lat,level,time)). The sequence is commonly organized in files containing all variables at a particular time (i.e., 3-D (lon,lat,level) volume).大气所的NCEP再分析资料使用这种格式。
这里针对6小时一次的1°×1°,26层数据来处理。
Grads中识别路径的方式基本为Unix的方式,即路径中用斜杠/,而不是反斜杠\,cmd中也支持这种方式,所以,使用Grads及其相关组件时,指定路径用斜杠/会很方便。
Grads中用!pwd可以看到当前目录,C:盘对应/cygdrive/c/,d:盘对应/cygdrive/d/。
cmd中用pwd看到的也是如此,cygdrive是怎么来的?与cygwin程序有关,它能把Unix程序嫁接到windows下使用,它的目录系统以/cygdrive/为根目录。
如果ctl文件中,数据文件指定不是全路径,而是^,则可以在open命令中指定上述形式的全路径,例如:ga-> open /cygdrive/d/data/ncep/grib2006060100.ctl它等效于:ga-> open d:/data/ncep/grib2006060100.ctl2 生成描述文件PCGrads软件的User’s Guide中介绍了GRIB及其处理方法,但不完全。
Grib文件概述
Grib文件概述
GRIB 码是与计算机无关的压缩的二进制编码,主要用来表示数值天气预报的产品资料。
现行的GRIB 码版本有GRIB1 和GRIB2 两种格式。
[1] GRIB2较之GRIB1具有加大优点而被广泛使用。
如:表示多维数据、模块性结构、支持多种压缩方式、IEEE标准浮点表示法等。
中文名:GRIB2
外文名:GRIdded Binary
含义:计算机无关的压缩的二进制编码
形式:表示数值天气分析产品资料
意义:支持多种压缩方式
一、简介
GRIB是WMO开发的一种用于交换和存储规则分布数据的二进制文件格式。
最初GRIB 表示“二进制格点”(GRIdded Binary),后来扩展为“二进制的通用规则分布信息”(General Regularly-distributed Information in Binary form)。
目前有两个版本,第一版(GRIB1)和第二版(GRIB2)。
二、编码格式
三、应用软件
编解码工具
●GRIB API是ECMWF开发的用于编解码GRIB1和GRIB2的工具,提供c++、fortran、
python等语言的API,并提供一系列命令行工具。
●wgrib2 是NCEP开发的GRIB2命令行工具,用于读取、创建和修改GRIB2文件。
可视化工具
●GrADS
●IDV
●ncl
●magics++。
GRIB数据及其在GrADS中的使用
随着气象研究的不断深入,庞大的气象数据不 扩充,并不断对其进行完善。
但对计算机提出更高的要求,而且要求在国际间能
!&&"年,形 成 了 *+,- 的 第 一 版 本(L79C9@:
形成一种有效的、统一的、标准的数据存储和流通 !)。
的图形化和可视化处理,"’()数据也不例外。而 件,然后使用 6#/7<9=和 2-.文件生成相应的(01
网格资料分析工具 "#$%&对标准 "’()数据有较 文件。
好的支持。
第二种方法:使用 3425 的 >;8.;?47/8@A9B/
!*+ 直接处理 "’()数据
编写的 C6#/7*;1;输出 "’()数据文件的网格信息
程度上影响了气象服务的质量。
其方法可以用以下公式来说明:
本文正是基于这种目的,简要地剖析了 *+,-
!!!""M#N($!’%)…………………(!)
码的压缩方法、数据结构以及在 *./01中进行反
其中:
演的方法。
!M原始数据;
! *+,-简介
"M!"的幂指数; #M参考值(即数据的最小值);
!6! *+,-数据的发展
说,由公式(%)可见,数据的精度取决于 & 和 ’,由 文件的物理结构见图%。
于固定字长对所有数据均使用相同的字长,因此数
一个 !"#$记录最多可分为以下六段,其中两
据的精度取决于二进制字的字长(即 ’),对于变化 个是可选项:
GrADS,NCL一些经验
GrADS,NCL⼀些经验GrADS经纬度⽐例⽅法*取消经纬⽐例⾃动调整'set mproj scaled'设置绘图区域,使得⼀致'set vpage 1 7 1 7'GrADS画特定经线⽅法set clevs 23.5; d latset clevs 120;d lonGrADS 查看多个打开⽂件的ctlq ctlinfo 1q ctlinfo 2...2个不同的缺测值 fwrite更改默认缺测值GrADS⽤fwrite输出时,默认的缺测值是-9.9900000E+08,如果输⼊源的缺测值与之不⼀致,则会出现两种缺测值的情况。
解决的办法,可以在fwrite 声明后⾯设置默认缺测值设置。
⽐如'reinit''open J:/ec79-15/ansnablameansst79_15.ctl''set t 1 12''save=ave(absnablamsst,t+0,t=444,12)''modify save seasonal''set gxout fwrite''set undef 9.999E+20''set x 1 480''set y 1 89''set fwrite J:/ec79-15/seasonal.grd''d save''disable fwrite''reinit';(注:modify save seasonal命令意为将save变量修改成季节变量,⽅便与其它不同⼤⼩的变量计算(⽐如求季节距平),此外modify还有另外⼀个选项diurnal⽇变化)NCL使⽤⾃定义⾊标清风给的调⾊盘确实好⽤,⽣成的rgb格式也可以。
但是最近再次遇到了ncl⽆法正常读取colormap错误的问题,参考了⼀下官⽹。
GrADS站点资料的使用
GrADS站点资料的使用GrADS站点资料的使用台站型离散资料画图的一般原则1、把台站资料r.dat写成二进制文件r.grd一般而言,台站资料都是文本格式的,须用专门的程序写成带有站号、经度、纬度等的二进制文件。
例如:对某一时次的降水资料r.dat有如下形式:lon lat Precipitation119.8 30.6 0119.8 30.616 0119.8 30.632 0119.8 30.648 0119.8 30.664 0119.8 30.68 0119.8 30.696 0119.8 30.712 0119.8 30.728 0119.8 30.744 0119.8 30.76 0119.8 30.776 0。
该数据只有一个时次则相应的程序stn.f如下:parameter(n=10201)integer r1(n)real lat(n),lon(n),r(n)character*8 zh(n)open(1,file='d:\common\1.txt',form='formatted',status='old ')do i=1,nread(1,*)lon(i),lat(i),r1(i)r(i)=r1(i)enddodo i=1,nzh(i)=char(i)enddoopen(9,file='d:\common\r.grd',form='binary',status='unkno wn')open(99,file='d:\common\rr.txt')do 100 i=1,ntim=0.0nlev=1nflag=1write(9)zh(i),lat(i),lon(i),tim,nlev,nflagwrite(9)r(i)write(99,200)lon(i),lat(i),r(i)200 format(f8.3,f8.3,f6.2)100 continuenlev=0write(9)zh(i-1),lat(i-1),lon(i-1),tim,nlev,nflagclose(9)! do i=1,160do i=1,nif(r(i).lt.0.0)thenwrite(*,*)lon(i),lat(i),r(i)endifenddo! write(*,*)i,zh(5000),lat(5000),lon(5000),tim,nlev,nflag,r(5000)pause! enddoend2、编写r.grd数据的数据说明文件r.ctldset d:\common\r.grddtype stationstnmap d:\common\r.mapundef -999.0title station datatdef 1 linear jan1998 1movars 1r 0 99 grid data prepared for oacres functionendvars3、用r.ctl生成r.map文件实际上,是在GrADS中运行可执行文件stnmap.exe,如何运行对于自带显示窗口的GrADS1.8版本的:进入命令窗口后,在提示符下输入“!stnmap”ga_>!stnmap在出现的信息提示处输入r.ctlEnter stn ctl filename: D:\r.ctl4、生成格点文件因为GrADS只识别格点数据,所以需要把站点上的资料通过插值函数插值到某个格点文件上才能被识别。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Grads处理GRIB格式文件的准备LYanbing2007-7-2初稿,2007-7-12修改1 开场说明WHAT IS GRIB?GRIB (GRIdded Binary) is an international, public, binary format for the efficient storage of meteorological/oceanographic variables. Typically, GRIB data consists of a sequence of 2-D (lon,lat) chunks of a (in most general sense) 4-D variable (e.g., u comp on the wind = f(lon,lat,level,time)). The sequence is commonly organized in files containing all variables at a particular time (i.e., 3-D (lon,lat,level) volume).大气所的NCEP再分析资料使用这种格式。
这里针对6小时一次的1°×1°,26层数据来处理。
Grads中识别路径的方式基本为Unix的方式,即路径中用斜杠/,而不是反斜杠\,cmd中也支持这种方式,所以,使用Grads及其相关组件时,指定路径用斜杠/会很方便。
Grads中用!pwd可以看到当前目录,C:盘对应/cygdrive/c/,d:盘对应/cygdrive/d/。
cmd中用pwd看到的也是如此,cygdrive是怎么来的?与cygwin程序有关,它能把Unix程序嫁接到windows下使用,它的目录系统以/cygdrive/为根目录。
如果ctl文件中,数据文件指定不是全路径,而是^,则可以在open命令中指定上述形式的全路径,例如:ga-> open /cygdrive/d/data/ncep/grib2006060100.ctl它等效于:ga-> open d:/data/ncep/grib2006060100.ctl2 生成描述文件PCGrads软件的User’s Guide中介绍了GRIB及其处理方法,但不完全。
实际上有两种方法:1)利用工具grib2ctl.exe生成整个文件的描述文件.ctl,再利用工具gribmap.exe生成映射文件.idx;2)利用工具wgrib.exe解码文件中需要使用的部分记录,建立新的数据文件,然后人工建立描述文件.ctl。
为了使用方便,环境变量Path中增加Grads可执行文件所在目录,则在cmd中其他路径下亦可访问所有该目录下的工具。
2.1 方法1使用工具grib2ctl.exe生成GRIB数据文件的描述文件ctl,之后还要使用gribmap工具生成映射文件.idx。
1. 工具grib2ctl.exe的获得。
查看相关信息:/products/wesley/grib2ctl.html一般网上得到的是源码文件grib2ctl.pl。
ftp:///wd51we/wgrib.scripts/grib2ctl.plgrib2ctl.pl是perl语言代码,转换成exe格式需要使用perl2exe工具。
转换的过程还需要借助perl编译器,如ActivePerl。
perl2exe工具可从以下网址查看和下载:/perl2exe.htm/download/p2x-8.60-Win32.zipActivePerl可从以下网址下载:/ActivePerl/Windows/5.8/ActivePerl-5.8.6.811-MSWin32-x86-1222 08.msiActivePerl下载后安装好,perl2exe下载后解压到某个目录,把grib2ctl.pl拷贝入该目录。
在cmd命令行窗口执行:grib2ctl.plperl2exe于是生成grib2ctl.exe。
为了方便使用,把它拷贝到Grads目录下,这里是PCGrads\win32e\。
2. 工具grib2ctl.exe的使用。
使用过程中要用到wgrib工具,Grads自带了但不是最新的,最新版本需要自己下载。
查看:/products/wesley/wgrib.html可选择下载源码或已编译版本。
这里使用已编译版本,下载wgrib.exe和其依赖的cygwin1.dll文件:ftp:///wd51we/wgrib/machines/Windows/wgrib.exeftp:///wd51we/wgrib/machines/Windows/cygwin1.dll把这两个文件放置在可以访问到的地方,例如和grib2ctl.exe放置在同一目录下,在cmd 命令行窗口,cd到数据文件所在路径(这里是d:/data/ncep/),然后执行:grib2ctl.exe grib2006060100 >grib2006060100.ctl注意,这样生成的.ctl文件还不能直接使用,需要处理:去掉文件结尾多余部分,即ENDV ARS之后的关于Perl2exe声明的部分(因为我们按照前文地址得到的Perl2exe是试用版)。
得到的ctl文件举例见附录1。
3.gribmap的使用在cmd命令行窗口,cd到数据文件所在路径,然后执行:gribmap –v –i grib2006060100.ctl >b.txt则,该路径下生成映射文件grib2006060100.idx,b.txt中记录了映射的过程,打开它可以查看所有field匹配的情况,全是!!!!!MATCH才是完全匹配成功。
(这里发现有的行不是!!!!!MATCH,而是..... NOOOO,问题已经解决,见2.3节)如果不需要诊断,直接执行:gribmap –i grib2006060100.ctl保证数据文件、ctl文件、idx文件,三者齐全,则Grads下可以用命令打开:ga->open d:/data/ncep/grib2006060100.ctl4.总结实际使用过程就是:d:\data\ncep> grib2ctl.exe grib2006060100 >grib2006060100.ctl打开ctl文件,把结尾多余信息去掉d:\data\ncep> gribmap –v –i grib2006060100.ctl >b.txt根据gribmap的映射过程文件b.txt确定匹配情况,根据需要修改ctl文件(分析和修改过程见2.3节的例子),再次gribmap2.2 方法2利用工具wgrib.exe解码文件中需要使用的部分记录,建立新的数据文件,然后人工建立描述文件.ctl。
这种方法需要生成数据的备份,所以会占用较多的磁盘空间。
1.提取数据工具wgrid.exe除了像方法1中那样被grib2ctl工具调用外,还可以单独使用,用于选择性地解码GRIB文件中的记录。
要确定选择哪些记录,需要查看记录信息列表,用wgrib来生成,在数据文件路径下执行:wgrib –v grib2006060100 >a.txt该文本文件就包含了数据文件中所有记录的列表,包括记录号、变量名、变量描述等。
一般我们要解码的是多条记录,可利用批处理文件。
例如,这里我们要解码T、U、V三个变量,可以通过查看记录信息列表获知对应的记录号,然后编写批处理文件,见附录2。
这个批处理带有两个参数, %1表示输入的ncep 资料文件名,%2表示输出的二进制数据文件名,使用举例:ncep.bat grib2006060100 2006060100TUV.dat2.建立描述文件解码后的数据文件要配上ctl文件才能使用,这要手工建立。
注意ctl中要有OPTIONS yrev,表示y轴数据是反向的,因为Grads默认y轴(纬度)从南到北,而解码出的数据(纬度)排列是从北到南。
前面生成的数据文件对应的ctl内容应为:DSET ^2006060100TUV.datTITLE TUV dataUNDEF -9.99E33OPTIONS yrevXDEF 360 LINEAR 0 1YDEF 181 LINEAR -90 1ZDEF 26 LEVELS 1000 975 950 925 900 850 800 750 700 650 600 550 500 450 400 350 300250 200 150 100 70 50 30 20 10TDEF 1 LINEAR 01jun2006 06hrV ARS 3temp 26 99 temperatureu 26 99 u windv 26 99 v windENDV ARS2.3 解决idx中不匹配问题原来生成映射过程文件b.txt中,发现有7行不是!!!!!MATCH,而是..... NOOOO,这个错误已经解决!下面举例说明解决过程(针对最后一个..... NOOOO):调查现场找线索1. gribmap –v –i grib2006060100.ctl >b.txt生成的b.txt中的出事现场..... NOOOO: 285 23782648 3 1 0 27 100 500 (后面省略)可以发现出错的地方对应field号是285。
2. 用wgrib –v grib2006060100 >a.txt得到的数据field描述文件中,285号field附近的现场284:23592070:D=2006060100:GPA:1000 mb:kpds=27,100,1000:anl:"Geopotential height anomaly [gpm]285:23698038:D=2006060100:GPA:500 mb:kpds=27,100,500:anl:"Geopotential height anomaly [gpm]可以发现285号的field表示的是500hpa的“Geopotential height anomaly”,另有284号field表示的是1000hpa的“Geopotential height anomaly”,两者简称都是“GPA”。
3. grib2ctl grib2006060100 >grib2006060100.ctl生成的grib2006060100.ctl中与“Geopotential height anomaly”及“GPA”相关的现场GPAprs 2 27,100,0 ** (profile) Geopotential height anomaly [gpm]可以发现,284和285号的field被grib2ctl合成了一个2层的Var,即GPAprs。