gpx 0.5 → 0.6
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.
- data/ChangeLog +44 -116
- data/{README → README.rdoc} +5 -2
- data/Rakefile +0 -29
- data/lib/gpx/gpx.rb +1 -1
- data/lib/gpx/gpx_file.rb +37 -21
- data/lib/gpx/waypoint.rb +60 -60
- data/tests/output/myoutput.gpx +755 -0
- data/tests/output/new_gpx_file_from_scratch.gpx +2 -2
- data/tests/output_test.rb +19 -14
- data/tests/track_file_test.rb +1 -1
- metadata +17 -10
data/ChangeLog
CHANGED
|
@@ -1,132 +1,60 @@
|
|
|
1
|
-
|
|
1
|
+
2010-02-27 Doug Fales <doug@falesafeconsulting.com>
|
|
2
|
+
* Putting the gem building stuff into a gemspec.
|
|
3
|
+
* Fixing some tests since git does not believe in empty directories.
|
|
4
|
+
* Fixing README formatting.
|
|
2
5
|
|
|
3
|
-
|
|
6
|
+
2010-02-27 Doug Fales <doug@falesafeconsulting.com>
|
|
7
|
+
* README edits.
|
|
8
|
+
* More rdoc tweaks.
|
|
9
|
+
* Changing README to rdoc ext for github.
|
|
4
10
|
|
|
5
|
-
2009-
|
|
11
|
+
2009-10-13 Doug Fales <doug@falesafeconsulting.com>
|
|
12
|
+
* Adding the ability to write GPX to a string in addition to a file. Thanks to Douglas Robertson for the patch.
|
|
6
13
|
|
|
7
|
-
|
|
14
|
+
2009-09-27 Doug Fales <doug@falesafeconsulting.com>
|
|
15
|
+
* Adding a patch from Douglas Robertson that allows using version 1.0 of the schema for output.
|
|
8
16
|
|
|
9
|
-
2009-07-07
|
|
17
|
+
2009-07-07 Doug Fales <doug@falesafeconsulting.com>
|
|
18
|
+
* Adding changelog.
|
|
19
|
+
* Revving to version 0.5.
|
|
20
|
+
* Changing my contact email address.
|
|
21
|
+
* Patches from Tom Verbeure (mtbguru.com) to work with libxml-ruby 1.x.
|
|
10
22
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
Verbeure (mtbguru.com) to work with libxml-ruby 1.x.
|
|
23
|
+
2009-06-17 Doug Fales <doug@falesafeconsulting.com>
|
|
24
|
+
* Patch from Kang-min Liu to support speed element.
|
|
14
25
|
|
|
15
|
-
|
|
26
|
+
2008-02-19 Doug Fales <doug@falesafeconsulting.com>
|
|
27
|
+
* Revving to 0.4.
|
|
28
|
+
* Adding some new unit tests and fixing several file export bugs reported by Jochen Topf. New unit tests also uncovered a bug where the number of trackpoints reported in a file was twice the actual number.
|
|
16
29
|
|
|
17
|
-
|
|
18
|
-
|
|
30
|
+
2008-02-11 Doug Fales <doug@falesafeconsulting.com>
|
|
31
|
+
* Going to version 0.3.
|
|
32
|
+
* Updating unit tests in light of recent fixes to routes and waypoints code.
|
|
19
33
|
|
|
20
|
-
2008-02-
|
|
34
|
+
2008-02-08 Doug Fales <doug@falesafeconsulting.com>
|
|
35
|
+
* Thanks to Mike Gauland for discovering some route- and waypoint-related bugs. I've fixed them and also added #to_s on Waypoint so it's easier to debug.
|
|
21
36
|
|
|
22
|
-
|
|
37
|
+
2007-12-04 Doug Fales <doug@falesafeconsulting.com>
|
|
38
|
+
* Thanks to Christian Koerner for finding and fixing these bugs in the waypoint code.
|
|
39
|
+
* Another patch from Gaku Ueda. This one allows you to pass in a string of GPX data using the :gpx_date => option. Thanks Gaku!
|
|
23
40
|
|
|
24
|
-
|
|
41
|
+
2007-11-30 Doug Fales <doug@falesafeconsulting.com>
|
|
42
|
+
* Updating the version #.
|
|
43
|
+
* Updates courtesy of Gaku Ueda: * Adding support for GPX 1.0 as well as 1.1 (since libxml namespace parsing was hard-coded to 1.1. previously). * Adding a GPX 1.0 unit test file. * Miscellaneous updates to make it work with Ruby 1.8.6.
|
|
25
44
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
tests/gpx_file_test.rb, tests/gpx_files, tests/gpx_files/big.gpx,
|
|
29
|
-
tests/output, tests/output_test.rb, tests/track_test.rb: Adding
|
|
30
|
-
some new unit tests and fixing several file export bugs reported
|
|
31
|
-
by Jochen Topf.
|
|
32
|
-
New unit tests also uncovered a bug where the number of
|
|
33
|
-
trackpoints reported in a file was twice the actual number.
|
|
45
|
+
2006-12-04 Doug Fales <doug@falesafeconsulting.com>
|
|
46
|
+
* First stab at using libxml-ruby instead of REXML. I'm seeing the unit tests finish in under 14 seconds. That is compared to 2 minutes using REXML.
|
|
34
47
|
|
|
35
|
-
|
|
48
|
+
2006-12-03 Doug Fales <doug@falesafeconsulting.com>
|
|
49
|
+
* Fixing more nil time exceptions.
|
|
50
|
+
* Fixing an exception in contains_time?.
|
|
36
51
|
|
|
37
|
-
|
|
52
|
+
2006-11-28 Doug Fales <doug@falesafeconsulting.com>
|
|
53
|
+
* A couple of fixes to make the library comply with the different attribute names possible on the bounds element.
|
|
38
54
|
|
|
39
|
-
|
|
55
|
+
2006-10-28 Doug Fales <doug@falesafeconsulting.com>
|
|
56
|
+
* Fixing nil time bug.
|
|
40
57
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
tests/route_test.rb, tests/segment_test.rb,
|
|
44
|
-
tests/track_file_test.rb, tests/track_test.rb,
|
|
45
|
-
tests/waypoint_test.rb: Updating unit tests in light of recent
|
|
46
|
-
fixes to routes and waypoints code.
|
|
47
|
-
|
|
48
|
-
2008-02-08 23:26 dougfales
|
|
49
|
-
|
|
50
|
-
* lib/gpx/gpx.rb, lib/gpx/point.rb, lib/gpx/route.rb,
|
|
51
|
-
lib/gpx/waypoint.rb: Thanks to Mike Gauland for discovering some
|
|
52
|
-
route- and waypoint-related bugs. I've fixed them and also added
|
|
53
|
-
#to_s on Waypoint so it's easier to debug.
|
|
54
|
-
|
|
55
|
-
2007-12-04 17:58 dougfales
|
|
56
|
-
|
|
57
|
-
* lib/gpx/waypoint.rb: Thanks to Christian Koerner for finding and
|
|
58
|
-
fixing these bugs in the waypoint
|
|
59
|
-
code.
|
|
60
|
-
|
|
61
|
-
2007-12-04 17:52 dougfales
|
|
62
|
-
|
|
63
|
-
* lib/gpx/gpx_file.rb, tests/gpx_file_test.rb: Another patch from
|
|
64
|
-
Gaku Ueda. This one allows you to pass in a string of GPX
|
|
65
|
-
data using the :gpx_date => option. Thanks Gaku!
|
|
66
|
-
|
|
67
|
-
2007-11-30 06:29 dougfales
|
|
68
|
-
|
|
69
|
-
* lib/gpx/gpx.rb: Updating the version #.
|
|
70
|
-
|
|
71
|
-
2007-11-30 06:26 dougfales
|
|
72
|
-
|
|
73
|
-
* lib/gpx/gpx.rb, lib/gpx/gpx_file.rb, lib/gpx/point.rb,
|
|
74
|
-
lib/gpx/route.rb, lib/gpx/segment.rb, lib/gpx/track.rb,
|
|
75
|
-
tests/gpx10_test.rb, tests/gpx_files/gpx10.gpx: Updates courtesy
|
|
76
|
-
of Gaku Ueda:
|
|
77
|
-
* Adding support for GPX 1.0 as well as 1.1 (since libxml
|
|
78
|
-
namespace parsing
|
|
79
|
-
was hard-coded to 1.1. previously).
|
|
80
|
-
* Adding a GPX 1.0 unit test file.
|
|
81
|
-
* Miscellaneous updates to make it work with Ruby 1.8.6.
|
|
82
|
-
|
|
83
|
-
2006-12-04 06:47 dougfales
|
|
84
|
-
|
|
85
|
-
* README, lib/gpx.rb, lib/gpx/bounds.rb, lib/gpx/gpx.rb,
|
|
86
|
-
lib/gpx/gpx_file.rb, lib/gpx/point.rb, lib/gpx/route.rb,
|
|
87
|
-
lib/gpx/segment.rb, lib/gpx/track.rb, lib/gpx/waypoint.rb,
|
|
88
|
-
tests/segment_test.rb: First stab at using libxml-ruby instead of
|
|
89
|
-
REXML. I'm seeing the unit tests
|
|
90
|
-
finish in under 14 seconds. That is compared to 2 minutes using
|
|
91
|
-
REXML.
|
|
92
|
-
|
|
93
|
-
2006-12-03 07:31 dougfales
|
|
94
|
-
|
|
95
|
-
* lib/gpx/point.rb, lib/gpx/segment.rb: Fixing more nil time
|
|
96
|
-
exceptions.
|
|
97
|
-
|
|
98
|
-
2006-12-03 06:59 dougfales
|
|
99
|
-
|
|
100
|
-
* lib/gpx/segment.rb: Fixing an exception in contains_time?.
|
|
101
|
-
|
|
102
|
-
2006-11-28 15:35 dougfales
|
|
103
|
-
|
|
104
|
-
* lib/gpx/bounds.rb, lib/gpx/gpx_file.rb: A couple of fixes to make
|
|
105
|
-
the library comply with the different attribute names
|
|
106
|
-
possible on the bounds element.
|
|
107
|
-
|
|
108
|
-
Formerly, a bounds element with a minlat or minLat attribute
|
|
109
|
-
(instead of
|
|
110
|
-
min_lat) would not be properly parsed. Now all three styles of
|
|
111
|
-
attribute name
|
|
112
|
-
are accepted.
|
|
113
|
-
|
|
114
|
-
2006-10-28 22:09 dougfales
|
|
115
|
-
|
|
116
|
-
* lib/gpx/segment.rb: Fixing nil time bug.
|
|
117
|
-
|
|
118
|
-
2006-10-14 13:20 dougfales
|
|
119
|
-
|
|
120
|
-
* ., README, Rakefile, bin, docs, lib, lib/gpx, lib/gpx.rb,
|
|
121
|
-
lib/gpx/bounds.rb, lib/gpx/gpx.rb, lib/gpx/gpx_file.rb,
|
|
122
|
-
lib/gpx/magellan_track_log.rb, lib/gpx/point.rb,
|
|
123
|
-
lib/gpx/route.rb, lib/gpx/segment.rb, lib/gpx/track.rb,
|
|
124
|
-
lib/gpx/trackpoint.rb, lib/gpx/waypoint.rb, tests,
|
|
125
|
-
tests/gpx_files, tests/gpx_files/arches.gpx,
|
|
126
|
-
tests/gpx_files/magellan_track.log,
|
|
127
|
-
tests/gpx_files/one_segment.gpx, tests/gpx_files/one_track.gpx,
|
|
128
|
-
tests/gpx_files/routes.gpx, tests/gpx_files/tracks.gpx,
|
|
129
|
-
tests/gpx_files/waypoints.gpx, tests/magellan_test.rb,
|
|
130
|
-
tests/segment_test.rb, tests/track_file_test.rb,
|
|
131
|
-
tests/track_test.rb: Initial import of gpx gem.
|
|
58
|
+
2006-10-14 Doug Fales <doug@falesafeconsulting.com>
|
|
59
|
+
* Initial import of gpx gem.
|
|
132
60
|
|
data/{README → README.rdoc}
RENAMED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
= GPX Gem
|
|
2
|
-
|
|
3
|
-
Doug Fales mailto:doug@falesafeconsulting.com
|
|
2
|
+
|
|
3
|
+
Copyright (C) 2006 Doug Fales mailto:doug@falesafeconsulting.com
|
|
4
4
|
|
|
5
5
|
== What It Does
|
|
6
|
+
|
|
6
7
|
This library reads GPX files and provides an API for reading and manipulating
|
|
7
8
|
the data as objects. For more info on the GPX format, see
|
|
8
9
|
http://www.topografix.com/gpx.asp.
|
|
@@ -14,6 +15,7 @@ the tracks and points in a file (such as distance, duration, average speed,
|
|
|
14
15
|
etc).
|
|
15
16
|
|
|
16
17
|
== Examples
|
|
18
|
+
|
|
17
19
|
Reading a GPX file, and cropping its contents to a given area:
|
|
18
20
|
gpx = GPX::GPXFile.new(:gpx_file => filename) # Read GPX file
|
|
19
21
|
bounds = GPX::Bounds.new(params) # Create a rectangular area to crop
|
|
@@ -27,6 +29,7 @@ Converting a Magellan track log to GPX:
|
|
|
27
29
|
|
|
28
30
|
|
|
29
31
|
== Notes
|
|
32
|
+
|
|
30
33
|
This library was written to bridge the gap between my Garmin Geko
|
|
31
34
|
and my website, WalkingBoss.org (RIP). For that reason, it has always been more of a
|
|
32
35
|
work-in-progress than an attempt at full GPX compliance. The track side of the
|
data/Rakefile
CHANGED
|
@@ -42,35 +42,6 @@ Rake::RDocTask.new("doc") { |rdoc|
|
|
|
42
42
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
-
# Genereate the package
|
|
46
|
-
spec = Gem::Specification.new do |s|
|
|
47
|
-
|
|
48
|
-
s.name = 'gpx'
|
|
49
|
-
s.version = PKG_VERSION
|
|
50
|
-
s.summary = <<-EOF
|
|
51
|
-
A basic API for reading and writing GPX files.
|
|
52
|
-
EOF
|
|
53
|
-
s.description = <<-EOF
|
|
54
|
-
A basic API for reading and writing GPX files.
|
|
55
|
-
EOF
|
|
56
|
-
|
|
57
|
-
s.files = PKG_FILES
|
|
58
|
-
|
|
59
|
-
s.require_path = 'lib'
|
|
60
|
-
s.autorequire = 'gpx'
|
|
61
|
-
|
|
62
|
-
s.has_rdoc = true
|
|
63
|
-
|
|
64
|
-
s.author = "Doug Fales"
|
|
65
|
-
s.email = "doug.fales@gmail.com"
|
|
66
|
-
s.homepage = "http://gpx.rubyforge.com/"
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
Rake::GemPackageTask.new(spec) do |pkg|
|
|
70
|
-
pkg.need_zip = true
|
|
71
|
-
pkg.need_tar = true
|
|
72
|
-
end
|
|
73
|
-
|
|
74
45
|
desc "Report code statistics (KLOCs, etc) from the application"
|
|
75
46
|
task :stats do
|
|
76
47
|
require 'code_statistics'
|
data/lib/gpx/gpx.rb
CHANGED
data/lib/gpx/gpx_file.rb
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
#++
|
|
23
23
|
module GPX
|
|
24
24
|
class GPXFile < Base
|
|
25
|
-
attr_accessor :tracks, :routes, :waypoints, :bounds, :lowest_point, :highest_point, :duration, :ns, :time, :name
|
|
25
|
+
attr_accessor :tracks, :routes, :waypoints, :bounds, :lowest_point, :highest_point, :duration, :ns, :version, :time, :name
|
|
26
26
|
|
|
27
27
|
|
|
28
28
|
# This initializer can be used to create a new GPXFile from an existing
|
|
@@ -205,41 +205,57 @@ module GPX
|
|
|
205
205
|
# Serialize the current GPXFile to a gpx file named <filename>.
|
|
206
206
|
# If the file does not exist, it is created. If it does exist, it is overwritten.
|
|
207
207
|
def write(filename, update_time = true)
|
|
208
|
+
@time = Time.now if(@time.nil? or update_time)
|
|
209
|
+
@name ||= File.basename(filename)
|
|
210
|
+
doc = generate_xml_doc
|
|
211
|
+
doc.save(filename, :indent => true)
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
def to_s(update_time = true)
|
|
215
|
+
@time = Time.now if(@time.nil? or update_time)
|
|
216
|
+
doc = generate_xml_doc
|
|
217
|
+
doc.to_s
|
|
218
|
+
end
|
|
208
219
|
|
|
220
|
+
private
|
|
221
|
+
def generate_xml_doc
|
|
209
222
|
doc = Document.new
|
|
210
223
|
doc.root = Node.new('gpx')
|
|
211
224
|
gpx_elem = doc.root
|
|
212
|
-
gpx_elem['xmlns:xsi'] = "http://www.w3.org/2001/XMLSchema-instance"
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
gpx_elem['
|
|
216
|
-
gpx_elem['
|
|
225
|
+
gpx_elem['xmlns:xsi'] = "http://www.w3.org/2001/XMLSchema-instance"
|
|
226
|
+
@version = '1.1' if (@version.nil? || !(['1.0', '1.1'].include?(@version))) # default to version 1.1 of the schema (only version 1.0 and 1.1 of the schema exist)
|
|
227
|
+
version_dir = @version.gsub('.','/')
|
|
228
|
+
gpx_elem['xmlns'] = @ns || "http://www.topografix.com/GPX/#{version_dir}"
|
|
229
|
+
gpx_elem['version'] = "#{@version}"
|
|
230
|
+
gpx_elem['creator'] = "GPX RubyGem #{GPX::VERSION} Copyright 2006-2009 Doug Fales -- http://gpx.rubyforge.org/"
|
|
231
|
+
gpx_elem['xsi:schemaLocation'] = "http://www.topografix.com/GPX/#{version_dir} http://www.topografix.com/GPX/#{version_dir}/gpx.xsd"
|
|
217
232
|
|
|
218
|
-
|
|
233
|
+
# setup the metadata elements
|
|
219
234
|
name_elem = Node.new('name')
|
|
220
|
-
name_elem <<
|
|
221
|
-
meta_data_elem << name_elem
|
|
222
|
-
|
|
235
|
+
name_elem << @name
|
|
223
236
|
time_elem = Node.new('time')
|
|
237
|
+
time_elem << @time.xmlschema
|
|
224
238
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
239
|
+
# version 1.0 of the schema doesn't support the metadata element, so push them straight to the root 'gpx' element
|
|
240
|
+
if (@version == '1.0') then
|
|
241
|
+
gpx_elem << name_elem
|
|
242
|
+
gpx_elem << time_elem
|
|
243
|
+
gpx_elem << bounds.to_xml
|
|
244
|
+
else
|
|
245
|
+
meta_data_elem = Node.new('metadata')
|
|
246
|
+
meta_data_elem << name_elem
|
|
247
|
+
meta_data_elem << time_elem
|
|
248
|
+
meta_data_elem << bounds.to_xml
|
|
249
|
+
gpx_elem << meta_data_elem
|
|
250
|
+
end
|
|
233
251
|
|
|
234
252
|
tracks.each { |t| gpx_elem << t.to_xml } unless tracks.nil?
|
|
235
253
|
waypoints.each { |w| gpx_elem << w.to_xml } unless waypoints.nil?
|
|
236
254
|
routes.each { |r| gpx_elem << r.to_xml } unless routes.nil?
|
|
237
255
|
|
|
238
|
-
doc
|
|
256
|
+
return doc
|
|
239
257
|
end
|
|
240
258
|
|
|
241
|
-
private
|
|
242
|
-
|
|
243
259
|
# Calculates and sets the duration attribute by subtracting the time on
|
|
244
260
|
# the very first point from the time on the very last point.
|
|
245
261
|
def calculate_duration
|
data/lib/gpx/waypoint.rb
CHANGED
|
@@ -23,74 +23,74 @@
|
|
|
23
23
|
|
|
24
24
|
module GPX
|
|
25
25
|
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
26
|
+
# This class supports the concept of a waypoint. Beware that this class has
|
|
27
|
+
# not seen much use yet, since WalkingBoss does not use waypoints right now.
|
|
28
|
+
class Waypoint < Point
|
|
29
29
|
|
|
30
|
-
|
|
30
|
+
SUB_ELEMENTS = %w{ magvar geoidheight name cmt desc src link sym type fix sat hdop vdop pdop ageofdgpsdata dgpsid extensions }
|
|
31
31
|
|
|
32
|
-
|
|
33
|
-
|
|
32
|
+
attr_reader :gpx_file
|
|
33
|
+
SUB_ELEMENTS.each { |sub_el| attr_accessor sub_el.to_sym }
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
# Not implemented
|
|
36
|
+
def crop(area)
|
|
37
|
+
end
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
# Not implemented
|
|
40
|
+
def delete_area(area)
|
|
41
|
+
end
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
end
|
|
43
|
+
# Initializes a waypoint from a XML::Node.
|
|
44
|
+
def initialize(opts = {})
|
|
45
|
+
if(opts[:element] and opts[:gpx_file])
|
|
46
|
+
wpt_elem = opts[:element]
|
|
47
|
+
@gpx_file = opts[:gpx_file]
|
|
48
|
+
super(:element => wpt_elem, :gpx_file => @gpx_file)
|
|
49
|
+
instantiate_with_text_elements(wpt_elem, SUB_ELEMENTS, @gpx_file.ns)
|
|
50
|
+
else
|
|
51
|
+
opts.each do |key, value|
|
|
52
|
+
assignment_method = "#{key}="
|
|
53
|
+
if self.respond_to?(assignment_method)
|
|
54
|
+
self.send(assignment_method, value)
|
|
55
|
+
end
|
|
56
|
+
end
|
|
58
57
|
end
|
|
58
|
+
end
|
|
59
59
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
end
|
|
73
|
-
result
|
|
60
|
+
# Prints out a friendly summary of this track (sans points). Useful for
|
|
61
|
+
# debugging and sanity checks.
|
|
62
|
+
def to_s
|
|
63
|
+
result = "Waypoint \n"
|
|
64
|
+
result << "\tName: #{name}\n"
|
|
65
|
+
result << "\tLatitude: #{lat} \n"
|
|
66
|
+
result << "\tLongitude: #{lon} \n"
|
|
67
|
+
result << "\tElevation: #{elevation}\n "
|
|
68
|
+
result << "\tTime: #{time}\n"
|
|
69
|
+
SUB_ELEMENTS.each do |sub_element_attribute|
|
|
70
|
+
val = self.send(sub_element_attribute)
|
|
71
|
+
result << "\t#{sub_element_attribute}: #{val}\n" unless val.nil?
|
|
74
72
|
end
|
|
73
|
+
result
|
|
74
|
+
end
|
|
75
75
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
end
|
|
93
|
-
wpt
|
|
76
|
+
# Converts a waypoint to a XML::Node.
|
|
77
|
+
def to_xml(elem_name = 'wpt')
|
|
78
|
+
wpt = Node.new(elem_name)
|
|
79
|
+
wpt['lat'] = lat.to_s
|
|
80
|
+
wpt['lon'] = lon.to_s
|
|
81
|
+
SUB_ELEMENTS.each do |sub_element_name|
|
|
82
|
+
if(self.respond_to?(sub_element_name) and (!self.send(sub_element_name).nil?))
|
|
83
|
+
sub_elem_node = Node.new(sub_element_name)
|
|
84
|
+
sub_elem_node << self.send(sub_element_name)
|
|
85
|
+
wpt << sub_elem_node
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
unless(self.elevation.nil?)
|
|
89
|
+
ele_node = Node.new('ele')
|
|
90
|
+
ele_node << self.elevation
|
|
91
|
+
wpt << ele_node
|
|
94
92
|
end
|
|
95
|
-
|
|
93
|
+
wpt
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
96
|
end
|