12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- #!/bin/sh
- # Parameters: 1, 2, 3 - number of LANDSAT band
- # written by Markus Neteler 21. Jul. 1998, 5. Jan. 1999
- # neteler geog.uni-hannover.de | neteler itc.it
- # submodule of i.oif
- if [ $# -ne 3 ] ; then
- g.message -e "You must use i.oif instead of i.oifcalc (this is a submodule)"
- exit 1
- fi
- if [ $1 -lt 1 ] || [ $1 -gt 7 ] || [ $2 -lt 1 ] || [ $2 -gt 7 ] || [ $3 -lt 1 ] || [ $3 -gt 7 ] ; then
- g.message -e "Invalid channel combination ($1 $2 $3)"
- exit 1
- fi
- PROG=`basename $0`
- #### check if we have awk
- if [ ! -x "`which awk`" ] ; then
- g.message -e "awk required, please install awk or gawk first"
- exit 1
- fi
- # setting environment, so that awk works properly in all languages
- unset LC_ALL
- LC_NUMERIC=C
- export LC_NUMERIC
- # calculate SUM of Stddeviations:
- "$GISBASE"/etc/i.oif/m.cutmatrix "$temp_stddev" 1 $1 > "$temp_sum"
- "$GISBASE"/etc/i.oif/m.cutmatrix "$temp_stddev" 1 $2 >> "$temp_sum"
- "$GISBASE"/etc/i.oif/m.cutmatrix "$temp_stddev" 1 $3 >> "$temp_sum"
- cat "$temp_sum" | awk -v temp_file="$temp_calc" \
- 'BEGIN {sum = 0.0}
- NR == 1{}
- {sum += $1 ; N++}
- END{
- print sum > temp_file
- }'
- # calculate SUM of absolute(Correlation values):
- "$GISBASE"/etc/i.oif/m.cutmatrix "$temp_correlation" $1 $2 > "$temp_sum"
- "$GISBASE"/etc/i.oif/m.cutmatrix "$temp_correlation" $1 $3 >> "$temp_sum"
- "$GISBASE"/etc/i.oif/m.cutmatrix "$temp_correlation" $2 $3 >> "$temp_sum"
- cat "$temp_sum" | awk -v temp_file="$temp_calc" \
- 'BEGIN {sum = 0.0}
- NR == 1{}
- {sum += sqrt($1*$1) ; N++} # sqrt(x^2) is my ABS-function
- END{
- print sum >> temp_file
- }'
- # Calculate OIF index:
- # Divide (SUM of Stddeviations) and (SUM of Correlation)
- cat "$temp_calc" | awk 'BEGIN {}
- {count = divisor; divisor = $1;} # value shift - no better idea ;-)
- END{
- print count / divisor
- }'
|