爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 8333|回复: 22

[求助] 关于160站气温距平资料的读取程序出现的问题

[复制链接]

新浪微博达人勋

发表于 2013-4-14 15:45:14 | 显示全部楼层 |阅读模式

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

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

x
1L先说下 我下面程序用的是1951-2012年160站气温资料,我的目的是提取1980-2008年的气温距平资料。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-4-14 15:45:46 | 显示全部楼层
      program stngrid
      real a1(160,62),a2(160,62),a3(160,62)
        real a4(160,62),a5(160,62),a6(160,62)
        real a7(160,62),a8(160,62),a9(160,62)
        real a10(160,62),a11(160,62),a12(160,62),vvs(160,29,12)
        real lat(160),lon(160),x(160,348),ave(160)
      character*8 id(160)
      open(1,file='e:\uv\da\t1601.txt')
      open(2,file='e:\uv\da\t1602.txt')
      open(3,file='e:\uv\da\t1603.txt')
      open(4,file='e:\uv\da\t1604.txt')
      open(5,file='e:\uv\da\t1605.txt')
      open(6,file='e:\uv\da\t1606.txt')
      open(7,file='e:\uv\da\t1607.txt')
      open(8,file='e:\uv\da\t1608.txt')
      open(9,file='e:\uv\da\t1609.txt')
      open(10,file='e:\uv\da\t1610.txt')
      open(11,file='e:\uv\da\t1611.txt')
      open(12,file='e:\uv\da\t1612.txt')
ccccccccccccccccccccc6,7,8月的资料
      open(13,file='e:\uv\da\160.txt')
      open(14,file='e:\1979+\rain_temp\temp.grd',status='replace',
     & form='binary')
cccccccccccccccccccccccc台站数据
c      open(11,file='ave.txt')
c      open(13,file='ave.grd',form='binary')
   
