| 
 
	积分454贡献 精华在线时间 小时注册时间2015-5-13最后登录1970-1-1 
 | 
 
| 
想把逐日的地面数据转成grads可识别的数据文件,但运行后得到的数据不对,求大神帮帮忙。
x
登录后查看更多精彩内容~您需要 登录 才可以下载或查看,没有帐号?立即注册 
   
 
 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
 
 
 | 
 |