Patches from Tom Verbeure (mtbguru.com) to work with libxml-ruby 1.x.
parent
73ea9e6309
commit
cc5aa666bc
|
@ -54,13 +54,12 @@ module GPX
|
|||
gpx_file = gpx_file.name if gpx_file.is_a?(File)
|
||||
@xml = XML::Document.file(gpx_file)
|
||||
else
|
||||
parser = XML::Parser.new
|
||||
parser.string = opts[:gpx_data]
|
||||
parser = XML::Parser.string(opts[:gpx_data])
|
||||
@xml = parser.parse
|
||||
end
|
||||
# set XML namespace for XML find
|
||||
if @xml.root.namespace_node
|
||||
@ns = 'gpx:' + @xml.root.namespace_node.href
|
||||
if @xml.root.namespaces.namespace
|
||||
@ns = 'gpx:' + @xml.root.namespaces.namespace.href
|
||||
else
|
||||
@ns = 'gpx:http://www.topografix.com/GPX/1/1' # default to GPX 1.1
|
||||
end
|
||||
|
@ -197,8 +196,8 @@ module GPX
|
|||
# you modify the GPX data (i.e. by adding or deleting points) and you
|
||||
# want the meta data to accurately reflect the new data.
|
||||
def update_meta_data(trk, get_bounds = true)
|
||||
@lowest_point = trk.lowest_point if(@lowest_point.nil? or trk.lowest_point.elevation < @lowest_point.elevation)
|
||||
@highest_point = trk.highest_point if(@highest_point.nil? or trk.highest_point.elevation > @highest_point.elevation)
|
||||
@lowest_point = trk.lowest_point if(@lowest_point.nil? or (!trk.lowest_point.nil? and trk.lowest_point.elevation < @lowest_point.elevation))
|
||||
@highest_point = trk.highest_point if(@highest_point.nil? or (!trk.highest_point.nil? and trk.highest_point.elevation > @highest_point.elevation))
|
||||
@bounds.add(trk.bounds) if get_bounds
|
||||
@distance += trk.distance
|
||||
end
|
||||
|
@ -236,7 +235,7 @@ module GPX
|
|||
waypoints.each { |w| gpx_elem << w.to_xml } unless waypoints.nil?
|
||||
routes.each { |r| gpx_elem << r.to_xml } unless routes.nil?
|
||||
|
||||
doc.save(filename, true)
|
||||
doc.save(filename, :indent => true)
|
||||
end
|
||||
|
||||
private
|
||||
|
|
|
@ -4,6 +4,7 @@ require File.dirname(__FILE__) + '/../lib/gpx'
|
|||
class GPXFileTest < Test::Unit::TestCase
|
||||
|
||||
ONE_TRACK_FILE = File.join(File.dirname(__FILE__), "gpx_files/one_track.gpx")
|
||||
WITH_OR_WITHOUT_ELEV_FILE = File.join(File.dirname(__FILE__), "gpx_files/with_or_without_elev.gpx")
|
||||
BIG_FILE = File.join(File.dirname(__FILE__), "gpx_files/big.gpx")
|
||||
|
||||
def test_load_data_from_string
|
||||
|
@ -38,4 +39,10 @@ class GPXFileTest < Test::Unit::TestCase
|
|||
assert_equal(7968, gpx_file.tracks.first.points.size)
|
||||
end
|
||||
|
||||
def test_with_or_with_elev
|
||||
gpx_file = GPX::GPXFile.new(:gpx_file => WITH_OR_WITHOUT_ELEV_FILE)
|
||||
assert_equal(2, gpx_file.tracks.size)
|
||||
#assert_equal(7968, gpx_file.tracks.first.points.size)
|
||||
end
|
||||
|
||||
end
|
||||
|
|
|
@ -0,0 +1,29 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
|
||||
<gpx xmlns="http://www.topografix.com/GPX/1/1" creator="MapSource 6.5" version="1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd">
|
||||
|
||||
<metadata>
|
||||
<link href="http://www.garmin.com">
|
||||
<text>Garmin International</text>
|
||||
</link>
|
||||
<time>2007-04-16T18:11:47Z</time>
|
||||
<bounds maxlat="40.207429" maxlon="116.670578" minlat="39.876895" minlon="101.636217"/>
|
||||
</metadata>
|
||||
|
||||
<trk>
|
||||
<name>ACTIVE LOG</name>
|
||||
<trkseg>
|
||||
<trkpt lat="40.079434" lon="116.295948">
|
||||
<ele>50.606567</ele>
|
||||
<time>2007-03-25T05:17:34Z</time>
|
||||
</trkpt>
|
||||
</trkseg>
|
||||
</trk>
|
||||
|
||||
<trk>
|
||||
<name>LINE-13</name>
|
||||
<trkseg>
|
||||
<trkpt lat="39.949744" lon="116.427398"/>
|
||||
</trkseg>
|
||||
</trk>
|
||||
|
||||
</gpx>
|
Loading…
Reference in New Issue