爱气象,爱气象家园! 

气象家园

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

搜索
查看: 6300|回复: 11

[分享资料] 【求助】利用气象局日尺度数据做站点对比时不能顺利生成sta.map

[复制链接]

新浪微博达人勋

发表于 2013-3-6 16:07:12 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 shangbn305 于 2013-3-6 16:09 编辑

想做站点对比分析,我在国家气象局下载的12年6月份天尺度气温文件,也就是每个站点都有30天的数据,我想对比每天的平均气温。
第一步:生成sta.grd文件,我的程序如下,生成sta,grd
      program sta2grd
      implicit none
      character*8 stid
      real H,avg,max,min,na,nb,nc,tim,lat,lon
      integer nlev,flag,year,month,day
      tim=0.0
      nlev=1
      flag=1
      open(1,file='TEM-201206.TXT',status='old')
      open(2,file='sta.grd',status='replace',form='binary')
10    read(1,*,end=100)stid,lat,lon,H,year,month,day,avg,max,
     &min,na,nb,nc
      lat=lat/100+(lat-(lat/100)*100)*0.0166666666666667
      lon=lon/100+(lon-(lon/100)*100)*0.0166666666666667
      avg=avg/10
      max=max/10
      min=min/10
      write(2)stid,lat,lon,tim,nlev,flag,avg
      goto 10100 continue
      close(1)
      nlev=0
      write(2)stid,lat,lon,tim,nlev,flag
      close(2)
      end
第二步:为生成的sta.grd文件编写sta.ctl文件,如下:对于T我使用两种方法定义,第一种方法可以顺利进行第三步,第二种方法出错DSET /public/home/shangbingnan/station/Temperature/sta.grd
DTYPE station
STNMAP /public/home/shangbingnan/station/Temperature/sta.map
UNDEF 32766
TITLE Temperature Data Sample
TDEF 1 linear 00jun2012 1dy         
TDEF 30 linear 00jun2012 1dy
VARS 1
avg 0 99 Temperature Data
ENDVARS
第三步:使用grads为站点的二进制文件生成站点映射文件sta.map!stnmap -i ./sta.ctlsta.ctl中第一个T定义可以顺利生成sta.map,信息如下:
error2.jpg

第二个T定义出错,错误信息如下:
error1.jpg

疑问:时间T应该是三十天啊,因为我的数据是一个月的,为什么会出错呢?
error2.jpg
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-3-6 16:10:10 | 显示全部楼层
最后那个图和前边的图重复了
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-3-6 16:20:41 | 显示全部楼层
在人人上貌似回复不了这么多,你在这里看看吧,不一定能用,可能还要你稍微改改。
      do i=1,99999
      read(1,*,iostat=it)stid,lat,lon,H,year,month,day,avg,max,
      &min,na,nb,nc
      if(it=0) exit
       lat=lat/100+(lat-(lat/100)*100)*0.0166666666666667
       lon=lon/100+(lon-(lon/100)*100)*0.0166666666666667
       avg=avg/10
       max=max/10
       min=min/10
       write(2)stid,lat,lon,tim,nlev,flag,avg
       goto 10100 continue
       close(1)
       end do
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-3-6 16:39:41 | 显示全部楼层

我算了一下,因为站台是194个,每个站台是30个即30天的数据,所以总行数是194*30=5820行。修改后重新运行后还是同样的错误。
如果可以将错就错就好了可是这个气温是每天2:00,8:00,14:00,20:00测的,取平均。我的wrf结果使用ARWpost处理,输出的结果和这个时间相对应的,所以wrf结果的ctl文件内的T定义是tdef 5 linear 02Z01JUN2012 360MN,这个定义和grid.ctl的不统一,还是会出错
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2013-3-6 23:10:14 | 显示全部楼层
请把站点和时间的循环分开写,所有站点的第N个时次结束后都要nlev=0 再write一个标记的,你的程序只最后write了一次标记,所以生成map文件的时候会被认为是1个时次,5820个站点,还不明白就仔细看一下我那个站点数据作图的帖子
密码修改失败请联系微信:mofangbao

新浪微博达人勋

发表于 2013-3-7 06:39:30 | 显示全部楼层
楼上正解
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-3-7 08:19:01 | 显示全部楼层
mofangbao 发表于 2013-3-6 23:10
请把站点和时间的循环分开写,所有站点的第N个时次结束后都要nlev=0 再write一个标记的,你的程序只最后wri ...

明白了,恍然大悟,怪我自己不够认真,谢谢
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2013-3-7 08:52:46 | 显示全部楼层
shangbn305 发表于 2013-3-7 08:19
明白了,恍然大悟,怪我自己不够认真,谢谢

把你改完的也顺便贴过来吧
密码修改失败请联系微信:mofangbao

新浪微博达人勋

 楼主| 发表于 2013-3-7 11:40:12 | 显示全部楼层
mofangbao 发表于 2013-3-6 23:10
请把站点和时间的循环分开写,所有站点的第N个时次结束后都要nlev=0 再write一个标记的,你的程序只最后wri ...

  下边是我修改后的程序,以及sta.ctl,可以生成30个时次的sta.map,但是作图的时候出问题了,
作图程序sta.gs:
'open c:\grads20\win32\sta.ctl'
'set lat 33 60'
'set lon 105 148'
'set t 1'
'd avg'
>run c:\grads20\win32\sta.gs
错误信息:
No hardcopy metafile open
all filese closedl all defined objects released;
all grads attributes have been reinitialized


fortran程序:
      program sta2grd
      implicit none
      character*8 stid
      real H,avg,max,min,na,nb,nc,tim,lat,lon
      integer nlev,flag,year,month,day
      integer i,j
      open(1,file='TEM-201206.TXT',status='old')
      open(2,file='sta.grd',status='replace',form='binary')
      
      do i=1,194
      tim=0.0
      flag=1   
      do j=1,30
      nlev=1   
      read(1,*)stid,lat,lon,H,year,month,day,avg,max,
     &min,na,nb,nc
      lat=lat/100+(lat-(lat/100)*100)*0.0166666666666667
      lon=lon/100+(lon-(lon/100)*100)*0.0166666666666667
      avg=avg/10
      max=max/10
      min=min/10
      write(2)stid,lat,lon,tim,nlev,flag,avg   
      end do
      nlev=0
      write(2)stid,lat,lon,tim,nlev,flag
      end do
      
      close(1)
      
      close(2)
      end

这是我的sta.ctl
DSET C:/GrADS20/win32/sta.grd
DTYPE station
STNMAP C:/GrADS20/win32/sta.map
UNDEF 32766
TITLE Temperature Data Sample
TDEF 30 linear 01jun2012 1dy
VARS 1
avg 0 99 Temperature Data
ENDVARS
密码修改失败请联系微信:mofangbao

新浪微博达人勋

0
早起挑战累计收入
发表于 2013-3-7 11:42:59 | 显示全部楼层
抱歉 那个不是错误信息,正常运行都会有的,你翻译一下看看?
密码修改失败请联系微信:mofangbao
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

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

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

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