ccccccccccccccc 读数据(经纬度、160站温度)
      read(1,*)((a1(i,j),i=1,160),j=1,62)
      ave=0
      do i=1,160
      do j=1,62
       ave(i)=ave(i)+a1(i,j)
         ave(i)=ave(i)/62
      enddo;enddo
      do i=1,160
      do j=1,62
       a1(i,j)=(a1(i,j)-ave(i))/10
        enddo;enddo

      read(2,*)((a2(i,j),i=1,160),j=1,62)
      ave=0
      do i=1,160
      do j=1,62
       ave(i)=ave(i)+a2(i,j)
         ave(i)=ave(i)/62
      enddo;enddo
      do i=1,160
      do j=1,62
       a2(i,j)=(a2(i,j)-ave(i))/10
        enddo;enddo

      read(3,*)((a3(i,j),i=1,160),j=1,62)
      ave=0
      do i=1,160
      do j=1,62
       ave(i)=ave(i)+a3(i,j)
         ave(i)=ave(i)/62
      enddo;enddo
      do i=1,160
      do j=1,62
       a3(i,j)=(a3(i,j)-ave(i))/10
        enddo;enddo

      read(4,*)((a4(i,j),i=1,160),j=1,62)
      ave=0
      do i=1,160
      do j=1,62
       ave(i)=ave(i)+a4(i,j)
         ave(i)=ave(i)/62
      enddo;enddo
      do i=1,160
      do j=1,62
       a4(i,j)=(a4(i,j)-ave(i))/10
        enddo;enddo

      read(5,*)((a5(i,j),i=1,160),j=1,62)
      ave=0
      do i=1,160
      do j=1,62
       ave(i)=ave(i)+a5(i,j)
         ave(i)=ave(i)/62
      enddo;enddo
      do i=1,160
      do j=1,62
       a5(i,j)=(a5(i,j)-ave(i))/10
        enddo;enddo

      read(6,*)((a6(i,j),i=1,160),j=1,62)
      ave=0
      do i=1,160
      do j=1,62
       ave(i)=ave(i)+a6(i,j)
         ave(i)=ave(i)/62
      enddo;enddo
      do i=1,160
      do j=1,62
       a6(i,j)=(a6(i,j)-ave(i))/10
        enddo;enddo

      read(7,*)((a7(i,j),i=1,160),j=1,62)
      ave=0
      do i=1,160
      do j=1,62
       ave(i)=ave(i)+a7(i,j)
         ave(i)=ave(i)/62
      enddo;enddo
      do i=1,160
      do j=1,62
       a7(i,j)=(a7(i,j)-ave(i))/10
        enddo;enddo

      read(8,*)((a8(i,j),i=1,160),j=1,62)
      ave=0
      do i=1,160
      do j=1,62
       ave(i)=ave(i)+a8(i,j)
         ave(i)=ave(i)/62
      enddo;enddo
      do i=1,160
      do j=1,62
       a8(i,j)=(a8(i,j)-ave(i))/10
        enddo;enddo

      read(9,*)((a9(i,j),i=1,160),j=1,62)
      ave=0
      do i=1,160
      do j=1,62
       ave(i)=ave(i)+a9(i,j)
         ave(i)=ave(i)/62
      enddo;enddo
      do i=1,160
      do j=1,62
       a9(i,j)=(a9(i,j)-ave(i))/10
        enddo;enddo

      read(10,*)((a10(i,j),i=1,160),j=1,62)
      ave=0
      do i=1,160
      do j=1,62
       ave(i)=ave(i)+a10(i,j)
         ave(i)=ave(i)/62
      enddo;enddo
      do i=1,160
      do j=1,62
       a10(i,j)=(a10(i,j)-ave(i))/10
        enddo;enddo

      read(11,*)((a11(i,j),i=1,160),j=1,62)
      ave=0
      do i=1,160
      do j=1,62
       ave(i)=ave(i)+a11(i,j)
         ave(i)=ave(i)/62
      enddo;enddo
      do i=1,160
      do j=1,62
       a11(i,j)=(a11(i,j)-ave(i))/10
        enddo;enddo

      read(12,*)((a12(i,j),i=1,160),j=1,62)
      ave=0
      do i=1,160
      do j=1,62
       ave(i)=ave(i)+a12(i,j)
         ave(i)=ave(i)/62
      enddo;enddo
      do i=1,160
      do j=1,62
       a12(i,j)=(a12(i,j)-ave(i))/10
        enddo;enddo

        do i=1,160
        do j=1,29
      vvs(i,j,1)=(a1(i,j+29))
      vvs(i,j,2)=(a2(i,j+29))
      vvs(i,j,3)=(a3(i,j+29))
      vvs(i,j,4)=(a4(i,j+29))
      vvs(i,j,5)=(a5(i,j+29))
      vvs(i,j,6)=(a6(i,j+29))
      vvs(i,j,7)=(a7(i,j+29))
      vvs(i,j,8)=(a8(i,j+29))
      vvs(i,j,9)=(a9(i,j+29))
      vvs(i,j,10)=(a10(i,j+29))  
      vvs(i,j,11)=(a11(i,j+29))
      vvs(i,j,12)=(a12(i,j+29))
      enddo;enddo


      do i=1,160     
        do j=1,348
        t=int((j-1)/12)+1
        x(i,j)=(vvs(i,t,k),k=1,12)
      enddo;enddo       

cccccccccc读台站数据   
      do i=1,160
      read(13,*)id(i),lat(i),lon(i)
      enddo
      write(*,*)' ok 1'
cccccccccccccc写站点数据
      do i=1,348
cccccccccccccccccccccccccccc多时次读取,这里是62年,自己改值
      do j=1,160
cccccccccccccccccccccccccccc160站,使用其他站的资料,也可以照样改值即可
c      id(j)=char(j)
      tim=0.0
      nlev=1
      nflag=1
      write(14)id(j),lat(j),lon(j),tim,nlev,nflag,x(j,i)
ccccccccccccccccccccccccccc单时次为x(i)即可
      enddo
ccccccccccccccccccccccccccccccccccccccccc
      tim=0.0
      nlev=0
      nflag=1
      write(14)id(j-1),lat(j-1),lon(j-1),tim,nlev,nflag
      end do
ccccccccccccccccccccccccccccccccccccccccccc若不是多时次,则此do循环,enddo则不用了
      end
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-4-14 15:47:20 | 显示全部楼层
运行显示    do i=1,160     
        do j=1,348
        t=int((j-1)/12)+1
        x(i,j)=(vvs(i,t,k),k=1,12)
      enddo;enddo        
有问题 可能是降维出现错误 我改了很多遍还是没有改出来 只好拿出来求助论坛里的大神了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-4-14 18:56:36 | 显示全部楼层
给力,支持!!!!!!!!!!







胶原蛋白粉哪个牌子http://www.zkaiyz.com/



