爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4991|回复: 14

[求助] 读取.grd数据有误,寻求帮助

[复制链接]
发表于 2014-10-20 13:20:39 | 显示全部楼层 |阅读模式

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

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

x
请教各位:
我用ARWpost 进行高度插值,读取pre\tk\tc\td\rh数据,输出.ctl文件盒.dat文件。namelist如下:

QQ截图20141020131508.png

QQ截图20141020131523.png


之后,用grads 读取定点经纬度的数据,写入.grd文件中。gs文件:
'reinit'
'open /global/research/iumhouyy/grads/test-pressure.ctl'
'set gxout fwrite'
'set fwrite /global/research/iumhouyy/grads/test-pressure.grd'
'set lat 35.0'
'set lon 118.8'
'set t 1'
i=1
while(i<48)
'set z 'i
'd pressure'
'd tk'
'd tc'
'd td'
'd rh'
i=i+1
endwhile
'disable fwrite'
;

再用fortran 读取.grd 文件的数据。代码如下:

parameter(n=235,m=1)
real a(n,m)
integer::i,j
integer,parameter::nl=47
  
open(11,file='D:\Fortran\ARWpost\test-pressure.grd',form='binary')
read(11) a
close(11)

open(12,file='D:\Fortran\ARWpost\test-pressure.txt',form='formatted')
    j=1
do i=1,n
write(12,100)a(i,j)
enddo
close(12)
100   format(f30.5)
end

但是结果不对,如下:
                       0.00000
                       0.00000
******************************
       -1916629155840000.00000
                       0.00000
                       0.00000
                       0.00000
                       0.00000
******************************
******************************
******************************
                       0.00000
                       0.00000
                       0.00000
******************************
197694981217043909443584.00000
                       0.00000
******************************
                       0.00002
                       0.00000
                48350480.00000
             -5823301120.00000
                       0.00000
                       0.00331
******************************
                       0.00000
                       0.00000
                       0.00000
******************************
                       0.00000
     4529162173204660224.00000
        6035942489980928.00000
                      -0.00669
      -69257417094856704.00000
******************************
                       0.00000
                       0.00000
******************************
..................请各位帮忙给看看。多谢!
密码修改失败请联系微信:mofangbao
发表于 2014-10-20 13:28:28 | 显示全部楼层
open(11,file='D:\Fortran\ARWpost\test-pressure.grd',form='binary')
do i=1,nl
read(11) a(5*i-4:5*i,1)
end do
close(11)
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-10-20 13:40:37 | 显示全部楼层
lqouc 发表于 2014-10-20 13:28
open(11,file='D:\Fortran\ARWpost\test-pressure.grd',form='binary')
do i=1,nl
read(11) a(5*i-4:5*i, ...

nl =47 ,是我提取的的47个高度层个数。我按照你的改了,
        do k=1,nl
        read(11)a(5*k-4:5*k,1)
        end do
        print a(1,1)
        close(11)       
        还是不对呢。
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-10-20 13:43:24 | 显示全部楼层
{:5_275:}{:5_275:} 怎么做呀
密码修改失败请联系微信:mofangbao
回复

使用道具 举报

 楼主| 发表于 2014-10-20 14:11:37 | 显示全部楼层
.grd文件提取出来只有不到1k.....是不是这个错了???
密码修改失败请联系微信:mofangbao
发表于 2014-10-20 14:28:42 | 显示全部楼层
白兔糖0217 发表于 2014-10-20 14:11
.grd文件提取出来只有不到1k.....是不是这个错了???

不倒1k是多少?如果940b就没错。着急没用,把问题都弄清楚。
你为什么要这么做?最后要生成文本文件干什么?就想用眼看看数字?
如果非要这么做,为什么不直接对wrf输出的grd文件用fortran提取?或者用grads直接输出成文本?两个混用又容易错还麻烦。
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-10-20 14:43:45 | 显示全部楼层
lqouc 发表于 2014-10-20 14:28
不倒1k是多少?如果940b就没错。着急没用,把问题都弄清楚。
你为什么要这么做?最后要生成文本文件干什 ...

需要的是定点(35,118.8)的一定高度层上的气压、温度、湿度参数,然后和我么的数据作比较。我用ARWpost 做了47层高度插值,然后将pre tk tc td rh 提取出来,再linux中,ctl文件显示提取正确。设置经纬度,生成.grd,结果读取就出错了。。。。我也觉得很麻烦,但是,除了NCL,还是觉得这个设置起来方便一点,也不知道还有没有其他办法
密码修改失败请联系微信:mofangbao
发表于 2014-10-20 14:50:43 | 显示全部楼层
白兔糖0217 发表于 2014-10-20 14:43
需要的是定点(35,118.8)的一定高度层上的气压、温度、湿度参数,然后和我么的数据作比较。我用ARWpost  ...

直接在grads里面用兰溪的grads2ASCII的脚本就行了。可以不用fortran,执意用fortran的话就规范一点,数组设成a(47,5),打开文件的时候用unformatted,读取的时候用循环。
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-10-20 15:14:32 | 显示全部楼层
lqouc 发表于 2014-10-20 14:50
直接在grads里面用兰溪的grads2ASCII的脚本就行了。可以不用fortran,执意用fortran的话就规范一点,数组 ...


QQ截图20141020151112.png

QQ截图20141020151125.png

第一个是我把ctl到win7下,运行grads;
第二个是在大型机下运行,一样的ctl,不一样的结果。。。。
密码修改失败请联系微信:mofangbao
发表于 2014-10-20 15:37:55 | 显示全部楼层
白兔糖0217 发表于 2014-10-20 15:14
第一个是我把ctl到win7下,运行grads;
第二个是在大型机下运行,一样的ctl,不一样的结果。 ...

没用过大型机......
是不是大端小端的问题?这个可以再ctl里面修改。
话说在大型机下用刚才的fortran程序就可以了吧。
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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