Skip to content

Releases: ejfox/moto-gpx

v0.5.0 — built-for-decades docs pass

Choose a tag to compare

@ejfox ejfox released this 21 Apr 19:28

Documentation-only release. Every source module now carries a contract header, typedefs, section banners, named constants, JSDoc on every export, and algorithm-level comments. No behavior changes. See CHANGELOG.md for full details.

v0.4.0 — superlatives

Choose a tag to compare

@ejfox ejfox released this 21 Apr 14:17

Every run now ends with a "superlatives" banner — the fun facts you'd actually want to read after a ride, printed to console and stashed in stats.json.superlatives.

Core stats from GPX alone

  • fastest mile split + pace
  • longest non-stop streak (min + miles)
  • highest / lowest point with lat/lon
  • biggest single climb and descent with avg grade
  • steepest sustained grade
  • longest straightaway
  • turns per mile (twistiness index)
  • compass extremes (N/S/E/W with timestamps)
  • time in each speed bucket
  • time of day distribution

F1-style telemetry

  • top speed with coordinates
  • 0-60 mph time
  • % time above 60 mph
  • peak cornering G (computed via 3-point curvature × v²/r)
  • hardest braking G
  • biggest launch G
  • smoothness score 1-10

When OSM and Weather were enriched

  • "town signs you passed" — chronological list of places along the route
  • hottest / coldest / windiest stage

Equivalencies

Distance and climb translated into universally-relatable units: football fields, marathons, Empire State Buildings, Eiffel Towers, Kilimanjaros.

Default on. Pass --no-superlatives to skip.

v0.3.1 — real-data bug fixes

Choose a tag to compare

@ejfox ejfox released this 21 Apr 14:04

Testing against a real Garmin file (5689-point Hudson Valley loop) surfaced three bugs:

Fixed

  • max_speed_mph false spikes from GPS jitter. Adjacent 1s Garmin samples with a 50m coordinate hiccup were reporting as 100+ mph. Now computed over a 5-second sliding window — single-point jitter averaged across multiple real samples.
  • OSRM routes on loop rides. A ride that starts/ends at the same driveway was routing start→end via 13 meters with extra_distance_pct: 707752. Now detects loops (start/end within 200m) and routes via the farthest trkpt as a waypoint. New props: is_loop, waypoint.
  • Misleading DEM summary line printed "vrt" even when gdalbuildvrt failed. Now prints only what actually built.
  • Empty media folders no longer produce an empty media.geojson.

v0.3.0 — QGIS mise en place

Choose a tag to compare

@ejfox ejfox released this 21 Apr 13:03

Big jump. Tool now preps a full set of QGIS-ready layers for hand-making
motorcycle trip maps, with optional network enrichments and SRTM DEM.

New layers (default on)

  • stops.geojson — rest stops and overnights as labeled Points
  • speedbins.geojson — LineString chunks colored by speed bucket
  • markers.geojson — pre-labeled stage/day start/end markers
  • days-merged/ — one unbroken LineString per day
  • styles/*.qml — QGIS symbology auto-loads via sibling-file convention

New: DEM subsystem (--dem)

AWS Terrain Tiles (SRTM 30m, free, no auth) → seamless VRT via gdalbuildvrt,
optional hillshade GeoTIFF, optional vector contour lines.

New: opt-in enrichments (--enrich ...)

  • weather — Open-Meteo historical per stage
  • osm — Overpass roads/places/POIs + per-stage road names
  • routes — OSRM "what a car would've done" comparison
  • crossings — state/province transition Points (US/CA/MX ships)
  • sun — media tagged with sun altitude/azimuth, golden hour flag

Structure

Refactored into src/ modules. Zero runtime deps preserved. exiftool and
gdal remain the only external binaries, and only when the features that
need them are enabled.