Roveri GPX extensions

Namespace URI: https://roveri.app/gpx/v1. Roveri writes standard GPX 1.1 and adds the elements below inside <extensions>, as GPX 1.1's extensionsType permits (xsd:any namespace="##other"). Any other reader ignores them; Roveri reads them back to show the whole ride.

Per point — inside <trkpt><extensions>

ElementTypeMeaningOmitted when
roveri:speedm/s, one decimalSpeed reported by the GPS at this pointunknown, or the rider hid speed
roveri:coursedegrees, integerHeadingunknown
roveri:roadu / h / mRoad type as the route map colours it: urban, highway, mixedunknown
roveri:laneinteger −2…2Lane offset where the ride covers the same road twice0

Per track — inside <trk><extensions>

<roveri:ride> carries the ride as attributes: version (1), timeZone (IANA), startedAt/endedAt (UTC ISO-8601), distanceM, durationS, elevationGainM, avgSpeedMps, maxSpeedMps, roadType, timeOfDay, felt, sunriseUTC, sunsetUTC, startCity, startRegion, endCity, endRegion, urbanS, highwayS, twistyS, mixedS, dayS, nightS, rainS, dryS, wetDistanceM, minTempC, maxTempC, maxWindKph. Every attribute except version is optional.

<roveri:weather> holds up to eight <roveri:sample> elements: time, tempC, precipMmHr, windKph, windDeg, gustKph, cloudPct, visibilityM, code, raining. Samples carry no coordinates.

Example

<trkpt lat="43.3188" lon="11.3308">
  <ele>322</ele>
  <time>2026-05-12T07:00:00Z</time>
  <extensions>
    <roveri:speed>30.1</roveri:speed>
    <roveri:course>180</roveri:course>
    <roveri:road>u</roveri:road>
  </extensions>
</trkpt>

Versioning

A reader compares roveri:ride/@version with the version it supports. A newer file still parses as standard GPX; Roveri shows the ride and suggests an update.