爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9408|回复: 6

[作图] (已解决)NCL新手求教

[复制链接]
发表于 2012-6-11 23:01:28 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 MacTaylor 于 2012-6-12 23:09 编辑

我以前都是用grads,现在开始学NCL,用它做水汽通量写成一个bin文件,然后用grads画图,但是发现个问题,就是与之前grads写成的bin文件相比发生了经纬度的错位,请教大家这个怎么解决啊?
ncl文件如下:
begin

  f1      = addfile ("uwnd.mon.mean.nc", "r")
  f2      = addfile ("shum.mon.mean.nc", "r")
  u01     = f1->u(:,22,:,:)*0.00364665+37.05483
  q01     = f2->q(:,22,:,:)*0.0000003756+0.012306
  uq01    = u01*q01*3750/9.81
  u02     = f1->u(:,21,:,:)*0.00364665+37.05483
  q02     = f2->q(:,21,:,:)*0.0000003756+0.012306
  uq02    = u02*q02*7500/9.81
  u03     = f1->u(:,20,:,:)*0.00364665+37.05483
  q03     = f2->q(:,20,:,:)*0.0000003756+0.012306
  uq03    = u03*q03*7500/9.81
  u04     = f1->u(:,19,:,:)*0.00364665+37.05483
  q04     = f2->q(:,19,:,:)*0.0000003756+0.012306
  uq04    = u04*q04*7500/9.81
  u05     = f1->u(:,18,:,:)*0.00364665+37.05483
  q05     = f2->q(:,18,:,:)*0.0000003756+0.012306
  uq05    = u05*q05*8750/9.81
  u06     = f1->u(:,17,:,:)*0.00364665+37.05483
  q06     = f2->q(:,17,:,:)*0.0000003756+0.012306
  uq06    = u06*q06*10000/9.81
  u07     = f1->u(:,16,:,:)*0.00364665+37.05483
  q07     = f2->q(:,16,:,:)*0.0000003756+0.012306
  uq07    = u07*q07*10000/9.81
  u08     = f1->u(:,15,:,:)*0.00364665+37.05483
  q08     = f2->q(:,15,:,:)*0.0000003756+0.012306
  uq08    = u08*q08*10000/9.81
  u09     = f1->u(:,14,:,:)*0.00364665+37.05483
  q09     = f2->q(:,14,:,:)*0.0000003756+0.012306
  uq09    = u09*q09*7550/9.81
  uq=uq01+uq02+uq03+uq04+uq05+uq06+uq07+uq08+uq09

  fout ="out_uq.bin"
;  system ("/bin/rm -f "+fout)
  fbinrecwrite (fout,-1,f1->time)
  fbinrecwrite (fout,-1,f1->latitude)
  fbinrecwrite (fout,-1,f1->longitude)
  fbinrecwrite (fout,-1,uq)

end

ctl文件如下:
dset  ^out_uq.bin
title  zonal vertically integrated moisture flux vectors
undef -9.99e+33
options yrev
xdef  144 linear 0 2.5
ydef   73 linear -90 2.5
zdef    1 levels 300
tdef  528 linear 01JAN1958 1mo
vars 1
uq  1  99  zonal vertically integrated moisture flux vectors (kg/ms)
endvars

随便找个时间用grads画出的图是这样的:
ncl_uq.png

而我以前用grads写成的bin文件同期时间画出的图是这样的:
grads_uq.png
可以看到经纬度都有错位,grads生成的结果是正确的,但是NCL这个错误在哪里呢?谢谢大家!

密码修改失败请联系微信:mofangbao
发表于 2012-6-12 14:51:05 | 显示全部楼层
  1.   fout ="out_uq.bin"
  2. ;  system ("/bin/rm -f "+fout)
  3.   fbinrecwrite (fout,-1,f1->time)
  4.   fbinrecwrite (fout,-1,f1->latitude)
  5.   fbinrecwrite (fout,-1,f1->longitude)
  6.   fbinrecwrite (fout,-1,uq)
复制代码
这些变量都写在一个文件里,可能是这样造成了错误的结果,你试试只写uq变量。
密码修改失败请联系微信:mofangbao
发表于 2012-6-12 18:25:07 | 显示全部楼层
grads 读的应该是 "direct access" 的资料, 你是不是应该用  fbindirwrite:


http://www.ncl.ucar.edu/Document ... -in/fbindirwrite.sh
密码修改失败请联系微信:mofangbao
发表于 2012-6-12 18:27:16 | 显示全部楼层
还有你应该不用输出  time, latitude 和 longitude 的.


密码修改失败请联系微信:mofangbao
 楼主| 发表于 2012-6-12 23:07:09 | 显示全部楼层

谢谢!我现在明白了,我把time,latitude,longitude也写进bin文件了,之前以为只是定义维数呢,多谢解答!
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2012-6-12 23:09:02 | 显示全部楼层
超台十八 发表于 2012-6-12 18:25
grads 读的应该是 "direct access" 的资料, 你是不是应该用  fbindirwrite:

我之前也以为应该用fbindirwrite,试了发现不通,还是应该用fbinrecwrite,不过问题已经解决了,你说的对,我不应该把维数也写进去,多谢帮忙哈!
密码修改失败请联系微信:mofangbao
发表于 2019-9-4 10:52:16 | 显示全部楼层
MacTaylor 发表于 2012-6-12 23:09
我之前也以为应该用fbindirwrite,试了发现不通,还是应该用fbinrecwrite,不过问题已经解决了,你说的对 ...

请问楼主解决了这个问题嘛?我提取出来的数据有问题,能交流下脚本嘛~~谢谢你!~
密码修改失败请联系微信:mofangbao
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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