2006-10-14 15:20:23 +02:00
|
|
|
= GPX Gem
|
2010-02-28 00:13:14 +01:00
|
|
|
|
2006-10-14 15:20:23 +02:00
|
|
|
Copyright (C) 2006 Doug Fales
|
2009-07-07 04:43:17 +02:00
|
|
|
Doug Fales mailto:doug@falesafeconsulting.com
|
2006-10-14 15:20:23 +02:00
|
|
|
|
|
|
|
== What It Does
|
2010-02-28 00:13:14 +01:00
|
|
|
|
2006-10-14 15:20:23 +02:00
|
|
|
This library reads GPX files and provides an API for reading and manipulating
|
|
|
|
the data as objects. For more info on the GPX format, see
|
|
|
|
http://www.topografix.com/gpx.asp.
|
|
|
|
|
|
|
|
In addition to parsing GPX files, this library is capable of converting
|
|
|
|
Magellan NMEA files to GPX, and writing new GPX files. It can crop and delete
|
|
|
|
rectangular areas within a file, and it also calculates some meta-data about
|
|
|
|
the tracks and points in a file (such as distance, duration, average speed,
|
|
|
|
etc).
|
|
|
|
|
|
|
|
== Examples
|
2010-02-28 00:13:14 +01:00
|
|
|
|
2006-10-14 15:20:23 +02:00
|
|
|
Reading a GPX file, and cropping its contents to a given area:
|
2010-02-28 00:13:14 +01:00
|
|
|
<tt>gpx = GPX::GPXFile.new(:gpx_file => filename) # Read GPX file</tt>
|
|
|
|
<tt>bounds = GPX::Bounds.new(params) # Create a rectangular area to crop</tt>
|
|
|
|
<tt>gpx.crop(bounds) # Crop it</tt>
|
|
|
|
<tt>gpx.write(filename) # Save it</tt>
|
2006-10-14 15:20:23 +02:00
|
|
|
|
|
|
|
Converting a Magellan track log to GPX:
|
2010-02-28 00:13:14 +01:00
|
|
|
<tt>if GPX::MagellanTrackLog::is_magellan_file?(filename)</tt>
|
|
|
|
<tt> GPX::MagellanTrackLog::convert_to_gpx(filename, "#{filename}.gpx")</tt>
|
|
|
|
<tt>end</tt>
|
2006-10-14 15:20:23 +02:00
|
|
|
|
|
|
|
|
|
|
|
== Notes
|
2010-02-28 00:13:14 +01:00
|
|
|
|
2006-10-14 15:20:23 +02:00
|
|
|
This library was written to bridge the gap between my Garmin Geko
|
2009-07-07 04:43:17 +02:00
|
|
|
and my website, WalkingBoss.org (RIP). For that reason, it has always been more of a
|
2006-10-14 15:20:23 +02:00
|
|
|
work-in-progress than an attempt at full GPX compliance. The track side of the
|
|
|
|
library has seen much more use than the route/waypoint side, so if you're doing
|
|
|
|
something with routes or waypoints, you may need to tweak some things.
|
|
|
|
|
2006-12-04 07:47:41 +01:00
|
|
|
Since this code uses XML to read an entire GPX file into memory, it is not
|
2006-10-14 15:20:23 +02:00
|
|
|
the fastest possible solution for working with GPX data, especially if you are
|
|
|
|
working with tracks from several days or weeks.
|
|
|
|
|
|
|
|
Finally, it should be noted that none of the distance/speed calculation or
|
|
|
|
crop/delete code has been tested under International Date Line-crossing
|
|
|
|
conditions. That particular part of the code will likely be unreliable if
|
|
|
|
you're zig-zagging across 180 degrees longitude routinely.
|