gpx 0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ <?xml version="1.0" encoding="UTF-8"?><gpx xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.topografix.com/GPX/1/1" version="1.1" creator="Link2GPS - 2.0.2 - http://www.hiketech.com" xsi:schemaLocation="ttp://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd"><metadata><name><![CDATA[waypoints.gpx]]></name><time>2006-01-02T08:55:21Z</time><bounds min_lat="25.061783" min_lon="-111.946110" max_lat="50.982883" max_lon="121.640267"/></metadata><extensions/><wpt lat="40.035557" lon="-105.248268"><name><![CDATA[001]]></name><sym>Waypoint</sym><ele>1639.161</ele></wpt><wpt lat="39.993070" lon="-105.296588"><name><![CDATA[002]]></name><sym>Waypoint</sym><ele>1955.192</ele></wpt><wpt lat="39.990151" lon="-105.295680"><name><![CDATA[003]]></name><sym>Waypoint</sym><ele>2129.91</ele></wpt><wpt lat="39.990157" lon="-105.295686"><name><![CDATA[004]]></name><sym>Waypoint</sym><ele>2136.399</ele></wpt><wpt lat="39.990134" lon="-105.295251"><name><![CDATA[005]]></name><sym>Waypoint</sym><ele>2174.612</ele></wpt><wpt lat="39.990116" lon="-105.295147"><name><![CDATA[006]]></name><sym>Waypoint</sym><ele>2156.106</ele></wpt><wpt lat="39.990099" lon="-105.295207"><name><![CDATA[007]]></name><sym>Waypoint</sym><ele>2155.145</ele></wpt><wpt lat="39.990067" lon="-105.295185"><name><![CDATA[008]]></name><sym>Waypoint</sym><ele>2152.021</ele></wpt><wpt lat="39.995700" lon="-105.292805"><name><![CDATA[AMPTHT]]></name><sym>Waypoint</sym><ele>1854.735</ele></wpt><wpt lat="38.855550" lon="-94.799017"><name><![CDATA[GARMIN]]></name><sym>Waypoint</sym><ele>325.0491</ele></wpt><wpt lat="39.997298" lon="-105.292674"><name><![CDATA[GRG-CA]]></name><sym>Waypoint</sym><ele>1766.535</ele></wpt><wpt lat="50.982883" lon="-1.463900"><name><![CDATA[GRMEUR]]></name><sym>Waypoint</sym><ele>35.93469</ele></wpt><wpt lat="33.330190" lon="-111.946110"><name><![CDATA[GRMPHX]]></name><sym>Waypoint</sym><ele>361.0981</ele></wpt><wpt lat="25.061783" lon="121.640267"><name><![CDATA[GRMTWN]]></name><sym>Waypoint</sym><ele>38.09766</ele></wpt><wpt lat="39.999840" lon="-105.214696"><name><![CDATA[SBDR]]></name><sym>Waypoint</sym><ele>1612.965</ele></wpt><wpt lat="39.989739" lon="-105.295285"><name><![CDATA[TO]]></name><sym>Waypoint</sym><ele>2163.556</ele></wpt><wpt lat="40.035301" lon="-105.254443"><name><![CDATA[VICS]]></name><sym>Waypoint</sym><ele>1535.34</ele></wpt></gpx>
@@ -0,0 +1,18 @@
1
+ require 'test/unit'
2
+ require File.dirname(__FILE__) + '/../lib/gpx'
3
+
4
+ class TestMagellanTrackLog < Test::Unit::TestCase
5
+ MAGELLAN_TRACK_LOG = File.join(File.dirname(__FILE__), "gpx_files/magellan_track.log")
6
+ GPX_FILE = File.join(File.dirname(__FILE__), "gpx_files/one_segment.gpx")
7
+
8
+ def test_convert
9
+ GPX::MagellanTrackLog.convert_to_gpx(MAGELLAN_TRACK_LOG, "/tmp/gpx_from_magellan.gpx")
10
+ @gpx_file = GPX::GPXFile.new(:gpx_file => "/tmp/gpx_from_magellan.gpx")
11
+ end
12
+
13
+ def test_file_type
14
+ assert(GPX::MagellanTrackLog::is_magellan_file?(MAGELLAN_TRACK_LOG))
15
+ assert(!GPX::MagellanTrackLog::is_magellan_file?(GPX_FILE))
16
+ end
17
+
18
+ end
@@ -0,0 +1,57 @@
1
+ require 'test/unit'
2
+ require File.dirname(__FILE__) + '/../lib/gpx'
3
+
4
+ class TestSegment < Test::Unit::TestCase
5
+ ONE_SEGMENT = File.join(File.dirname(__FILE__), "gpx_files/one_segment.gpx")
6
+
7
+ def setup
8
+ @gpx_file = GPX::GPXFile.new(:gpx_file => ONE_SEGMENT)
9
+ @segment = @gpx_file.tracks.first.segments.first
10
+ end
11
+
12
+ def test_segment_read
13
+ assert_equal(189, @segment.points.size)
14
+ assert_equal("Fri Apr 07 18:12:05 UTC 2006", @segment.earliest_point.time.to_s)
15
+ assert_equal("Fri Apr 07 19:26:31 UTC 2006", @segment.latest_point.time.to_s)
16
+ assert_equal(1334.447, @segment.lowest_point.elevation)
17
+ assert_equal(1480.087, @segment.highest_point.elevation)
18
+ assert_equal("6.98803359528853", @segment.distance.to_s)
19
+ end
20
+
21
+ def test_segment_crop
22
+ crop_rectangle = GPX::Bounds.new( :min_lat=> 39.173000,
23
+ :min_lon=> -109.010000,
24
+ :max_lat=> 39.188000,
25
+ :max_lon=> -108.999000)
26
+ @segment.crop(crop_rectangle)
27
+
28
+ assert_equal(106, @segment.points.size)
29
+ assert_equal("4.11422061733046", @segment.distance.to_s)
30
+ assert_equal("Fri Apr 07 18:37:21 UTC 2006", @segment.earliest_point.time.to_s)
31
+ assert_equal("Fri Apr 07 19:22:32 UTC 2006", @segment.latest_point.time.to_s)
32
+ assert_equal(1407.027, @segment.lowest_point.elevation)
33
+ assert_equal(1480.087, @segment.highest_point.elevation)
34
+ assert_equal(39.173834, @segment.bounds.min_lat)
35
+ assert_equal(-109.009995, @segment.bounds.min_lon)
36
+ assert_equal(39.187868, @segment.bounds.max_lat)
37
+ assert_equal(-108.999546, @segment.bounds.max_lon)
38
+ end
39
+
40
+ def test_segment_delete
41
+ delete_rectangle = GPX::Bounds.new( :min_lat=> 39.173000,
42
+ :min_lon=> -109.010000,
43
+ :max_lat=> 39.188000,
44
+ :max_lon=> -108.999000)
45
+ @segment.delete_area(delete_rectangle)
46
+ assert_equal(83, @segment.points.size)
47
+ assert_equal("3.35967118153605", @segment.distance.to_s)
48
+ assert_equal("Fri Apr 07 18:12:05 UTC 2006", @segment.earliest_point.time.to_s)
49
+ assert_equal("Fri Apr 07 19:26:31 UTC 2006", @segment.latest_point.time.to_s)
50
+ assert_equal(1334.447, @segment.lowest_point.elevation)
51
+ assert_equal(1428.176, @segment.highest_point.elevation)
52
+ assert_equal(39.180572, @segment.bounds.min_lat)
53
+ assert_equal(-109.016604, @segment.bounds.min_lon)
54
+ assert_equal(39.188747, @segment.bounds.max_lat)
55
+ assert_equal(-109.007978, @segment.bounds.max_lon)
56
+ end
57
+ end
@@ -0,0 +1,75 @@
1
+ require 'test/unit'
2
+ require File.dirname(__FILE__) + '/../lib/gpx'
3
+
4
+ class TestTrackFile < Test::Unit::TestCase
5
+ TRACK_FILE = File.join(File.dirname(__FILE__), "gpx_files/tracks.gpx")
6
+ OTHER_TRACK_FILE = File.join(File.dirname(__FILE__), "gpx_files/arches.gpx")
7
+
8
+ def setup
9
+ @track_file = GPX::GPXFile.new(:gpx_file => TRACK_FILE)
10
+ @other_track_file = GPX::GPXFile.new(:gpx_file => OTHER_TRACK_FILE)
11
+ end
12
+
13
+ def test_track_read
14
+ assert_equal(3, @track_file.tracks.size)
15
+ assert_equal("First Track", @track_file.tracks[0].name)
16
+ assert_equal("Second Track", @track_file.tracks[1].name)
17
+ assert_equal("Third Track", @track_file.tracks[2].name)
18
+ end
19
+
20
+ def test_track_segment_and_point_counts
21
+ # One segment with 398 points...
22
+ assert_equal(1, @track_file.tracks[0].segments.size)
23
+ assert_equal(389, @track_file.tracks[0].segments.first.points.size)
24
+
25
+ # One segment with 299 points...
26
+ assert_equal(1, @track_file.tracks[1].segments.size)
27
+ assert_equal(299, @track_file.tracks[1].segments.first.points.size)
28
+
29
+ # Many segments of many different sizes
30
+ segment_sizes = %w{ 2 2 5 4 2 1 197 31 54 1 15 54 19 26 109 18 9 2 8 3 10 23 21 11 25 32 66 21 2 3 3 4 6 4 4 4 3 3 6 6 27 13 2 }
31
+ assert_equal(43, @track_file.tracks[2].segments.size)
32
+ @track_file.tracks[2].segments.each_with_index do |seg, i|
33
+ assert_equal(segment_sizes[i].to_i, seg.points.size)
34
+ end
35
+ last_segment = @track_file.tracks[2].segments.last
36
+ assert_equal(1680.041, last_segment.points.last.elevation)
37
+
38
+
39
+ second_to_last_segment = @track_file.tracks[2].segments[-2]
40
+ assert_equal("2006-01-02T00:00:51Z", second_to_last_segment.points.last.time.strftime("%Y-%m-%dT%H:%M:%SZ"))
41
+ assert_equal(39.998045, second_to_last_segment.points.last.lat)
42
+ assert_equal(-105.292368, second_to_last_segment.points.last.lon)
43
+ end
44
+
45
+ def test_find_nearest_point_by_time
46
+ time = Time.parse("2005-12-31T22:02:01Z")
47
+ pt = @track_file.tracks[0].closest_point(time)
48
+ #puts "pt: #{pt.lat_lon}"
49
+
50
+ end
51
+
52
+ def test_find_distance
53
+ #puts "Distance: #{@other_track_file.distance(:units => 'miles')} miles"
54
+ #puts "Distance: #{@track_file.distance(:units => 'miles')} miles"
55
+ end
56
+ def test_high_low_elevation
57
+ #puts "Lowest: #{@track_file.lowest_point.elevation} m"
58
+ #puts "Highest: #{@track_file.highest_point.elevation} m"
59
+ end
60
+
61
+ def test_duration
62
+ #puts "Duration 1: #{@other_track_file.duration} "
63
+ #puts "Duration 2: #{@track_file.duration} "
64
+ end
65
+
66
+ def test_average_speed
67
+ #puts "Speed 1: #{@other_track_file.average_speed} "
68
+ #puts "Speed 2: #{@track_file.average_speed} "
69
+ end
70
+
71
+ def test_write
72
+ @other_track_file.write("myoutput.gpx")
73
+ end
74
+
75
+ end
@@ -0,0 +1,65 @@
1
+ require 'test/unit'
2
+ require File.dirname(__FILE__) + '/../lib/gpx'
3
+
4
+ class TestTrack < Test::Unit::TestCase
5
+ ONE_TRACK = File.join(File.dirname(__FILE__), "gpx_files/one_track.gpx")
6
+
7
+ def setup
8
+ @gpx_file = GPX::GPXFile.new(:gpx_file => ONE_TRACK)
9
+ @track = @gpx_file.tracks.first
10
+ end
11
+
12
+ def test_track_read
13
+ assert_equal("ACTIVE LOG", @track.name)
14
+ assert_equal( 364, @track.points.size)
15
+ assert_equal(8, @track.segments.size)
16
+ assert_equal("3.07249668492626", @track.distance.to_s)
17
+ assert_equal(1267.155, @track.lowest_point.elevation)
18
+ assert_equal(1594.003, @track.highest_point.elevation)
19
+ assert_equal(38.681488, @track.bounds.min_lat)
20
+ assert_equal(-109.606948, @track.bounds.min_lon)
21
+ assert_equal(38.791759, @track.bounds.max_lat)
22
+ assert_equal(-109.447045, @track.bounds.max_lon)
23
+ end
24
+
25
+ def test_track_crop
26
+ area = GPX::Bounds.new(
27
+ :min_lat => 38.710000,
28
+ :min_lon => -109.600000,
29
+ :max_lat => 38.791759,
30
+ :max_lon => -109.450000)
31
+ @track.crop(area)
32
+ assert_equal("ACTIVE LOG", @track.name)
33
+ assert_equal( 111, @track.points.size)
34
+ assert_equal(4, @track.segments.size)
35
+ assert_equal("1.62136024923607", @track.distance.to_s)
36
+ assert_equal(1557.954, @track.lowest_point.elevation)
37
+ assert_equal(1582.468, @track.highest_point.elevation)
38
+ assert_equal(38.782511, @track.bounds.min_lat)
39
+ assert_equal(-109.599781, @track.bounds.min_lon)
40
+ assert_equal(38.789527, @track.bounds.max_lat)
41
+ assert_equal(-109.594996, @track.bounds.max_lon)
42
+ end
43
+
44
+ def test_track_delete
45
+ area = GPX::Bounds.new(
46
+ :min_lat => 38.710000,
47
+ :min_lon => -109.600000,
48
+ :max_lat => 38.791759,
49
+ :max_lon => -109.450000)
50
+ @track.delete_area(area)
51
+
52
+ #puts @track
53
+ #assert_equal("ACTIVE LOG", @track.name)
54
+ #assert_equal( 111, @track.points.size)
55
+ #assert_equal(4, @track.segments.size)
56
+ #assert_equal("1.62136024923607", @track.distance.to_s)
57
+ #assert_equal(1557.954, @track.lowest_point.elevation)
58
+ #assert_equal(1582.468, @track.highest_point.elevation)
59
+ #assert_equal(38.782511, @track.bounds.min_lat)
60
+ #assert_equal(-109.599781, @track.bounds.min_lon)
61
+ #assert_equal(38.789527, @track.bounds.max_lat)
62
+ #assert_equal(-109.594996, @track.bounds.max_lon)
63
+ end
64
+
65
+ end
metadata ADDED
@@ -0,0 +1,70 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.8.11
3
+ specification_version: 1
4
+ name: gpx
5
+ version: !ruby/object:Gem::Version
6
+ version: "0.1"
7
+ date: 2006-10-14 00:00:00 -06:00
8
+ summary: A basic API for reading and writing GPX files.
9
+ require_paths:
10
+ - lib
11
+ email: doug.fales@gmail.com
12
+ homepage: http://gpx.rubyforge.com/
13
+ rubyforge_project:
14
+ description: A basic API for reading and writing GPX files.
15
+ autorequire: gpx
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: true
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
28
+ authors:
29
+ - Doug Fales
30
+ files:
31
+ - lib/gpx
32
+ - lib/gpx.rb
33
+ - lib/gpx/bounds.rb
34
+ - lib/gpx/gpx.rb
35
+ - lib/gpx/gpx_file.rb
36
+ - lib/gpx/magellan_track_log.rb
37
+ - lib/gpx/point.rb
38
+ - lib/gpx/route.rb
39
+ - lib/gpx/segment.rb
40
+ - lib/gpx/track.rb
41
+ - lib/gpx/trackpoint.rb
42
+ - lib/gpx/waypoint.rb
43
+ - tests/gpx_files
44
+ - tests/magellan_test.rb
45
+ - tests/segment_test.rb
46
+ - tests/track_file_test.rb
47
+ - tests/track_test.rb
48
+ - tests/gpx_files/arches.gpx
49
+ - tests/gpx_files/magellan_track.log
50
+ - tests/gpx_files/one_segment.gpx
51
+ - tests/gpx_files/one_track.gpx
52
+ - tests/gpx_files/routes.gpx
53
+ - tests/gpx_files/tracks.gpx
54
+ - tests/gpx_files/waypoints.gpx
55
+ - Rakefile
56
+ - README
57
+ test_files: []
58
+
59
+ rdoc_options: []
60
+
61
+ extra_rdoc_files: []
62
+
63
+ executables: []
64
+
65
+ extensions: []
66
+
67
+ requirements: []
68
+
69
+ dependencies: []
70
+