爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 12022|回复: 23

[分享资料] 【已解决~】grads画图时原数据是正确的但是画出图来全是异常

[复制链接]
发表于 2013-9-25 20:43:20 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 柠檬汁儿 于 2013-9-25 21:57 编辑

今天做对全球夏季的OLR做EOF分解之后得到一个包含4个时间系数序列的data文件,同时生成了一个txt文件。txt文件里的数据是正确的,但是用data文件进行Grads画图的时候图像特别异常,数都很小而且大多数都是零。。。
后来我又用正确的txt文件转成grd文件画图,还是同样的错误,求助。。。有没有同学知道这种是哪里的问题?

ctl文件:
dset e:\bsiso\windnc\lee-jja-eof\bsisojja.pc.data
TITLE olr DATA
UNDEF  -9.99E+33
xdef    1 linear   0. 2.5
ydef     1 linear  -90. 2.5
zdef      1 linear   1. 1.
tdef  5520 linear 01jan1979 1dy
vars      4
pc1 0 99 pc1
pc2 0 99 pc2
pc3 0 99 pc3
pc4 0 99 pc4
endvars
QQ截图20130925203712.jpg

画出来图就一直是这个样子的。。
gs命令就是最简单的
open e:\pc.ctl
set x 1
set y 1
set z 1
set t 1 200
d pc1






=============问题解决了的分割线=================
就是往grd里写数据的时候有问题,open语句里面没有设置‘access=direct’ ‘form=unformatted’
补上之后就可以正常出图了 之前eof直接生成的的grd文件画图不对应该也是这个设置的问题=。=
旧的txt文件转grd文件的fortran程序删掉了 以下是新的==
program main
implicit none
real::pc1,pc2,pc3,pc4
integer::i,irec
real,dimension(2760)::pc

open(11,file='e:\bsiso\windnc\lee-jja-eof\BSISOjja.PC.txt',status='old')
i=1
10 read(11,*,end=100) pc1,pc2,pc3,pc4
pc(i)=pc1
i=i+1
!print*,pc1
goto 10
100 continue
close(11)

print*,i
print*
open(12,file='e:\bsiso\windnc\lee-jja-eof\pc1.grd',form='unformatted',status='replace',access='direct',recl=1)
irec=1
do i=1,2760
write(12,rec=irec)pc(i)
print*,pc(i)
irec=irec+1
end do
close(12)
end
QQ图片20130925215437.jpg
这样就对啦~


密码修改失败请联系微信:mofangbao
发表于 2013-9-25 21:01:08 | 显示全部楼层
再检查下数据是否有问题
密码修改失败请联系微信:mofangbao
发表于 2013-9-25 21:01:14 | 显示全部楼层
是不是你新生成的ctl的缺测值跟原来这个写的不一样,如果不是的话就是你本身数据计算的问题了
密码修改失败请联系微信:mofangbao
发表于 2013-9-25 21:11:42 | 显示全部楼层

版主筒子,请问一下,如果计算的数据没有问题,还有其他原因导致这个结果吗?
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2013-9-25 21:13:08 | 显示全部楼层
做个霸气的木头 发表于 2013-9-25 21:01
是不是你新生成的ctl的缺测值跟原来这个写的不一样,如果不是的话就是你本身数据计算的问题了

数据应该是没问题,刚才用surfer直接打开了grd看了一下是对的。换了缺测值也还是不对,而且数据本身没有缺测啊,都是在正负十几范围内。。
密码修改失败请联系微信:mofangbao
发表于 2013-9-25 21:14:59 | 显示全部楼层
默默dreamer 发表于 2013-9-25 21:11
版主筒子,请问一下,如果计算的数据没有问题,还有其他原因导致这个结果吗?

其他有这样的,见过的可能原因:1、缺测值没对应;2、格点间隔没对应;3、数据本身有问题
密码修改失败请联系微信:mofangbao
发表于 2013-9-25 21:18:10 | 显示全部楼层
做个霸气的木头 发表于 2013-9-25 21:14
其他有这样的,见过的可能原因:1、缺测值没对应;2、格点间隔没对应;3、数据本身有问题

多谢指教~
密码修改失败请联系微信:mofangbao
发表于 2013-9-25 21:22:47 | 显示全部楼层
柠檬汁儿 发表于 2013-9-25 21:13
数据应该是没问题,刚才用surfer直接打开了grd看了一下是对的。换了缺测值也还是不对,而且数据本身没有缺 ...

新grd的ctl贴上来看一下
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2013-9-25 21:44:50 | 显示全部楼层
做个霸气的木头 发表于 2013-9-25 21:22
新grd的ctl贴上来看一下

应该是往文件里写数据的时候有问题,刚才改了一下txt转grd的程序,数据倒是画出来了但是又出现了新的问题。。   QQ图片20130925214057.jpg
这个是前二十个点的时间序列,出现了诡异的零值。我觉着可能还是写数据的时候有问题,正在找错。。一共是2760个时间点,前面ctl里貌似写错了,我改过来画了还是这样的

这个是txt转grd改过的程序
program main
implicit none
real::pc1,pc2,pc3,pc4
integer::i,irec
real,dimension(2760)::pc

open(11,file='e:\bsiso\windnc\lee-jja-eof\BSISOjja.PC.txt',status='old')
i=1
10 read(11,*,end=100) pc1,pc2,pc3,pc4
pc(i)=pc1
i=i+1
print*,pc1
goto 10
100 continue
close(11)

print*,i
print*
open(12,file='e:\bsiso\windnc\lee-jja-eof\pc1.grd',form='unformatted',status='replace',recl=1)
irec=1
do i=1,2760
write(12,rec=irec)pc(i)
irec=irec+1
end do
close(12)
end

密码修改失败请联系微信:mofangbao
 楼主| 发表于 2013-9-25 21:51:31 | 显示全部楼层
做个霸气的木头 发表于 2013-9-25 21:22
新grd的ctl贴上来看一下

问题解决了 但是我不是很明白为什么。。
就是写数据的问题 在转grd的fortran程序里面补上access=direct就对了

谢谢版主~
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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