Skip to content

Commit

Permalink
fixed landfire conversion program
Browse files Browse the repository at this point in the history
  • Loading branch information
jbeezley committed Dec 15, 2008
1 parent aae62c4 commit 932a2d8
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 17 deletions.
32 changes: 18 additions & 14 deletions WPS/landfire/convert_landfire.F90
Expand Up @@ -2,45 +2,49 @@ program convert_landfire
implicit none

character(len=256)::buffer,fname,oname
integer::ncol,nrow,ierr,i,j,iread,iwrite,k,ictile,irtile,ctile,rtile,l,sxtile,extile,sytile,eytile
integer,parameter::maxtile=1000, maxcat=14
integer::ncol,nrow,ierr,i,j,iread,iwrite,k,ictile,irtile,ctile,rtile,l,sxtile,extile,sytile,eytile,grow,gcol
integer,parameter::maxtile=1000, maxcat=14,halo=3
real(kind=4)::rbuf

call getarg(1,fname)
call getarg(2,buffer)
read(buffer,*) nrow
read(buffer,*) grow
call getarg(3,buffer)
read(buffer,*) ncol
read(buffer,*) gcol


iread=60
iwrite=61
nrow=grow-2*halo
ncol=gcol-2*halo
open(iread,file=fname,status='old',form='unformatted',access='direct',recl=4)

call get_ntile(ctile,maxtile,ncol)
call get_ntile(rtile,maxtile,nrow)
call get_ntile(ctile,maxtile,ncol) ! x
call get_ntile(rtile,maxtile,nrow) ! y
print*,'splitting data into ',rtile,'x',ctile,' tiles'
k=0
do ictile=1,ctile
do irtile=1,rtile
do irtile=1,rtile ! y
do ictile=1,ctile ! x
call get_tile_idx(sxtile,extile,ictile,maxtile,ncol)
call get_tile_idx(sytile,eytile,irtile,maxtile,nrow)
call get_tile_name(oname,sytile,eytile,sxtile,extile)
call get_tile_name(oname,sxtile,extile,sytile,eytile)
print*,'writing out file: ', trim(oname)
open(iwrite,file=oname,status='unknown',form='unformatted',access='direct',recl=2)
l=0
do i=sytile,eytile
do j=sxtile,extile
k=(j-1)*nrow+i
do i=sytile,eytile+2*halo ! y
do j=sxtile,extile+2*halo ! x
k=(i-1)*gcol+j
l=l+1
read(iread,rec=k,err=999) rbuf
if(rbuf.gt.maxcat.or.rbuf.lt.1)rbuf=0.
if(rbuf.gt.maxcat.or.rbuf.lt.1)rbuf=14.
write(iwrite,rec=l) int(rbuf,kind=2)
enddo
enddo
close(iwrite)
enddo
enddo

print*,'completed successfully'
999 continue
print*,i,j,k,l,irtile,ictile
close(iread)
Expand All @@ -66,5 +70,5 @@ subroutine get_tile_name(tname,sxtile,extile,sytile,eytile)
character(len=*),intent(out)::tname
integer,intent(in)::sxtile,extile,sytile,eytile

write(tname,'(i5.5,"-",i5.5,".",i5.5,"-",i5.5)') sytile,eytile,sxtile,extile
write(tname,'(i5.5,"-",i5.5,".",i5.5,"-",i5.5)') sxtile,extile,sytile,eytile
end subroutine get_tile_name
6 changes: 3 additions & 3 deletions WPS/landfire/landfire.sh
Expand Up @@ -105,7 +105,7 @@ if [ "$proj" == "ALBERS" ] && [ "$datum" == "NAD83" ] ; then
nproj=1
echo "projection=albers_nad83" >> $idx
# echo "projection=regular_ll" >> $idx
else
elif [ "$proj" == "UTM" ] && [ "$datum" == "NAD83" ] ; then
echo "Projection $proj $datum not supported"
exit 1
fi
Expand Down Expand Up @@ -136,7 +136,7 @@ echo 'stdlon=-96.0' >> $idx
echo 'wordsize=2' >> $idx
echo 'category_min=1' >> $idx
echo 'category_max=14' >> $idx
echo 'tile_bdr=0' >> $idx
echo 'tile_bdr=3' >> $idx
echo 'missing_value=0' >> $idx
echo 'scale_factor=1' >> $idx
echo 'row_order=bottom_top' >> $idx
Expand All @@ -151,7 +151,7 @@ echo "tile_x=1000" >> $idx
echo "tile_y=1000" >> $idx
echo "tile_z=1" >> $idx

./convert_landfire.x ${1}/${1}.flt $ncols $nrows
./convert_landfire.x ${1}/${1}.flt $nrows $ncols
mv *'-'*'.'*'-'* "$output_dir"
#nfname="$output_dir/$(printf "%05d-%05d.%05d-%05d" 1 $ncols 1 $nrows)"
#mv "${1}/${1}.flt_tmp" "$nfname"
Expand Down
1 change: 1 addition & 0 deletions WPS/landfire/make
@@ -0,0 +1 @@
ifort -O3 -assume buffered_io -assume byterecl -o convert_landfire.x convert_landfire.F90

0 comments on commit 932a2d8

Please sign in to comment.