[GRASS-SVN] r34860 - grass-addons/raster/r.pack

svn_grass at osgeo.org svn_grass at osgeo.org
Sat Dec 13 23:20:20 EST 2008


Author: hamish
Date: 2008-12-13 23:20:20 -0500 (Sat, 13 Dec 2008)
New Revision: 34860

Added:
   grass-addons/raster/r.pack/r.pack
   grass-addons/raster/r.pack/r.unpack
Log:
rename new element versions of r.pack2 to r.pack name

Copied: grass-addons/raster/r.pack/r.pack (from rev 34847, grass-addons/raster/r.pack/r.pack2)
===================================================================
--- grass-addons/raster/r.pack/r.pack	                        (rev 0)
+++ grass-addons/raster/r.pack/r.pack	2008-12-14 04:20:20 UTC (rev 34860)
@@ -0,0 +1,133 @@
+#!/bin/sh
+#  r.pack   --  pack up a raster map:
+#     collect raster map elements => gzip
+#
+#   (c) 2004-2008 GRASS Development Team
+#   AUTHOR: Hamish Bowman, Otago University, New Zealand
+#
+#   This program is free software under the GNU General Public
+#   License (>=v2). Read the file COPYING that comes with GRASS
+#   for details.
+#
+
+#%Module
+#%  description: Packs up a raster map and support files for copying
+#%End
+#%option
+#% key: input
+#% type: string
+#% gisprompt: old,cell,raster
+#% description: Name of an existing raster map
+#% required : yes
+#%end
+#%option
+#% key: output
+#% type: string
+#% gisprompt: new_file,file,output
+#% description: Name for output file (default is input-map.pack)
+#% required : no
+#%end
+
+
+if [ -z "$GISBASE" ] ; then
+   echo "You must be in GRASS GIS to run this program." >&2
+   exit 1
+fi
+
+if [ "$1" != "@ARGS_PARSED@" ] ; then
+  exec g.parser "$0" "$@"
+fi
+
+# check for tar  (is there a better way?)
+if [ -z "`which tar`" ] ; then
+   echo "ERROR: tar must be installed to use this program."
+   exit 1
+fi
+# check for gzip
+if [ -z "`which gzip`" ] ; then
+   echo "ERROR: gzip must be installed to use this program."
+   exit 1
+fi
+
+if [ -n "$GIS_OPT_OUTPUT" ] ; then
+   outfile="$GIS_OPT_OUTPUT"
+else
+   outfile="$GIS_OPT_INPUT.pack"
+fi
+
+#be overly helpful
+outfile="`basename "$outfile" .pack`.pack"
+
+
+eval `g.findfile elem=cell file="$GIS_OPT_INPUT"`
+if [ -z "$name" ] ; then
+   g.message -e "Map not found"
+   exit 1
+fi
+
+
+# create temporary directory to hold bits
+TMP="`g.tempfile pid=$$`"
+if [ $? -ne 0 ] || [ -z "$TMP" ] ; then
+   g.message -e "Unable to create temporary files"
+fi
+rm -f "$TMP"
+mkdir "$TMP"
+TMP_DIR="$TMP/$name"
+mkdir "$TMP_DIR"
+
+if [ ! -d "$TMP_DIR" ] ; then
+   g.message -e "Unable to create temporary directory"
+   exit 1
+fi
+
+
+BASEDIR=`echo "$file" | sed -e 's+/cell/.*$++'`
+OLDDIR=`pwd`
+
+
+for ELEMENT in cats cell cellhd colr fcell grid3 hist ; do
+    if [ -e "$BASEDIR/$ELEMENT/$GIS_OPT_INPUT" ] ; then
+	cp "$BASEDIR/$ELEMENT/$name" "$TMP_DIR/$ELEMENT"
+    fi
+done
+
+if [ -d "$BASEDIR/cell_misc/$GIS_OPT_INPUT/" ] ; then
+    mkdir "$TMP_DIR/cell_misc/"
+    cp "$BASEDIR/cell_misc/$name/"* "$TMP_DIR/cell_misc/"
+fi
+
+
+if [ -z "`ls $TMP_DIR`" ] ; then
+   g.message -e "No map components found"
+   exit 1
+fi
+
+# copy projection info
+#   (would prefer to use g.proj*, but this way is 5.3 and 5.7 compat)
+eval `g.gisenv`
+
+for SUPPORT in INFO UNITS ; do
+   if [ -e "$GISDBASE/$LOCATION_NAME/PERMANENT/PROJ_$SUPPORT" ] ; then
+       cp "$GISDBASE/$LOCATION_NAME/PERMANENT/PROJ_$SUPPORT" "$TMP_DIR"
+   fi
+done
+
+
+# pack it all up
+cd "$TMP"
+tar czf "$outfile" *
+
+# clean up
+mv "$outfile" "$OLDDIR/"
+if [ $? -ne 0 ] ; then
+   g.message -e "Saving file to <$OLDDIR/$outfile>"
+   rm -rf "$TMP"
+   exit 1
+fi
+
+cd "$OLD_DIR"
+rm -rf "$TMP"
+
+g.message -v "Done. Map saved to <$OLDDIR/$outfile>"
+exit 0

