爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 3247|回复: 2

[求助] 处理降水资料如何把按月分的日降水资料处理成按站点分的资料

[复制链接]

新浪微博达人勋

发表于 2018-12-10 12:43:37 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 高小一 于 2018-12-10 13:01 编辑

资料是这样的
D:\杂七杂八\1.png
1961年1月,2月。。。。12月一直到2015年的1月。。。。12月共55年*12月共660个文件,每个文件里有所有站点在这一个月的所有天数的数据
文件格式大概是这样, 1.png 59981 1650 11220     49 1961  1  6  32700      1      1 0 0 0
后面六项是降水数据,32700为缺测
D:\杂七杂八\2.png
现在老师要求把这些资料处理成按站点分开的数据,就是xxxxx(站号).txt,然后按数据说明怎样把数据读取出来并变成以站号分类,还有如何处理经纬度数据单位?拜托大神帮助
批处理读取所有文件的按照清风大神的帖子看了,读取数据也会,但是读取以后如何按不同站分开并输出成不同文件不懂,跪求帮助


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

新浪微博达人勋

发表于 2018-12-10 13:38:08 | 显示全部楼层
是有点复杂,但还是可以做的。其实就是读和写的问题,按照你的想法写就行了。
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2018-12-23 22:02:51 | 显示全部楼层
请问能帮忙看看这个程序吗,万分感谢
INTEGER,PARAMETER :: NS=839,NY=55,ND=31,NM=12,WJS=660
INTEGER year,mon,day
real    a(10)
character*5 sta(NS),filename(WJS)
real,allocatable :: staID(:),b(:),lat(:),lon(:),hgt(:),rain1(:,:,:,:),rain2(:,:,:,:),rain3(:,:,:,:)
allocate (staID(NS),b(WJS),lat(NS),lon(NS),hgt(NS),rain1(NS,NY,NM,ND),rain2(NS,NY,NM,ND),rain3(NS,NY,NM,ND))
!!!!!!日值说明,20-8时降水量、8-20时降水量、20-20时累计降水量、
!!!!!!     
!%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%  READ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
OPEN(11,FILE='D:\data\data\station.txt')
do i=1,NS
read(11,*)staID(i)
enddo
CLOSE(11)

!===========1961-2015:
open(10,file='D:\data\data\pre\filename.txt')  
do i=1,WJS
  read(10,*) b(i)
  enddo  
close(10)   
do i=1,WJS
write(filename,'(b)')(b(i))   
  OPEN(11,FILE='D:\data\data\pre\'//filename//'.txt',err=8000)(提示这行有问题)

!!!!!!pre文件夹里含12*55个txt资料,文件名都是“SURF_CLI_CHN_MUL_DAY-pre-13011-xxxx(年)xx(月)”的形式
            read(11,*)
!!!!!!read(11,*)表示从文件11中读出一个数据,但不写入任何变量
500  read(11,*,err=600)a(1:10)
  DO is=1,ns
  if(a(1).eq.staID(is))then   
  lat(is)=a(2)
  lon(is)=a(3)
  hgt(is)=a(4)
  year=a(5)
  mon=a(6)
  day=a(7)
  rain1(is,year,mon,day)=a(8)
  rain2(is,year,mon,day)=a(9)
  rain3(is,year,mon,day)=a(10)
  endif
  enddo
   goto 500
CLOSE(11)
600 continue
8000 continue
ENDDO

DO IS=1,NS
  lat(is)=INT(lat(is)/100)+MOD(lat(is),100.)/60.
  lon(is)=INT(lon(is)/100)+MOD(lon(is),100.)/60.
  hgt(is)=hgt(is)/10
  rain1(is,year,mon,day)= rain1(is,year,mon,day)/10
  rain2(is,year,mon,day)= rain1(is,year,mon,day)/10
  rain3(is,year,mon,day)= rain1(is,year,mon,day)/10
  enddo
!按要求处理数据
do i=1,ns
WRITE(sta(is),'(i5)')INT(staid(is))

  OPEN(11,FILE='D:\data\clh\'//sta(is)//'.txt/',err=8000)
    do IY=1,NY
        DO IM=1,NM
        DO ID=1,ND
        WRITE(11,*)Lat(is),lon(is),hgt(IS),year,mon,day,rain1(is,iy,im,id),rain2(is,iy,im,id),rain3(is,iy,im,id)

  enddo
  enddo
  enddo
  CLOSE(11)
  enddo
!把数据按不同站分开的形式输出到不同以站号命名的文件里
deallocate (staID,lat,lon,hgt,rain1,rain2,rain3)
END
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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