d.rast.zoom2 script

GRASS users,
  This script may be useful to you for specialized zooming in and out of data;
I found it useful for visually checking imagery in GRASS.

----------------------------- Cut Here ---------------------------------------
:

# *** d.rast.zoom2 ***
# Written by Rick Thompson
#
# @(#) d.rast.zoom2: allows repetitive display and interactive d.zooming of up
# @(#) to 1 raster map, 1 raster overlay map, and 2 vector files,
# @(#) plus d.zooming back out in the reverse order. Additionally,
# @(#) a region can be saved, the original raster file's region
# @(#) can be returned to, or the user can do a one-time display
# @(#) of a new raster or vector file.
# @(#) Last revision: 4/20/94

ARCH=`uname -m`
if [ $ARCH = mips ] ; then
  ECHON="/usr/bsd43/bin/echo -n"
else
  ECHON="echo -n"
fi

if [ "$GISRC" = "" ] ; then
  clear
  echo "This command must be run from GRASS!"
  echo ''
  exit 1
fi

name=''
clear
echo ''
resp="n"
until [ "$resp" = "y" ] ; do
g.ask type=mapset prompt="Please select a raster map:" element=cell desc=raster unixfile=/tmp/$$
  . /tmp/$$
rm -f /tmp/$$
if [ ! -f $LOCATION/cell/$name ]; then
  echo "Raster map $name not found in mapset $MAPSET."
  resp="n"
  echo ''
else
  rast="$name"
  name=''
  resp="y"
fi
done

echo ''
resp="n"
until [ "$resp" = "y" ] ; do
  $ECHON "Do you want to specify a raster overlay map, too? (y/n) "
  read ans
  if [ "$ans" = "y" -o "$ans" = "Y" ] ; then
    echo ''
    g.ask type=mapset prompt="Please select an overlay raster map:" element=cell desc=raster unixfile=/tmp/$$
    . /tmp/$$
    rm -f /tmp/$$
    if [ ! -f $LOCATION/cell/$name ]; then
      echo "Overlay raster map $name not found in mapset $MAPSET."
      resp="n"
      echo ''
    else
      overlay="$name"
      name=''
      resp="y"
    fi
  else
    break
  fi
done

echo ''
$ECHON "Would you like to display a vector map? (y/n) "
read ans
if [ "$ans" = "y" -o "$ans" = "Y" ] ; then
  echo ''
  g.ask type=mapset prompt="Which vector map?" element=dig desc=vector unixfile=/tmp/$$
  . /tmp/$$
  rm -f /tmp/$$
  if [ ! -f $LOCATION/dig/$name ]; then
    echo "Vector map $name not found in mapset $MAPSET."
    resp="n"
    echo ''
  else
    vect="$name"
    name=''
    resp="y"
    $ECHON "What color should be assigned to $vect? "
    read col
  fi
else
  break
fi

if [ -n "$vect" ] ; then
  echo ''
  $ECHON "Would you like to display a 2nd vector map (y/n)? "
  read ans
  if [ "$ans" = "y" -o "$ans" = "Y" ] ; then
    echo ''
    g.ask type=mapset prompt="Which vector map?" element=dig desc=vector unixfile=/tmp/$$
    . /tmp/$$
    rm -f /tmp/$$
    if [ ! -f $LOCATION/dig/$name ]; then
      echo "Vector map $name not found in mapset $MAPSET."
      resp="n"
      echo ''
    else
      vect2="$name"
      name=''
      resp="y"
      $ECHON "What color should be assigned to $vect? "
      read col2
    fi
  else
    break
  fi
fi
  
g.region rast="$rast"
res=`g.region -g | grep nsres | cut -d"=" -f2 | tr -d ' '`
d.erase
d.rast "$rast"
if [ -f $LOCATION/cell/"$overlay" ] ; then
  d.rast -o "$overlay"
fi
if [ -n "$vect" ] ; then
  d.vect "$vect" c=$col
fi
if [ -n "$vect2" ] ; then
  d.vect "$vect2" c=$col2
fi

