- 积分
- 1194
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2015-3-18
- 最后登录
- 1970-1-1
|
发表于 2017-7-8 18:16:00
|
显示全部楼层
楼主,你好,最近刚好要用反距离插值法把格点数据插值到站点上,但输出数据不对,自己找不出问题,可以帮我指点下吗?
代码如下:
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
!程序结束
万分感谢!!! |
|