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 or feet depending on configuration) - elevation_change (meters or feet depending on configuration) - 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 or feet depending on configuration)
- elevation_change (meters or feet depending on configuration)
- 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 25 26 27 28 |
# File 'lib/gpx_doctor/statistics_enhancer.rb', line 12 def enhance(waypoints) return if waypoints.nil? || waypoints.size < 2 unit_system = GpxDoctor.configuration.unit_system waypoints.each_cons(2) do |current, nxt| distance_meters = DistanceCalculator.distance(current, nxt) current.distance_to_next = UnitConverter.convert_distance(distance_meters, unit_system) current.elevation_change = if current.ele && nxt.ele elevation_change_meters = nxt.ele - current.ele UnitConverter.convert_elevation(elevation_change_meters, unit_system) end current.direction = DistanceCalculator.bearing(current, nxt) end end |