- 积分
- 1194
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2015-3-18
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
各位大神!本人最近刚好要用反距离插值法把格点数据插值到站点上,参考了论坛一位前辈分享的源程序,但输出数据不对,自己找不出问题,求指点?
代码如下:
program id_interp
implicit none
!声明变量
real lat,lon,d,dtotal,temp(141,81,6)
integer i,j,k,irec
integer,parameter::nx=141,ny=81
real :: disdum(141,81,6)
real :: valstn(6)
!声明结束
!开始程序
open(11,file='e:\test\1981_1982.grd',form='unformatted',access='direct',recl=141*81*1)
open(12,file='e:\test\c52446.txt',form='formatted')
read(*,*) lon,lat
irec=0
do k=1,6
irec=irec+1
read(11,rec=irec) ((temp(i,j,k),i=1,141),j=1,81)
enddo
do k=1,6 !! 需要给出时间循环个数
dtotal=0.
disdum(:,:,:)=0.
do j=1,81
do i=1,141
if (abs((i-1)*0.5+70-lon)<=0.5.and.abs((j-1)*0.5+15-lat)<=0.5) then
d=1/(((i-1)*0.5+70-lon)**2+((j-1)*0.5+15-lat)**2)
disdum(i,j,k)=d
dtotal=dtotal+d
endif
enddo
enddo
do j=1,81
do i=1,141
if(disdum(i,j,k)>0.) then
valstn(k)=temp(i,j,k)*(disdum(i,j,k)/dtotal)
endif
enddo
enddo
enddo !! 时间循环结束
write(12,*) (valstn(k),k=1,6)
end
!程序结束
万分感谢!!! |
|