Routen für Garmin GPS erstellen

Bisher habe ich Routen für mein Garmin GPS manuell mit gpsbabel konvertiert und auf das GPS geladen. Da mir das zu aufwendig wurde, habe ich ein kleines Shell-Script geschrieben, welches mir die Arbeit erleichtert.

Die Vorgehensweise um eine neue Route zu erstellen, ist nun folgende:

  1. Erstellen der Route. Dies kann man entweder mit Google Earth machen. Dazu einen Path zeichen und als kml-Datei speichern. Oder mit dem Bikeroutetoaster eine neue Route erstellen und diese als GPX herunterladen. Dabei möglichst die automatische Streckenplanung ausschalten, da sonst viel zu viele Wegpunkte entstehen und die meisten Garmin-Geräte nur 250 Wegpunkte pro Route verwalten können.

  2. Das GPS per USB anschließen und das Script mit dem Dateinamen als einzigen Parameter aufrufen. Die Datei wird dann automatisch konvertiert und auf das GPS geladen. Dort ist sie dann unter "Routen" zu finden. Der Name der Route entspricht dem Dateinamen.

Das Script sieht folgendermaßen aus:

#!/bin/bash
#
# Tranfer tracks from kml (Google Earth) or gpx file to a Garmin gps unit.
# The track is converted to a route.
#
# author: Andreas Schroeder
# date: 2010-07-20
#
# Based on idea from Jochen Schmid.
#

# maximum number of route points (250 for Garmin GPSMAP 60)
MAXPOINTS="250"

# icon for waypoints (does not work at the moment)
ICON="Flag Red"

# print help
if [ $# -ne 1 ]; then
echo "Convert tracks (gpx or kml) to Garmin routes and transfer them to the device."
echo "Usage: $0 "
echo ""
exit 1
fi

# input file name
INFILE=$1

# input format (gpx and kml are supported)
FORMAT=`echo $INFILE | sed -e 's/^[^\.]*\./'`

# check input format
if [ ${FORMAT} != "gpx" -a ${FORMAT} != "kml" ]; then
echo "Unknown file format '${FORMAT}'. The input filename must end with '.kml' or '.gpx'."
exit 2
fi

# get route name from filename
ROUTENAME=`basename $1 .${FORMAT}`

# check for number of route points
NUMPOINTS=`gpsbabel -r -i ${FORMAT} -f "${INFILE}" -x transform,rte=trk -o gpx -F - | grep "" | wc -l`
if [ ${NUMPOINTS} -gt ${MAXPOINTS} ]; then
echo "Your route contains ${NUMPOINTS} points. This is more than the maximum"
echo "allowed number of points (${MAXPOINTS}). Please simplify the input data"
echo "and try again."
exit 2
fi

# convert and upload to gps unit
gpsbabel -r -i ${FORMAT} -f "${INFILE}" \
    -x transform,rte=trk \
    -o gpx -F - \
| sed -e "s#^ *#&\n ${ROUTENAME}#" -e "s#^ *# Flag, Red\n&#" \
| gpsbabel -r -i gpx -f - -o garmin -F usb:

echo "Route '${ROUTENAME}' successfully uploaded."
LinkedIn logo mail logo