Copied: grass-addons/raster/r.pack/r.unpack (from rev 34857, grass-addons/raster/r.pack/r.unpack2)
===================================================================
--- grass-addons/raster/r.pack/r.unpack	                        (rev 0)
+++ grass-addons/raster/r.pack/r.unpack	2008-12-14 04:20:20 UTC (rev 34860)
@@ -0,0 +1,162 @@
+#!/bin/sh
+#  r.unpack   --  unpack up a raster map packed with r.pack:
+#     tar+gzip'd map elements => GRASS 6 mapset structure
+#
+#   (c) 2004-2008 GRASS Development Team
+#   AUTHOR: Hamish Bowman, Otago University, New Zealand
+#
+#   This program is free software under the GNU General Public
+#   License (>=v2). Read the file COPYING that comes with GRASS
+#   for details.
+#
+
+#%Module
+#%  description: UnPacks a raster map packed with r.pack
+#%End
+#%option
+#% key: input
+#% type: string
+#% gisprompt: old_file,file,input
+#% description: Name of an existing pack file
+#% required : yes
+#%end
+#%option
+#% key: output
+#% type: string
+#% gisprompt: new,cell,raster
+#% description: Output raster map (default: taken from input file internals)
+#% required : no
+#%end
+#%flag
+#%  key: o
+#%  description: Override projection check (use current location's projection)
+#%end
+
+
+if [ -z "$GISBASE" ] ; then
+   echo "You must be in GRASS GIS to run this program." >&2
+   exit 1
+fi   
+if [ "$1" != "@ARGS_PARSED@" ] ; then
+   exec g.parser "$0" "$@"
+fi
+
+# check for tar,gzip
+for PRGM in tar gzip ; do
+   if [ -z "`which $PRGM`" ] ; then
+      g.message -e "$PRGM must be installed to use this program."
+      exit 1
+   fi
+done
+
+
+if [ -z "$GRASS_OVERWRITE" ] ; then
+   GRASS_OVERWRITE=0
+fi
+
+
+if [ ! -e "$GIS_OPT_INPUT" ] ; then
+   g.message -e "File not found <$GIS_OPT_INPUT>"
+   exit 1
+fi
+
+eval `g.gisenv`
+MSET_DIR="$GISDBASE/$LOCATION_NAME/$MAPSET"
+
+# create temporary directory to hold bits
+TMP_DIR="`g.tempfile pid=$$`"
+if [ $? -ne 0 ] || [ -z "$TMP_DIR" ] ; then
+   g.message -e "Unable to create temporary files"
+   exit 1
+fi
+rm -f "$TMP_DIR"
+mkdir "$TMP_DIR"
+if [ ! -d "$TMP_DIR" ] ; then
+   g.message -e "Unable to create temporary directory"
+   exit 1
+fi
+
+
+cleanup()
+{
+   g.message -v "Cleaning up ..."
+   cd "$MSET_DIR"
+   rm -rf "$TMP_DIR"
+}
+#### trap ctrl-c so that we can clean up tmp
+trap 'cleanup' 2 3 15
+
+
+cp "$GIS_OPT_INPUT" "$TMP_DIR"/
+cd "$TMP_DIR"/
+
+# remove .pack and path from $GIS_OPT_INPUT
+#MAP_NAME="`basename "$GIS_OPT_INPUT" | sed -e 's/\.pack$//'`"
+
+INPUT_BASE=`basename $GIS_OPT_INPUT`
+DATA_NAME=`tar tzf "$INPUT_BASE" | head -n 1 | cut -f1 -d'/'`
+if [ -z "$DATA_NAME" ] ; then
+   g.message -e "Pack file unreadable"
+   cleanup
+   exit 1
+fi
+
+if [ -z "$GIS_OPT_OUTPUT" ] ; then
+   MAP_NAME="$DATA_NAME"
+else
+   MAP_NAME="$GIS_OPT_OUTPUT"
+fi
+
+eval `g.findfile element=cell file="$MAP_NAME" mapset=.`
+if [ ! -z "$file" ] && [ "$GRASS_OVERWRITE" -ne 1 ] ; then
+   g.message -e "Raster map <$MAP_NAME> already exists"
+   cleanup
+   exit 1
+fi
+
+
+# extract data
+tar xzf "$INPUT_BASE"
+if [ $? -ne 0 ] ; then
+   g.message -e "Pack file unreadable"
+   cleanup
+   exit 1
+fi
+
+
+cd "$DATA_NAME"/
+
+# check projection compatibility in a rather crappy way
+if [ ! -z `diff PROJ_INFO "$MSET_DIR"/../PERMANENT/PROJ_INFO` ] ; then
+    if [ $GIS_FLAG_O -eq 1 ] ; then
+        g.message -w "Projection information does not match. Proceeding.."
+    else
+        g.message -e "Projection information does not match. Aborting."
+        cleanup
+        exit 1
+    fi
+fi
+
+
+# install in $MAPSET
+for ELEMENT in cats cell cellhd colr fcell grid3 hist ; do
+    if [ -e "$ELEMENT" ] ; then
+	if [ ! -d "$MSET_DIR/$ELEMENT/" ] ; then
+	   mkdir "$MSET_DIR/$ELEMENT/"
+	fi
+	cp "$ELEMENT" "$MSET_DIR/$ELEMENT/$MAP_NAME"
+    fi
+done
+
+if [ -d "cell_misc" ] ; then
+    if [ ! -d "$MSET_DIR/cell_misc" ] ; then
+	mkdir "$MSET_DIR/cell_misc"
+    fi
+    cp -r "cell_misc"/ "$MSET_DIR/cell_misc/$MAP_NAME"
+fi
+
+
+cleanup
+
+g.message -v "Done. Map saved to <$MAP_NAME>"
+exit 0



More information about the grass-commit mailing list