#!/bin/sh # calculates the Optimum Index factor of all band combinations # for LANDSAT TM 1,2,3,4,5,7 # Ref.: Jensen: Introductory digital image processing 1996, p.98 # # Input: tm1 - tm5, tm7 (not tm6) # # written by Markus Neteler 21.July 1998 # neteler@geog.uni-hannover.de # updated for GRASS 5.7 by Michael Barton 2004/04/05 #% Module #% description: i.oif - Optimum-Index-Factor table for LANDSAT TM bands 1-5, & 7 #% End #% option #% key: image1 #% type: string #% gisprompt: old,cell,raster #% description: LANDSAT TM band 1. #% required : yes #% end #% option #% key: image2 #% type: string #% gisprompt: old,cell,raster #% description: LANDSAT TM band 2. #% required : yes #% end #% option #% key: image3 #% type: string #% gisprompt: old,cell,raster #% description: LANDSAT TM band 3. #% required : yes #% end #% option #% key: image4 #% type: string #% gisprompt: old,cell,raster #% description: LANDSAT TM band 4. #% required : yes #% end #% option #% key: image5 #% type: string #% gisprompt: old,cell,raster #% description: LANDSAT TM band 5. #% required : yes #% end #% option #% key: image7 #% type: string #% gisprompt: old,cell,raster #% description: LANDSAT TM band 7. #% required : yes #% end if [ -z "$GISBASE" ] then echo "" echo "You must be in GRASS GIS to run this program" echo "" exit 1 fi if [ "$1" != "@ARGS_PARSED@" ] then exec g.parser "$0" "$@" fi eval `g.gisenv` : ${GISBASE?} ${GISDBASE?} ${LOCATION_NAME?} ${MAPSET?} LOCATION=$GISDBASE/$LOCATION_NAME/$MAPSET # save the Stddev for TM bands echo "Calculation Standarddeviations for all bands:" $GISBASE/etc/i.oif/r.stddev $GIS_OPT_image1 |tail -1 >/tmp/i.oif.stddev $GISBASE/etc/i.oif/r.stddev $GIS_OPT_image2 |tail -1 >>/tmp/i.oif.stddev $GISBASE/etc/i.oif/r.stddev $GIS_OPT_image3 |tail -1 >>/tmp/i.oif.stddev $GISBASE/etc/i.oif/r.stddev $GIS_OPT_image4 |tail -1 >>/tmp/i.oif.stddev $GISBASE/etc/i.oif/r.stddev $GIS_OPT_image5 |tail -1 >>/tmp/i.oif.stddev $GISBASE/etc/i.oif/r.stddev $GIS_OPT_image7 |tail -1 >>/tmp/i.oif.stddev echo "Calculation Correlation Matrix" r.covar -r map=$GIS_OPT_image1,$GIS_OPT_image2,$GIS_OPT_image3,$GIS_OPT_image4,$GIS_OPT_image5,$GIS_OPT_image7 |tail -6 > /tmp/i.oif.correlation # Calculate all combinations echo "Calculate OIF for the 20 band combinations..." echo "Calculate OIF for combination 123" echo "123: "> /tmp/i.oif.bands $GISBASE/etc/i.oif/i.oifcalc 1 2 3 > /tmp/i.oif.result echo "Calculate OIF for combination 124" echo "124: " >> /tmp/i.oif.bands $GISBASE/etc/i.oif/i.oifcalc 1 2 4 >> /tmp/i.oif.result echo "Calculate OIF for combination 125" echo "125: " >> /tmp/i.oif.bands $GISBASE/etc/i.oif/i.oifcalc 1 2 5 >> /tmp/i.oif.result echo "Calculate OIF for combination 127" echo "127: " >> /tmp/i.oif.bands $GISBASE/etc/i.oif/i.oifcalc 1 2 7 >> /tmp/i.oif.result echo "Calculate OIF for combination 134" echo "134: " >> /tmp/i.oif.bands $GISBASE/etc/i.oif/i.oifcalc 1 3 4 >> /tmp/i.oif.result echo "Calculate OIF for combination 135" echo "135: " >> /tmp/i.oif.bands $GISBASE/etc/i.oif/i.oifcalc 1 3 5 >> /tmp/i.oif.result echo "Calculate OIF for combination 137" echo "137: " >> /tmp/i.oif.bands $GISBASE/etc/i.oif/i.oifcalc 1 3 7 >> /tmp/i.oif.result echo "Calculate OIF for combination 145" echo "145: " >> /tmp/i.oif.bands $GISBASE/etc/i.oif/i.oifcalc 1 4 5 >> /tmp/i.oif.result echo "Calculate OIF for combination 147" echo "147: " >> /tmp/i.oif.bands $GISBASE/etc/i.oif/i.oifcalc 1 4 7 >> /tmp/i.oif.result echo "Calculate OIF for combination 157" echo "157: " >> /tmp/i.oif.bands $GISBASE/etc/i.oif/i.oifcalc 1 5 7 >> /tmp/i.oif.result echo "Calculate OIF for combination 234" echo "234: " >> /tmp/i.oif.bands $GISBASE/etc/i.oif/i.oifcalc 2 3 4 >> /tmp/i.oif.result echo "Calculate OIF for combination 235" echo "235: " >> /tmp/i.oif.bands $GISBASE/etc/i.oif/i.oifcalc 2 3 5 >> /tmp/i.oif.result echo "Calculate OIF for combination 237" echo "237: " >> /tmp/i.oif.bands $GISBASE/etc/i.oif/i.oifcalc 2 3 7 >> /tmp/i.oif.result echo "Calculate OIF for combination 245" echo "245: " >> /tmp/i.oif.bands $GISBASE/etc/i.oif/i.oifcalc 2 4 5 >> /tmp/i.oif.result echo "Calculate OIF for combination 247" echo "247: " >> /tmp/i.oif.bands $GISBASE/etc/i.oif/i.oifcalc 2 4 7 >> /tmp/i.oif.result echo "Calculate OIF for combination 257" echo "257: " >> /tmp/i.oif.bands $GISBASE/etc/i.oif/i.oifcalc 2 5 7 >> /tmp/i.oif.result echo "Calculate OIF for combination 345" echo "345: " >> /tmp/i.oif.bands $GISBASE/etc/i.oif/i.oifcalc 3 4 5 >> /tmp/i.oif.result echo "Calculate OIF for combination 347" echo "347: " >> /tmp/i.oif.bands $GISBASE/etc/i.oif/i.oifcalc 3 4 7 >> /tmp/i.oif.result echo "Calculate OIF for combination 357" echo "357: " >> /tmp/i.oif.bands $GISBASE/etc/i.oif/i.oifcalc 3 5 7 >> /tmp/i.oif.result echo "Calculate OIF for combination 457" echo "457: " >> /tmp/i.oif.bands $GISBASE/etc/i.oif/i.oifcalc 4 5 7 >> /tmp/i.oif.result paste -d' ' /tmp/i.oif.bands /tmp/i.oif.result > /tmp/i.oif.result2 sort -k 2 -n -r /tmp/i.oif.result2 > ./i.oif.result rm -f /tmp/i.oif.stddev rm -f /tmp/i.oif.correlation rm -f /tmp/i.oif.sum rm -f /tmp/i.oif.calc rm -f /tmp/i.oif.result rm -f /tmp/i.oif.result2 rm -f /tmp/i.oif.bands echo "Ready." echo "" echo "The Optimum Index Factor analysis result:" echo " (Best combination comes first.)" cat ./i.oif.result