密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-4-14 19:08:13 | 显示全部楼层
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-4-14 19:58:34 | 显示全部楼层
修改了下 能出来结果了 但是无法生成map文件

      program stngrid
      real a1(160,62),a2(160,62),a3(160,62)
        real a4(160,62),a5(160,62),a6(160,62)
        real a7(160,62),a8(160,62),a9(160,62)
        real a10(160,62),a11(160,62),a12(160,62),vvs(160,29,12)
        real lat(160),lon(160),x(160,348),ave(160)
      character*8 id(160)
      open(1,file='e:\uv\da\t1601.txt')
      open(2,file='e:\uv\da\t1602.txt')
      open(3,file='e:\uv\da\t1603.txt')
      open(4,file='e:\uv\da\t1604.txt')
      open(5,file='e:\uv\da\t1605.txt')
      open(6,file='e:\uv\da\t1606.txt')
      open(7,file='e:\uv\da\t1607.txt')
      open(8,file='e:\uv\da\t1608.txt')
      open(9,file='e:\uv\da\t1609.txt')
      open(10,file='e:\uv\da\t1610.txt')
      open(11,file='e:\uv\da\t1611.txt')
      open(12,file='e:\uv\da\t1612.txt')
      open(13,file='e:\uv\da\160.txt')
      open(14,file='e:\1979+\rain_temp\temp.grd',status='replace',
     & form='binary')
   
ccccccccccccccc 读数据(经纬度、160站温度)
      read(1,*)((a1(i,j),i=1,160),j=1,62)
      ave=0
      do i=1,160
      do j=1,62
       ave(i)=ave(i)+a1(i,j)
         ave(i)=ave(i)/62
      enddo;enddo
      do i=1,160
      do j=1,62
       a1(i,j)=(a1(i,j)-ave(i))/10
        enddo;enddo

      read(2,*)((a2(i,j),i=1,160),j=1,62)
      ave=0
      do i=1,160
      do j=1,62
       ave(i)=ave(i)+a2(i,j)
         ave(i)=ave(i)/62
      enddo;enddo
      do i=1,160
      do j=1,62
       a2(i,j)=(a2(i,j)-ave(i))/10
        enddo;enddo

      read(3,*)((a3(i,j),i=1,160),j=1,62)
      ave=0
      do i=1,160
      do j=1,62
       ave(i)=ave(i)+a3(i,j)
         ave(i)=ave(i)/62
      enddo;enddo
      do i=1,160
      do j=1,62
      a3(i,j)=(a3(i,j)-ave(i))/10
        enddo;enddo

      read(4,*)((a4(i,j),i=1,160),j=1,62)
      ave=0
      do i=1,160
      do j=1,62
       ave(i)=ave(i)+a4(i,j)
         ave(i)=ave(i)/62
      enddo;enddo
      do i=1,160
      do j=1,62
       a4(i,j)=(a4(i,j)-ave(i))/10
        enddo;enddo

      read(5,*)((a5(i,j),i=1,160),j=1,62)
      ave=0
      do i=1,160
      do j=1,62
       ave(i)=ave(i)+a5(i,j)
         ave(i)=ave(i)/62
      enddo;enddo
      do i=1,160
      do j=1,62
       a5(i,j)=(a5(i,j)-ave(i))/10
        enddo;enddo

      read(6,*)((a6(i,j),i=1,160),j=1,62)
      ave=0
      do i=1,160
      do j=1,62
       ave(i)=ave(i)+a6(i,j)
         ave(i)=ave(i)/62
      enddo;enddo
      do i=1,160
      do j=1,62
       a6(i,j)=(a6(i,j)-ave(i))/10
        enddo;enddo

      read(7,*)((a7(i,j),i=1,160),j=1,62)
      ave=0
      do i=1,160
      do j=1,62
       ave(i)=ave(i)+a7(i,j)
         ave(i)=ave(i)/62
      enddo;enddo
      do i=1,160
      do j=1,62
       a7(i,j)=(a7(i,j)-ave(i))/10
        enddo;enddo

      read(8,*)((a8(i,j),i=1,160),j=1,62)
      ave=0
      do i=1,160
      do j=1,62
       ave(i)=ave(i)+a8(i,j)
         ave(i)=ave(i)/62
      enddo;enddo
      do i=1,160
      do j=1,62
       a8(i,j)=(a8(i,j)-ave(i))/10
        enddo;enddo

      read(9,*)((a9(i,j),i=1,160),j=1,62)
      ave=0
      do i=1,160
      do j=1,62
       ave(i)=ave(i)+a9(i,j)
         ave(i)=ave(i)/62
      enddo;enddo
      do i=1,160
      do j=1,62
       a9(i,j)=(a9(i,j)-ave(i))/10
        enddo;enddo

      read(10,*)((a10(i,j),i=1,160),j=1,62)
      ave=0
      do i=1,160
      do j=1,62
       ave(i)=ave(i)+a10(i,j)
         ave(i)=ave(i)/62
      enddo;enddo
      do i=1,160
      do j=1,62
       a10(i,j)=(a10(i,j)-ave(i))/10
        enddo;enddo

      read(11,*)((a11(i,j),i=1,160),j=1,62)
      ave=0
      do i=1,160
      do j=1,62
       ave(i)=ave(i)+a11(i,j)
         ave(i)=ave(i)/62
      enddo;enddo
      do i=1,160
      do j=1,62
       a11(i,j)=(a11(i,j)-ave(i))/10
        enddo;enddo

      read(12,*)((a12(i,j),i=1,160),j=1,62)
      ave=0
      do i=1,160
      do j=1,62
       ave(i)=ave(i)+a12(i,j)
         ave(i)=ave(i)/62
      enddo;enddo
      do i=1,160
      do j=1,62
       a12(i,j)=(a12(i,j)-ave(i))/10
        enddo;enddo
      write(*,*)' ok 1'

        do i=1,160
        do j=1,29
      vvs(i,j,1)=(a1(i,j+29))
      vvs(i,j,2)=(a2(i,j+29))
      vvs(i,j,3)=(a3(i,j+29))
      vvs(i,j,4)=(a4(i,j+29))
      vvs(i,j,5)=(a5(i,j+29))
      vvs(i,j,6)=(a6(i,j+29))
      vvs(i,j,7)=(a7(i,j+29))
      vvs(i,j,8)=(a8(i,j+29))
      vvs(i,j,9)=(a9(i,j+29))
      vvs(i,j,10)=(a10(i,j+29))  
      vvs(i,j,11)=(a11(i,j+29))
      vvs(i,j,12)=(a12(i,j+29))
      enddo;enddo

      
        do i=1,160
        do j=1,29
        do k=1,12
        kk=k+(j-1)*12
        x(i,kk)=vvs(i,j,k)
        enddo
        enddo
        enddo

      write(*,*)' ok 2'
