爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11631|回复: 16

[分享资料] 如何用GrADS把数据转化为整数输出?

[复制链接]
发表于 2012-5-20 11:04:13 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 lz007700 于 2012-5-22 22:38 编辑

最近要处理降水数据,里面有降水分型,不同的降雨类型用不同的数值表示,比如100、125都代表层云降水,210代表对流降水,我想把这些数值都转化为整数,比如100和125都变为1;210变为2;就用了grads里的rc=math_int(data/100) 函数,data是100,125,210这些原始值的变量名,然后用fwrite写出保存,可是运行提示出错了,请问 Grads 能这么处理数据吗?是不是因为是整形所以不能被grads识别了?
这是我的gs文件及运行出错提示: 错误提示.png
'reinit'
'open E:\rain\rainType_pre.ctl'
'set gxout fwrite'
'set fwrite E:\rain\raintype_pre1_error.dat'
'set x 1 40'
'set y 1 40'
'set z 1'
'set t 1'
'define type=data*0.01'
'define rc=math_int(type)'
'd rc'
'disable fwrite'
'reinit'
;
密码修改失败请联系微信:mofangbao
发表于 2012-5-20 11:16:04 | 显示全部楼层
GrADS能处理数据的,你看看是不是语法写错了,仔细检查一下吧~~~
密码修改失败请联系微信:mofangbao
发表于 2012-5-20 12:21:23 | 显示全部楼层
路过,学习
密码修改失败请联系微信:mofangbao
0
早起挑战累计收入
发表于 2012-5-20 14:35:26 | 显示全部楼层
你的 data 这些是什么类型的,是格点场那种的(也就是可define定义的),还是自己赋值的,比如 i=1,可以不加引号的,这两种类型的数据是不一样的,所用的数学函数也不同,你可以去官网看看 math类别的函数,还有只有具有维数环境的变量才能fwrite的 自己定义的 一个 i=100 是不能fwrite的
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2012-5-22 22:35:38 | 显示全部楼层

不好意思回复晚了,我用的data是二进制格点数据,我把错误提示和gs贴出来了,我觉得grads应该可以这么处理数据吧,把110, 220,230,252这样的原始数据,转换成1,2,2,2这样的数据保存成二进制文件。可总是出错啊
密码修改失败请联系微信:mofangbao
0
早起挑战累计收入
发表于 2012-5-23 08:51:05 | 显示全部楼层
lz007700 发表于 2012-5-22 22:35
不好意思回复晚了,我用的data是二进制格点数据,我把错误提示和gs贴出来了,我觉得grads应该可以这么处理 ...

GrADS官网写的很清楚啊,math类的函数是针对script中的变量的,不是针对打开的二进制文件里面的场变量的,所以你用这个函数在引号里面是不能被识别的,也就是说,可以用 a=math_int(3.5) 但是不能''define a=math_int(rain)'这种,不知道你明白了没有,你如果想对场变量进行操作,可以用兰溪的grads2ascii(set gxout print和write命令结合)写出到文本文件
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2012-5-23 15:55:44 | 显示全部楼层
mofangbao 发表于 2012-5-23 08:51
GrADS官网写的很清楚啊,math类的函数是针对script中的变量的,不是针对打开的二进制文件里面的场变量的, ...

嗯,我明白了。不过grads不能直接把处理好的数据还存为dat文件了吗?这样就不用再编写fortran,再重新写ctl了。
密码修改失败请联系微信:mofangbao
发表于 2012-5-23 16:22:17 | 显示全部楼层
路过,学习~
密码修改失败请联系微信:mofangbao
0
早起挑战累计收入
发表于 2012-5-23 18:24:46 | 显示全部楼层
lz007700 发表于 2012-5-23 15:55
嗯,我明白了。不过grads不能直接把处理好的数据还存为dat文件了吗?这样就不用再编写fortran,再重新写c ...

你还是没分清GrADS中场变量和script中定义的变量的区别,前者可以通过fwrite写出为二进制,也可以输出为ascii码文件,后者只能通过某些手段输出为文本的形式
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2012-5-24 08:53:41 | 显示全部楼层
mofangbao 发表于 2012-5-23 18:24
你还是没分清GrADS中场变量和script中定义的变量的区别,前者可以通过fwrite写出为二进制,也可以输出为a ...

昨天我又想了想,觉得只要不使用math函数,用普通的求整算法应该是可以输出为二进制文件的,因为通常在grads里都用原始变量计算新变量都可以通过define和fwrite语句输出为二进制文件的,只是不用math_int函数,自己编算法好像比较麻烦。
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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