Script for adding a boat ramp tag to the last node of a slipway polyline

From OpenStreetMap Wiki
Jump to: navigation, search
(Does MacOSX ship with tac?)
#!/bin/sh
#
# Little shell script to extract the last node from a way
#    and tag it with leisure=slipway.
#
# by H.Bowman 1 May 2010; released to the Public Domain.
#
# Input:  .osm file exported from PostGIS database
# Output: .osm file ready for OSM editor app
#            if no output file is given output is input name with
#            "_with_slipway" added.
#
 
if [ $# -lt 1 ] ; then
   echo
   echo "Usage:   `basename $0` input.osm [output.osm]"
   echo
   exit 1
fi
 
 
INPUT="$1"
 
if [ ! -r "$INPUT" ] ; then
   echo "ERROR: Input file is not readable or does not exist."
   exit 1
fi
 
 
if [ -n "$2" ] ; then
   OUTPUT="$2"
else
   OUTPUT="`basename "$INPUT" .osm`_with_slipway.osm"
fi
 
if [ -e "$OUTPUT" ] ; then
   echo "ERROR: Output file <$OUTPUT> already exists"
   exit 1
fi
 
#echo "Input: <$INPUT>"
#echo "Output: <$OUTPUT>"
 
# add newline at eof if needed
if [ `tac "$INPUT" | head -n 1 | tr ' ' '\n' | grep -c '</'` -eq 2 ] ; then
   echo >> "$INPUT"
   echo "WARNING: modified input file, added newline after last line."
fi
 
 
tac "$INPUT" | awk '{
   if (/<way id=/) {
      print
      NEW_WAY=1
   } else {
      if ( NEW_WAY == 1 ) {
         print "    </node>"
         print "      <tag k=\"leisure\" v=\"slipway\" />"
         sub(/ \/>$/, ">")
         print
         NEW_WAY=0
      } else {
	 print
      }
   }
}' | tac > "$OUTPUT"
 
 
# done!
Personal tools
Namespaces
Variants
Actions
site
Toolbox