爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
楼主: 深度狙杀

[netcdf] 求助:下了hadisst资料,怎么原始nc资料都会不了图

[复制链接]

新浪微博达人勋

发表于 2015-4-23 21:24:40 | 显示全部楼层
本帖最后由 crazy10167 于 2015-4-28 22:43 编辑
sweet33 发表于 2015-4-23 16:53
请问下,是不是把原始nc资料写出来grd格式,再配一个ctl,在该ctl里修改缺省值么?在线等,很着急呢,O( ...

写出來时加上set undef -1000
ctl的undef改-1000即可
grads2.0以上可用这㝍成新nc檔
'reinit'
'sdfopen HadISST_sst.nc'
'set x 1 360'
'set y 1 180'
'set z 1 '
'set undef -1000'
'set t 1 1741'
'sst=sst'
'set sdfattr sst String long_name sea surface temp.'
'set sdfwrite -flt HadISST_sst_fixundef.nc'
'sdfwrite sst'
say "OK"
'quit'
grads1.9版不支持直接㝍为nc檔,请用下面
'set x 1 360'
'set y 1 180'
'set gxout fwrite'
'set fwrite hadisst.grd'
'set undef -1000';*將undef一律改为1000
tt=1
while(tt<=1741)
'set t 'tt
'd sst'
tt=tt+1
endwhile




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

新浪微博达人勋

 楼主| 发表于 2015-4-24 09:31:01 | 显示全部楼层
本帖最后由 深度狙杀 于 2015-4-24 09:33 编辑
sweet33 发表于 2015-4-23 16:53
请问下,是不是把原始nc资料写出来grd格式,再配一个ctl,在该ctl里修改缺省值么?在线等,很着急呢,O( ...

写成grd之后要编程  
里面有两个异常的值  你屏幕输出一下就知道了   一个是缺测值,另一个是-10000吧好像
把它也替换为缺测即可配ctl画图了

read.f90

741 Bytes, 下载次数: 8, 下载积分: 金钱 -5

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

新浪微博达人勋

发表于 2015-4-24 13:04:37 | 显示全部楼层
深度狙杀 发表于 2015-4-24 09:31
写成grd之后要编程  
里面有两个异常的值  你屏幕输出一下就知道了   一个是缺测值,另一个是-10000吧好 ...

嗯嗯,O(∩_∩)O谢谢,我好好研究下,有问题再来,么么哒
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-4-24 13:05:19 | 显示全部楼层
crazy10167 发表于 2015-4-23 21:24
写出來时加上set undef -1000
ctl的undef改-1000即可
grads2.0以上可用这

嗯嗯,么么哒,感动ing
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-4-28 14:59:03 | 显示全部楼层
本帖最后由 sweet33 于 2015-4-28 15:02 编辑
深度狙杀 发表于 2015-4-24 09:31
写成grd之后要编程  
里面有两个异常的值  你屏幕输出一下就知道了   一个是缺测值,另一个是-10000吧好 ...


前几天忙搞其他事情去了,今天我试了一下,还是不行呢。ctl和gs我贴上了
1.png
2.png
3.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-4-28 15:53:56 | 显示全部楼层
sweet33 发表于 2015-4-28 14:59
前几天忙搞其他事情去了,今天我试了一下,还是不行呢。ctl和gs我贴上了

不是很清楚这个set undef 语句 用法
但你这个明显是把原先的那个缺测值当成数据输出来了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-4-28 16:00:59 | 显示全部楼层
深度狙杀 发表于 2015-4-28 15:53
不是很清楚这个set undef 语句 用法
但你这个明显是把原先的那个缺测值当成数据输出来了

嗯,我把这句删掉后运行,结果依然不对呢,ctl的缺测我改成你说的32767
1.jpg
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-4-28 16:16:45 | 显示全部楼层
sweet33 发表于 2015-4-28 16:00
嗯,我把这句删掉后运行,结果依然不对呢,ctl的缺测我改成你说的32767

我的做法就是把两个数换成同一个数
所以首先有一步是把nc写成grd形式处理
然后用read.f90设置undef
do k=1,nt
   do j=1,ny
     do i=1,nx
        sst(k,j,i)=dat(k,j,i)
           if(sst(k,j,i)==-1*1e+30.or.sst(k,j,i)==-1000.)then
             sst(k,j,i)=-1*1e+30
                 endif
     end do
        end do
end do


sst(k,j,i)=-1*1e+30 这个地方以前我写的是=32767所以ctl的缺测就是32767
=-1*1e+30 的话 ctl里面的undef应该是-1e+30
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2015-4-28 16:19:24 | 显示全部楼层
深度狙杀 发表于 2015-4-28 16:16
我的做法就是把两个数换成同一个数
所以首先有一步是把nc写成grd形式处理
然后用read.f90设置undef

-1000与-1e+30任何一个数参与画图,结果都是不对的,所以把他们两都设成同一个缺测,然后在ctl里面说明
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2015-4-28 16:45:59 | 显示全部楼层
深度狙杀 发表于 2015-4-28 16:16
我的做法就是把两个数换成同一个数
所以首先有一步是把nc写成grd形式处理
然后用read.f90设置undef

是不是程序后来你改过,除了32767这里,因为我运行的时候出来的结果只有-1000和-1*1e+30,而没有32767这个值
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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