爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 14312|回复: 23

[求助] 关于fortran读取160站资料

[复制链接]

新浪微博达人勋

发表于 2012-4-27 20:38:04 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 ☆涅垚YTZ☆ 于 2012-4-28 08:21 编辑

又排查了一遍,改动一下发现是写入二进制文件的那边有问题,数组越界,求大大们帮忙

我自己把txt稍微修改了一下,是160X50的,fortran程序跑了很多遍都没有错误,但是就是运行ctl生成map文件的时候出错,说我i我error read 28 bytes什么的。。。都要疯了,跪求各位大大给检查一下哪里出问题了。。挺急的。。这个是fortran程序

program ex_03
integer,parameter::m=160,n=50
integer::i,j,k
real lat(160),lon(160),x(160,n)
character*8 stid(160,n)
!!!!!!!!!!!!!readshuju!!!!!!!!!!!!!!!!!!!
open(1,file='r16006.txt',status='old')
do j=1,n
read(1,*)(x(i,j),i=1,m)
enddo
close(1)
do j=1,n
!print*,(x(i,j),i=1,m)
enddo
!!!!!!!!!!!!!!!!!zhuanhuanrejizhi!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!111
open(2,file='china.txt')
do k=1,160
read(2,*) lat(k),lon(k)
enddo
close(2)
!!!!!!!!!!!!!!!给出站号!!!!!!!!!!!!!!!!!!!!!!!!!!!
do  j=1,n
do  i=1,160
stid(i,j)=char(i)
enddo
enddo
!!!!!!!!!!!!!!!!!!按排序写入r16006!!!!!!!!!!!!!!!!!1
open(3,file='r16006.grd',form='binary')
tim=0.0
nlev=1
nflag=1
do 40 j=1,n
do 40 i=1,160
write(3) stid(i,j),lat(i),lon(i),tim,nlev,nflag,x(i,j)
40 continue
!!!!!!!!!!!!!!!!!jisujilu!!!!!!!!!!!!!!!11
nlev=0
do j=1,n
!write(3) stid(i-1,j),lat(i-1),lon(i-1),tim,nlev,nflag
enddo
close(3)
end



这个是160站50年的降水数据
R16006.txt (39.16 KB, 下载次数: 110)
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-4-27 21:07:05 | 显示全部楼层
论坛应该有人发过读取的程序的,再找找看
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-4-27 21:17:23 | 显示全部楼层
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-4-27 21:34:44 | 显示全部楼层
又排查了一遍,改动一下发现是写入二进制文件的那边有问题,数组越界,求大大们帮忙
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-4-27 22:22:58 | 显示全部楼层
program main         
real vec(160,61)
        real lat(160),lon(160)
        real ave(160)
        character*8 stid(160)

open(1,file='d:\1\rainfall\aa.txt',status='old')
read(1,*) ((vec(i,j),i=1,160),j=1,61)
close(1)
write(*,*) 'ok1'

do i=1,160
do j=1,61
ave(i)=ave(i)+vec(i,j)
enddo
ave(i)=ave(i)/61.0
enddo


        open(2,file='D:\1\rainfall\china.dat.txt')
        do k=1,160
    read(2,*) lat(k),lon(k)
        enddo
        close(2)
    write(*,*) 'ok2!'

        do 2 i=1,160
2        stid(i)=char(i)

        open (3,file='d:\1\rainfall\aa.grd',form='binary')

                tim=0.0
                nlev=1
                nflag=1
        do i=1,160
        write(3) stid(i),lat(i),lon(i),tim,nlev,nflag,ave(i)
        enddo
       
        nlev=0
        write(3) stid(i-1),lat(i-1),lon(i-1),tim,nlev,nflag

        close(3)

        end       

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

新浪微博达人勋

发表于 2012-4-27 22:23:52 | 显示全部楼层
我这是61年的站点转格点,求年平均
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-4-27 22:31:31 | 显示全部楼层
nuistjl 发表于 2012-4-27 22:23
我这是61年的站点转格点,求年平均

你这个程序运行无误是吗?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-4-27 22:36:10 | 显示全部楼层
☆涅垚YTZ☆ 发表于 2012-4-27 22:31
你这个程序运行无误是吗?

无误,可以的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-4-27 22:50:29 | 显示全部楼层
论坛有相关程序啊
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-4-28 00:33:55 | 显示全部楼层
接近毕业论文答辩,论坛好多人在用160站的数据呀
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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