爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 8641|回复: 15

格点txt数据转出二进制文件画图偏移

[复制链接]

新浪微博达人勋

发表于 2014-4-20 15:24:39 | 显示全部楼层 |阅读模式
GrADS
系统平台:
问题截图:
问题概况: 0.5格点的txt数据转成二进制后画图图像整个位置翻转..
我看过提问的智慧: 看过
自己思考时长(天): 3

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

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

x
这是我转格式的fortran程序:
parameter(m=72,n=128)
dimension  y(m,n)
integer i,j

open(12,file='zong333.txt')
read(12,*) ((y(i,j),j=1,n),i=1,m)
close(12)

open(13,file='zong333.dat',form='binary')
write(13) ((y(i,j),j=1,n),i=1,m)
close(13)

end
这是我编写的ctl:
dset E:/12jiangshui/zong333.dat
title rainnc
undef -9999.0
xdef 128 linear 72 0.5
ydef 72 linear 18 0.5
zdef 1 levels 1000
tdef 1 linear 00Z01DEC1984 1yr
vars 1
rain 0 99  rainnc
endvars

txt数据是72行128列的格点数据。还请各位帮忙看一下问题出在哪里,不胜感激。

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

新浪微博达人勋

发表于 2014-4-20 15:31:57 | 显示全部楼层
是不是因为你的txt数据保存是从北到南的,而grads的默认保存方式是从南到北的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-4-20 15:41:08 | 显示全部楼层
同样求问T T
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-4-20 15:42:40 | 显示全部楼层
是不是ctl应该加一句OPTIONS YREV 将y坐标转置

评分

参与人数 2金钱 +15 收起 理由
sunshinezhpb + 10
lqouc + 5

查看全部评分

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

新浪微博达人勋

 楼主| 发表于 2014-4-20 15:50:57 | 显示全部楼层
yuppieflu 发表于 2014-4-20 15:42
是不是ctl应该加一句OPTIONS YREV 将y坐标转置

非常感谢,y轴转置后是正确的...之前理解错了,还以为是y轴反向,画出来还是错的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-4-20 15:56:30 | 显示全部楼层
sunshinezhpb 发表于 2014-4-20 15:50
非常感谢,y轴转置后是正确的...之前理解错了,还以为是y轴反向,画出来还是错的

客气客气 互相鼓励
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-4-20 15:58:18 | 显示全部楼层
朽木露琪亚 发表于 2014-4-20 15:31
是不是因为你的txt数据保存是从北到南的,而grads的默认保存方式是从南到北的

嗯,估计是这样的,副队长sama~
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-4-20 15:59:42 | 显示全部楼层
sunshinezhpb 发表于 2014-4-20 15:50
非常感谢,y轴转置后是正确的...之前理解错了,还以为是y轴反向,画出来还是错的

这个治标不治本,楼主还是有空搞清楚grads的存放规则,这是你的数据刚好就有个形状,我猜要是没有undef的设置,很可能你都看不出来错误。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-4-20 16:17:03 | 显示全部楼层
lqouc 发表于 2014-4-20 15:59
这个治标不治本,楼主还是有空搞清楚grads的存放规则,这是你的数据刚好就有个形状,我猜要是没有undef的 ...

这个倒真要请教一下。我把txt数据转出dat,再把dat转成txt,数据存放位置没有变化,我也就以为格式转换没有问题了,现在想来应该是负负得正了...
也就是说,这类二进制文件的保存方式是从西到东,从南到北这样吗?txt格式都是北到南的,不知道处理方法除了在ctl里加上Y轴转置以外还有什么常用方法呢?直接在fortran程序里新设个数组赋值略显麻烦了点。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2014-4-20 16:23:40 | 显示全部楼层
sunshinezhpb 发表于 2014-4-20 16:17
这个倒真要请教一下。我把txt数据转出dat,再把dat转成txt,数据存放位置没有变化,我也就以为格式转换没 ...

这个不能说是二进制文件从东到西,而是grads认为你存入的第一个空间点(1,1)在左下角,也就是西南角,这只是grads的规定。
至于你说的调整方法有很多,在grads的ctl里面可以设置ydef的步长为负值,例如ydef 72 linear 53 -0.5,或者也可以再fortran调整,fortran中也不需要新设置数组,直接在你的输出循环里面将步长变为负值就好了,方法类似ctl。
楼主编程要灵活一点啦!

评分

参与人数 1金钱 +10 收起 理由
sunshinezhpb + 10 很有用,很感谢

查看全部评分

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

本版积分规则

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

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

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