class Parser::Gpx

Attributes

parsed_file[R]
points[R]
simplified_points[R]

Public Class Methods

new(filename) click to toggle source
# File lib/simple_trail/parser/gpx.rb, line 7
def initialize(filename)
  @filename = filename
end

Public Instance Methods

meta() click to toggle source
# File lib/simple_trail/parser/gpx.rb, line 18
def meta
  @meta ||= extract_data
end
read() click to toggle source
# File lib/simple_trail/parser/gpx.rb, line 11
def read
  file = File.new(@filename)
  @parsed_file = XmlHasher.parse(file)[:gpx]
  fail unless @parsed_file
  extract_points
end

Private Instance Methods

extract_data() click to toggle source
# File lib/simple_trail/parser/gpx.rb, line 30
def extract_data
  metadata = @parsed_file[:metadata]
  {
    name: metadata[:name],
    author: metadata[:author][:name]
  }
end
extract_points() click to toggle source
# File lib/simple_trail/parser/gpx.rb, line 24
def extract_points
  segments = @parsed_file.dig(:trk, :trkseg)
  @points = segments.is_a?(Array) ? segments.map { |seg| seg[:trkpt] }.flatten : segments[:trkpt]
  @simplified_points = @points.map { |point| point.select { |key, _| [:lon, :lat].include? key } }
end