[GRASS-SVN] r55098 - grass-addons/grass6/vector/v.out.kml

svn_grass at osgeo.org svn_grass at osgeo.org
Sun Feb 17 16:41:24 PST 2013


Author: hamish
Date: 2013-02-17 16:41:24 -0800 (Sun, 17 Feb 2013)
New Revision: 55098

Added:
   grass-addons/grass6/vector/v.out.kml/v.out.kml
Removed:
   grass-addons/grass6/vector/v.out.kml/v.out.kml.sh
Modified:
   grass-addons/grass6/vector/v.out.kml/Makefile
Log:
rename script to leave off .sh, svn props


Property changes on: grass-addons/grass6/vector/v.out.kml/Makefile
___________________________________________________________________
Added: svn:mime-type
   + text/x-makefile
Added: svn:eol-style
   + native

Copied: grass-addons/grass6/vector/v.out.kml/v.out.kml (from rev 55097, grass-addons/grass6/vector/v.out.kml/v.out.kml.sh)
===================================================================
--- grass-addons/grass6/vector/v.out.kml/v.out.kml	                        (rev 0)
+++ grass-addons/grass6/vector/v.out.kml/v.out.kml	2013-02-18 00:41:24 UTC (rev 55098)
@@ -0,0 +1,782 @@
+#!/bin/sh
+
+############################################################################
+#
+# MODULE:       v.out.kml
+# AUTHOR(S):    Peter Loewe <peter.loewe AT grass-verein.de>
+# PURPOSE:      Export GRASS point/line/area-vectors into a KML file in 
+#               geographic coordinates (lat lon).
+# COPYRIGHT:    (c) 2007 Peter Loewe and the GRASS DEVELOPMENT TEAM
+#
+#               This program is free software under the GNU General Public
+#               License (>=v2). Read the file COPYING that comes with GRASS
+#               for details.
+#
+# updates:
+#
+# 7 July 2007  (PL): added support for database-columns
+#10 July 2007  (PL): typos fixed
+#28 July 2007  (PL): improvement of cleanup operations: Thanks to Jean-Noel Candau
+#############################################################################
+
+#%Module
+#%  description: Creates a KML-file from GRASS point/line/polygon vectors   
+#%End
+#%flag
+#%  key: l
+#%  description: Force line-vector export: Areas are exported as lines/polylines (default).
+#%end
+#%flag
+#%  key: y
+#%  description: Force polygon export: Areas are exported as polygons with a fillcolor and fill-transparency.
+#%end
+#%flag
+#%  key: p
+#%  description: Point-vector (sites) export: Point data are exported.
+#%end
+#%flag
+#%  key: r
+#%  description: Random colors: All line and area colors (if needed) are set to random values.
+#%end
+#%option
+#% key: map
+#% type: string
+#% gisprompt: old,vector,vector
+#% description: vector input map
+#% required : yes
+#%end
+#%option
+#% key: output
+#% type: string
+#% gisprompt: new_file,file,file
+#% description: name/path of kml output
+#% required : no
+#%end
+#%option
+#% key: ogrpath
+#% type: string
+#% gisprompt: old_file,file,file
+#% description: optional path to ogr2ogr
+#% required : no
+#%end
+#%option
+#% key: color
+#% type: string
+#% gisprompt: color,grass,color
+#% description: hexcode triplet for line color (blue:green:red 00:00:00-255:255:255) 
+#% answer : 00:200:00
+#% required : no
+#%end
+#%option
+#% key: transparency
+#% type: string
+#% description: integer for vector line transparency (0=invisible 255=opaque)
+#% answer : 255
+#% required : no
+#%end
+#%option
+#% key: fcolor
+#% type: string
+#% gisprompt: color,grass,color
+#% description: hexcode triplet for polygon fill color (blue:green:red 00:00:00-255:255:255)
+#% answer : 00:100:00
+#% required : no
+#%end
+#%option
+#% key: ftransparency
+#% type: string
+#% description: integer for polygon transparency (00=invisible 255=opaque)
+#% answer : 255
+#% required : no
+#%end
+#%option
+#% key: size
+#% type: string
+#% description: width of the vector lines (default is 1)
+#% options: 0.5,1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6,6.5,7,7.5,8,8.5,9,9.5,10
+#% answer : 1
+#% required : no
+#%end
+#%option
+#% key: iconcode
+#% type: string
+#% description: Select an icons number within its palette for point-vectors 
+#% options: 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45
+#% answer : 1
+#% required : no
+#%end
+#%option
+#% key: iconpalette
+#% type: string
+#% description: Select a KML palette of icons for point-vectors 
+#% options: 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
+#% answer : 1
+#% required :no
+#%end
+#%option
+#% key: iconcolor
+#% type: string
+#% gisprompt: color,grass,color
+#% description: hexcode color triplet for point-vectors (blue:green:red 00:00:00-255:255:255) 
+#% answer : 00:200:00
+#% required : no
+#%end
+#%option
+#% key: icontransparency
+#% type: string
+#% description: integer for point-vector transparency (0=invisible 255=opaque 0-255)
+#% answer : 255
+#% required : no
+#%end
+#%option
+#% key: iconurl
+#% type: string
+#% description: Provide a URL pointing to a symbol for point-vectors 
+#% required : no
+#%end
+#%option
+#% key: linecolumn
+#% type: string
+#% description: column name string for line color ([xxx]:xxx:xxx:xxx). Transparency should be provided as first value, unless 3-Flag is set.
+#% required : no
+#%end
+#%option
+#% key: fillcolumn
+#% type: string
+#% description: column name string for area fill color ([xxx]:xxx:xxx:xxx). Transparency should be provided as first value, unless 3-Flag is set.
+#% required : no
+#%end
+
+#%option
+#% key: linetranscolumn
+#% type: string
+#% description: column name string for line transparency (xxx). This option is overridden by the 'transparency'-option.
+#% required : no
+#%end
+#%option
+#% key: filltranscolumn
+#% type: string
+#% description: column name string for fill transparency (xxx). This option is overridden by the 'transparency'-option.
+#% required : no
+#%end
+
+#
+### Let's seperate the Flag and Option-Names from the variables used in the script.
+### This is good practice if we have to change terms in the GUI/frontend.
+#
+
+FLAG_FORCE_LINE_EXPORT=${GIS_FLAG_L}
+FLAG_FORCE_POLYGON_EXPORT=${GIS_FLAG_Y}
+FLAG_POINT_EXPORT=${GIS_FLAG_P}
+FLAG_RANDOM_COLORS=${GIS_FLAG_R}
+
+
+OPT_MAP=${GIS_OPT_MAP}
+OPT_OUTPUT=${GIS_OPT_OUTPUT}
+OPT_OGRPATH=${GIS_OPT_OGRPATH}
+OPT_LINE_COLOR=${GIS_OPT_COLOR}
+OPT_LINE_TRANS=${GIS_OPT_TRANSPARENCY}
+OPT_FILL_COLOR=${GIS_OPT_FCOLOR}
+OPT_FILL_TRANS=${GIS_OPT_FTRANSPARENCY}
+OPT_LINE_SIZE=${GIS_OPT_SIZE}
+OPT_ICON_CODE=${GIS_OPT_ICONCODE}
+OPT_ICON_PALETTE=${GIS_OPT_ICONPALETTE}
+OPT_ICON_COLOR=${GIS_OPT_ICONCOLOR}
+OPT_ICON_TRANS=${GIS_OPT_ICONTRANSPARENCY}
+OPT_ICON_URL=${GIS_OPT_ICONURL}
+OPT_COLUMN_LINE_COLOR=${GIS_OPT_LINECOLUMN}
+OPT_COLUMN_LINE_TRANS=${GIS_OPT_LINETRANSCOLUMN}
+OPT_COLUMN_FILL_COLOR=${GIS_OPT_FILLCOLUMN}
+OPT_COLUMN_FILL_TRANS=${GIS_OPT_FILLTRANSCOLUMN}
+
+##############################################################
+TMPDIR=`g.gisenv get="GISDBASE"`
+#TMPDIR is used to create the inner temporary latlon location
+
+#################################################################################
+# name:     CLEANUP_TEMPFILES
+# purpose:  Removes all temporary files which might have been created.
+# usage: CLEANUP_TEMPFILES
+
+function CLEANUP_TEMPFILES () 
+{
+ rm $TMPDIR/.grassrc6_$TEMP_LOCATION
+ rm $THE_VECTOR.shp
+ rm  $THE_VECTOR.shx
+ rm  $THE_VECTOR.prj
+ rm  $THE_VECTOR.dbf
+ rm  $VECTOR_KML.raw
+ rm  $VECTOR_KML.cat_poly
+ rm  $VECTOR_KML.cat_point
+ rm  $VECTOR_KML.prepoint
+ rm -rf $GISDBASE/$TEMP_LOCATION/PERMANENT
+ rmdir $GISDBASE/$TEMP_LOCATION
+ rm -rf $VECTOR_KML.raw2
+}
+
+
+#######################################################################
+# name:     exitprocedure
+# purpose:  removes all temporary files
+#
+exitprocedure ()
+{
+        message 0 "User break!"
+        #rm -f ${TMP}*
+        #rm $TMPDIR/.grassrc6_$TEMP_LOCATION
+        #rm -rf $GISDBASE/$TEMP_LOCATION
+        CLEANUP_TEMPFILES
+        exit 1
+}
+trap "exitprocedure" 2 3 15
+
+BC="bc"
+BCARGS="-l"
+
+#----------------------------------------------------------------
+export GIS_LOCK=$$
+#----------------------------------------------------------------
+########################################################################
+# name: error_routine
+# purpose: If an error occurs, exit gracefully.
+#
+error_routine () {
+echo "ERROR: $1"
+exit 1
+}
+#################################
+# is GRASS running ? if not: abort
+#################################
+if [ -z "$GISBASE" ] ; then
+  error_routine "You must be in GRASS to run this program."
+fi
+
+#################################
+# if no paramters are provided by the user fire up the gui
+if [ "$1" != "@ARGS_PARSED@" ] ; then
+  exec $GISBASE/bin/g.parser "$0" "$@"
+fi
+
+################################################################################
+# Database
+
+
+ # We need a string of all the column names in the layers database
+
+ DB_RESULT=`v.db.connect -c map=$OPT_MAP`
+ DB_COLUMN_NAMES=`echo $DB_RESULT |sed 's/^[A-Z]*|//g' | sed 's/[A-Z]*|/ /g'`
+
+#################################################################################
+# name: OGR_PATH_USER_OVERRIDE
+# purpose: if the user provides a path to a specific version of OGR it will be used. 
+# usage: OGR_PATH_USER_OVERRIDE
+
+function OGR_PATH_USER_OVERRIDE ()
+{
+
+ if [ "${OPT_OGRPATH}" != "" ] ; then
+   #ensure that the path-string properly ends with the file name
+   OGR_ENDING=`echo ${OPT_OGRPATH} | grep "/ogr2ogr$" ` 
+
+   if [ "$OGR_ENDING" == "" ] ; then
+      OPT_OGRPATH="${OPT_OGRPATH}/ogr2ogr"
+   fi
+
+   if [ -f ${OPT_OGRPATH} ]; then
+    #store this path as a GRASS variable for further use
+    THE_OGR_PATH=$OPT_OGRPATH
+    `g.gisenv set="GML_OGR_PATH"=${OPT_OGRPATH}`    
+    else
+     error_routine "Invalid path to OGR: ${THE_OGR_PATH}" 
+   fi 
+ fi
+} 
+
+
+#################################################################################
+# name:     ENSURE_COLUMN
+# purpose:  Verify that string $1 equals the name of column of the maps database.
+# usage: ENSURE_COLUMN string-for-column-name
+
+function ENSURE_COLUMN () {
+#1: $COLUMN NAME to be verified
+
+   echo $DB_COLUMN_NAMES |grep -q "$1"
+  
+   if [ $? != 0 ] ; then
+     error_routine "$1 is not a database column."
+   fi
+}
+
+#################################################################################
+# name:     SET__HEX_COLORS
+# purpose:  create new string variables for R,G,B as 2byte hex numbers from a R:G:B string (can be hex, decimal or other). 
+# usage: SET_HEX_COLORS value-string-variable R-variable-name G-variable-name B-variable-name R-hex-default G-hex-default B-hex-default
+
+function SET_HEX_COLORS
+{
+if [ "$1" != "(null)" ] ; then
+  RED_D=`echo ${1} | cut -d: -f 1 `
+  eval "$2"=`printf "%02x" $RED_D`  
+
+  GREEN_D=`echo ${1} | cut -d: -f 2 `
+  eval "$3"=`printf "%02x" $GREEN_D`
+
+  BLUE_D=`echo ${1} | cut -d: -f 3 `
+  eval "$4"=`printf "%02x" $BLUE_D`
+else
+  eval "$3=$5"
+  eval "$3=$6"
+  eval "$4=$7"
+fi 
+if [ "${GIS_FLAG_r}" = 1 ] ; then
+     # the flag for random colors is set
+     
+     RCOLOR=`expr ${RANDOM} % 255`
+     eval "$2"=`printf "%02x" $RCOLOR`
+     RCOLOR=`expr ${RANDOM} % 255`
+     eval "$4"=`printf "%02x" $RCOLOR`
+     RCOLOR=`expr ${RANDOM} % 255`   
+     eval "$3"=`printf "%02x" $RCOLOR`
+fi
+}
+
+#################################################################################
+# name:     SET_HEX_VALUE
+# purpose:  create a new string variable with the value $2 as a 2byte hex number, or a default value $3.
+# usage: SET_HEX_VALUE grass_parameter-variable new-variable-name default-value
+
+
+function SET_HEX_VALUE () {
+#1: $OPT_LINE_SIZE 2:GMLSIZE 3:1
+
+if [ "$1" != "(null)" ] ; then
+   eval "$2"=`printf "%02x" $1`
+ else
+   eval "$2"="$3"
+fi
+}
+#
+################################################################################
+
+
+###
+### Verify correct column names
+### if they are provided, they are needed further below
+
+ if [ "${OPT_COLUMN_LINE_TRANS}" != "" ] ; then
+      ENSURE_COLUMN "${OPT_COLUMN_LINE_TRANS}" 
+ fi
+ if [ "${OPT_COLUMN_FILL_TRANS}" != "" ] ; then
+      ENSURE_COLUMN "${OPT_COLUMN_FILL_TRANS}" 
+ fi
+ if [ "${OPT_COLUMN_LINE_TRANS}" != "" ] ; then
+       ENSURE_COLUMN "${OPT_COLUMN_LINE_TRANS}" 
+ fi
+ if [ "${OPT_COLUMN_FILL_TRANS}" != "" ] ; then
+       ENSURE_COLUMN "${OPT_COLUMN_FILL_TRANS}" 
+ fi
+
+
+
+################################################################################
+# Has a value for line color been provided by the user ? 
+# Otherwise use grass-green as the default.
+
+SET_HEX_COLORS ${OPT_LINE_COLOR} "GMLRED" "GMLGREEN" "GMLBLUE" "0" "ff" "0" 
+
+
+#
+### Has a value for a polygon fill color been provided by the user ?
+#
+SET_HEX_COLORS "${OPT_FILL_COLOR}" "GMLFILLRED" "GMLFILLGREEN" "GMLFILLBLUE" "0" "ff" "0"
+
+#
+### Has a value for a icon color been provided by the user ?
+#
+SET_HEX_COLORS "${OPT_ICON_COLOR}" "GMLICONRED" "GMLICONGREEN" "GMLICONBLUE" "0" "ff" "0"
+
+#
+### Has a transparency value  been provided by the user ?
+# Otherwise use full opacity as the default.
+
+SET_HEX_VALUE "${OPT_LINE_TRANS}" "GMLTRANSPARENCY"  "ff"
+
+
+#
+### Has a fill-transparency value  been provided by the user ?
+### Otherwise use full opacity as the default.
+#
+
+SET_HEX_VALUE "${OPT_FILL_TRANS}" "GMLFILLTRANSPARENCY"  "ff"
+
+#
+## Has a icon-transparency value  been provided by the user ?
+## Otherwise use full opacity as the default.
+#
+SET_HEX_VALUE "${OPT_ICON_TRANS}" "GMLICONTRANSPARENCY"  "ff"
+
+#
+## Has a line-size value  been provided by the user ?
+## Otherwise use 1 as the default.
+#
+SET_HEX_VALUE "$OPT_LINE_SIZE" "GMLSIZE"  "1"
+
+############################################################################
+# Ensure that the output file has the proper .kml-extension
+# if no output file has been named, fall back to the name of the map.
+if [ -z "${OPT_OUTPUT}" ] ; then
+  VECTOR_KML=${OPT_MAP}.kml
+ else
+  VECTOR_KML=${OPT_OUTPUT}
+fi
+
+KML_ENDING=`echo $VECTOR_KML | grep ".kml$" ` 
+
+if [ -z "$KML_ENDING" ] ; then
+ VECTOR_KML=$VECTOR_KML.kml
+fi
+
+
+############################################################################
+# Is ogr2ogr installed and available ?
+# Search for ogr2ogr command in user's path
+
+for i in `echo $PATH | sed 's/^:/.:/
+     s/::/:.:/g
+     s/:$/:./
+     s/:/ /g'`
+     do
+            if [ -f $i/ogr2ogr ] ; then
+		OGR_AVAILABLE=1
+                THE_OGR_PATH="$i/ogr2ogr"
+		break
+	    fi
+     done
+
+# has a custom  ogr2ogr path already been provided on this machine (like in previous GRASS sessions) ? 
+# in any case, if the user explicitly provides a ogr2ogr path from the command line,
+# this one will override any defaults or previous settings
+
+ PREVIOUS_SESSION_OGR=`g.gisenv get="GML_OGR_PATH"`
+
+if [ "${PREVIOUS_SESSION_OGR}" ] ; then
+   # if a ogr setting has been stored from former sessions then use it.
+   THE_OGR_PATH=${PREVIOUS_SESSION_OGR}
+
+   OGR_PATH_USER_OVERRIDE
+   #Even if we have a path to OGR provided by the system, the user can override it.
+else
+
+ OGR_PATH_USER_OVERRIDE
+  # this might be the first session ever, so lets stick to the user-provided path 
+
+  if [ "${THE_OGR_PATH}" == "" ]; then
+   error_routine "  ogr2ogr is not found in your default search-path. Is it installed ? You might provide a path to ogr2ogr as a second argument to this program."
+  fi
+
+ ################################
+ #So we have ogr2ogr, but can it deal with KML ?
+
+  echo "$THE_OGR_PATH --formats"
+  OGR_KML=`$THE_OGR_PATH --formats |grep "KML"`
+
+  if [ -z "$OGR_KML" ]; then
+     error_routine "  $THE_OGR_PATH is lacking KML support." 
+    
+  fi
+
+fi
+
+#############################################################################################
+# Setting the Line/Poly flags
+
+# Only one of both flags can be set:
+if [ "${FLAG_FORCE_LINE_EXPORT}" = 1 ] && [ "${FLAG_FORCE_POLYGON_EXPORT}" = 1 ] ; then
+   error_routine "Conflicting flag settings: -l and -y can not be used together."   
+fi
+
+#################################
+# Get the name of the vector layer to be converted
+THE_VECTOR=${OPT_MAP}
+
+# create a name fpr the temporary location
+TEMP_LOCATION=latlon_location_$$
+
+# Create a new temporary latlon location
+g.proj -c proj4='+init=epsg:4326' location=$TEMP_LOCATION
+
+#Set variables
+GISDBASE=`g.gisenv get=GISDBASE`
+OUTER_LOCATION=`g.gisenv get=LOCATION_NAME`
+OUTER_MAPSET=`g.gisenv get=MAPSET`
+
+#Keep the path to the settings file for the original location
+export OUTER_GISRC=$GISRC
+
+########################################
+##generate GRASS_settings-file for lat lon location:
+
+echo "GISDBASE: $GISDBASE " > $TMPDIR/.grassrc6_$TEMP_LOCATION
+echo "LOCATION_NAME: $TEMP_LOCATION " >> $TMPDIR/.grassrc6_$TEMP_LOCATION
+echo "MAPSET: PERMANENT " >>  $TMPDIR/.grassrc6_$TEMP_LOCATION
+echo "GRASS_GUI: text " >>  $TMPDIR/.grassrc6_$TEMP_LOCATION
+
+########################################
+##switch over to lat lon location
+
+export GISRC=$TMPDIR/.grassrc6_$TEMP_LOCATION
+
+#use process ID (PID) as lock file number:
+export GIS_LOCK=$$
+
+# Import the vector data into the lat lon location
+v.proj input=$THE_VECTOR location=$OUTER_LOCATION mapset=$OUTER_MAPSET
+
+#
+## VECTOR FEATURE EXPORT OR POLYGON FEATURE EXPORT
+#
+
+
+if [ "${FLAG_FORCE_LINE_EXPORT}" == 1 ] ; then
+    GEOMETRY="kernel,line,boundary"   
+fi
+
+
+if [ "${FLAG_FORCE_POLYGON_EXPORT}" == 1 ] ; then
+    GEOMETRY="area"  
+fi
+
+
+if [ "${FLAG_POINT_EXPORT}" == 1 ] ; then
+ if [ "$GEOMETRY" != "" ] ; then
+   GEOMETRY="$GEOMETRY,point"
+ else
+   GEOMETRY="point"
+ fi 
+fi
+
+v.out.ogr input=$THE_VECTOR type=$GEOMETRY dsn=. olayer=$THE_VECTOR
+
+######################################################################################
+#Switch back to the original location
+
+export GISRC=$OUTER_GISRC 
+GISRC=$OUTER_GISRC 
+
+######################################################################################
+#
+### Shape to KML Conversion
+#
+
+
+echo "$OGR_PATH -f KML $VECTOR_KML.raw $THE_VECTOR.sh" 
+`$THE_OGR_PATH -f KML $VECTOR_KML.raw $THE_VECTOR.shp` || error_routine "$OGR_PATH aborted."
+
+######################################################################################
+#
+## Blend color, transparency and icons into the  KML by updating the style-tag
+#
+
+# create indicators for points and lines
+cat $VECTOR_KML.raw | grep PolyStyle > $VECTOR_KML.cat_poly
+cat $VECTOR_KML.raw | grep Point > $VECTOR_KML.cat_point
+
+
+#
+## Add colors and transparency for polygons and lines
+#
+
+if [ -s "$VECTOR_KML.cat_poly" ]; then
+  sed "s/<color>........<\/color>/<size>${GMLSIZE}<\/size><color>${GMLTRANSPARENCY}${GMLBLUE}${GMLGREEN}${GMLRED}<\/color>/g" $VECTOR_KML.raw > $VECTOR_KML.raw2 
+  sed "s/<fill>0<\/fill>/<color>${GMLFILLTRANSPARENCY}${GMLFILLBLUE}${GMLFILLGREEN}${GMLFILLRED}<\/color>/g" $VECTOR_KML.raw2 > $VECTOR_KML.prepoint
+
+ else
+  sed "s/<\/LineString>/<\/LineString><Style><LineStyle><size>${GMLSIZE}<\/size><color>${GMLTRANSPARENCY}${GMLBLUE}${GMLGREEN}${GMLRED}<\/color><\/LineStyle><\/Style>/g" $VECTOR_KML.raw > $VECTOR_KML.prepoint
+fi
+
+
+#
+##  Add color, transparency and icon for points
+#
+
+if [ -s "$VECTOR_KML.cat_point" ] &&  [ "${GIS_FLAG_P}" = 1 ] ; then
+# There are point-vectors in the file AND we want to deal with them
+
+  POINT_BEGIN="<Style><IconStyle><color>${GMLICONTRANSPARENCY}${GMLICONBLUE}${GMLICONGREEN}${GMLICONRED}<\/color><Icon><href>"
+  POINT_END="<\/href><\/Icon><\/IconStyle><\/Style>"
+
+    if [ "${OPT_ICON_URL}" ] ; then 
+      # an URL has been provided by the user
+      ICONURL=` echo ${OPT_ICON_URL} | sed "s|\/|\\\\\/|g"`
+      POINT_STYLE="${POINT_BEGIN}${ICONURL}${POINT_END}"
+      sed "s/<\/Point>/<\/Point>${POINT_STYLE}/g" $VECTOR_KML.prepoint > $VECTOR_KML
+    else
+          if [ -z "${OPT_ICON_CODE}" ] || [ -z "${OPT_ICON_PALETTE}" ] ; then 
+              error_routine "GML ICON PROBLEM: ICON=${OPT_ICON_CODE} PALETTE=${OPT_ICON_PALETTE}."
+          fi
+
+          if [ "${OPT_ICON_CODE}" -a "${OPT_ICON_PALETTE}" ] ; then 
+              ICONURL="http:\/\/maps.google.com\/mapfiles\/kml\/pal${OPT_ICON_PALETTE}\/icon${OPT_ICON_CODE}.png"
+              POINT_STYLE="${POINT_BEGIN}${ICONURL}${POINT_END}"
+              sed "s/<\/Point>/<\/Point>${POINT_STYLE}/g" $VECTOR_KML.prepoint > $VECTOR_KML
+          else
+              cp  $VECTOR_KML.prepoint $VECTOR_KML	
+              # let handle googleearth the icon rendering      
+          fi
+    fi
+     
+else
+ #no points around so the results from the line/polygon-conversion are to be used
+ cp  $VECTOR_KML.prepoint  $VECTOR_KML
+fi  # cat_points && gis_flag_p  ende
+
+########################################################################################################
+## The files for the transparenices have to be defined prior to pumping the awk-content 
+## into the strings -> the transparency values are integrated into the awk-strings
+
+ if [ "${OPT_COLUMN_LINE_TRANS}" != "" ] ; then
+# ENSURE_COLUMN "${OPT_COLUMN_LINE_TRANS}" 
+   AWK_LINE_TRANS_QUERY="/^.*${OPT_COLUMN_LINE_TRANS}.*$/ { parse_event=1; print \$0; split(\$2,a1,\">\"); split(a1[2],a2,\"<\"); LINETRANS=a2[1];} "
+ else
+   AWK_LINE_TRANS_QUERY=""
+ fi
+
+ if [ "${OPT_COLUMN_FILL_TRANS}" != "" ] ; then
+
+ # a database column for line-transparency has explicitly been set
+ #  ENSURE_COLUMN "${OPT_COLUMN_FILL_TRANS}"
+   AWK_FILL_TRANS_QUERY="/^.*${OPT_COLUMN_FILL_TRANS}.*$/ { parse_event=1; print \$0; split(\$2,a1,\">\"); split(a1[2],a2,\"<\"); FILLTRANS=a2[1];} "
+
+ else
+  AWK_FILL_TRANS_QUERY=""
+ fi
+
+#
+################### AWK-Code for LINE ####################################
+#
+
+awktemp_line=/tmp/awk.prog.line.$$
+cat > $awktemp_line <<END
+BEGIN {
+       hex_fallback=sprintf("%2.2x%2.2x%2.2x",16,16,16);
+       hex_line_trans=LINETRANS;
+      }
+
+/^.*$OPT_COLUMN_LINE_COLOR.*$/ {
+                        print \$0;
+                        parse_event=1; 
+                        rgb_provided=1;
+                        split(\$2,array1,">");
+                        split(array1[2],array2,"<");
+                        grassrgb=array2[1];           
+                        split(grassrgb,colors,":");
+                        hex_rgb=sprintf("%2.2x%2.2x%2.2x",colors[1],colors[2],colors[3]);          
+  
+                        }
+$AWK_LINE_TRANS_QUERY
+/^.*<Style>.*$/         {
+                        
+                        if (rgb_provided == 1)
+                           {
+                            the_rgb=hex_rgb;
+                            rgb_provided=0;
+                           
+                           }  
+                         else 
+                           {
+                            the_rgb=hex_fallback; 
+                           
+                           }        
+                        
+                        # LINETRANS can either be inserted from the GRASS_DB by a $AWK_LINE_TRANS_QUERY or when the script is called up.
+                        parse_event=1;
+                        the_line=\$0;                        
+                        gsub(/\<color\>........\<\/color\>\<\/LineStyle\>/,"<color>"hex_line_trans the_rgb"</color></LineStyle>", the_line);
+                      
+                        print the_line;
+                        }
+
+                        {if (parse_event == 0) {print \$0;}   
+			  else { parse_event=0; } 
+                        }
+
+END
+#
+##################### AWK-Code for FILL:###################################
+#
+
+awktemp_fill=/tmp/awk.prog.fill.$$
+cat > $awktemp_fill <<END
+BEGIN                   {
+                         hex_fallback=sprintf("%2.2x%2.2x%2.2x",32,32,32);    
+                         hex_fill_trans=FILLTRANS;    
+                        }
+/^.*$OPT_COLUMN_FILL_COLOR.*$/ {
+                        
+                        parse_event=1; 
+                        rgb_provided=1;
+                        split(\$2,array1,">");
+                        split(array1[2],array2,"<");
+                        grassrgb=array2[1];                                                 
+                        split(grassrgb,colors,":");
+                        hex_rgb=sprintf("%2.2x%2.2x%2.2x",colors[1],colors[2],colors[3]);
+                       
+                        }
+
+$AWK_FILL_TRANS_QUERY
+/^.*<Style>.*$/         {
+                        parse_event=1
+                        the_line=\$0;
+			
+                        if (rgb_provided == 1)
+                           {
+                            the_rgb=hex_rgb;
+                            rgb_provided=0;
+                           }  
+                         else 
+                           {
+                            the_rgb=hex_fallback; 
+                           }        
+                   
+                        gsub(/\<color\>........\<\/color\>\<\/PolyStyle\>/,"<color>"hex_fill_trans the_rgb"</color></PolyStyle>",the_line);                       
+                        print the_line;
+                         
+                        }
+
+                        {if (parse_event == 0) {print \$0;}   
+			  else { parse_event=0; } 
+                        }
+
+END
+#
+#########################################################################
+#apply AWK-Codes if necessary (aka database columns have been provided):
+
+   if [ "${OPT_COLUMN_LINE_COLOR}" != "" ] ; then
+     AWK_LINE_RGB=${OPT_COLUMN_LINE_COLOR}
+      
+     awk -f $awktemp_line -v LINETRANS=$GMLTRANSPARENCY  $VECTOR_KML > $VECTOR_KML.awk
+     echo "awk -f $awktemp_line -v LINETRANS=$GMLTRANSPARENCY  $VECTOR_KML > $VECTOR_KML.awk"
+     mv $VECTOR_KML  $VECTOR_KML.preline
+     mv $VECTOR_KML.awk $VECTOR_KML
+   fi
+  
+   if [ "${OPT_COLUMN_FILL_COLOR}" != "" ] ; then
+      # a column for fill colors has been explicitly set
+     AWK_FILL_RGB=${OPT_COLUMN_FILL_COLOR}
+
+     echo "awk -f $awktemp_fill -v FILLTRANS=$GMLFILLTRANSPARENCY  $VECTOR_KML > $VECTOR_KML.awk"
+     awk -f $awktemp_fill -v FILLTRANS=$GMLFILLTRANSPARENCY  $VECTOR_KML > $VECTOR_KML.awk
+     mv $VECTOR_KML  $VECTOR_KML.prefill
+     mv $VECTOR_KML.awk $VECTOR_KML
+   fi
+
+########################################
+#cleanup: remove location & files
+
+CLEANUP_TEMPFILES
+
+########################################
+#That's all, folks. (PL)
+

