Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import json
- import xml.etree.ElementTree as ET
- from xml.dom import minidom
- # Load JSON data
- with open('data.json', 'r') as file:
- data = json.load(file)
- # Prepare GPX root
- gpx = ET.Element('gpx', version="1.1", creator="LiveTrack to GPX", xmlns="http://www.topografix.com/GPX/1/1")
- trk = ET.SubElement(gpx, 'trk')
- name = ET.SubElement(trk, 'name')
- name.text = "LiveTrack Session"
- trkseg = ET.SubElement(trk, 'trkseg')
- # Parse track points
- track_points = data['data']['trackPointsBySessionId']['trackPoints']
- for point in track_points:
- trkpt = ET.SubElement(trkseg, 'trkpt', lat=str(point['position']['lat']), lon=str(point['position']['lon']))
- ele = ET.SubElement(trkpt, 'ele')
- ele.text = str(point['fitnessPointData']['elevation'])
- time = ET.SubElement(trkpt, 'time')
- time.text = point['dateTime']
- # Beautify output
- gpx_str = ET.tostring(gpx, encoding='utf-8')
- parsed_gpx = minidom.parseString(gpx_str)
- pretty_gpx = parsed_gpx.toprettyxml(indent=" ")
- # Write to GPX file
- with open('output.gpx', 'w', encoding='utf-8') as file:
- file.write(pretty_gpx)
Advertisement
Add Comment
Please, Sign In to add comment