爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4828|回复: 17

[分享资料] GrADs画图出错

[复制链接]

新浪微博达人勋

发表于 2014-3-27 20:50:28 | 显示全部楼层 |阅读模式

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

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

x
用grads画全球海温平均场画成了这种,   我查了下原数据是正常的,缺测值为 -9.9900000E+08 QQ截图20140327203919.png

ctl文件如下:
dset d:\data\mean.grd
TITLE Hadley Centre sea ice and SST version 1
UNDEF    -9.9900000E+08
XDEF 360 LINEAR   -179.5 1  
YDEF 180 LINEAR  -89.5  1
ZDEF 1   LINEAR    1    1
TDEF 100 LINEAR   00z01jan1911 1yr
VARS 1
sstt  1 99  sea surface temperature   deg.C
ENDVARS

然后直接在grads里面open这个ctl直接d sstt画的
我把画图经纬度缩小了以下,就是这种了
QQ截图20140327204020.png
不知道时怎么回事,数据里面没有这么大的值呀,我看了下是负几度到二十几度,然后就是缺测值了
请大家帮忙看看,谢啦
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-3-27 22:13:07 | 显示全部楼层
漫天飞雪 发表于 2014-3-27 21:44
我grads不是很会用就用fortran编的,我也输出了grd文件呀,只是再输了一个看一下数据

我知道你输出了两个,可你不觉得两个都是有格式的么?
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2014-3-27 21:05:07 | 显示全部楼层
sstt  1 99  sea surface temperature   deg.C
我以前做的只有一层的话的99前面那个数(你写1的地方)一般都写0
你可以改了试试
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-3-27 21:05:45 | 显示全部楼层
只是在原数据基础上把每月的加起来做了一个每年的海温分布
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-3-27 21:10:17 | 显示全部楼层
shirly 发表于 2014-3-27 21:05
sstt  1 99  sea surface temperature   deg.C
我以前做的只有一层的话的99前面那个数(你写1的地方)一般 ...

改了还是这样
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-3-27 21:15:58 | 显示全部楼层
漫天飞雪 发表于 2014-3-27 21:05
只是在原数据基础上把每月的加起来做了一个每年的海温分布

你怎么查的原数据正常呢?
之前的计算步骤也贴出来。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-3-27 21:26:22 | 显示全部楼层
本帖最后由 漫天飞雪 于 2014-3-27 21:27 编辑

program main
!--------------------------------------------
!hadisst序列lon:179.5~179.5 1degree   lat:-89.5~89.5 1degree  time:jan1870~apr2012 1mon
!sst1原序列 sst取时间段后的序列 sy年平均后的海温序列
!-------------------------------------------
parameter(NX=360,NY=180,NT0=1708,NT=1200,N=100)
real count
real,allocatable:: sst1(:,:,:),sst(:,:,:),sy(:,:,:)
allocate(sst1(NX,NY,NT0),sst(NX,NY,NT),sy(nx,ny,n))
open(11,file='d:\data\hadisst.grd',form='binary')
do it=1,nt0
read(11)((sst1(ix,iy,it),ix=1,nx),iy=1,ny)
enddo
close(11)
sy=0.0

do ix=1,nx
do iy=1,ny
        do it=1,nt
        sst(ix,iy,it)=sst1(ix,iy,it+492)      !提取1911年到2010年数据
        enddo

        do t=1,n
        count=12.0
                do mon=1,12
                it=(t-1)*12+mon
                        if(sst(ix,iy,it)==-9.9900000E+08)then
                                count=count-1
                        else
                                sy(ix,iy,t)=sy(ix,iy,t)+sst(ix,iy,it)
                        endif
                enddo

                if (count==0.0)then
                        sy(ix,iy,t)=-9.9900000E+08
                else
                        sy(ix,iy,t)=sy(ix,iy,t)/count
                endif
        enddo
enddo
enddo        

open(13,file='d:\data\mean.grd')
write(13,*)(((sy(ix,iy,it),ix=1,nx),iy=1,ny),it=1,n)
close(13)
open(16,file='d:\data\mean.dat')
write(16,*)(((sy(ix,iy,it),ix=1,nx),iy=1,ny),it=1,n)
close(16)
deallocate(sst1,sst,sy)
end




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

新浪微博达人勋

 楼主| 发表于 2014-3-27 21:31:00 | 显示全部楼层
数据太大,我只能截个图 QQ截图20140327212904.png
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-3-27 21:32:09 | 显示全部楼层
我用程序也查了一下没有很大的数
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-3-27 21:38:54 | 显示全部楼层
本帖最后由 lqouc 于 2014-3-27 21:40 编辑
漫天飞雪 发表于 2014-3-27 21:26
program main
!--------------------------------------------
!hadisst序列lon:179.5~179.5 1degree   l ...


首先,你要点回复我,我才看得到。
其次这么简单的事情你咋就用Fortran写这么大一堆呢?grads直接几个命令就好了。
最后,你的fortran输出的数据就直接画图了么???有格式的grd文件啊,不能这么自欺欺人的啦。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-3-27 21:44:45 | 显示全部楼层
lqouc 发表于 2014-3-27 21:38
首先,你要点回复我,我才看得到。
其次这么简单的事情你咋就用Fortran写这么大一堆呢?grads直接几个 ...

我grads不是很会用就用fortran编的,我也输出了grd文件呀,只是再输了一个看一下数据
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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