class Manipulation::Statistics
Public Class Methods
new(points)
click to toggle source
# File lib/simple_trail/manipulation/statistics.rb, line 5 def initialize(points) @points = points end
Public Instance Methods
ascent()
click to toggle source
# File lib/simple_trail/manipulation/statistics.rb, line 25 def ascent (0..@points.size - 2).map do |i| ascent_calc(@points[i], @points[i + 1]) end.inject(:+) end
ascent_calc(start, finish)
click to toggle source
# File lib/simple_trail/manipulation/statistics.rb, line 41 def ascent_calc(start, finish) [0, finish[:ele].to_i - start[:ele].to_i].max end
basic_statistics()
click to toggle source
# File lib/simple_trail/manipulation/statistics.rb, line 9 def basic_statistics { distance: distance, ascent: ascent, descent: descent, time: time } end
descent()
click to toggle source
# File lib/simple_trail/manipulation/statistics.rb, line 31 def descent (0..@points.size - 2).map do |i| descent_calc(@points[i], @points[i + 1]) end.inject(:+) end
descent_calc(start, finish)
click to toggle source
# File lib/simple_trail/manipulation/statistics.rb, line 45 def descent_calc(start, finish) [0, start[:ele].to_i - finish[:ele].to_i].max end
distance()
click to toggle source
# File lib/simple_trail/manipulation/statistics.rb, line 18 def distance latlng_points = @points.map { |p| Geokit::LatLng.new(p[:lat], p[:lon]) } (0..@points.size - 2).map do |i| latlng_points[i].distance_to(latlng_points[i + 1]) end.inject(:+) end
time()
click to toggle source
# File lib/simple_trail/manipulation/statistics.rb, line 37 def time Time.parse(@points.last[:time]) - Time.parse(@points.first[:time]) end