[GRASS-SVN] r37050 - grass/trunk/scripts/r.in.wms

svn_grass at osgeo.org svn_grass at osgeo.org
Fri May 8 09:43:34 EDT 2009


Author: martinl
Date: 2009-05-08 09:43:34 -0400 (Fri, 08 May 2009)
New Revision: 37050

Removed:
   grass/trunk/scripts/r.in.wms/r.in.gdalwarp
Log:
fix r37049 bash version of r.in.gdalwarp removed


Deleted: grass/trunk/scripts/r.in.wms/r.in.gdalwarp
===================================================================
--- grass/trunk/scripts/r.in.wms/r.in.gdalwarp	2009-05-08 13:41:22 UTC (rev 37049)
+++ grass/trunk/scripts/r.in.wms/r.in.gdalwarp	2009-05-08 13:43:34 UTC (rev 37050)
@@ -1,437 +0,0 @@
-#!/bin/sh
-
-############################################################################
-#
-# MODULE:       r.in.gdalwarp for GRASS 6
-# AUTHOR(S):    Cedric Shock
-# PURPOSE:      To warp and import data
-# COPYRIGHT:    (C) 2006 by Cedric Shock
-#
-#               This program is free software under the GNU General Public
-#               License (>=v2). Read the file COPYING that comes with GRASS
-#               for details.
-#
-#############################################################################
-
-# Requires:
-#   gdalwarp
-
-#%Module
-#%  description: Warps and imports GDAL supported raster file complete with correct NULL values
-#%  keywords: raster, rotate, reproject
-#%End
-#%flag
-#% key: p
-#% description: Don't reproject the data, just patch it.
-#%end
-#%flag
-#% key: e
-#% description: Extend location extents based on new dataset
-#%end
-#%flag
-#% key: c
-#% description: Make color composite image if possible
-#%end
-#%flag
-#% key: k
-#% description: Keep band numbers instead of using band color names
-#%end
-#%option
-#% key: input
-#% type: string
-#% description: Raster file or files to be imported. If multiple files are specified they will be patched together.
-#% multiple: yes
-#% required : yes
-#%end
-#%option
-#% key: output
-#% type: string
-#% description: Name for resultant raster map. Each band will be name output.bandname
-#% required : yes
-#%end
-#%option
-#% key: s_srs
-#% type: string
-#% description: Source projection in gdalwarp format
-#% required : yes
-#%end
-#%option
-#% key: method
-#% type: string
-#% description: Reprojection method to use
-#% options:nearest,bilinear,cubic,cubicspline
-#% answer:nearest
-#% required: yes
-#%end
-#%option
-#% key: warpoptions
-#% type: string
-#% description: Additional options for gdalwarp
-#% required : no
-#%end
-
-
-if  [ -z "$GISBASE" ] ; then
-    echo "You must be in GRASS GIS to run this program." 1>&2
-    exit 1
-fi
-
-if [ "$1" != "@ARGS_PARSED@" ] ; then
-    exec g.parser "$0" "$@"
-fi
-
-g.message -d "[r.in.gdalwarp]"
-
-#### setup temporary file
-TMP="`g.tempfile pid=$$`"
-if [ $? -ne 0 ] || [ -z "$TMP" ] ; then
-    g.message -e "Unable to create temporary files"
-    exit 1
-fi
-
-#######################################################################
-# name:     exitprocedure
-# purpose:  removes all temporary files
-#
-exitprocedure()
-{
-	g.message -e 'User break!'
-	rm -f "${TMP}"*
-	exit 1
-}
-trap "exitprocedure" 2 3 15
-
-# check if we have gdalwarp
-if [ $GIS_FLAG_P -ne 1 ] ; then
-    if [ ! -x "`which gdalwarp`" ] ; then
-        g.message -e "gdalwarp is required, please install it first" 
-        exit 1
-    fi
-fi
-
-defaultIFS="$IFS"
-
-# warpimport file map
-# Warps and imports a single file as a named map
-# This is NOT a function
-# It is a subroutine that makes extensive use of globals
-warpimport () {
-	FILE="$1"
-	MAP=$2
-	WARPFILE="${TMP}warped.geotiff"
-	TMPMAPNAME=${2}_tmp
-
-	# Warp it and convert it to geotiff with alpha band to be sure we get nulls:
-	g.message -d message="gdalwarp -s_srs \"$GIS_OPT_S_SRS\" -t_srs \"`g.proj -wf`\" \"$FILE\" \"$WARPFILE\" $GIS_OPT_WARPOPTIONS $METHOD"
-
-	gdalwarp -s_srs "$GIS_OPT_S_SRS" -t_srs "`g.proj -wf`" \
-	   "$FILE" "$WARPFILE" $GIS_OPT_WARPOPTIONS $METHOD
-
-	if [ $? -ne 0 ] ; then
-	    g.message -e message="`basename $0`: gdalwarp failure."
-	    rm -f "${TMP}"*
-	    exit 1
-	fi
-
-	#Import it into a temporary map:
-	r.in.gdal $FLAGS input="$WARPFILE" output="$TMPMAPNAME" --quiet
-	if [ $? -ne 0 ] ; then
-	    g.message -e message="`basename $0`: r.in.gdal failure."
-	    rm -f "${TMP}"*
-	    exit 1
-	fi
-
-	# Remove temporary file
-	rm -f "$WARPFILE"
-
-	#Get a list of channels:
-	PATTERN="$TMPMAPNAME*"
-	g.message -d message="Pattern: [$PATTERN]"
-	CHANNEL_LIST=`g.mlist type=rast pattern=$PATTERN`
-	g.message -d message="Channel list: [$CHANNEL_LIST]"
-	# Get a list of suffixes:
-	CHANNEL_SUFFIXES=`echo "$CHANNEL_LIST" | sed "s/^${TMPMAPNAME}/sfx=/"`
-	# test for single band data
-	if [ "$CHANNEL_SUFFIXES" = 'sfx=' ] ; then
-	   CHANNEL_SUFFIXES=""
-	fi
-	g.message -d message="Channel suffixes: [$CHANNEL_SUFFIXES]"
-
-	# Add to the list of all suffixes:
-	SUFFIXES=`echo "$SUFFIXES
-$CHANNEL_SUFFIXES" | sort -u`
-
-	IFS=$defaultIFS
-	for SUFFIX in $CHANNEL_SUFFIXES ; do
-		eval "$SUFFIX"
-		LAST_SUFFIX=$sfx
-	done
-
-	# Find the alpha layer
-	if [ $GIS_FLAG_K -eq 1 ] ; then
-		ALPHALAYER=${TMPMAPNAME}${LAST_SUFFIX}
-	else
-		ALPHALAYER=${TMPMAPNAME}.alpha
-	fi
-	# test to see if the alpha map exists
-	g.findfile element=cell file="$ALPHALAYER" > /dev/null
-	if [ $? -ne 0 ] ; then
-	    ALPHALAYER=""
-	fi
-
-	# Calculate the new maps:
-	for SUFFIX in $CHANNEL_SUFFIXES ; do
-		eval "$SUFFIX"
-
-		# if no suffix, processing is simple (e.g. elevation has only 1 band)
-		# --never reached?
-		if [ -z "$sfx" ] ; then
-		    # run r.mapcalc to crop to region
-		    GRASS_VERBOSE=1 \
-		      r.mapcalc "${MAP}${sfx} = ${TMPMAPNAME}${sfx}"
-		    continue
-		fi
-
-		g.message -d message="alpha=[$ALPHALAYER]  MAPsfx=[${MAP}${sfx}]  tmpname=[${TMPMAPNAME}${sfx}]"
-		if [ -n "$ALPHALAYER" ] ; then
-		    # Use alpha channel for nulls:
-# problem: I've seen a map where alpha was 1-255; 1 being transparent. what to do?
-#    (Geosci Australia Gold layer, format=tiff)
-		    GRASS_VERBOSE=1 \
-		      r.mapcalc "${MAP}${sfx} = if( $ALPHALAYER, ${TMPMAPNAME}${sfx}, null() )"
-		else
-		    g.copy rast="${TMPMAPNAME}${sfx}","${MAP}${sfx}" --quiet
-		fi		  
-
-		# Copy the color tables:
-		r.colors map=${MAP}${sfx} rast=${TMPMAPNAME}${sfx} --quiet
-
-		# Make patch lists:
-		sfx2=`echo $sfx | sed "s/\./_/"`
-		# This is a hack to make the patch lists empty:
-		if [ $TITER -eq 0 ] ; then
-			eval "PATCHES_$sfx2=\"\""
-		fi
-		eval "PATCHES_$sfx2=\${PATCHES_$sfx2},${MAP}${sfx}"
-	done
-
-	# if no suffix, processing is simple (e.g. elevation has only 1 band)
-	if [ -z "$sfx" ] ; then
-	    # run r.mapcalc to crop to region
-	    GRASS_VERBOSE=1 \
-	      r.mapcalc "${MAP}${sfx} = ${TMPMAPNAME}${sfx}"
-	    r.colors map=${MAP}${sfx} rast=${TMPMAPNAME}${sfx} --quiet
-	fi
-
-	# Remove the old channels:
-	CHANNEL_LIST_COMMA=`echo "$CHANNEL_LIST" | tr '\n' ',' | sed -e 's/ /,/g' -e 's/,$//'`
-	g.message -d message="CHANNEL_LIST_COMMA=[$CHANNEL_LIST_COMMA]"
-	g.remove rast="$CHANNEL_LIST_COMMA" --quiet
-
-}
-
-nowarpimport () {
-	FILE=$1
-	MAP=$2
-
-	r.in.gdal -o $FLAGS input="$FILE" output="$MAP" --quiet
-	if [ $? -ne 0 ] ; then
-	    g.message -e message="`basename $0`: r.in.gdal failure."
-	    rm -f "${TMP}"*
-	    exit 1
-	fi
-
-	#Get a list of channels:
-	PATTERN="$MAP*"
-	g.message -d message="pattern: [$PATTERN]"
-	CHANNEL_LIST=`g.mlist type=rast pattern=$PATTERN`
-	g.message -d message="channel list: [$CHANNEL_LIST]"
-
-	# Get a list of suffixes:
-	echo $CHANNEL_LIST
-	CHANNEL_SUFFIXES=`echo "$CHANNEL_LIST" | sed "s/^${MAP}/sfx=/"`
-	echo $CHANNEL_SUFFIXES
-	# test for single band data
-	if [ "$CHANNEL_SUFFIXES" = 'sfx=' ] ; then
-	   CHANNEL_SUFFIXES=""
-	fi
-	g.message -d message="channel suffixes: [$CHANNEL_SUFFIXES]"
-
-	# Add to the list of all suffixes:
-	echo $SUFFIXES
-	SUFFIXES=`echo "$SUFFIXES
-$CHANNEL_SUFFIXES" | sort -u`
-
-	IFS="$defaultIFS"
-	echo $CHANNEL_SUFFIXES
-	for SUFFIX in $CHANNEL_SUFFIXES ; do
-	    echo 'x', $sfx
-		eval "$SUFFIX"
-
-		# skip if only one band ($sfx is empty)
-		if [ -z "$sfx" ] ; then
-		    g.message -d "Single band data"
-		    continue
-		fi
-
-		# Make patch lists:
-		sfx2=`echo "$sfx" | sed "s/\./_/"`
-		# This is a hack to make the patch lists empty:
-		if [ $TITER -eq 0 ] ; then
-			eval "PATCHES_$sfx2=\"\""
-		fi
-		eval "PATCHES_$sfx2=\${PATCHES_$sfx2},${MAP}${sfx}"
-	done
-}
-
-
-# Compute flags for r.in.gdal
-FLAGS=""
-if [ $GIS_FLAG_E -eq 1 ] ; then
-	FLAGS="${FLAGS} -e"
-fi
-if [ $GIS_FLAG_K -eq 1 ] ; then
-	FLAGS="${FLAGS} -k"
-fi
-
-# And options for gdalwarp:
-
-case "${GIS_OPT_METHOD}" in
-    "nearest") METHOD="-rn"
-               ;;
-    "bilinear") METHOD="-rb"
-               ;;
-    "cubic") METHOD="-rc"
-               ;;
-    "cubicspline") METHOD="-rcs"
-               ;;
-esac
-
-IFS=,
-SUFFIXES=""
-# We need a way to make sure patches are intialized correctly
-TITER=0
-# map list is for single band patching
-MAPLIST=""
-
-# Import all the tiles:
-for input in $GIS_OPT_INPUT ; do
-	IFS="$defaultIFS"
-	TMPTILENAME="${GIS_OPT_OUTPUT}_tile_$TITER"
-	if [ -f "$input" ] ; then
-		if [ $GIS_FLAG_P -eq 1 ] ; then
-			nowarpimport "$input" "$TMPTILENAME"
-		else
-			warpimport "$input" "$TMPTILENAME"
-		fi
-
-		if [ "$TITER" -eq 0 ] ; then
-		    MAPLIST="$TMPTILENAME"
-		else
-		    MAPLIST="$MAPLIST,$TMPTILENAME"
-		fi
-
-		TITER="`expr $TITER + 1`"
-	else
-		g.message -w message="Missing input $input"
-	fi
-done
-NUM_TILES="$TITER"
-
-# If there's more than one tile patch them together, otherwise just rename that tile.
-if [ $NUM_TILES -eq 1 ] ; then
-	if [ -n "$CHANNEL_SUFFIXES" ] ; then
-	    for SUFFIX in $CHANNEL_SUFFIXES ; do
-		eval "$SUFFIX"
-		#Rename tile 0 to be the output
-		GRASS_VERBOSE=1 \
-		  g.rename rast="${GIS_OPT_OUTPUT}_tile_0${sfx}","${GIS_OPT_OUTPUT}${sfx}"
-	    done
-	else  # single-band, single-tile
-	    echo 'x', $sfx
-	    #Rename tile 0 to be the output
-	    GRASS_VERBOSE=1 \
-	      g.rename rast="${GIS_OPT_OUTPUT}_tile_0${sfx}","${GIS_OPT_OUTPUT}${sfx}" --quiet
-	fi
-else
-	# Patch together each channel:
-	g.message -d message="SUFFIXES: [$SUFFIXES]"
-
-	if [ -n "$SUFFIXES" ] ; then
-	    # multi-band data
-	    IFS="$defaultIFS"
-	    for SUFFIX in $SUFFIXES ; do
-		eval "$SUFFIX"
-		sfx2=`echo "$sfx" | sed "s/\./_/"`
-		eval "PATCHES=\${PATCHES_$sfx2}"
-		# Patch these together (using nulls only):
-		g.message "Patching [$sfx] channel"
-		r.patch input="$PATCHES" output="${GIS_OPT_OUTPUT}${sfx}"
-		# Remove the temporary patches we made
-		g.remove rast="$PATCHES" --quiet
-	    done
-	else
-	    # single-band data
-	    g.message "Patching tiles  (this may take some time)"
-	    g.message -d message="patch list = [$MAPLIST]"
-
-	    # HACK: for 8bit PNG, GIF all the different tiles can have
-	    #   different color tables so patches output end up all freaky.
-	    #	r.mapcalc r#,g#,b# manual patching + r.composite?
-	    #	or d.out.file + r.in.png + r.region?
-	    # *** there is a GDAL utility to do this: gdal_merge.py
-	    #       http://www.gdal.org/gdal_merge.html
-
-	    #r.patch input="$MAPLIST" output="${GIS_OPT_OUTPUT}"
-	    IFS=" "
-	    for COLOR in r g b ; do
-		for MAP in `echo "$MAPLIST" | tr ',' ' '` ; do
-		  GRASS_VERBOSE=0 \
-		     r.mapcalc "${MAP}_${COLOR} = ${COLOR}#$MAP"
-	          r.colors  map="${MAP}_${COLOR}" color="grey255" --quiet
-	          r.null "${MAP}_${COLOR}" setnull=255  --quiet # so patching works
-	       done
-
-	       GRASS_VERBOSE=1\
-		  r.patch input=`echo "$MAPLIST" | sed -e "s/,/_${COLOR},/g" -e "s/$/_${COLOR}/"` \
-		     output="${MAP}_${COLOR}_all"
-	    done
-	    r.composite red="${MAP}_r_all" green="${MAP}_g_all" blue="${MAP}_b_all" \
-	       output="${GIS_OPT_OUTPUT}"
-
-	    if [ $? -eq 0 ] ; then
-	        IFS=','
-		for MAP in $MAPLIST ; do
-		   g.mremove -f rast="${MAP}*" --quiet
-		done
-	    fi
-	fi
-fi
-
-# Set up color counter
-COLORS=0
-
-IFS="$defaultIFS"
-for SUFFIX in $SUFFIXES ; do
-	eval "$SUFFIX"
-	# Keep track of colors
-	if [ -z "$sfx" ] ; then
-		# There's already a no suffix, can't make colors
-		COLORS=4 # Can only go up from here ;)
-	fi
-	if [ "$sfx" = ".red" ] || [ "$sfx" = ".green" ] || [ "$sfx" = ".blue" ]; then
-	    COLORS="`expr $COLORS + 1`"
-	fi
-done
-
-echo $COLORS
-# Make a composite image if asked for and colors exist
-if [ $COLORS -eq 3 ] && [ $GIS_FLAG_C -eq 1 ] ; then
-	g.message "Building Color Image" 
-	r.composite red="${GIS_OPT_OUTPUT}.red" green="${GIS_OPT_OUTPUT}.green" \
-	   blue="${GIS_OPT_OUTPUT}.blue" output="${GIS_OPT_OUTPUT}"
-	g.message message="Written: ${GIS_OPT_OUTPUT}"
-fi
-
-# Clean up:
-rm -f "${TMP}"*



More information about the grass-commit mailing list