GRASS Wish List

P. Martijn van Leusen writes:

To Craig Anderson's wish list I would like to add:

(lines deleted)

  g.remove/g.rename - should issue a warning before removing
or renaming `parents' of reclassified maps.

Here is a temporary solution to the removal problem, in the form of a shell
script that I wrote. It checks for reclasses in *all* mapsets under a Location,
regardless of the search path, so be aware that it can be slow if you have
*lots* of raster map layers. It also gives the option of printing (using lp)
the list of reclassified maps based on a named 'parent' map; you may need to
edit this to suit your particular system.

-----------------------------------------------------------------------------

:
#
# ****** r.remove.sh *******
#
# Written by Malcolm Williamson
#
# @(#) r.remove.sh: Checks for reclasses before removing a raster map layer.
# Last revision: 3/24/93

if [ "$GISRC" = "" ] ; then
  echo "This command must be run from GRASS!"
  echo ""
  exit 1
fi
name=""
if [ $# = 0 ]; then
g.ask type=old prompt="Enter name of raster file to be removed." element=cell \
  desc=raster unixfile=/tmp/$$
. /tmp/$$
rm -f /tmp/$$
if [ "$name" = "" ]; then
   exit 0
  else
   realname="$name"
fi
else
  name=$*
  for item in $name
   do
    if [ ! -f $LOCATION/cell/$item ]; then
      echo "Raster file $item not found in mapset $MAPSET"
     else
      realname="$realname $item"
    fi
   done
fi
mapsets=`ls $LOCATION/..`
for mapname in $realname ; do
reclass=""
clear
echo "Checking for reclasses of $mapname..."
echo ""
for mapset in $mapsets ; do
  if [ -d $LOCATION/../$mapset/cellhd ] ; then
   rasters=`ls $LOCATION/../$mapset/cellhd`
  else
   continue
  fi
  for raster in $rasters; do
   pmap=`cat $LOCATION/../$mapset/cellhd/$raster | grep $mapname`
   if [ "$pmap" != "" ] ; then
    pmapset=`cat $LOCATION/../$mapset/cellhd/$raster | grep $MAPSET`
    if [ "$pmapset" != "" ] ; then
     reclass="$reclass $raster@$mapset"
    fi
   fi
  done
done
if [ "$reclass" != "" ] ; then
  echo ""
  echo " **********WARNING************"
  echo ""
  echo "The following raster map layers are reclasses of $mapname:"
  echo ""
  for map in $reclass ; do
   echo "$map"
  done
  echo ""
  echo "If you remove $mapname, these reclasses will be useless."
  echo ""
  echo -n "Do you really want to remove $mapname? y/n (n): "
  read ans
  if [ "$ans" = "y" ] || [ "$ans" = "Y" ] ; then
   echo ""
   echo "Do you want a printout of the reclasses map layers that"
   echo -n "will be effected? y/n (n): "
   read ans2
   if [ "$ans2" = "y" ] || [ "$ans2" = "Y" ] ; then
    echo "Reclassed map layers based on $mapname in $MAPSET:" > /tmp/printfile
    for map in $reclass ; do
     echo "$map" >> /tmp/printfile
    done
    lp /tmp/printfile
    sleep 3
    rm /tmp/printfile
   fi
  else
   continue
  fi
fi
echo ""
g.remove $mapname
done
exit 0

-----------------------------------------------------------------------------

--
Malcolm D. Williamson - Research Assistant E-mail: malcolm@cast.uark.edu
Center for Advanced Spatial Technologies Telephone: (501) 575-6159
Ozark Rm. 12 Fax: (501) 575-3846
University of Arkansas
Fayetteville, AR 72701