Deleted: grass-addons/grass6/vector/v.out.kml/v.out.kml.sh
===================================================================
--- grass-addons/grass6/vector/v.out.kml/v.out.kml.sh	2013-02-18 00:39:13 UTC (rev 55097)
+++ grass-addons/grass6/vector/v.out.kml/v.out.kml.sh	2013-02-18 00:41:24 UTC (rev 55098)
@@ -1,782 +0,0 @@
-#!/bin/sh
-
-############################################################################
-#
-# MODULE:       v.out.kml
-# AUTHOR(S):    Peter Loewe <peter.loewe AT grass-verein.de>
-# PURPOSE:      Export GRASS point/line/area-vectors into a KML file in 
-#               geographic coordinates (lat lon).
-# COPYRIGHT:    (c) 2007 Peter Loewe and the GRASS DEVELOPMENT TEAM
-#
-#               This program is free software under the GNU General Public
-#               License (>=v2). Read the file COPYING that comes with GRASS
-#               for details.
-#
-# updates:
-#
-# 7 July 2007  (PL): added support for database-columns
-#10 July 2007  (PL): typos fixed
-#28 July 2007  (PL): improvement of cleanup operations: Thanks to Jean-Noel Candau
-#############################################################################
-
-#%Module
-#%  description: Creates a KML-file from GRASS point/line/polygon vectors   
-#%End
-#%flag
-#%  key: l
-#%  description: Force line-vector export: Areas are exported as lines/polylines (default).
-#%end
-#%flag
-#%  key: y
-#%  description: Force polygon export: Areas are exported as polygons with a fillcolor and fill-transparency.
-#%end
-#%flag
-#%  key: p
-#%  description: Point-vector (sites) export: Point data are exported.
-#%end
-#%flag
-#%  key: r
-#%  description: Random colors: All line and area colors (if needed) are set to random values.
-#%end
-#%option
-#% key: map
-#% type: string
-#% gisprompt: old,vector,vector
-#% description: vector input map
-#% required : yes
-#%end
-#%option
-#% key: output
-#% type: string
-#% gisprompt: new_file,file,file
-#% description: name/path of kml output
-#% required : no
-#%end
-#%option
-#% key: ogrpath
-#% type: string
-#% gisprompt: old_file,file,file
-#% description: optional path to ogr2ogr
-#% required : no
-#%end
-#%option
-#% key: color
-#% type: string
-#% gisprompt: color,grass,color
-#% description: hexcode triplet for line color (blue:green:red 00:00:00-255:255:255) 
-#% answer : 00:200:00
-#% required : no
-#%end
-#%option
-#% key: transparency
-#% type: string
-#% description: integer for vector line transparency (0=invisible 255=opaque)
-#% answer : 255
-#% required : no
-#%end
-#%option
-#% key: fcolor
-#% type: string
-#% gisprompt: color,grass,color
-#% description: hexcode triplet for polygon fill color (blue:green:red 00:00:00-255:255:255)
-#% answer : 00:100:00
-#% required : no
-#%end
-#%option
-#% key: ftransparency
-#% type: string
-#% description: integer for polygon transparency (00=invisible 255=opaque)
-#% answer : 255
-#% required : no
-#%end
-#%option
-#% key: size
-#% type: string
-#% description: width of the vector lines (default is 1)
-#% options: 0.5,1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6,6.5,7,7.5,8,8.5,9,9.5,10
-#% answer : 1
-#% required : no
-#%end
-#%option
-#% key: iconcode
-#% type: string
-#% description: Select an icons number within its palette for point-vectors 
-#% options: 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45
-#% answer : 1
-#% required : no
-#%end
-#%option
-#% key: iconpalette
-#% type: string
-#% description: Select a KML palette of icons for point-vectors 
-#% options: 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
-#% answer : 1
-#% required :no
-#%end
-#%option
-#% key: iconcolor
-#% type: string
-#% gisprompt: color,grass,color
-#% description: hexcode color triplet for point-vectors (blue:green:red 00:00:00-255:255:255) 
-#% answer : 00:200:00
-#% required : no
-#%end
-#%option
-#% key: icontransparency
-#% type: string
-#% description: integer for point-vector transparency (0=invisible 255=opaque 0-255)
-#% answer : 255
-#% required : no
-#%end
-#%option
-#% key: iconurl
-#% type: string
-#% description: Provide a URL pointing to a symbol for point-vectors 
-#% required : no
-#%end
-#%option
-#% key: linecolumn
-#% type: string
-#% description: column name string for line color ([xxx]:xxx:xxx:xxx). Transparency should be provided as first value, unless 3-Flag is set.
-#% required : no
-#%end
-#%option
-#% key: fillcolumn
-#% type: string
-#% description: column name string for area fill color ([xxx]:xxx:xxx:xxx). Transparency should be provided as first value, unless 3-Flag is set.
-#% required : no
-#%end
-
-#%option
-#% key: linetranscolumn
-#% type: string
-#% description: column name string for line transparency (xxx). This option is overridden by the 'transparency'-option.
-#% required : no
-#%end
-#%option
-#% key: filltranscolumn
-#% type: string
-#% description: column name string for fill transparency (xxx). This option is overridden by the 'transparency'-option.
-#% required : no
-#%end
-
-#
-### Let's seperate the Flag and Option-Names from the variables used in the script.
-### This is good practice if we have to change terms in the GUI/frontend.
-#
-
-FLAG_FORCE_LINE_EXPORT=${GIS_FLAG_L}
-FLAG_FORCE_POLYGON_EXPORT=${GIS_FLAG_Y}
-FLAG_POINT_EXPORT=${GIS_FLAG_P}
-FLAG_RANDOM_COLORS=${GIS_FLAG_R}
-
-
-OPT_MAP=${GIS_OPT_MAP}
-OPT_OUTPUT=${GIS_OPT_OUTPUT}
-OPT_OGRPATH=${GIS_OPT_OGRPATH}
-OPT_LINE_COLOR=${GIS_OPT_COLOR}
-OPT_LINE_TRANS=${GIS_OPT_TRANSPARENCY}
-OPT_FILL_COLOR=${GIS_OPT_FCOLOR}
-OPT_FILL_TRANS=${GIS_OPT_FTRANSPARENCY}
-OPT_LINE_SIZE=${GIS_OPT_SIZE}
-OPT_ICON_CODE=${GIS_OPT_ICONCODE}
-OPT_ICON_PALETTE=${GIS_OPT_ICONPALETTE}
-OPT_ICON_COLOR=${GIS_OPT_ICONCOLOR}
-OPT_ICON_TRANS=${GIS_OPT_ICONTRANSPARENCY}
-OPT_ICON_URL=${GIS_OPT_ICONURL}
-OPT_COLUMN_LINE_COLOR=${GIS_OPT_LINECOLUMN}
-OPT_COLUMN_LINE_TRANS=${GIS_OPT_LINETRANSCOLUMN}
-OPT_COLUMN_FILL_COLOR=${GIS_OPT_FILLCOLUMN}
-OPT_COLUMN_FILL_TRANS=${GIS_OPT_FILLTRANSCOLUMN}
-
-##############################################################
-TMPDIR=`g.gisenv get="GISDBASE"`
-#TMPDIR is used to create the inner temporary latlon location
-
-#################################################################################
-# name:     CLEANUP_TEMPFILES
-# purpose:  Removes all temporary files which might have been created.
-# usage: CLEANUP_TEMPFILES
-
-function CLEANUP_TEMPFILES () 
-{
- rm $TMPDIR/.grassrc6_$TEMP_LOCATION
- rm $THE_VECTOR.shp
- rm  $THE_VECTOR.shx
- rm  $THE_VECTOR.prj
- rm  $THE_VECTOR.dbf
- rm  $VECTOR_KML.raw
- rm  $VECTOR_KML.cat_poly
- rm  $VECTOR_KML.cat_point
- rm  $VECTOR_KML.prepoint
- rm -rf $GISDBASE/$TEMP_LOCATION/PERMANENT
- rmdir $GISDBASE/$TEMP_LOCATION
- rm -rf $VECTOR_KML.raw2
-}
-
-
-#######################################################################
-# name:     exitprocedure
-# purpose:  removes all temporary files
-#
-exitprocedure ()
-{
-        message 0 "User break!"
-        #rm -f ${TMP}*
-        #rm $TMPDIR/.grassrc6_$TEMP_LOCATION
-        #rm -rf $GISDBASE/$TEMP_LOCATION
-        CLEANUP_TEMPFILES
-        exit 1
-}
-trap "exitprocedure" 2 3 15
-
-BC="bc"
-BCARGS="-l"
-
-#----------------------------------------------------------------
-export GIS_LOCK=$$
-#----------------------------------------------------------------
-########################################################################
-# name: error_routine
-# purpose: If an error occurs, exit gracefully.
-#
-error_routine () {
-echo "ERROR: $1"
-exit 1
-}
-#################################
-# is GRASS running ? if not: abort
-#################################
-if [ -z "$GISBASE" ] ; then
-  error_routine "You must be in GRASS to run this program."
-fi
-
-#################################
-# if no paramters are provided by the user fire up the gui
-if [ "$1" != "@ARGS_PARSED@" ] ; then
-  exec $GISBASE/bin/g.parser "$0" "$@"
-fi
-
-################################################################################
-# Database
-
-
- # We need a string of all the column names in the layers database
-
- DB_RESULT=`v.db.connect -c map=$OPT_MAP`
- DB_COLUMN_NAMES=`echo $DB_RESULT |sed 's/^[A-Z]*|//g' | sed 's/[A-Z]*|/ /g'`
-
-#################################################################################
-# name: OGR_PATH_USER_OVERRIDE
-# purpose: if the user provides a path to a specific version of OGR it will be used. 
-# usage: OGR_PATH_USER_OVERRIDE
-
-function OGR_PATH_USER_OVERRIDE ()
-{
-
- if [ "${OPT_OGRPATH}" != "" ] ; then
-   #ensure that the path-string properly ends with the file name
-   OGR_ENDING=`echo ${OPT_OGRPATH} | grep "/ogr2ogr$" ` 
-
-   if [ "$OGR_ENDING" == "" ] ; then
-      OPT_OGRPATH="${OPT_OGRPATH}/ogr2ogr"
-   fi
-
-   if [ -f ${OPT_OGRPATH} ]; then
-    #store this path as a GRASS variable for further use
-    THE_OGR_PATH=$OPT_OGRPATH
-    `g.gisenv set="GML_OGR_PATH"=${OPT_OGRPATH}`    
-    else
-     error_routine "Invalid path to OGR: ${THE_OGR_PATH}" 
-   fi 
- fi
-} 
-
-
-#################################################################################
-# name:     ENSURE_COLUMN
-# purpose:  Verify that string $1 equals the name of column of the maps database.
-# usage: ENSURE_COLUMN string-for-column-name
-
-function ENSURE_COLUMN () {
-#1: $COLUMN NAME to be verified
-
-   echo $DB_COLUMN_NAMES |grep -q "$1"
-  
-   if [ $? != 0 ] ; then
-     error_routine "$1 is not a database column."
-   fi
-}
-
-#################################################################################
-# name:     SET__HEX_COLORS
-# purpose:  create new string variables for R,G,B as 2byte hex numbers from a R:G:B string (can be hex, decimal or other). 
-# usage: SET_HEX_COLORS value-string-variable R-variable-name G-variable-name B-variable-name R-hex-default G-hex-default B-hex-default
-
-function SET_HEX_COLORS
-{
-if [ "$1" != "(null)" ] ; then
-  RED_D=`echo ${1} | cut -d: -f 1 `
-  eval "$2"=`printf "%02x" $RED_D`  
-
-  GREEN_D=`echo ${1} | cut -d: -f 2 `
-  eval "$3"=`printf "%02x" $GREEN_D`
-
-  BLUE_D=`echo ${1} | cut -d: -f 3 `
-  eval "$4"=`printf "%02x" $BLUE_D`
-else
-  eval "$3=$5"
-  eval "$3=$6"
-  eval "$4=$7"
-fi 
-if [ "${GIS_FLAG_r}" = 1 ] ; then
-     # the flag for random colors is set
-     
-     RCOLOR=`expr ${RANDOM} % 255`
-     eval "$2"=`printf "%02x" $RCOLOR`
-     RCOLOR=`expr ${RANDOM} % 255`
-     eval "$4"=`printf "%02x" $RCOLOR`
-     RCOLOR=`expr ${RANDOM} % 255`   
-     eval "$3"=`printf "%02x" $RCOLOR`
-fi
-}
-
-#################################################################################
-# name:     SET_HEX_VALUE
-# purpose:  create a new string variable with the value $2 as a 2byte hex number, or a default value $3.
-# usage: SET_HEX_VALUE grass_parameter-variable new-variable-name default-value
-
-
-function SET_HEX_VALUE () {
-#1: $OPT_LINE_SIZE 2:GMLSIZE 3:1
-
-if [ "$1" != "(null)" ] ; then
-   eval "$2"=`printf "%02x" $1`
- else
-   eval "$2"="$3"
-fi
-}
-#
-################################################################################
-
-
-###
-### Verify correct column names
-### if they are provided, they are needed further below
-
- if [ "${OPT_COLUMN_LINE_TRANS}" != "" ] ; then
-      ENSURE_COLUMN "${OPT_COLUMN_LINE_TRANS}" 
- fi
- if [ "${OPT_COLUMN_FILL_TRANS}" != "" ] ; then
-      ENSURE_COLUMN "${OPT_COLUMN_FILL_TRANS}" 
- fi
- if [ "${OPT_COLUMN_LINE_TRANS}" != "" ] ; then
-       ENSURE_COLUMN "${OPT_COLUMN_LINE_TRANS}" 
- fi
- if [ "${OPT_COLUMN_FILL_TRANS}" != "" ] ; then
-       ENSURE_COLUMN "${OPT_COLUMN_FILL_TRANS}" 
- fi
-
-
-
-################################################################################
-# Has a value for line color been provided by the user ? 
-# Otherwise use grass-green as the default.
-
-SET_HEX_COLORS ${OPT_LINE_COLOR} "GMLRED" "GMLGREEN" "GMLBLUE" "0" "ff" "0" 
-
-
-#
-### Has a value for a polygon fill color been provided by the user ?
-#
-SET_HEX_COLORS "${OPT_FILL_COLOR}" "GMLFILLRED" "GMLFILLGREEN" "GMLFILLBLUE" "0" "ff" "0"
-
-#
-### Has a value for a icon color been provided by the user ?
-#
-SET_HEX_COLORS "${OPT_ICON_COLOR}" "GMLICONRED" "GMLICONGREEN" "GMLICONBLUE" "0" "ff" "0"
-
-#
-### Has a transparency value  been provided by the user ?
-# Otherwise use full opacity as the default.
-
-SET_HEX_VALUE "${OPT_LINE_TRANS}" "GMLTRANSPARENCY"  "ff"
-
-
-#
-### Has a fill-transparency value  been provided by the user ?
-### Otherwise use full opacity as the default.
-#
-
-SET_HEX_VALUE "${OPT_FILL_TRANS}" "GMLFILLTRANSPARENCY"  "ff"
-
-#
-## Has a icon-transparency value  been provided by the user ?
-## Otherwise use full opacity as the default.
-#
-SET_HEX_VALUE "${OPT_ICON_TRANS}" "GMLICONTRANSPARENCY"  "ff"
-
-#
-## Has a line-size value  been provided by the user ?
-## Otherwise use 1 as the default.
-#
-SET_HEX_VALUE "$OPT_LINE_SIZE" "GMLSIZE"  "1"
-
-############################################################################
-# Ensure that the output file has the proper .kml-extension
-# if no output file has been named, fall back to the name of the map.
-if [ -z "${OPT_OUTPUT}" ] ; then
-  VECTOR_KML=${OPT_MAP}.kml
- else
-  VECTOR_KML=${OPT_OUTPUT}
-fi
-
-KML_ENDING=`echo $VECTOR_KML | grep ".kml$" ` 
-
-if [ -z "$KML_ENDING" ] ; then
- VECTOR_KML=$VECTOR_KML.kml
-fi
-
-
-############################################################################
-# Is ogr2ogr installed and available ?
-# Search for ogr2ogr command in user's path
-
-for i in `echo $PATH | sed 's/^:/.:/
-     s/::/:.:/g
-     s/:$/:./
-     s/:/ /g'`
-     do
-            if [ -f $i/ogr2ogr ] ; then
-		OGR_AVAILABLE=1
-                THE_OGR_PATH="$i/ogr2ogr"
-		break
-	    fi
-     done
-
-# has a custom  ogr2ogr path already been provided on this machine (like in previous GRASS sessions) ? 
-# in any case, if the user explicitly provides a ogr2ogr path from the command line,
-# this one will override any defaults or previous settings
-
- PREVIOUS_SESSION_OGR=`g.gisenv get="GML_OGR_PATH"`
-
-if [ "${PREVIOUS_SESSION_OGR}" ] ; then
-   # if a ogr setting has been stored from former sessions then use it.
-   THE_OGR_PATH=${PREVIOUS_SESSION_OGR}
-
-   OGR_PATH_USER_OVERRIDE
-   #Even if we have a path to OGR provided by the system, the user can override it.
-else
-
- OGR_PATH_USER_OVERRIDE
-  # this might be the first session ever, so lets stick to the user-provided path 
-
-  if [ "${THE_OGR_PATH}" == "" ]; then
-   error_routine "  ogr2ogr is not found in your default search-path. Is it installed ? You might provide a path to ogr2ogr as a second argument to this program."
-  fi
-
- ################################
- #So we have ogr2ogr, but can it deal with KML ?
-
-  echo "$THE_OGR_PATH --formats"
-  OGR_KML=`$THE_OGR_PATH --formats |grep "KML"`
-
-  if [ -z "$OGR_KML" ]; then
-     error_routine "  $THE_OGR_PATH is lacking KML support." 
-    
-  fi
-
-fi
-
-#############################################################################################
-# Setting the Line/Poly flags
-
-# Only one of both flags can be set:
-if [ "${FLAG_FORCE_LINE_EXPORT}" = 1 ] && [ "${FLAG_FORCE_POLYGON_EXPORT}" = 1 ] ; then
-   error_routine "Conflicting flag settings: -l and -y can not be used together."   
-fi
-
-#################################
-# Get the name of the vector layer to be converted
-THE_VECTOR=${OPT_MAP}
-
-# create a name fpr the temporary location
-TEMP_LOCATION=latlon_location_$$
-
-# Create a new temporary latlon location
-g.proj -c proj4='+init=epsg:4326' location=$TEMP_LOCATION
-
-#Set variables
-GISDBASE=`g.gisenv get=GISDBASE`
-OUTER_LOCATION=`g.gisenv get=LOCATION_NAME`
-OUTER_MAPSET=`g.gisenv get=MAPSET`
-
-#Keep the path to the settings file for the original location
-export OUTER_GISRC=$GISRC
-
-########################################
-##generate GRASS_settings-file for lat lon location:
-
-echo "GISDBASE: $GISDBASE " > $TMPDIR/.grassrc6_$TEMP_LOCATION
-echo "LOCATION_NAME: $TEMP_LOCATION " >> $TMPDIR/.grassrc6_$TEMP_LOCATION
-echo "MAPSET: PERMANENT " >>  $TMPDIR/.grassrc6_$TEMP_LOCATION
-echo "GRASS_GUI: text " >>  $TMPDIR/.grassrc6_$TEMP_LOCATION
-
-########################################
-##switch over to lat lon location
-
-export GISRC=$TMPDIR/.grassrc6_$TEMP_LOCATION
-
-#use process ID (PID) as lock file number:
-export GIS_LOCK=$$
-
-# Import the vector data into the lat lon location
-v.proj input=$THE_VECTOR location=$OUTER_LOCATION mapset=$OUTER_MAPSET
-
-#
-## VECTOR FEATURE EXPORT OR POLYGON FEATURE EXPORT
-#
-
-
-if [ "${FLAG_FORCE_LINE_EXPORT}" == 1 ] ; then
-    GEOMETRY="kernel,line,boundary"   
-fi
-
-
-if [ "${FLAG_FORCE_POLYGON_EXPORT}" == 1 ] ; then
-    GEOMETRY="area"  
-fi
-
-
-if [ "${FLAG_POINT_EXPORT}" == 1 ] ; then
- if [ "$GEOMETRY" != "" ] ; then
-   GEOMETRY="$GEOMETRY,point"
- else
-   GEOMETRY="point"
- fi 
-fi
-
-v.out.ogr input=$THE_VECTOR type=$GEOMETRY dsn=. olayer=$THE_VECTOR
-
-######################################################################################
-#Switch back to the original location
-
-export GISRC=$OUTER_GISRC 
-GISRC=$OUTER_GISRC 
-
-######################################################################################
-#
-### Shape to KML Conversion
-#
-
-
-echo "$OGR_PATH -f KML $VECTOR_KML.raw $THE_VECTOR.sh" 
-`$THE_OGR_PATH -f KML $VECTOR_KML.raw $THE_VECTOR.shp` || error_routine "$OGR_PATH aborted."
-
-######################################################################################
-#
-## Blend color, transparency and icons into the  KML by updating the style-tag
-#
-
-# create indicators for points and lines
-cat $VECTOR_KML.raw | grep PolyStyle > $VECTOR_KML.cat_poly
-cat $VECTOR_KML.raw | grep Point > $VECTOR_KML.cat_point
-
-
-#
-## Add colors and transparency for polygons and lines
-#
-
-if [ -s "$VECTOR_KML.cat_poly" ]; then
-  sed "s/<color>........<\/color>/<size>${GMLSIZE}<\/size><color>${GMLTRANSPARENCY}${GMLBLUE}${GMLGREEN}${GMLRED}<\/color>/g" $VECTOR_KML.raw > $VECTOR_KML.raw2 
-  sed "s/<fill>0<\/fill>/<color>${GMLFILLTRANSPARENCY}${GMLFILLBLUE}${GMLFILLGREEN}${GMLFILLRED}<\/color>/g" $VECTOR_KML.raw2 > $VECTOR_KML.prepoint
-
- else
-  sed "s/<\/LineString>/<\/LineString><Style><LineStyle><size>${GMLSIZE}<\/size><color>${GMLTRANSPARENCY}${GMLBLUE}${GMLGREEN}${GMLRED}<\/color><\/LineStyle><\/Style>/g" $VECTOR_KML.raw > $VECTOR_KML.prepoint
-fi
-
-
-#
-##  Add color, transparency and icon for points
-#
-
-if [ -s "$VECTOR_KML.cat_point" ] &&  [ "${GIS_FLAG_P}" = 1 ] ; then
-# There are point-vectors in the file AND we want to deal with them
-
-  POINT_BEGIN="<Style><IconStyle><color>${GMLICONTRANSPARENCY}${GMLICONBLUE}${GMLICONGREEN}${GMLICONRED}<\/color><Icon><href>"
-  POINT_END="<\/href><\/Icon><\/IconStyle><\/Style>"
-
-    if [ "${OPT_ICON_URL}" ] ; then 
-      # an URL has been provided by the user
-      ICONURL=` echo ${OPT_ICON_URL} | sed "s|\/|\\\\\/|g"`
-      POINT_STYLE="${POINT_BEGIN}${ICONURL}${POINT_END}"
-      sed "s/<\/Point>/<\/Point>${POINT_STYLE}/g" $VECTOR_KML.prepoint > $VECTOR_KML
-    else
-          if [ -z "${OPT_ICON_CODE}" ] || [ -z "${OPT_ICON_PALETTE}" ] ; then 
-              error_routine "GML ICON PROBLEM: ICON=${OPT_ICON_CODE} PALETTE=${OPT_ICON_PALETTE}."
-          fi
-
-          if [ "${OPT_ICON_CODE}" -a "${OPT_ICON_PALETTE}" ] ; then 
-              ICONURL="http:\/\/maps.google.com\/mapfiles\/kml\/pal${OPT_ICON_PALETTE}\/icon${OPT_ICON_CODE}.png"
-              POINT_STYLE="${POINT_BEGIN}${ICONURL}${POINT_END}"
-              sed "s/<\/Point>/<\/Point>${POINT_STYLE}/g" $VECTOR_KML.prepoint > $VECTOR_KML
-          else
-              cp  $VECTOR_KML.prepoint $VECTOR_KML	
-              # let handle googleearth the icon rendering      
-          fi
-    fi
-     
-else
- #no points around so the results from the line/polygon-conversion are to be used
- cp  $VECTOR_KML.prepoint  $VECTOR_KML
-fi  # cat_points && gis_flag_p  ende
-
-########################################################################################################
-## The files for the transparenices have to be defined prior to pumping the awk-content 
-## into the strings -> the transparency values are integrated into the awk-strings
-
- if [ "${OPT_COLUMN_LINE_TRANS}" != "" ] ; then
-# ENSURE_COLUMN "${OPT_COLUMN_LINE_TRANS}" 
-   AWK_LINE_TRANS_QUERY="/^.*${OPT_COLUMN_LINE_TRANS}.*$/ { parse_event=1; print \$0; split(\$2,a1,\">\"); split(a1[2],a2,\"<\"); LINETRANS=a2[1];} "
- else
-   AWK_LINE_TRANS_QUERY=""
- fi
-
- if [ "${OPT_COLUMN_FILL_TRANS}" != "" ] ; then
-
- # a database column for line-transparency has explicitly been set
- #  ENSURE_COLUMN "${OPT_COLUMN_FILL_TRANS}"
-   AWK_FILL_TRANS_QUERY="/^.*${OPT_COLUMN_FILL_TRANS}.*$/ { parse_event=1; print \$0; split(\$2,a1,\">\"); split(a1[2],a2,\"<\"); FILLTRANS=a2[1];} "
-
- else
-  AWK_FILL_TRANS_QUERY=""
- fi
-
-#
-################### AWK-Code for LINE ####################################
-#
-
-awktemp_line=/tmp/awk.prog.line.$$
-cat > $awktemp_line <<END
-BEGIN {
-       hex_fallback=sprintf("%2.2x%2.2x%2.2x",16,16,16);
-       hex_line_trans=LINETRANS;
-      }
-
-/^.*$OPT_COLUMN_LINE_COLOR.*$/ {
-                        print \$0;
-                        parse_event=1; 
-                        rgb_provided=1;
-                        split(\$2,array1,">");
-                        split(array1[2],array2,"<");
-                        grassrgb=array2[1];           
-                        split(grassrgb,colors,":");
-                        hex_rgb=sprintf("%2.2x%2.2x%2.2x",colors[1],colors[2],colors[3]);          
-  
-                        }
-$AWK_LINE_TRANS_QUERY
-/^.*<Style>.*$/         {
-                        
-                        if (rgb_provided == 1)
-                           {
-                            the_rgb=hex_rgb;
-                            rgb_provided=0;
-                           
-                           }  
-                         else 
-                           {
-                            the_rgb=hex_fallback; 
-                           
-                           }        
-                        
-                        # LINETRANS can either be inserted from the GRASS_DB by a $AWK_LINE_TRANS_QUERY or when the script is called up.
-                        parse_event=1;
-                        the_line=\$0;                        
-                        gsub(/\<color\>........\<\/color\>\<\/LineStyle\>/,"<color>"hex_line_trans the_rgb"</color></LineStyle>", the_line);
-                      
-                        print the_line;
-                        }
-
-                        {if (parse_event == 0) {print \$0;}   
-			  else { parse_event=0; } 
-                        }
-
-END
-#
-##################### AWK-Code for FILL:###################################
-#
-
-awktemp_fill=/tmp/awk.prog.fill.$$
-cat > $awktemp_fill <<END
-BEGIN                   {
-                         hex_fallback=sprintf("%2.2x%2.2x%2.2x",32,32,32);    
-                         hex_fill_trans=FILLTRANS;    
-                        }
-/^.*$OPT_COLUMN_FILL_COLOR.*$/ {
-                        
-                        parse_event=1; 
-                        rgb_provided=1;
-                        split(\$2,array1,">");
-                        split(array1[2],array2,"<");
-                        grassrgb=array2[1];                                                 
-                        split(grassrgb,colors,":");
-                        hex_rgb=sprintf("%2.2x%2.2x%2.2x",colors[1],colors[2],colors[3]);
-                       
-                        }
-
-$AWK_FILL_TRANS_QUERY
-/^.*<Style>.*$/         {
-                        parse_event=1
-                        the_line=\$0;
-			
-                        if (rgb_provided == 1)
-                           {
-                            the_rgb=hex_rgb;
-                            rgb_provided=0;
-                           }  
-                         else 
-                           {
-                            the_rgb=hex_fallback; 
-                           }        
-                   
-                        gsub(/\<color\>........\<\/color\>\<\/PolyStyle\>/,"<color>"hex_fill_trans the_rgb"</color></PolyStyle>",the_line);                       
-                        print the_line;
-                         
-                        }
-
-                        {if (parse_event == 0) {print \$0;}   
-			  else { parse_event=0; } 
-                        }
-
-END
-#
-#########################################################################
-#apply AWK-Codes if necessary (aka database columns have been provided):
-
-   if [ "${OPT_COLUMN_LINE_COLOR}" != "" ] ; then
-     AWK_LINE_RGB=${OPT_COLUMN_LINE_COLOR}
-      
-     awk -f $awktemp_line -v LINETRANS=$GMLTRANSPARENCY  $VECTOR_KML > $VECTOR_KML.awk
-     echo "awk -f $awktemp_line -v LINETRANS=$GMLTRANSPARENCY  $VECTOR_KML > $VECTOR_KML.awk"
-     mv $VECTOR_KML  $VECTOR_KML.preline
-     mv $VECTOR_KML.awk $VECTOR_KML
-   fi
-  
-   if [ "${OPT_COLUMN_FILL_COLOR}" != "" ] ; then
-      # a column for fill colors has been explicitly set
-     AWK_FILL_RGB=${OPT_COLUMN_FILL_COLOR}
-
-     echo "awk -f $awktemp_fill -v FILLTRANS=$GMLFILLTRANSPARENCY  $VECTOR_KML > $VECTOR_KML.awk"
-     awk -f $awktemp_fill -v FILLTRANS=$GMLFILLTRANSPARENCY  $VECTOR_KML > $VECTOR_KML.awk
-     mv $VECTOR_KML  $VECTOR_KML.prefill
-     mv $VECTOR_KML.awk $VECTOR_KML
-   fi
-
-########################################
-#cleanup: remove location & files
-
-CLEANUP_TEMPFILES
-
-########################################
-#That's all, folks. (PL)
-



More information about the grass-commit mailing list