- 积分
- 980
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2013-4-15
- 最后登录
- 1970-1-1
|
发表于 2013-5-19 11:23:15
|
显示全部楼层
parameter(nt=32)
integer::n,num
real,allocatable::lon(:),lat(:),vi(:) !动态数组分别用来储存站点的经纬度和能见度值
real:: temp(14)
character*8,allocatable::sta(:) !动态数组,储存站号,站号必须是8个字符,5个的话会stnmap出不出来
character*8 ss(112) !112为华北112个站点,用于储存站点号
character*12 filename(nt) !用于储存248个时次的文件名
open(11,file='sample.txt') !这个sample.txt里边按行储存了华北站点站号。
read(11,*)
do i=1,112
read(11,*) ss(i)
enddo
close(11)
open(11,file='filename.txt')
do i=1,nt
read(11,*) filename(i)
print*,filename(i)
enddo
close(11)
open(12,file='vis.grd',form='binary') !储存248个时次的能见度场
do k=1,nt
print*,'文件数',k
open(11,file=filename(k))
read(11,*)
read(11,*) n,n,n,n,n !将该时次的站点数赋值于n
allocate(lat(n))
allocate(lon(n))
allocate(vi(n))
allocate(sta(n))
!print*,n
close(11)
open(11,file=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,112
if(sta(i)==ss(ii)) then
num=1
!print*,k,' ',sta(i),' ',ss(ii),' ',num
endif
enddo
!print*,vi(i)
if(num==1) then !如果该站点属于华北并未缺测,则写入grd中。
tim=0.0;nlev=1;nflag=1
write(12) sta(i),lat(i),lon(i),tim,nlev,nflag,vi(i)
endif
endif
enddo
nlev=0
write(12) sta(n),lat(n),lon(n),tim,nlev,nflag
!一个时次的能见度场输入完毕
deallocate(lat)
deallocate(lon)
deallocate(vi)
deallocate(sta)
close(11)
enddo
end
|
|