爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 18819|回复: 44

GrADS数据转为NetCDF格式数据

[复制链接]

新浪微博达人勋

发表于 2012-7-12 10:10:55 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 MeteoInfo 于 2012-7-12 10:24 编辑

增加了将GrADS二进制格点数据转为NetCDF格式数据的功能,使用GrADSDataInfo类里添加的ConvertToNCData(string ncFilePath)方法,用GrADS的经典示例数据(model.ctl, model.dat)进行了测试,应该还不错,不过也仅做了这个测试,不能保证一定能输出正确结果,大家可以用自己的数据测试一下。

之前有人反映一些nc文件的时间解码得不正确(比如slp.1978.nc),也做了修改。此类数据的时间变量的单位为:units = "hours since 1-1-1 00:00:0.0",不清楚为什么解出来的时间会多48小时(解码程序应该没有问题),为了符合实际数据时间,简单粗暴地给所有时间减去了48小时,以后有了更好的理解再说。

懒得把这个功能加在菜单里,可以写个很简单的脚本程序来完成(脚本程序也更灵活),示例如下:
  1. #--------------------------------------------------------        
  2. # Author: Yaqiang Wang                                          
  3. # Date: 2012-7-12                                                
  4. # Purpose: Convert GrADS binaray grid data to NetCDF data  
  5. # Note: Sample                                                   
  6. #-----------------------------------------------------------     
  7. import clr
  8. clr.AddReference("MeteoInfoC.dll")
  9. from MeteoInfoC import *
  10. from MeteoInfoC.Data import *
  11. from MeteoInfoC.Data.MeteoData import *

  12. #---- Set data files
  13. infile = 'F:\\Temp\\GrADS\\model.ctl'
  14. outfile = 'F:\\Temp\\nc\\model.nc'

  15. #---- Convert GrADS data to netCDF data
  16. aDataInfo = GrADSDataInfo()
  17. aDataInfo.ReadDataInfo(infile)
  18. aDataInfo.ConvertToNCData(outfile)
  19. print 'Finished...'
复制代码



评分

参与人数 1金钱 +1 收起 理由
wendyfei + 1 赞一个!

查看全部评分

密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2012-7-12 12:08:43 | 显示全部楼层
楼主体谅一下比你更懒的“菜鸟”们啊,哈哈  不过既然脚本文件都出来了,运行一下也是很方便的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-10-3 11:53:14 | 显示全部楼层
楼主  菜鸟请教这这个怎么用啊?谢谢了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-10-3 12:46:18 | 显示全部楼层

MeteoInfo的Tools -> Script菜单打开MeteoInfo的脚本编辑器,将一楼帖子里的脚本代码复制、粘帖到脚本编辑器中,修改数据路径,点击脚本编辑器中Run Script按钮运行该脚本脚本即可。
Image00921.png

密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-10-3 22:21:11 | 显示全部楼层
本帖最后由 残月 于 2012-10-3 22:51 编辑
MeteoInfo 发表于 2012-10-3 12:46
MeteoInfo的Tools -> Script菜单打开MeteoInfo的脚本编辑器,将一楼帖子里的脚本代码复制、粘帖到脚本编辑 ...

非常感谢楼主~

但是出现了个错误:17层转换后只剩一层了,是不是还需要什么设置呢?谢谢楼主
下面是ctl的内容
dset D:\Linux\home\kaomiao\newdata\air_jan1tofeb10.dat
undef -9.96921e+36
title mm
xdef 144 linear 0 2.5
ydef 73 linear -90 2.5
zdef 17 levels 1000 925 850 700 600 500 400 300 250 200 150 100 70 50 30 20 10
tdef 164 linear 00Z01jan1960 6hr
vars  1
aveair 17 99  *air      
ENDVARS

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-10-3 22:56:16 | 显示全部楼层
残月 发表于 2012-10-3 22:21
非常感谢楼主~

但是出现了个错误:17层转换后只剩一层了,是不是还需要什么设置呢?谢谢楼主

可能是bug,这个功能没有经过多少测试。你把GrADS格式数据发上来我测试一下。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-10-4 09:40:02 | 显示全部楼层
MeteoInfo 发表于 2012-10-3 22:56
可能是bug,这个功能没有经过多少测试。你把GrADS格式数据发上来我测试一下。


数据和CTL文件

air_clm.ctl

291 Bytes, 下载次数: 3, 下载积分: 金钱 -5

air_jan1tofeb10.zip

32.55 MB, 下载次数: 10, 下载积分: 金钱 -5

密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-10-4 10:20:23 | 显示全部楼层

刚试了试,没有问题呀,多层数据都在。
Image00924.png
Image00925.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-10-4 10:34:23 | 显示全部楼层
MeteoInfo 发表于 2012-10-4 10:20
刚试了试,没有问题呀,多层数据都在。

用Meteonfo打开是正常的,用grads打开是不对的

grads-error.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-10-4 10:55:57 | 显示全部楼层
残月 发表于 2012-10-4 10:34
用Meteonfo打开是正常的,用grads打开是不对的

grads中的sdfopen对NC文件的识别能力很有限,我也无可奈何。
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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