Patch from Kang-min Liu to support speed element.

master
Doug Fales 2009-06-17 14:20:26 +00:00
parent 9250b0ce45
commit 73ea9e6309
1 changed files with 5 additions and 3 deletions

View File

@ -1,5 +1,5 @@
#-- #--
# Copyright (c) 2006 Doug Fales # Copyright (c) 2006 Doug Fales
# #
# Permission is hereby granted, free of charge, to any person obtaining # Permission is hereby granted, free of charge, to any person obtaining
# a copy of this software and associated documentation files (the # a copy of this software and associated documentation files (the
@ -25,7 +25,7 @@ module GPX
# The base class for all points. Trackpoint and Waypoint both descend from this base class. # The base class for all points. Trackpoint and Waypoint both descend from this base class.
class Point < Base class Point < Base
D_TO_R = PI/180.0; D_TO_R = PI/180.0;
attr_accessor :lat, :lon, :time, :elevation, :gpx_file attr_accessor :lat, :lon, :time, :elevation, :gpx_file, :speed
# When you need to manipulate individual points, you can create a Point # When you need to manipulate individual points, you can create a Point
# object with a latitude, a longitude, an elevation, and a time. In # object with a latitude, a longitude, an elevation, and a time. In
@ -33,18 +33,20 @@ module GPX
# relevant info will be parsed out. # relevant info will be parsed out.
def initialize(opts = {:lat => 0.0, :lon => 0.0, :elevation => 0.0, :time => Time.now } ) def initialize(opts = {:lat => 0.0, :lon => 0.0, :elevation => 0.0, :time => Time.now } )
@gpx_file = opts[:gpx_file] @gpx_file = opts[:gpx_file]
if (opts[:element]) if (opts[:element])
elem = opts[:element] elem = opts[:element]
@lat, @lon = elem["lat"].to_f, elem["lon"].to_f @lat, @lon = elem["lat"].to_f, elem["lon"].to_f
@latr, @lonr = (D_TO_R * @lat), (D_TO_R * @lon) @latr, @lonr = (D_TO_R * @lat), (D_TO_R * @lon)
#'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)? #'-'? yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?
@time = (Time.xmlschema(elem.find("gpx:time", @gpx_file.ns).first.content) rescue nil) @time = (Time.xmlschema(elem.find("gpx:time", @gpx_file.ns).first.content) rescue nil)
@elevation = elem.find("gpx:ele", @gpx_file.ns).first.content.to_f unless elem.find("gpx:ele", @gpx_file.ns).empty? @elevation = elem.find("gpx:ele", @gpx_file.ns).first.content.to_f unless elem.find("gpx:ele", @gpx_file.ns).empty?
@speed = elem.find("gpx:speed", @gpx_file.ns).first.content.to_f unless elem.find("gpx:speed", @gpx_file.ns).empty?
else else
@lat = opts[:lat] @lat = opts[:lat]
@lon = opts[:lon] @lon = opts[:lon]
@elevation = opts[:elevation] @elevation = opts[:elevation]
@time = opts[:time] @time = opts[:time]
@speed = opts[:speed]
end end
end end