include LibXML
- attr_reader :possible_points
- attr_reader :actual_points
- attr_reader :tracksegs
+ attr_reader :possible_points, :actual_points, :tracksegs
def initialize(file)
@file = file
point = nil
while reader.read
- if reader.node_type == XML::Reader::TYPE_ELEMENT
+ case reader.node_type
+ when XML::Reader::TYPE_ELEMENT
if reader.name == "trkpt"
point = TrkPt.new(@tracksegs, reader["lat"].to_f, reader["lon"].to_f)
@possible_points += 1
elsif reader.name == "time" && point
point.timestamp = Time.parse(reader.read_string)
end
- elsif reader.node_type == XML::Reader::TYPE_END_ELEMENT
+ when XML::Reader::TYPE_END_ELEMENT
if reader.name == "trkpt" && point && point.valid?
point.altitude ||= 0
yield point
rescue Archive::Error
io = ::File.open(@file)
- case MimeMagic.by_magic(io).type
+ case MimeMagic.by_magic(io)&.type
when "application/gzip" then io = Zlib::GzipReader.open(@file)
when "application/x-bzip" then io = Bzip2::FFI::Reader.open(@file)
end
height = 250
delay = 50
- points_per_frame = num_points / nframes
+ points_per_frame = (num_points.to_f / nframes).ceil
proj = OSM::Mercator.new(min_lat, min_lon, max_lat, max_lon, width, height)