爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 50906|回复: 26

[求助] python读取grads格式的ctl和dat格式的数据

[复制链接]

新浪微博达人勋

发表于 2017-12-14 10:49:25 | 显示全部楼层 |阅读模式

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

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

x
工作需要将grads可读的ctl加dat文件提取部分数据输出成txt格式,后续再进行处理 ,因为grads用的不是特别6,所以想用python实现,我知道python有grads的包,但网上相关数据少,没查到怎么用,也没查到是不是要linux才有那个包,想问问有没有大神知道怎么用  或者有没有其他python读取dat数据的方法,之前直接用读取二进制的方法打开数据不对
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-12-14 14:05:10 | 显示全部楼层
不建议用 PyGrADS,这个是用Python调用GrADS,Python只是作为接口,没学过或用过GrADS的话相当于白瞎

我之前直接读取二进制是没错的,比如
data = numpy.fromfile(filename,dtype='f')
楼主可以再去试试,不要轻易 放 弃  治     疗嘛

不过这样对单变量的文件好一些,多变量的需要根据说明文件再后续加些调整


密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2017-12-22 09:15:19 | 显示全部楼层
weinihou 发表于 2017-12-20 20:21
https://stackoverflow.com/questions/14245094/how-to-read-part-of-binary-file-with-numpy

所以说 ...

非常感谢1111111
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

 楼主| 发表于 2017-12-18 14:48:56 | 显示全部楼层
weinihou 发表于 2017-12-14 14:05
fang qi zhi liao   竟然是会被屏蔽的

你好  我试着用你说的方法,这个文件2个g左右,python会报错   应该是文件太大 我试着把count设的小一点  是可以读出来的  但是全部就没办法读出来  我就没法下一步reshape了,还想问问你遇到过类似的情况吗
ETQ5GOH_403G{%7$E[XO)4W.png
}]L}90IGN}YHLV307_NM9)M.png
密码修改失败请联系微信:mofangbao
回复 支持 1 反对 0

使用道具 举报

新浪微博达人勋

发表于 2017-12-14 11:49:11 | 显示全部楼层
可以考虑用MeteoInfoLab,脚本语言是Jython,和Python语法一样。可以方便读取各类气象数据格式(包括GrADS),参考这里:http://www.meteothinker.com/docs ... ata/asciiwrite.html
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-12-14 12:08:04 | 显示全部楼层
MeteoInfo 发表于 2017-12-14 11:49
可以考虑用MeteoInfoLab,脚本语言是Jython,和Python语法一样。可以方便读取各类气象数据格式(包括GrADS ...

因为后面转换后的txt数据还要再用python进行处理  所以需要整个流程全部用python
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-12-14 14:05:37 | 显示全部楼层
fang qi zhi liao   竟然是会被屏蔽的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-12-15 19:24:20 | 显示全部楼层
4楼地板是正解,读取后对data.reshape(t维数,z维数,y维数,x维数),就得到了相应的四维数组
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-12-19 10:54:59 | 显示全部楼层
樱桃小丸子 发表于 2017-12-18 14:48
你好  我试着用你说的方法,这个文件2个g左右,python会报错   应该是文件太大 我试着把count设的小一点  ...

没搞过这么大的!
2个G的你都想一次性读进来啊,考虑到之后还要做一些操作和运算,就算都进来了也容易崩吧

我觉着lz你就一段一段搞好了…………
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2017-12-20 10:46:14 | 显示全部楼层
weinihou 发表于 2017-12-19 10:54
没搞过这么大的!
2个G的你都想一次性读进来啊,考虑到之后还要做一些操作和运算,就算都进来了也容易崩 ...

那麻烦再请教一下  一段一段读的话data=numpy.fromfile(filename,dtype='f',count=???)  是不是可以一层一层的读  那比如说count第一段取前2000个,那第2000-4000个我用count怎么写呢?我在numpy的官方文档也没找到  或者有什么其他方法可以切成一段一段的吗
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-12-20 20:21:26 | 显示全部楼层
樱桃小丸子 发表于 2017-12-20 10:46
那麻烦再请教一下  一段一段读的话data=numpy.fromfile(filename,dtype='f',count=???)  是不是可以一 ...

https://stackoverflow.com/questi ... ary-file-with-numpy

所以说要多用搜索引擎诶……
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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