Class: GpxDoctor::StatisticsEnhancer
- Inherits:
-
Object
- Object
- GpxDoctor::StatisticsEnhancer
- Defined in:
- lib/gpx_doctor/statistics_enhancer.rb
Instance Method Summary collapse
-
#enhance(waypoints) ⇒ Object
Enhances each consecutive pair of waypoints with statistics: - distance_to_next (meters, flat-earth Pythagorean approximation) - elevation_change (meters, next.ele - current.ele; nil when elevation missing) - direction (degrees 0-360, geographic bearing to next point).
Instance Method Details
#enhance(waypoints) ⇒ Object
Enhances each consecutive pair of waypoints with statistics:
- distance_to_next (meters, flat-earth Pythagorean approximation)
- elevation_change (meters, next.ele - current.ele; nil when elevation missing)
- direction (degrees 0-360, geographic bearing to next point)
The last point in the list receives nil for all three fields. Mutates waypoints in place.
12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/gpx_doctor/statistics_enhancer.rb', line 12 def enhance(waypoints) return if waypoints.nil? || waypoints.size < 2 waypoints.each_cons(2) do |current, nxt| current.distance_to_next = DistanceCalculator.distance(current, nxt) current.elevation_change = if current.ele && nxt.ele nxt.ele - current.ele end current.direction = DistanceCalculator.bearing(current, nxt) end end |