program height_11(250m)
parameter(latmin=48,latmax=59,lonmin=36,lonmax=42)
切り出す領域にあわせてこのパラメータを変更する
integer fnum,nn,E,N,d1,d2,d3,d4,dd
integer data(16),dat(6400,16)
character fname*4
fnum=0
do L=latmin,latmax
do M=lonmin,lonmax
open(100,file='height1.dat',status='old')
dd=0
fnum=fnum+1
ii=int(100*L+M)
write(fname,200) ii
200 format(i4.4)
write(*,*) fname
open(fnum,file=fname,status='unknown')
do i=1,6400
do k=1,16
dat(i,k)=0
end do
end do
10 continue
read(100,110,end=20) N,E,d1,d2,d3,d4,(data(k),k=1,16)
110 format(4x,3x,2i2,4i1,16(i4,x))
if ((N.eq.L).and.(E.eq.M)) then
dd=(d1*8+d2)*100+d3*10+d4
do i=1,16
if (data(i).eq.9999.or.data(i).eq.8888.or.data(i).eq.7777) then
data(i)=0
elseif (data(i).eq.6666) then
data(i)=5
end if
end do
do j=1,4
do k=1,4
dat(dd+1,4*(j-1)+k)=data(k+12-4*(j-1))
end do
end do
endif
if (((N.gt.L).and.(E.gt.M)).or.(dd.eq.6399)) then
go to 20
endif
go to 10
20 continue
do j=1,6400
write(fnum,120) j,(dat(j,k),k=1,16)
end do
120 format(i4,16i4)
close(fnum)
close(100)
end do
end do
stop
end
program height_21(250m)
parameter(latmin=48,latmax=59,lonmin=36,lonmax=42)
まとめる領域にあわせてこのパラメータを変更する
integer fnum1,fnum2,lat,lon,x,y,P,Q,R
integer data1(320,320)
integer data2(latmax-latmin+1,lonmax-lonmin+1,320,320)
character fname1*4,fname3*15
fnum1=0
fname3='all_topo.dat'
do lat=latmin,latmax
do lon=lonmin,lonmax
fnum1=fnum1+1
ii=int(100*lat+lon)
write(*,*) ii
write(fname1,100) ii
100 format(i4.4)
open(fnum1,file=fname1,status='old')
do m=1,8
do l=1,8
do j=10*(m-1)+1,10*m
do i=10*(l-1)+1,10*l
read(fnum1,200) ((data1(x,y),x=4*(i-1)+1,4*i),
+ y=4*(j-1)+1,4*j)
200 format(4x,16i4)
end do
end do
end do
end do
do y=1,320
do x=1,320
data2(lat-(latmin-1),lon-(lonmin-1),y,x)=data1(x,y)
end do
end do
close(fnum1)
end do
end do
open(200,file=fname3,status='unknown')
Q=0
R=0
do lon=1,(lonmax-lonmin+1)
write(*,*) lon
do x=1,320
P=0
do lat=1,(latmax-latmin+1)
do y=1,320
if (mod(y+Q,3).ne.2) then
P=P+1
write(200,250) x+R,P,data2(lat,lon,y,x)
250 format(2i6,i5)
end if
end do
Q=Q+320
end do
end do
R=R+320
end do
stop
end
program ks202_11(100m)
parameter(latmin=48,latmax=59,lonmin=36,lonmax=42)
切り出す領域にあわせてこのパラメータを変更する
integer fnum,nn,E,N,d1,d2,d3,d4,dd
integer data(100),dat(6400,100)
character fname*4
fnum=0
do L=latmin,latmax
do M=lonmin,lonmax
open(100,file='ks202',status='old')
dd=0
fnum=fnum+1
ii=int(100*L+M)
write(fname,200) ii
200 format(i4.4)
write(*,*) fname
open(fnum,file=fname,status='unknown')
do i=1,6400
do k=1,100
dat(i,k)=15
end do
end do
30 continue
read(100,110,end=20) N,E,d1,d2,d3,d4,(data(k),k=1,100)
110 format(2i2,4i1,100i2)
if ((N.eq.L).and.(E.eq.M)) then
dd=(d1*8+d2)*100+d3*10+d4
do k=1,100
dat(dd+1,k)=15
end do
do k=1,100
dat(dd+1,k)=data(k)
end do
endif
if (((N.gt.L).and.(E.gt.M)).or.(dd.eq.6399)) then
go to 20
endif
go to 30
20 continue
do j=1,6400
write(fnum,120) j,(dat(j,k),k=1,100)
120 format(i4,100i2)
end do
close(fnum)
close(100)
end do
end do
stop
end
program ks202_21
parameter(latmin=48,latmax=59,lonmin=36,lonmax=42)
まとめる領域にあわせてこのパラメータを変更する
integer fnum1,fnum2,lat,lon,x,y,P,Q,R
integer data1(800,800)
integer data2(latmax-latmin+1,lonmax-lonmin+1,800,800)
character fname1*4,fname3*15
fnum1=0
fname3='all_land.dat'
do lat=latmin,latmax
do lon=lonmin,lonmax
fnum1=fnum1+1
ii=int(100*lat+lon)
write(*,*) ii
write(fname1,100) ii
100 format(i4.4)
open(fnum1,file=fname1,status='old')
do m=1,8
do l=1,8
do j=10*(m-1)+1,10*m
do i=10*(l-1)+1,10*l
read(fnum1,200) ((data1(x,y),x=10*(i-1)+1,10*i),
+ y=10*(j-1)+1,10*j)
200 format(4x,100i2)
end do
end do
end do
end do
do y=1,800
do x=1,800
data2(lat-(latmin-1),lon-(lonmin-1),y,x)=data1(x,y)
end do
end do
close(fnum1)
end do
end do
open(200,file=fname3,status='unknown')
Q=0
R=0
do lon=1,(lonmax-lonmin+1)
write(*,*) lon
do x=1,800
P=0
do lat=1,(latmax-latmin+1)
do y=1,800
if (mod(y+Q,3).ne.2) then
P=P+1
write(200,250) x+R,P,data2(lat,lon,y,x)
250 format(2i6,i3)
end if
end do
Q=Q+800
end do
end do
R=R+800
end do
stop
end
program ks202_13
parameter(latmin=48,latmax=62,lonmin=34,lonmax=44)
切り出す領域にあわせてこのパラメータを変更する
integer fnum,nn,E,N,d1,d2,d3,d4,dd
integer data(100),dat(6400),c(15)
real pctdat(6400)
character fname1*7
fnum=0
do L=latmin,latmax
do M=lonmin,lonmax
open(100,file='../ks202',status='old')
dd=0
fnum=fnum+1
ii=int(100*L+M)
write(fname1,200) ii
200 format('pct',(i4.4))
write(*,*) fname1
open(fnum,file=fname1,status='unknown')
do i=1,6400
pctdat(i)=0.
end do
30 continue
read(100,110,end=20) N,E,d1,d2,d3,d4,(data(k),k=1,100)
110 format(2i2,4i1,100i2)
if ((N.eq.L).and.(E.eq.M)) then
dd=(d1*8+d2)*100+d3*10+d4
do i=dd+1,6400
pctdat(i)=0.
end do
do nc=1,15
c(nc)=0
do kk=1,100
if (data(kk).eq.nc) c(nc)=c(nc)+1
end do
end do
pctdat(dd+1)=1.-real(c(15))/100.
end if
if (((N.gt.L).and.(E.gt.M)).or.(dd.eq.6399)) then
go to 20
end if
go to 30
20 continue
do j=1,6400
write(fnum,120) j,pctdat(j)
120 format(i4,f10.1)
if ((pctdat(j).gt.1).or.(pctdat(j).lt.0)) then
write(*,*)'out of range',j,pctdat(j)
end if
end do
close(fnum)
close(100)
end do
end do
stop
end
program ks202_23
parameter(latmin=48,latmax=62,lonmin=34,lonmax=44)
まとめる領域にあわせてこのパラメータを変更する
integer fnum1,fnum2,lat,lon,x,y,P,Q,R
real data1(80,80)
real data2(latmax-latmin+1,lonmax-lonmin+1,80,80)
character fname1*7,fname3*15
fnum1=0
fname3='all_pct.dat'
do lat=latmin,latmax
do lon=lonmin,lonmax
fnum1=fnum1+1
ii=int(100*lat+lon)
write(*,*) ii
write(fname1,100) ii
100 format('pct',(i4.4))
open(fnum1,file=fname1,status='old')
do m=1,8
do l=1,8
do j=10*(m-1)+1,10*m
do i=10*(l-1)+1,10*l
read(fnum1,200) data1(i,j)
200 format(4x,f10.1)
end do
end do
end do
end do
do y=1,80
do x=1,80
data2(lat-(latmin-1),lon-(lonmin-1),y,x)=data1(x,y)
end do
end do
close(fnum1)
end do
end do
open(200,file=fname3,status='unknown')
Q=0
R=0
do lon=1,(lonmax-lonmin+1)
write(*,*) lon
do x=1,80
P=0
do lat=1,(latmax-latmin+1)
do y=1,80
if (mod(y+Q,3).ne.2) then
P=P+1
write(200,250) x+R,P,data2(lat,lon,y,x)
250 format(2i6,f3.1)
end if
end do
Q=Q+80
end do
end do
R=R+80
end do
stop
end
|