Closed jedie closed 5 years ago
Found a way. Sorry.
Jedie, would you mind explaining how you solved this?
I managed to do it like this:
import gpxpy
from xml.etree import ElementTree
gpx = gpxpy.gpx.GPX()
# Add TrackPointExtension namespace
gpx.nsmap["gpxtpx"] = "http://www.garmin.com/xmlschemas/TrackPointExtension/v1"
# Create track
gpx_track = gpxpy.gpx.GPXTrack()
gpx.tracks.append(gpx_track)
# Create segment
gpx_segment = gpxpy.gpx.GPXTrackSegment()
gpx_track.segments.append(gpx_segment)
# Create point:
gpx_point = gpxpy.gpx.GPXTrackPoint(2.1234, 5.1234, time=time())
gpx_segment.points.append(gpx_point)
# Create extension (hr)
hr = 123
gpx_extension_hr = ElementTree.fromstring(f"""<gpxtpx:TrackPointExtension xmlns:gpxtpx="http://www.garmin.com/xmlschemas/TrackPointExtension/v1">
<gpxtpx:hr>{hr}</gpxtpx:hr>
</gpxtpx:TrackPointExtension>
""")
gpx_point.extensions.append(gpx_extension_hr)
# Print XML
print(gpx.to_xml())
Result:
<?xml version="1.0" encoding="UTF-8"?>
<gpx xmlns="http://www.topografix.com/GPX/1/1" xmlns:gpxtpx="http://www.garmin.com/xmlschemas/TrackPointExtension/v1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd" version="1.1" creator="gpx.py -- https://github.com/tkrajina/gpxpy">
<trk>
<trkseg>
<trkpt lat="2.1234" lon="5.1234">
<time>1900-01-01T00:00:00Z</time>
<extensions>
<gpxtpx:TrackPointExtension>
<gpxtpx:hr>123</gpxtpx:hr>
</gpxtpx:TrackPointExtension>
</extensions>
</trkpt>
</trkseg>
</trk>
</gpx>
I have made something like this:
But adding point.extensions is not the right way...
I would like to add head-rate and cadence data. Maybe as the same extension as garmin, e.g.:
Or is there a common format to add head-rate and cadence data?!?