copying colr files
Lars Schylberg
larss at fmi.kth.se
Thu Mar 25 09:01:05 EST 1993
Hello !
I hope you people out there don't get tired of my color copying problems.
Today I found some cases where my script didn't work. So here is todays
version that should be much better or general at least. I would be glad if
someone could confirm if this version is ok now. It seems to work for
me now on the test examples that I could come up with. This is of importance
for me since I usually work with several mapsets and some of my programs aren't
taking care of the color files. So this script should be my safe way of doing
this.
Lars
Lars Schylberg Email: larss at fmi.kth.se
Dept. of Geodesy and Photogrammetry
Royal Institute of Technology (KTH) Tel. +46 8 790 86 33
S-100 44 STOCKHOLM, SWEDEN Fax. +46 8 790 66 10
#!/bin/sh
#
# cp.colr.sh
#
# Script to copy one color table from one raster map to another raster map
#
# The script checks if there exists a colr2 file in current mapset
# for the input map and uses this file in that case, since this is the
# file that is used by d.rast, otherwise we use the colr file.
#
# Copies the colortable to: $LOCATION/colr2/mapset/$out_name unless the output
# map is in the current mapset and there exist no colr file for the output
# then it is written to $LOCATION/colr/$out_name.
#
# Read 4.0 Programmers Manual 12.10.3.1 for details about colr2 files
#
# Author: Lars Schylberg ( larss at fmi.kth.se )
# Department of Geodesy and Photogrammetry
# Royal Inst. of Technolgy
# Stockholm, Sweden
#
# Date: 930325
# History of changes:
#
#--------------------------------------------------------------------------
# Check if GRASS is running
#
test "$GISRC" || echo "GRASS is not running" || exit 2
#----------------------------------------------------------------------------
#
# Evaluate arguments
#
if [ $# != 2 ]
then
echo
echo Usage: `basename $0`
echo ' input=mapname '
echo ' output=mapname '
echo
exit 1
fi
#
# parse input arguments
#
for i do
case $i in
input*)
IN=`echo $i | sed s/input=//` ;;
in*)
IN=`echo $i | sed s/in=//` ;;
i*)
IN=`echo $i | sed s/i=//` ;;
output*)
OUT=`echo $i | sed s/output=//` ;;
out*)
OUT=`echo $i | sed s/out=//` ;;
o*)
OUT=`echo $i | sed s/o=//` ;;
*)
echo ""
echo "Unrecognized option: $i"
echo 'Options: input=mapname '
echo ' output=mapname '
echo
exit 1
esac
done
#-----------------------------------------------------------------------
# Check the input arguments
eval `g.findfile element=cell file=$OUT`
if [ ! "$file" ] ; then
echo "$OUT - cell file not found"
exit 2
fi
eval `g.findfile element=colr file=$IN`
if [ ! "$file" ] ; then
echo "$IN - color file not found"
exit 2
fi
IN_FILE=$file
IN_MAPSET=$mapset
# Use only the first part of the file
# name since the file parameter requires that
IN_NAME=`echo $IN | awk -F@ '{ printf "%s\n", $1 }'`
# Check if the input map has a colr2 file in
# current mapset. Use this if it exists.
# Here we shouldn't use the mapset
# specification in the file parameter
# if one is given on the command line
eval `g.findfile element=colr2/$IN_MAPSET file=$IN_NAME`
if [ "$file" ] ; then
IN_FILE=$file
fi
#-----------------------------------------------------------------------------
# Check for existance of colr file and if output
# file is in current mapset.
OUT_NAME=`echo $OUT | awk -F@ '{ printf "%s\n", $1 }'`
eval `g.findfile element=cell file=$OUT`
OUT_MAPSET=$mapset
eval `g.findfile element=colr mapset=$OUT_MAPSET file=$OUT_NAME`
if [ ! "$file" -a "$OUT_MAPSET" = "$mapset" ] ; then
OUT_FILE=$LOCATION/colr/$OUT_NAME
SAMEMAPSET=1
else
OUT_FILE=$LOCATION/colr2/$OUT_MAPSET/$OUT_NAME
SAMEMAPSET=0
fi
# Make sure that output path exists
# if the output is in another mapset.
if [ ! -d $LOCATION/colr2 -a $SAMEMAPSET -eq 0 ] ; then
echo "Creating: $LOCATION/colr2"
mkdir $LOCATION/colr2
fi
if [ ! -d $LOCATION/colr2/$OUT_MAPSET -a $SAMEMAPSET -eq 0 ] ; then
echo "Creating: $LOCATION/colr2/$OUT_MAPSET"
mkdir $LOCATION/colr2/$OUT_MAPSET
fi
# Copy the color file
echo "Executing: cp $IN_FILE $OUT_FILE"
cp $IN_FILE $OUT_FILE
More information about the grass-user
mailing list