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