- 积分
- 158
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2013-2-26
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
如图1,降水图画出来跟底图不匹配,我是用micaps里的第三类数据画的,
原始资料如图2,下面的才是降水吧,从左到右分别是站号,经度,纬度,海拔,降水量。不是很清楚上面一坨数据是什么意思。
我先将站点资料处理为二进制文件:
以下是fortran程序:
 - !将micaps数据格式第3类降水数据转化为GRADS可读格式
- parameter(nzd=2000)
- character*8 :: stid(nzd)
- integer :: k,zd
- real :: r(nzd),rlon(nzd),rlat(nzd),hgt(nzd)
- character*100 :: chf1,chf2,chf3,chf4,chf5,chf6,chf7,chf8,chf9,chf10,chf11,chf12,chf13,chf14,chf15
- character*30 :: cfile='G:\data\r24-8-p\'
- character*30 :: cfile1='14061708.000'
- !-----------------------------------------
- open(1,file=trim(cfile)//trim(cfile1),status='old')
- read(1,500)chf1
- read(1,500)chf2
- read(1,500)chf3
- read(1,500)chf4
- read(1,500)chf5
- read(1,500)chf6
- read(1,500)chf7
- read(1,500)chf8
- read(1,500)chf9
- read(1,500)chf10
- read(1,500)chf11
- read(1,500)chf13
- read(1,500)chf14
- read(1,500)chf15
- 500 format(a100)
- !以上是把站号以上的数据读掉
- read(chf15,*)k,zd !读这个文件里面有多少个站,一共有zd个站,k是把前面的1读掉
- do i=1,zd
- read(1,*)stid(i),RLon(i),RLat(i),hgt(i),R(i)
- enddo
- !以上程序已经把站号,经纬度,海拔,降水量都读取完毕,下面把数据写到2进制文件中
- open(2,file='G:\data\out\6\rain.grd',form='binary')
- tim=0.0
- nlev=1
- nflag=1
- do 40 i=1,zd
- WRITE(2)stid(i),rlat(i),rlon(i),tim,nlev,nflag,r(i)
- 40 continue
- nlev=0
- WRITE(2)stid(i-1),rlat(i-1),rlon(i-1),tim,nlev,nflag
- CLOSE(2)
- print*,stid(5),RLon(5),RLat(5),hgt(5),R(5)
- end
- !***********************************************
- !此程序对应rain.ctl文件,运行! stnmap+rain.ctl生成*.map文件
与rain.grd相应的ctl文件:
dset g:\data\out\6\rain.grd
dtype station
stnmap g:\data\out\rain1.map
undef -999.0
title rain
tdef 1 linear 08:00Z17JUL2014 24hr
vars 1
p 0 99 rain
endvars
然后生成格点文件,以下是fortran程序:
- !生成格点文件
- !grid.grd文件的经度要高于或等于rain.grd的精度(取1度就好)
- !grid.grd文件的范围要大于或等于rain.grd的范围。
- !grid.grd文件的每个点上均赋值为1
- !grid.grd文件的描述文件中时间说明一定要与rain.ctl中时间一致。
- parameter(nx=71,ny=51)
- real lat(ny),lon(nx)
- real s(nx,ny)
- open(1,file='G:\data\out\6\grid.grd',form='binary')
- lat(1)=5.0
- lon(1)=70
- do j=1,ny-1
- lat(j+1)=lat(j)+1.0
- enddo
- do i=1,nx-1
- lon(i+1)=lon(i)+1.0
- enddo
- do i=1,nx
- do j=1,ny
- s(i,j)=1
- enddo
- enddo
- write(1)s
- end
复制代码 与格点数据grid.grd对应的ctl文件:
dset G:\data\out\6\grid.grd
undef -999.0
title Sample GRID Data
xdef 71 linear 70 1
ydef 41 linear 15 1
zdef 1 linear 500 1
tdef 1 linear 08:00Z17JUL2014 24hr
vars 1
g 0 99 grid data
endvars
最后是画图的gs文件:
'reinit'
'open G:\data\out\6\grid.ctl'
'open G:\data\out\6\rain.ctl'
'set grads off'
'enable print G:\data\out\6\picture\rain.gmf'
'set lon 70 135'
'set lat 10 55'
'set mpdset cnworld'
'define a=oacres(g,p.2,10,7,4,2,1)'
'define a1=maskout(a,g-0.5)'
'define aa=smth9(a1)'
'set xlopts 1 10 0.18'
'set ylopts 1 10 0.18'
'd aa'
'print'
'disable print'
;
这里用到了cnworld的底图,网上都有下载的,结果出来就成了之前的样子,不知道什么地方出了问题,恳请各位前辈予以解答,谢谢!
|
|