Skip to content

Instantly share code, notes, and snippets.

@rogernolan
Created October 29, 2012 09:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rogernolan/3972495 to your computer and use it in GitHub Desktop.
Save rogernolan/3972495 to your computer and use it in GitHub Desktop.
Suunto -> garmin GPX
#!/usr/bin/env python
import argparse
import xml.etree.ElementTree as ET
def main():
parser = argparse.ArgumentParser(description='Reporcess a Suuto GPX file to Garmin format')
parser.add_argument('input', help='Input filename')
parser.add_argument('output', help='output filename')
args = parser.parse_args()
input_filename = args.input
output_filename = args.output
if output_filename is None:
output_filename = 'garmin-' + input_filename
ET._namespace_map["http://www.w3.org/2001/XMLSchema-instance"] = 'xsi'
ET._namespace_map["http://www.topografix.com/GPX/1/1"] = ''
ET._namespace_map["http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2"] = 'tc2'
ET._namespace_map["http://www.garmin.com/xmlschemas/TrackPointExtension/v1"] = 'tp1'
ET._namespace_map["http://www.cluetrust.com/XML/GPXDATA/1/0"] = 'gpxdata'
gpx = ET.parse(input_filename)
tracks = gpx.findall("trk")
for track_point in gpx.iter('{http://www.topografix.com/GPX/1/1}trkpt'):
extensions = track_point.find('{http://www.topografix.com/GPX/1/1}extensions')
hr_value = extensions.find("{http://www.cluetrust.com/XML/GPXDATA/1/0}hr").text
for subelement in extensions:
extensions.remove(subelement)
garmin_extensions = ET.SubElement(extensions,'tp1:TrackPointExtension')
new_hr_element = ET.SubElement(garmin_extensions, '{http://www.garmin.com/xmlschemas/TrackPointExtension/v1}hr' )
new_hr_element.text = hr_value
gpx.write(output_filename)
if __name__ == '__main__':
main()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment