- 积分
- 47
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2013-10-10
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我参照了http://bbs.06climate.com/forum.php?mod=viewthread&tid=13422将站点资料提取出来,之后编写了CTL,但是stnmap的时候总是出错,想请教一下这个怎么解决,谢谢!
我的程序和生成的数据都是按照帖子一步一步来的
dset d:/dm/vis.grd
dtype station
stnmap d:/dm/vis.map
undef -9.99E33
title vis data
tdef 81 linear 23Z30Nov2013 3hr
vars 1
vis 0 99 nengjiandu
endvars
还有FORTRAN程序
integer::n,num
parameter(nt=81)
real,allocatable::lon(:),lat(:),vi(:) !动态数组分别用来储存站点的经纬度和能见度值
real:: temp(14)
character*8,allocatable::sta(:)
character*8 ss(69) !69为69个站点,用于储存站点号
character*12 filename(nt) !用于储存81个时次的文件名
open(1,file='D:\dm\Stations.txt') !这个sample.txt里边按行储存站点号。
do i=1,69
read(1,*) ss(i)
print*,ss(i)
enddo
close(1)
pause
open(2,file='D:\dm\filename.txt')
do i=1,nt
read(2,*) filename(i)
print*,'Filename',filename(i)
enddo
close(2)
pause
open(12,file='D:\dm\vis.grd',form='binary') !储存81个时次的能见度场
do k=1,nt
print*,'文件数',k
open(4,file='d:\dm\'//filename(k))
read(4,*)
read(4,*) n,n,n,n,n !将该时次的站点数赋值于n
allocate(lat(n))
allocate(lon(n))
allocate(vi(n))
allocate(sta(n))
print*,n
close(4)
open(11,file='d:\dm\'//filename(k)) !获知n后,重新读取。
read(11,*)
read(11,*)
do i=1,n !只读能见度,风速暂略 此循环为该时次的站点循环
read(11,*) sta(i),lon(i),lat(i),(temp(j),j=1,14),vi(i)
if(vi(i)==9999) then !若为缺测站点,直接pass
continue
else !不是缺测站点,接下来判断是否属于地区
num=0
do ii=1,69
if(sta(i)==ss(ii)) then
num=1
!print*,k,' ',sta(i),' ',ss(ii),' ',num
endif
enddo
!print*,vi(i)
if(num==1) then
tim=0.0;nlev=1;nflag=1
write(12) sta(i),lat(i),lon(i),tim,nlev,nflag,vi(i)
!print*,sta(i),lat(i),lon(i),tim,nlev,nflag,vi(i)
!pause
endif
endif
enddo
nlev=0
write(12) sta(n),lat(n),lon(n),tim,nlev,nflag
!print*,sta(n),lat(n),lon(n),tim,nlev,nflag
!pause
!一个时次的能见度场输入完毕
deallocate(lat)
deallocate(lon)
deallocate(vi)
deallocate(sta)
close(11)
close(12)
enddo
end
|
|