爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
楼主: happyhui

[分享资料] 关于hadley center上的nc数据读取

[复制链接]

新浪微博达人勋

 楼主| 发表于 2012-8-1 14:55:09 | 显示全部楼层
本帖最后由 happyhui 于 2012-8-1 15:31 编辑
易小凯 发表于 2012-7-31 21:30
我下了这个月的数据,没有问题的啊
数据都很正常的

啊!!!!  我找到原因了!!!  那个nc的metadata中明明写得undef是-1e30啊!!  我读出数据之后好多-9.99e+8,索性改以下ctl中的undef,就出图了!     你的nc文件的undef是多少呢?  我的怎么这么坑爹啊
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-8-1 14:57:41 | 显示全部楼层
是不是下载的数据有问题?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-8-1 15:25:37 | 显示全部楼层
大家看我的图画出来居然是这样的。。。
未命名.jpg
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-8-1 15:37:26 | 显示全部楼层
Finally 出图了,原来ctl的undef 设的也不对,metadata是这么查吧? hadleycenter这不是坑我么。。。谢谢大家的帮助,问题终于解决了!  开心,哈哈!

坑爹的undef

坑爹的undef
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-8-1 22:28:13 | 显示全部楼层
happyhui 发表于 2012-8-1 14:47
声明binary之后果然好啦! 终于找到原因了! 有几个问题想请教您:
1、我们学fortran的时候,二进制文件 ...

今天跟清风大大讨论下你的程序,得出结论如下:
1、你程序两个地方错了,一是数组里面read(9,rec=1) ((sst(ix,iy),i=1,ix),j=1,iy),sst(i,j)才对,你马虎了,二是你的recl=ix*iy*4才是,不乘4不报错也行,这个跟编译器有关;
2、二进制数据这两种方法读取都可以,注意使用方法就行。如果数据时常规的顺序读取,选择binary读取方法简单的多,也不容易出错。
3、无格式直接读取主要是用于大量的数据需要处理,你只需要其中部分,可以用记录的跳跃选取你要的数据,处理气象数据,这些基本用不上,因为你可以再fwrite的时候就处理好。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-8-1 22:58:04 | 显示全部楼层
做个霸气的木头 发表于 2012-7-31 21:11
二进制顺序数据文件与无格式直接文件存在的本质的区别,你用的后者,grads输出的是前者;无格式直接文件要 ...

前两天我处理nc文件,在数据读取时也出现了错误。当时以为是set x sety以经纬度表示出错,而之后改成了坐标貌似读出来的值也是正确的,但是完全没有考虑到可能是这方面的问题。麻烦问下,照这种情况,以后在处理NC文件的时候都有哪些要注意的?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-8-1 22:59:22 | 显示全部楼层
happyhui 发表于 2012-8-1 14:55
啊!!!!  我找到原因了!!!  那个nc的metadata中明明写得undef是-1e30啊!!  我读出数据之后好多-9 ...

陆地上的sst当然是缺测啦
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-8-2 08:03:40 | 显示全部楼层
karen 发表于 2012-8-1 22:58
前两天我处理nc文件,在数据读取时也出现了错误。当时以为是set x sety以经纬度表示出错,而之后改成了坐 ...

其实一般fwrite偶尔会出现只有格点才能正常输出的情况,下面写ctl的时候,常常是缺测值、精度跟nc对不上,这个问题,用q ctlinfo,查询下,照着写ctl就行了;还有fortran读取数据的时候容易在格点数目,读取顺序、层次上出错,再就是这篇里面出现的问题,一般而言用binary不容易出错。任何一个点你打个马虎眼就可能出错,认真点就好~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-8-2 09:22:05 | 显示全部楼层
做个霸气的木头 发表于 2012-8-1 22:28
今天跟清风大大讨论下你的程序,得出结论如下:
1、你程序两个地方错了,一是数组里面read(9,rec=1) ((s ...

嗯,我明白啦,非常感谢!
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-8-2 16:30:31 | 显示全部楼层

明白啦~谢谢
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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