-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathigc2gpx
More file actions
executable file
·146 lines (131 loc) · 3.83 KB
/
igc2gpx
File metadata and controls
executable file
·146 lines (131 loc) · 3.83 KB
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#!/bin/bash
# Convert a IGC track to GPX, keeping only the GPS data
#
# Tested with IGC files created by flyhigh
#
# TODO
# - currently nothing open
#
# Version: $LastChangedRevision$
# last change: $LastChangedDate$
#
# Copyright (C) 2014 by Robert Lange <sd2k9@sethdepot.org>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# *** Settings ***
# None
# *** Settings you usually don't wanna change ***
# GPSbabel executable
GPSBABEL=gpsbabel
# Program name (no need to change)
PROGNAME=igc2gpx
# Input igc file (set from command line)
IGC_FILE=
# Output GPX file (set from command line)
GPX_FILE=
# *** Functions ***
# *** Command line parsing
get_options() {
local opt
local argcounter=1
while [ -n "$*" ] ; do
opt="$1"
shift
case $opt in
-V|--version)
# Version output
REVISION='$LastChangedRevision: DEV$'
REVISION=${REVISION#\$LastChangedRevision: }
REVISION=${REVISION%\$}
echo "$PROGNAME, Revision $REVISION"
echo "(c) by Robert Lange <sd2k9@sethdepot.org>"
echo "GNU General Public Licence version 3 applies"
exit 0
;;
-h|--help|'-?')
# help text
echo "$PROGNAME - Convert a IGC track to GPX, keeping only the GPS data"
echo
echo "Call: $PROGNAME input_igc_file [output_gpx_file]"
echo
echo "Options:"
echo " [-h|--help] - This screen"
echo " [-V|--version] - Print program version and exit"
echo " input_igc_file - Filename of the IGC file to convert"
echo " output_gpx_file - Output file name, derived from input file name when not set"
exit 0
;;
*)
# Store into
case $argcounter in
1)
IGC_FILE="$opt"
;;
2)
GPX_FILE="$opt"
;;
*)
# Too many arguments
echo "Too many arguments! See help text for usage"
exit 1
;;
esac
#increment argument counter
let argcounter++
;;
esac
done
}
# *** Call Command Line Parsing
# When no options supplied then call help
if [ -z "$1" ]; then
get_options "--help"
else
get_options "$@"
fi
# *** Sanity Checks ***
# Parameter
if [ -z "$IGC_FILE" ]; then
echo "No input file name given! See help text for usage"
exit 1
fi
if [ ! -f "$IGC_FILE" ]; then
echo "Input file $IGC_FILE not found!"
exit 1
fi
# gpsbabel there?
if [ $(which $GPSBABEL > /dev/null) ]; then
echo "$GPSBABEL executable not found!"
exit 1
fi
# *** Derive output file name when not given
if [ -z "$GPX_FILE" ]; then
GPX_FILE="${IGC_FILE%.*}.gpx"
fi
# *** Do the conversion
# Convert via gpsbabel
echo "$GPSBABEL -i igc -f $IGC_FILE -o gpx -F -"
GPX_DATA=$($GPSBABEL -i igc -f "$IGC_FILE" -o gpx -F -)
if [ $? -ne 0 ]; then
echo "Failure invoking $GPSBABEL - Aborting"
exit 1
fi
# Keep only GPS data
echo "Stripping Non-GPS (PRESALTTRK) data ..."
echo "$GPX_DATA" | perl -e 'my $mt=""; while (<>) { $mt .= $_; }; $mt =~ s|<trk>[\s\n]*<name>PRESALTTRK</name>.+?</trk>||s; print $mt' > "$GPX_FILE"
if [ $? -ne 0 ]; then
echo "Failure invoking perl - Aborting"
exit 1
fi
echo "Done - wrote $GPX_FILE"