program readumd character*1 veg(43200,21600) integer i,j,iveg(43200,21600),ii,jj,ivegt(43200,21600) real*4 rveg(2160,1080) open(unit=11,file='gsib2_0ll.img',access='DIRECT', $ recl=43200*21600,status='old') open(unit=16,file='gsib2_0llnw13.gr',access='DIRECT', 1 recl=2160*1080*4,status='unknown') ! vegetation types are stored as 8-bit unsigned integers ! read into char array, then convert to integer using ichar read(11,rec=1) veg close(11) do j=1,21600 do i=1,43200 iveg(i,j)=ichar(veg(i,j)) if(iveg(i,j).eq.20) iveg(i,j)=13 if(iveg(i,j).eq.19) iveg(i,j)=0 ivegt(I,J)=iveg(i,j) enddo enddo jmi=21600 imi=43200 iter=1200 DO J=1,JMI DO I=1,IMI if(iveg(I,J).eq.17) then DO KRAD=1,ITER JJ=J DO IV=1,KRAD DO II=I-IV,I+IV,2*IV ITT=MIN(II,IMI) ITT=MAX(ITT,1) JTT=MIN(JJ,JMI) JTT=MAX(JTT,1) if(ivegt(ITT,JTT).ne.17.and.ivegt(ITT,JTT).ne.0)then iveg(I,J)=ivegt(ITT,JTT) GO TO 35 ENDIF END DO END DO DO JV=1,KRAD DO JJ=J-JV,J+JV,2*JV II=I ITT=MIN(II,IMI) ITT=MAX(ITT,1) JTT=MIN(JJ,JMI) JTT=MAX(JTT,1) if(ivegt(ITT,JTT).ne.17.and.ivegt(ITT,JTT).ne.0)then iveg(I,J)=ivegt(ITT,JTT) GO TO 35 ENDIF DO IV=1,KRAD DO II=I-IV,I+IV ITT=MIN(II,IMI) ITT=MAX(ITT,1) JTT=MIN(JJ,JMI) JTT=MAX(JTT,1) if(ivegt(ITT,JTT).ne.17.and.ivegt(ITT,JTT).ne.0)then iveg(I,J)=ivegt(ITT,JTT) GO TO 35 ENDIF END DO END DO END DO END DO END DO iveg(I,J)=10 PRINT *,'OH OH ASSIGN VEG TYPE TO 10', I,J WRITE(13,*) 'OH OH ASSIGN VEG TYPE TO 10', I,J 35 CONTINUE ENDIF END DO END DO OPEN(UNIT=33,FILE='sib1kmnowet13' & ,STATUS='UNKNOWN',FORM='UNFORMATTED') WRITE(33)iveg CLOSE(33) C do j=20,21600,20 jj=int(j/20) do i=20,43200,20 ii=int(i/20) rveg(ii,jj)=float(iveg(i,j)) enddo enddo do j=1,1080,20 write(17,155) (rveg(i,j),i=1,2160,20) enddo write(16,rec=1) rveg 155 format(x,19f4.0) close(16) stop end