1.把不规则的数据按照其经纬读写成stream型data(其fortran程序如下)
parameter(n=160)
character*8 stid(n),sti(n)
real rlat(n),rlon(n),rval(n)
!************************************************read rlat rlon
open(9,file='D:\staistics\eof\rain1.txt')
do i=1,n
read(9,*) stid(i),rlat(i),rlon(i)
enddo
close(9)
!write(*,*) rlon
!*****************************************************read rval
open(10,file='D:\matlab7\sha\ryu2.txt')
do i=1,n
read(10,*) rval(i)
enddo
close(10)
!write(*,*) rval
!***************************************************write rain.dat
open(11,file='D:\matlab7\sha\ryu2.dat',form='unformatted',recordtype='stream')
!form='unformatted', so write should be writed as write(fid)
tim=0.0
nlev=1
nflag=1
do i=1,n
write(sti(i),'(i8)') i
write(11) sti(i),rlat(i),rlon(i),tim,nlev,nflag,rval(i)
write(*,*) sti(i)
enddo
nlev=0
write(11) sti(n),rlat(n),rlon(n),tim,nlev,nflag
close(11) !无格式的写入write()只需要一个参数
end
2.根据1生成的ryu2.dat写站点数据的描述文件ryu2.ctl
dset D:\parter\ryu2.dat
dtype station
stnmap D:\parter\ryu2.map
undef -999.0
title eof
tdef 1 linear jan1995 1mo
vars
r 0 99 rainfall data
endvars
3.生成ryu2.map
在grads中运行ga>!stnmap -i ryu2.ctl ga>!stnmap可以得到相关的命令
或者dos命令中运行win32>stnmap -i ryu2.ctl 都可以生成ryu2.map
通过在grads中运行 ryu2.ctl 看是否有站点数据在图中显示来判断ryu2.map或ryu2.dat的正确性
4.插值
需要一个格点文件dat和相应的描述文件,其描述文件h.txt的分辨率应设与需要的站点图相当
'reinit'
'enable print D:\wave\eof\outdata\u1.gmf'
'open D:\wave\eof\outdata\u1.ctl'
'open D:\wave\eof\outdata\grib.txt'
'set lon 95 135'
'set lat 18 48'
'd oacres(hgt.2,r,20,10,7,5,3,2,1)' 其中数字为插值半径
'print'
'disable print'