Class: GpxDoctor::StatisticsEnhancer

Inherits:
Object
  • Object
show all
Defined in:
lib/gpx_doctor/statistics_enhancer.rb

Instance Method Summary collapse

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