- 积分
- 74
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2013-9-28
- 最后登录
- 1970-1-1
![未绑定新浪微博用户 新浪微博达人勋](source/plugin/sina_login/img/gray.png)
|
![](static/image/common//ico_lz.png)
楼主 |
发表于 2013-11-2 10:01:20
|
显示全部楼层
<GRADS软件基础教程>中95--96页的绘全国160个站雨量图,程序是书上抄的,应该没有错,见附件.请大师指导.
pull dummy
river(15,4,4)
'd:/southsea.gs'
'print'
'disable print'
当执行到上面的
pull dummy
回车以后。又出现错:
Function not found:river
Error occurred on line 25
Infile rain.gs
程序如下:
转二进制数据
real vec(160)
ccccccc从文件"r1606.txt"中读入数据cccccccccccccccc
open(1,file='d:\data\r1606.txt',status='old')
read(1,*)(vec(i),i=1,160)
close(1)
ccccccc将文本记录转换为GrADS所支持的二进制记录cccccccccccccccc
call stntogrd(vec)
end
ccccccc stntogrd 子程序 ccccccccccc
subroutine stntogrd(x)
real lat(160),lon(160),x(160)
character *8 stid(160)
ccccccccccc从文件"china.dat"中读入160站的经纬度cccccccccccccc
open(2,file='d:\data\china.dat')
do 20 k=1,160
20 read(2,*)lat(k),lon(k)
close(2)
ccccccccc给出各站的站号cccccccccccc
do 2 i=1,160
2 stid(i)=char(i)
cccccccccc按排序向二进制文件“201006.grd”中写入记录cccccccccccc
open(3,file='d:\data\201006.grd',form='binary')
tim=0.0
nlev=1
nflag=1
do 40 i=1,160
write(3) stid(i),lat(i),lon(i)
#,tim,nlev,nflag,x(i)
40 continue
ccccccccccc在文件最后,给出一个特别记录,表示这个时间组的记录结束cccccccccccccc
nlev=0
write(3) stid(i-1),lat(i-1),lon(i-1),tim,nlev,nflag
close(3)
return
end
对应数据的描述
dset d:/data/201006.grd
dtype station
stnmap d:/data/rain.map
undef -999.0
title rain
tdef 1 linear Jun2010 1mo
vars 1
p 0 99 rainfall data
ENDVARS
格点文件生成程序
parameter(nx=71,ny=41)
real lat(ny),lon(nx)
real s(nx,ny)
open(1,file='d:\data\grid.grd',form='binary')
lat(1)=15.0
lon(1)=70.0
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
格点文件描述
dset d:/data/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 Jun2010 1mo
vars 1
g 0 99 grid data
ENDVARS
绘全国160个站雨量图GS
'open d:\data\grid.ctl'
'open d:\data\201006.ctl'
'set grads off'
'enable print d:\data\201006.gmf'
'set lon 73 135.5'
'set lat 17 55'
'set mpdset cn cnriver'
'define a=oacres(g,p.2,10,7,4,2,1)'
'define al=maskout(a,g-0.5)'
'define aa=smth9(al)'
'set xlopts 1 10 0.18'
'set ylopts 1 10 0.18'
'set gxout shaded'
'd:\rgbset.gs'
'set clevs 0 10 50 100 200 300 400 500 600'
'set ccolor rainbow'
'd aa'
'cbarn.gs'
'set cthick 8'
'set clopts 1 6 0.1'
'set gxout contour'
'set cint 50'
'd aa'
pull dummy
river(15,4,4)
'd:\southsea.gs'
'print'
'disable print'
GS文件中的2个文件
rgbset.gs
* light blue to dark blue
'set rgb 40 245 245 245'
'set rgb 41 225 255 255'
'set rgb 42 180 240 250'
'set rgb 43 150 210 250'
'set rgb 44 120 185 250'
'set rgb 45 80 165 245'
'set rgb 46 60 150 245'
'set rgb 47 40 130 240'
'set rgb 48 30 110 235'
'set rgb 49 20 100 210'
'set rbcols 40 41 42 43 44 45 46 47 48 49'
southsea.gs
* draw south China sea at the right
'q dim'
rec22=sublin(result,2)
rec33=sublin(result,3)
lon1=subwrd(rec22,6);lon2=subwrd(rec22,8)
lat1=subwrd(rec33,6);lat2=subwrd(rec33,8)
'q gxinfo'
rec1=sublin(result,1)
screen=subwrd(recl,4)
if(screen='Clear')
say'Can''t draw south China sea'
return
endif
rec3=sublin(result,3)
rec4=sublin(result,4)
xright=subwrd(rec3,6)
ybottom=subwrd(rec4,4)
xleft=xright-1.2
ytop=ybottom+2
yytop=ytop+0.035
xxleft=xleft-0.035
x2=xleft+0.05
y2=ytop-0.05
x3=xxleft+0.07
y3=yytop-0.07
'set line 1 1 1'
'set vpage 0 11 0 8.5'
'draw line 'x2''ytop''xright''ytop''
'draw line 'x3''yytop''xright''yytop''
'draw line 'xleft''ybottom''xleft''y2''
'draw line 'xxleft''ybottom''xxleft''y3''
'draw line 'xleft''y2''x2''ytop''
'draw line 'xxleft''y3''x3''yytop''
zx11=xright-0.8938;zx12=zx11+0.06;
zy11=ybottom+1.29;zy12=zy11-0.08;
'set cthick 6'
'draw line'zx11''zy11''zx12''zy12''
zx21=zx11+0.07;zx22=zx21-0.03;
zy21=zy11-0.31;zy22=zy21-0.1;
'draw line'zx21''zy21''zx22''zy22''
zx31=zx21-0.19;zx32=zx31+0.02;
zy31=zy21-0.41;zy32=zy31-0.11;
'draw line'zx31''zy31''zx32''zy32''
zx41=zx31+0.35;zx42=zx41-0.08;
zy41=zy31-0.24;zy42=zy41-0.05;
'draw line'zx41''zy41''zx42''zy42''
zx51=zx41+0.23;zx52=zx51-0.05;
zy51=zy41+0.30;zy52=zy51-0.09;
'draw line'zx51''zy51''zx52''zy52''
zx61=zx51+0.21;zx62=zx61-0.04;
zy61=zy51+0.42;zy62=zy61-0.10;
'draw line'zx61''zy61''zx62''zy62''
zx71=zx61+0.01;zx72=zx71;
zy71=zy61+0.28;zy72=zy71-0.10;
'draw line'zx71''zy71''zx72''zy72''
zx81=zx71+0.08;zx82=zx81-0.07;
zy81=zy71+0.22;zy82=zy81-0.08;
'draw line'zx81''zy81''zx82''zy82''
zx91=zx81+0.12;zx92=zx91-0.08;
zy91=zy81+0.12;zy92=zy91-0.05;
'draw line'zx91''zy91''zx92''zy92''
'set lon 105 122'
'set lat 0.0 25'
'set parea'xleft''xright''ybottom''ytop''
'set mpdset mres'
'draw map'
'set mpdset mres'
'set parea off'
'set vpage off'
'set lon'lon1''lon2''
'set lat'lat1''lat2''
'set cthick 1'
return |
|