g.region save=rastzoomtmp1
response="y"
i=1
until [ "$response" = "n" -o "$response" = "N" ] ; do
  clear
  echo ''
  echo "Please select one of these actions to:"
  echo ''
  echo "1 - use the interactive d.zoom"
  echo "2 - go to the previous zoom"
  echo "3 - go to a designated region"
  echo "4 - return to $rast""'s"" region"
  echo "5 - save the current region"
  echo "6 - do a one time display of a new raster map"
  echo "7 - do a one time display of a new vector map"
  echo "8 - quit"
  echo ''
  $ECHON "Please enter the appropriate number: "
  read number
  case $number in
  1) i=`expr $i + 1`
     d.zoom -q
     g.region save=rastzoomtmp$i
     d.erase
     d.rast "$rast"
     if [ -f $LOCATION/cell/"$overlay" ] ; then
       d.rast -o "$overlay"
     fi
     if [ -n "$vect" ] ; then
       d.vect "$vect" c=$col
     fi
     if [ -n "$vect2" ] ; then
       d.vect "$vect2" c=$col2
     fi;;
  2) i=`expr $i - 1`
     if [ $i = 0 ] ; then
       echo "No previous zooming windows remain. Would you like to view"
       $ECHON "the default region? (y/n) "
       read ans
       if [ "$ans" = "y" -o "$ans" = "Y" ] ; then
         g.region -d res=$res
         d.erase
         d.rast "$rast"
         if [ -f $LOCATION/cell/"$overlay" ] ; then
           d.rast -o "$overlay"
         fi
       fi
       if [ -n "$vect" ] ; then
         d.vect "$vect" c=$col
       fi
       if [ -f "$vect2" ] ; then
         d.vect "$vect2" c=$col2
       fi
     elif [ $i -lt 0 ] ; then
       echo ''
       echo "No previous zooming windows remain."
       echo ''
       sleep 3
     else
       g.region region=rastzoomtmp$i
       d.erase
       d.rast "$rast"
       if [ -f $LOCATION/cell/"$overlay" ] ; then
         d.rast -o "$overlay"
       fi
       if [ -n "$vect" ] ; then
         d.vect "$vect" c=$col
       fi
       if [ -n "$vect2" ] ; then
         d.vect "$vect2" c=$col2
       fi
     fi;;
  3) echo ''
      echo 'The region is based on:'
     echo ''
     echo '1 - raster file'
     echo '2 - vector file'
     echo '3 - region file'
     echo ''
     $ECHON 'Please enter the appropriate number: '
      read regno
     case $regno in
    1) echo ''
       type="rast";;
    2) echo ''
       type="vect";;
    3) echo ''
       type="region";;
     esac
     g.list "$type"
      echo ''
     $ECHON "Enter the $type region you want: "
     read newreg
     g.region "$type"="$newreg"
     d.erase
     d.rast "$rast"
     if [ -f $LOCATION/cell/"$overlay" ] ; then
       d.rast -o "$overlay"
     fi
     if [ -n "$vect" ] ; then
       d.vect "$vect" c=$col
     fi
     if [ -n "$vect2" ] ; then
       d.vect "$vect2" c=$col2
     fi;;
  4) g.region rast="$rast"
     d.erase
     d.rast "$rast"
     if [ -f $LOCATION/cell/"$overlay" ] ; then
       d.rast -o "$overlay"
     fi
     if [ -n "$vect" ] ; then
       d.vect "$vect" c=$col
     fi
     if [ -n "$vect2" ] ; then
       d.vect "$vect2" c=$col2
     fi;;
  5) echo ''
     $ECHON "Enter the name by which to save this region: "
     read nreg
     g.region save=$nreg;;
  6) echo ''
     g.ask type=mapset prompt="Please select the tmp raster map:" element=cell desc=raster unixfile=/tmp/$$
       . /tmp/$$
     rm -f /tmp/$$
     if [ ! -f $LOCATION/cell/$name ]; then
       echo "Raster map $name not found in mapset $MAPSET."
       resp="n"
       echo ''
     else
       rname="$name"
       name=''
       d.rast -o "$rname"
     fi;;
  7) echo ''
     g.ask type=mapset prompt="Please select the tmp vector map:" element=dig desc=vector unixfile=/tmp/$$
       . /tmp/$$
     rm -f /tmp/$$
     if [ ! -f $LOCATION/dig/$name ]; then
       echo "Vector map $name not found in mapset $MAPSET."
       echo ''
     else
       vname="$name"
       name=''
       echo ''
           echo -n "Enter $vname""'s"" color: "
            read vnamcol
       d.vect "$vname" c=$vnamcol
     fi;;
  8) rm $LOCATION/windows/rastzoomtmp*
     exit 0;;
esac
done
rm $LOCATION/windows/rastzoomtmp*
------------------------------------------------------------------------
Rick Thompson- Research Assistant E-mail: rick@cast.uark.edu
Center for Advanced Spatial Technologies Telephone: (501) 575-5736
Ozark Hall Rm. 12 Fax: 575-3846
University of Arkansas
Fayetteville, AR 72701