爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 9806|回复: 15

[图形美化] 关于编写ERA-Interim的CTL

[复制链接]

新浪微博达人勋

 成长值: 0
发表于 2017-11-8 01:14:21 | 显示全部楼层 |阅读模式

登录后查看更多精彩内容~

您需要 登录 才可以下载或查看,没有帐号?立即注册 新浪微博登陆

x
大家好~我这遇到点小问题

我打算画一个 纬度(x轴)--时间(y轴)图,时间范围为两个月
我要画的是u850, 数据来源于ERA-Interim: http://apps.ecmwf.int/datasets/d ... l-daily/levtype=pl/

由于pressure level 的数据都是一个月一个月的nc文件,我知道nc文件可以直接sdf打开
但由于我要一口气画两个月的图只能写一个 ctl将他们合并

在我上传的两个图片文件中,1是直接sdfopen 打开后 "d u"的图
2是我编写了ctl文件打开的图,ctl文件的格式我是按照sdfopen 文件之后查看q ctlinfo格式弄的
查看图片就知道,两者差了十万八千里。。图2中u能达到-20000到20000。。囧
求大神告知哪里有错,因为我要画一个两个月的图,只能写ctl合并,并且era-interim的网站暂时还没支持一次下载多个月的日平均数据(daily)

本想上传数据的,但200多兆超了上传范围。

dset D:\Precip\TRMM\2002\200201\200201U850.nc
title U850
options template
undef -9.99e+33
dtype netcdf
xdef 1440 linear 0 0.25
ydef 721 linear -90 0.25
zdef 1 linear 0 1
tdef 124 linear 00Z01JAN2002 360mn
vars 1
u=>u  0  t,y,x  U component of wind
endvars

1.png
2.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2017-11-8 01:19:47 | 显示全部楼层
请版主保留这个,多谢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2017-11-8 01:32:16 | 显示全部楼层
一个地方我注意到的是,图1和图2几乎处于颠倒的状态,然后我将options template 换成了 options yrev,结果图倒是变得近似了,但数字还不对,还是-20000
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2017-11-8 02:24:20 | 显示全部楼层
还是靠午饭帮我思考了很多昂
自己解决了这个问题

方法如下
首先我发现加入yrev后,图1和图2分布相似,仅仅只是数值上有差异,所以,我!ncdump -h了一下数据,发现了这样的情况:

variables:
        float longitude(longitude) ;
                longitude:units = "degrees_east" ;
                longitude:long_name = "longitude" ;
        float latitude(latitude) ;
                latitude:units = "degrees_north" ;
                latitude:long_name = "latitude" ;
        int time(time) ;
                time:units = "hours since 1900-01-01 00:00:0.0" ;
                time:long_name = "time" ;
                time:calendar = "gregorian" ;
        short u(time, latitude, longitude) ;
                u:scale_factor = 0.00146870193037883 ;
                u:add_offset = 2.89491079063637 ;
                u:_FillValue = -32767s ;
                u:missing_value = -32767s ;
                u:units = "m s**-1" ;
                u:long_name = "U component of wind" ;
                u:standard_name = "eastward_wind" ;

其中我发现了scale factor 和 add offset这两个变量,好奇的查了一下发现
http://www.igorexchange.com/node/6550
这位大哥也遇到了这个问题,并且直接说出了解决办法:
multiply by "scale factor" and then add the "add offset" to every single value

如此这般,我解决了这个问题。。。。

以下是我的ctl,经检查,没啥毛病

dset D:\Precip\TRMM\2002\200201\2002%m2.nc
title U850
options template
options yrev
dtype netcdf
undef -32767
xdef 1440 linear 0 0.25
ydef 721 linear -90 0.25
zdef 1 linear 0 1
tdef 236 linear 00Z01JAN2002 360mn
vars 1
u=>u  0  t,y,x  U component of wind
endvars

朱军晚安
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-9-8 15:00:50 | 显示全部楼层
tbag 发表于 2017-11-8 02:24
还是靠午饭帮我思考了很多昂
自己解决了这个问题

想问下您scale factor、add offset怎么使用的,可以上脚本吗?谢谢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2018-9-8 23:38:29 | 显示全部楼层
看云淡风清 发表于 2018-9-8 15:00
想问下您scale factor、add offset怎么使用的,可以上脚本吗?谢谢

如果我没记错的话,首先在ctl中加入options yrev

然后

真实数据=文件数据*scale_factor+addoffset的数值 (ncdump中查看)
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-9-9 14:30:18 | 显示全部楼层
tbag 发表于 2018-9-8 23:38
如果我没记错的话,首先在ctl中加入options yrev

然后

您好,我之前也用ncdump查看过,现在按照您的提示,nc文件的变量信息如下:
ctl是:
dset E:\ECMWF\_grib2netcdf-atls06-98f536083ae965b31b0d04811be6f4c6-Lqk4F4.nc
title Geopotential
undef -32767
options yrev
dtype netcdf
xdef 720 linear -180 0.5
ydef 361 linear -90 0.5
zdef 37 levels 1000 975 950 925 900 875 850 825
800 775 750 700 650 600 550 500 450 400
350 300 250 225 200 175 150 125 100 70
50 30 20 10 7 5 3 2 1
tdef 124 linear 00Z01JAN2013 360mn
vars 1
z=>z  37  t,z,y,x  Geopotential
endvars
画图的时候我是用z*7.66247+244051,但是和nc文件直接出的图还是不一样啊。。请问是什么原因?

QQ图片20180909142706.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2018-9-14 10:42:56 | 显示全部楼层
tbag 发表于 2018-9-8 23:38
如果我没记错的话,首先在ctl中加入options yrev

然后

您好,如果高度层只有一层的话,您的方法可以,但是我的数据高度层是多层的,这样写就不对了,您知道怎么解决吗
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2018-9-14 21:06:26 | 显示全部楼层
看云淡风清 发表于 2018-9-14 10:42
您好,如果高度层只有一层的话,您的方法可以,但是我的数据高度层是多层的,这样写就不对了,您知道怎么 ...

这个跟有多少个高度层没太大关系吧,只要按照文件数据*scale factor+addoffset就是真实数据
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2019-2-28 11:49:11 | 显示全部楼层
看云淡风清 发表于 2018-9-14 10:42
您好,如果高度层只有一层的话,您的方法可以,但是我的数据高度层是多层的,这样写就不对了,您知道怎么 ...

请问您最后解决了吗?我和你遇到同样的问题
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

Copyright ©2011-2014 bbs.06climate.com All Rights Reserved.  Powered by Discuz! (京ICP-10201084)

本站信息均由会员发表,不代表气象家园立场,禁止在本站发表与国家法律相抵触言论

快速回复 返回顶部 返回列表