- 积分
- 493
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2017-12-16
- 最后登录
- 1970-1-1
|
发表于 2018-2-10 12:22:19
|
显示全部楼层
本帖最后由 Dannyqiu 于 2018-2-10 12:24 编辑
嗯嗯,我参考你的程序把现有的海温距平资料去线性趋势了,海洋范围数据没啥问题,可是陆地范围为什么会出现距平数据,我把相应的Fortran,ctl, gs贴出来,麻烦你看一下呢,谢谢了
Fortran:
!x=bt+a
program station
parameter (nx=180,ny=89,mt=636)
real tmsu(nx,ny,mt),yr(mt),y(nx,ny,mt)
real s1(nx,ny),s2(nx,ny),s3(nx,ny),s4(nx,ny),b(nx,ny),a(nx,ny)
integer i,j,it,k
open(1,file='d:\AENSO\sst.mnmean.ssta.grd',form='binary')
do it=1,mt
read(1) ((tmsu(i,j,it),i=1,nx),j=1,ny)
end do
do it=1,mt
yr(it)=it
end do
do i=1,nx
do j=1,ny
do it=1,mt
s1(i,j)=s1(i,j)+tmsu(i,j,it)*yr(it)
s2(i,j)=s2(i,j)+yr(it)
s3(i,j)=s3(i,j)+tmsu(i,j,it)
s4(i,j)=s4(i,j)+yr(it)*yr(it)
enddo
b(i,j)=(s1(i,j)*636-s2(i,j)*s3(i,j))/(s4(i,j)*636-s2(i,j)**2)
a(i,j)=(s3(i,j)-b(i,j)*s2(i,j))/636.0
do it=1,mt
y(i,j,it)=tmsu(i,j,it)-it*b(i,j)-a(i,j)
enddo
enddo
enddo
open(2,file='D:\AENSO\sst.mnmeanqvshi.grd',form='binary')
write(2)(((y(i,j,it),i=1,nx),j=1,ny),it=1,mt)
END
ctl:
dset d:\AENSO\sst.mnmeanqvshi.grd
undef -999000000.0
xdef 180 linear 0 2
ydef 89 linear -88 2
zdef 1 linear 0 1
tdef 636 linear JAN1961 1mo
vars 1
sst 0 -999 Monthly Means of Sea Surface Temperature
endvars
gs:
'reinit'
'open d:\AENSO\sst.mnmeanqvshi.ctl'
'set lat -30 30'
'set lon -90 15'
'define ave1=ave(sst,t=297,t=299)'
'set gxout shaded'
'set cint 0.2'
'set clevs -1.2 -1.0 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1.0 1.2'
'set ccols 14 9 4 11 5 13 3 10 7 12 8 2 6 15'
'd ave1'
'set gxout contour'
'set cint 0.2'
'set clevs -1.2 -1.0 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1.0 1.2'
'd ave1'
'set line 1 1 7'
'draw title east la after3 qiuTNA sst'
'cbarn 1 0 4.5 0.35'
'printim d:\AENSO\eastlaafter3qiuTNAssthecheng.gif gif white'
;
然后画的图是
C:\Users\Danny\Desktop\QQ.png |
-
|