爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 4825|回复: 9

[求助] 【已解决】关于fortran提取特定月份资料的问题

[复制链接]

新浪微博达人勋

发表于 2014-4-26 15:46:47 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 爱知天气 于 2014-4-26 19:13 编辑

问了同学没问出来,于是求助。先谢谢大家了。
现在我有1958-1977年的V风月平均资料,一共20年,共240个月,这时的资料经过GrADS画图检查,都是正确的。现在我想提取每年6--10月的资料出来,也就是一共20*5=100个月的资料。于是我写了一个fortran程序,但是提取出来的资料有问题,20年中每一年的6月分画出的图都是一样的(7、8、9、10月同样如此),也就是最后一年的6月应该把之前年份的6月全部覆盖掉了。我传一张1958年6月的图和1959年6月的图,它们是一样的。下面是fortran程序:
program main                 !!!! !!! This program is choosing the  data in June to October and rewrite them in a new file for better using
implicit none
integer i,j,t,yr
integer,parameter::n=20     !20年时间,1958—1977年
real v(53,21,240)

!!!把grd文件读入数组!!!
open(10,file='E:\BY\figure2\data\v1958-1977.grd',form="binary")
read(10)(((v(i,j,t),i=1,53),j=1,21),t=1,240)
close(10)

!!!提取所需数据重新写入新二进制文件,便于处理
open(11,file='E:\BY\figure2\data6to10\v1958-1977JtoO.grd',form="binary")
do yr=1,n
   do t=(n-1)*12+6,(n-1)*12+10       ! 提取6-10月的资料
           do j=1,21
              do i=1,53
          if(v(i,j,t)<-999.) then
           v(i,j,t)=-9999.
        endif
                 write(11)v(i,j,t)
              end do
        end do
      end do
end do
close(11)
end



这是V的ct文件:
dset E:\BY\figure2\data6to10\omega1958-1977JtoO.grd
title vwind 1958-1977 JUN to OCT
undef -9.99e08
xdef 53 linear 70 2.5
ydef 21 linear -10 2.5
zdef 1 levels 500
tdef 100 linear 00Z01JUN1958 1mo
vars 1
v 1 0 Monthly v
endvars

1958年6月的V

1958年6月的V

1959年6月的V

1959年6月的V
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-4-26 15:52:57 | 显示全部楼层
把原来的数据和运行后的数据也挂上把

v1958-1977.ctl

251 Bytes, 下载次数: 1, 下载积分: 金钱 -5

原来的ctl

v1958-1977.grd

1.02 MB, 下载次数: 2, 下载积分: 金钱 -5

原来的数据

v1958-1977JtoO.ctl

279 Bytes, 下载次数: 1, 下载积分: 金钱 -5

提取的ctl

v1958-1977JtoO.grd

434.77 KB, 下载次数: 2, 下载积分: 金钱 -5

提取的数据

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

新浪微博达人勋

发表于 2014-4-26 15:55:26 | 显示全部楼层
你把gs文件也贴出来吧
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-4-26 16:03:10 | 显示全部楼层
蓝莲花 发表于 2014-4-26 15:55
你把gs文件也贴出来吧

测试我是直接输入的:现在我打一下
open ....\v1958-1977JtoO.ctl
set t 1
d v    (看1958年6月的图)
c
set t 6
d v   (看1959年6月的图)


发现这两图是一样的。如果没有C,直接就叠加上去了,就是第二章白色的图

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

新浪微博达人勋

 楼主| 发表于 2014-4-26 16:03:56 | 显示全部楼层
蓝莲花 发表于 2014-4-26 15:55
你把gs文件也贴出来吧

如果   set t 1 20
d v
会发现图不会变化
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2014-4-26 16:40:23 | 显示全部楼层
别的地方没有细看,不错目测标记“ ! 提取6-10月的资料”那一行里面的【n】应该改成【yr】,毕竟yr才是循环变量。n一直不循环,下面你出来的自然出错了···
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-4-26 17:02:29 | 显示全部楼层
言深深 发表于 2014-4-26 16:40
别的地方没有细看,不错目测标记“ ! 提取6-10月的资料”那一行里面的【n】应该改成【yr】,毕竟yr才是循环 ...

已修正,果然对了!十分感谢!原来经常用N改变,现在换了竟然一时不知道改过来了。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2014-4-26 21:33:00 | 显示全部楼层
爱知天气 发表于 2014-4-26 17:02
已修正,果然对了!十分感谢!原来经常用N改变,现在换了竟然一时不知道改过来了。

解决了就好···
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2014-4-26 23:32:30 | 显示全部楼层

自己粗心大意了,真不好意思。再次感谢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2017-4-16 17:27:56 | 显示全部楼层
我也遇到类似问题,感谢楼主!
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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