gpx 0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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
+