- 积分
- 454
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2015-5-13
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
想把逐日的地面数据转成grads可识别的数据文件,但运行后得到的数据不对,求大神帮帮忙。
program e3_09
implicit none
integer,parameter:: ms=622,mt=365 !ms总站点数mt总时间
integer:: nlev,nflag=1
!parameter(nflag=1, nlev=nflag+ml)
character*8 endstn,stid(ms)
character*5 sname(ms)!长度为5的字符数组用来做文件名打开每个站点的数据
integer istid(ms)!?
real rstid(ms)!?
real lat(ms),lon(ms) !纬度 经度
real ::dtime=0.0
!每个站有12列
!分别是:站点号 年 月 日 平均本站气压 日最高气温 日最低气温 平均相对湿度 20-20时降水量 平均风速 日照时数
!每个站点的平均气温(avetemp)、20-20时降水量(p20)
integer avestdata(12)
real avetemp(ms,mt),p20(ms,mt)
integer is,it
data endstn/'end_time'/
open(10,file='d:\ex3\2009sta.txt',form='formatted')
open(12,file='d:\ex3\2009daliy.dat',form='binary')
!读取存取站点号、经度、纬度
do is=1,622
read(10,*) rstid(is),lon(is),lat(is)
istid(is)=rstid(is)
write(sname(is),'(i5)') istid(is)!5位站点名
write(stid(is),'(i5)') istid(is)!8位站点名
enddo
print*,'ok'
close(10)
!读每个站点的地面数据avestdata
do it=1,mt
do is=1,ms
open(13,file='d:\ex3\2009\'//sname(is)//'.txt',form='formatted')!注意变量作为文件名的写法
read(13,'(12i6)') avestdata !数据存放格式
!读取每个站点的平均气温(avetemp)、20-20时降水量(p20)
if(abs(avestdata(6))<9999)then
avetemp(is,it)=real(avestdata(6))/10.0
else
avetemp(is,it)=-999.0
endif
if(abs(avestdata(10))<9999)then
p20(is,it)=real(avestdata(10))/10.0
else
p20(is,it)=-999.0
endif
!存数据
nlev=1
write(12)stid(is),lon(is),lat(is),dtime,nflag,nlev,avetemp(is,it),p20(is,it)!站头+地面报写在12
!print*,stid(is),lat(is),lon(is),dtime,nflag,nlev,avetemp(is,it),p20(is,it)
close(13)
enddo
nlev=0
write(12) endstn, 0., 0., 0., 0, 0 !时尾
enddo
close(12)
print*,'done'
end
|
|