User:Telegnom/tcx2gpx
Jump to navigation
Jump to search
Das folgende Script wandelt alle *.tcx Dateien (Garmin Trainingscenter XML) in *.gpx um. Dazu ist es erforderlich das GPSBABEL installiert ist. Im Moment ist das Ganze noch recht beta und die Optionen -v und -d funktionieren evtl noch nicht "ganz" sinnvoll. Die grundlegende Funktion ist aber gegeben. Das Script wird wie folgt aufgerufen:
./tcx2gpx [-v, -d] directory
-v = be verbose --> Zeigt die Umwandlungen an
-d = debug --> Zeigt weitergehende Informationen an
ICH ÜBERNEHME KEINERLEI HAFTUNG / VERANTWORTUNG FÜR SCHÄDEN DIE DURCH DAS SCRIPT ENTSTEHEN!
#!/bin/bash
function long_help {
echo "TCX2OSM by telegnom (copyleft) - version 0.1 - 2009-06-17"
echo "---------------------------------------------------------"
echo "Das Script wandelt mit Hilfe von GPSBABEL alle in dem "
echo "angegebenen Verzeichnis gefundenen .tcx Dateien in .osm "
echo "Dateien um."
echo ""
echo "SYNTAX"
echo "---------------------------------------------------------"
echo "tcx2osm [options] DIRECTORY";
echo ""
echo "Gültige Optionen sind:"
echo "-v verbose detailierte Ausgaben zur Laufzeit"
echo "-d debug noch geschwätziger als -v"
echo ""
echo "KONTAKT"
echo "---------------------------------------------------------"
echo "Webseite und download: "
echo "http://wiki.openstreetmap.org/wiki/User:Telegnom/tcx2gpx"
exit
}
function short_help {
echo "tcx2gpx - Fehlende / falsche Optionen"
echo "\"tcx2osm -h\" für weitere Informationen"
echo ""
exit
}
# Prüfen ob Parameter übergeben wurden, wenn nicht Hilfe ausgeben
if [ $# -eq 0 ]; then
short_help
fi
# Auswertung der übergebenen Parameter
counter=0
param_count=$#
while [ $1 ]; do
let counter=counter+1
if [ $param_count -eq $counter ] && [ `echo $1 | cut -c 1` != "-" ]; then
dir=$1
else
case $1 in
"-v") verbose=1;;
"-d") debug=1;;
"-h") long_help;;
*) short_help;;
esac
fi
shift
done
if [ "$verbose" = "1" ] || [ "$debug" = "1" ]; then
echo "+----------------------------------------------+"
echo "| tcx2gpx - telegnom - http://osm.telegnom.net |"
echo -e "+----------------------------------------------+\n"
fi
if [ "$debug" = "1" ]; then
echo -e "gewähltes Verzeichnis: $dir \n"
fi
# Prüfen ob es sich bei dem als Verzeichnis übergebenen Wert tatsächlich um ein Verzeichnis handelt
if [ "$debug" = "1" ]; then
echo -e "dir_check=`file -b $dir 2> /dev/null`\n"
fi
dir_check=`file -b $dir 2> /dev/null`
if [ "$dir_check" != directory ]; then
# Wenn nicht --> Fehlermeldung
echo -e "$dir ist KEIN Verzeichnis \n"
exit
fi
cd $dir
# Wenn verbose UND debug angegeben --> Verzeichnis ausgeben
if [ "$verbose" = "1" ] || [ "$debug" = "1" ]; then
echo -e "`pwd` ist ein Verzeichnis...\n"
fi
# Prüfen ob in dem Verzeichnis .tcx Dateien vorhanden sind
if [ "$debug" = "1" ]; then
echo -e "tcx_count=`find . -maxdepth 1 -name "*.tcx" -readable | cut -d '/' -f 2 | wc -l`\n"
fi
tcx_count=`find . -maxdepth 1 -name "*.tcx" -readable | cut -d '/' -f 2 | wc -l`
#tcx_count=`find . -maxdepth 1 -name "*.tcx" | cut -d '/' -f 2 | wc -l`
if [ "$tcx_count" = "0" ]; then
# Wenn keine .tcx Dateien vorhanden Script abbrechen und Fehlermeldung ausgeben
echo -e "Keine lesbaren .tcx Dateien in `pwd` gefunden\n"
exit
fi
# Wenn Verbose UND Debug --> Anzahl der gefunden Elemente ausgeben
if [ "$debug" != "1" ] && [ "$verbose" = "1" ]; then
echo -e "$tcx_count .tcx Datei/en werden verarbeitet\n"
fi
tcx_file=echo $tcx_file | rev | cut -d "." -f 2 | rev
for tcx_file in `find . -maxdepth 1 -name "*.tcx" -readable | cut -d '/' -f 2`; do
tcx_file_name=`echo $tcx_file | rev | cut -d "." -f 2 | rev`
if [ "$debug" = "1" ]; then
echo gpsbabel -i gtrnctr -f $tcx_file -o gpx -F $tcx_file_name.gpx
fi
if [ "$verbose" = "1" ] && [ "$debug" != "1" ]; then
echo '$tcx_file --> $tcx_file_name.gpx'
fi
`gpsbabel -i gtrnctr -f $tcx_file -o gpx -F $tcx_file_name.gpx`
done
echo