爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 15648|回复: 30

[求助] Fortran读取grd文件

[复制链接]
发表于 2014-8-13 21:17:12 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 绯宜物语 于 2014-8-18 18:52 编辑

Fortran菜鸟……求助一下大家!!!刚开始入门,很纠结!
现在有一个grd文件,是用grads转的nc资料,nc资料是1900-2009逐月的2米气温。转的GRD数据是1900-2009年1320个月的逐月全球平均2米气温资料。想要做出1900-2009年逐年平均的资料,要怎么写这个程序呀!!!不太会写循环呀,大家帮帮忙吧……非常感谢!!!
这是写的gs:
'sdfopen f:\nc\1.nc'
'set gxout fwrite'
'set fwrite f:\1gc.grd'
'set x 1'
'set y 1'
'set z 1 1'
i=1
while(i<=1320)
    'set t 'i''
'define var=aave(t2m,x=1,x=721,y=1,y=361)'
'set x 1 721'
'set y 1 361'
'd var'
i=i+1
endwhile
'disable fwrite'
;

之后写了Fortran程序,
program main
integer,parameter(i=1320,t=110)
integer ii,it
real var(i),year(t)
open(1,file='f:\f\1gc.grd',status='old',form='binary')
do ii=1,i
do it=1,t
read(1) var(ii)
year(it)=(var(t*12-11)+var(t*12-10)+var(t*12-9)+var(t*12-8)+var(t*12-7)+var(t*12-6)+var(t*12-5)+var(t*12-4)+var(t*12-3)+var(t*12-2)+var(t*12-1)+var(t*12))/12
enddo
enddo
open(2,file='f:\1gc.txt',status='new')
write(*,*) year
close(1)
close(2)
end
有错误,要怎么写才对啊? 1gc.grd (5.16 KB, 下载次数: 2)
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-8-13 21:22:34 | 显示全部楼层
怎么设置附件不收金钱呀?
密码修改失败请联系微信:mofangbao
发表于 2014-8-13 21:35:14 | 显示全部楼层
Fortran二进制文件,你直接在家园里搜吧,挺多的
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-8-13 21:40:43 | 显示全部楼层
LOSER 发表于 2014-8-13 21:35
Fortran二进制文件,你直接在家园里搜吧,挺多的

看了一些。才刚开始学,好多都不理解,然后就很纠结呀。
密码修改失败请联系微信:mofangbao
发表于 2014-8-14 10:22:32 | 显示全部楼层
既然你是循环时间的,为什么还要‘set t 1’?
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-8-14 14:27:39 | 显示全部楼层
本帖最后由 绯宜物语 于 2014-8-14 14:47 编辑
勇敢的悲伤 发表于 2014-8-14 10:22
既然你是循环时间的,为什么还要‘set t 1’?

是哦……那这样呢?
'sdfopen f:\nc\1.nc'
'set gxout fwrite'
'set fwrite f:\1gba.grd'
'set x 1'
'set y 1'
'set z 1 1'
'set t 1 1320'
'define var=tloop(aave(t2m,x=1,x=721,y=1,y=361))'
'd var'
'disable fwrite'
;
密码修改失败请联系微信:mofangbao
发表于 2014-8-14 14:44:28 | 显示全部楼层
找找如何读二进制文件吧!
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-8-14 14:54:32 | 显示全部楼层
ferris79 发表于 2014-8-14 14:44
找找如何读二进制文件吧!

嗯嗯,正在看呢……谢谢
密码修改失败请联系微信:mofangbao
发表于 2014-8-14 15:46:57 | 显示全部楼层
绯宜物语 发表于 2014-8-14 14:27
是哦……那这样呢?
'sdfopen f:\nc\1.nc'
'set gxout fwrite'

用循环,类似这样吧
i=1
while(i<=1320)
'set t ' i
...
...
...
i=i+1
密码修改失败请联系微信:mofangbao
 楼主| 发表于 2014-8-15 09:48:06 | 显示全部楼层
勇敢的悲伤 发表于 2014-8-14 15:46
用循环,类似这样吧
i=1
while(i

这样是吧?

'sdfopen f:\nc\1.nc'
'set gxout fwrite'
'set fwrite f:\1gb.grd'
'set x 1'
'set y 1'
'set z 1 1'
i=1
while(i<=1320)
    'set t 'i''
'define var=aave(t2m,x=1,x=721,y=1,y=361)'
'd var'
i=i+1
endwhile
'disable fwrite'
;
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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