爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 13002|回复: 22

[经验总结] 从全国降水的站点资料中提取某个区域的值

[复制链接]

新浪微博达人勋

发表于 2012-3-26 10:04:16 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 polestar7 于 2012-3-30 20:43 编辑

求各位大神帮帮忙吧,我这里有一个降水资料(txt),全国525个台站,有台站编号以及台站经纬度,降水资料从1959年1月到2009年12月,资料是月平均的,现在想截取lat(21-30),lon(97-107)这个区间的台站降水资料,关于截取部分不太明白,txt文件格式及我的编程如下,请各位帮忙看一下吧。

全国降水资料

全国降水资料


program rain
   implicit none
   integer:: iyr(52),imo(12)
    integer:: i,j,k
   real :: lon(525),lat(525),rr(525,12,52),
   integer,allocatable::a(:,:,:),rm(:,:,:)
   character*5 stn(525)
   character*55 filein,fileout
   filein="D:\data to stud\rainfall\station\1\rain_quanguo_mon_grads.txt"
   fileout="D:\data to stud\rainfall\station\1\rain_djf_525stn.txt"
   open(10,file=filein,status='old',form='formatted')
   open(11,file=fileout,status='old',form='formatted')
    rr=0.0
    do k=1,51
do j=1,12
do i=1,525
    read(10,400)iyr(k),imo(j),stn(i),lat(i),lon(i),rr(i,j,k)
    enddo
enddo
enddo
write(*,400)iyr(51),imo(12),stn(525),lat(525),lon(525),rr(525,12,1)
write(*,*) rr(525,1,2),rr(525,2,2)
400 format(i4,2x,i2,2x,a5,f8.2,f8.2,2x,f8.1)  !逐月数据读入格式

  
  do k=1,51
  do j=1,12
  do i=1,525
  if(lat(i)>=21.00.and.lat(i)<=30.00.and.lat(i)>=97.00.and.lat(i)<=107.00)
    write(11,400)iyr(i),imo(12),stn(i),lat(i),lon(i),r(:,12,51)
end if
enddo
   enddo
enddo
   
close(10)
close(11)
stop
end

station.txt

3.84 KB, 下载次数: 31, 下载积分: 金钱 -5

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

新浪微博达人勋

发表于 2012-3-26 14:43:43 | 显示全部楼层
额 直接没明白你在问什么。。是结果不对?程序不对?既然你自己写的为什么不明白?
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-3-26 17:55:45 | 显示全部楼层

就是程序不对,下面截取区域部分出错,不知道该怎么弄
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2012-3-26 17:56:08 | 显示全部楼层
残月 发表于 2012-3-26 14:43
额 直接没明白你在问什么。。是结果不对?程序不对?既然你自己写的为什么不明白?

真希望楼主提问前自己先弄清楚自己已经有的东西
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-3-26 19:53:13 | 显示全部楼层
我没有看楼主的程序,但是我知道你的意思。不用程序反而简单一点啊,直接就在TXT里把你需要的范围内的台站号复制到另外一个TXT里就好了,你的范围不大,台站不多。然后直接用程序读取新建的TXT里的台站号为一个数组。在你读取源文件的时候,IF语句中就直接用这个为条件读资料就好了。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2012-3-26 20:28:58 | 显示全部楼层
我看了一下,基本上程序是没有什么问题的,应该能跑出来!
不知道你想知道啥?程序主要由两部分构成,400以前的是读入数据,并且写程序的人还在屏幕输出了,这让你跑的应该比较吃力;2,if语句判断经纬度在你需要提取的范围以内,是正确的!
跑不出来的话就改改文件路径什么的吧,在不对你就把错误截图发上来吧
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-3-26 20:38:13 | 显示全部楼层
mofangbao 发表于 2012-3-26 17:56
真希望楼主提问前自己先弄清楚自己已经有的东西

额 这个不是在说我吧我错了,我刚开始是真不明白他在问什么
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2012-3-26 20:52:26 | 显示全部楼层
言深深 发表于 2012-3-26 20:28
我看了一下,基本上程序是没有什么问题的,应该能跑出来!
不知道你想知道啥?程序主要由两部分构成,400以 ...

按楼主所需要的数据的话,这句  write(11,400)iyr(i),imo(12),stn(i),lat(i),lon(i),r(:,12,51)
有点不恰当吧??再者,莫非写数据之前 fileout 已经创建了?(status='old')
还有400之前的那个只是测试下吧,就几个数,也不算是刷屏吧?

ps:深深我上次去祝贺来着,结果没给我红包~故意的
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2012-3-26 21:49:24 | 显示全部楼层
言深深 发表于 2012-3-26 20:28
我看了一下,基本上程序是没有什么问题的,应该能跑出来!
不知道你想知道啥?程序主要由两部分构成,400以 ...

非常感谢,下午接着弄了一段时间,已经出结果了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 成长值: 0
发表于 2012-3-26 21:56:26 | 显示全部楼层
polestar7 发表于 2012-3-26 21:49
非常感谢,下午接着弄了一段时间,已经出结果了

好,搞定了,可以改一下你的帖子内容和标题,一面再度有别人回复
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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