cccccccccc读台站数据   
      do i=1,160
      read(13,*)id(i),lat(i),lon(i)
      enddo
      write(*,*)' ok 3'

      do i=1,348
      do j=1,160
      tim=0.0
      nlev=1
      nflag=1
      write(14)id(j),lat(j),lon(j),tim,nlev,nflag,x(j,i)
      enddo
      tim=0.0
      nlev=0
      nflag=1
      write(14)id(j-1),lat(j-1),lon(j-1),tim,nlev,nflag
      end do
      end
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-4-14 19:59:55 | 显示全部楼层
求大家帮忙看看啊 谢谢了 急死了额{:eb303:}
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2013-4-15 08:56:17 | 显示全部楼层
艾玛,您可真闲!幸亏一年又12个月,要是有20个月可咋办?···此楼仅发表感慨,下楼给出程序···
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2013-4-15 09:24:41 | 显示全部楼层
此程序段运行到出【距平】
parameter(m=160,n=62)
real x(m,n,12)
character*4 dat(12)
dat=(/"01","02","03","04","05","06","07","08","09","10","11","12"/)

do k=1,12
        open(11,file="monthly\t16"//trim(dat(k))//".txt")
        read(11,*)((x(i,j,k),i=1,m),j=1,n)
        close(11)
        do i=1,m
                s=0
                do j=30,58                !        此处给定1980-2008平均
                s=s+x(i,j,k)
                enddo
                do j=30,58
                x(i,j,k)=x(i,j,k)-s                !        距平
                enddo
        enddo

        open(1,file="距平t16"//trim(dat(k))//".txt")
                do i=1,m
                write(1,"(<n>(f7.2,x))")(x(i,j,k),j=1,n)
                enddo
        close(1)

enddo

end
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-7-24 16:28:44 | 显示全部楼层
要向版主学习了
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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