Differences between revisions 11 and 12
Revision 11 as of 2011-02-16 08:17:59
Size: 3096
Editor: SamatJain
Comment: Add list of known issues; describe output
Revision 12 as of 2011-04-23 10:24:30
Size: 3096
Editor: SamatJain
Comment:
Deletions are marked like this. Additions are marked like this.
Line 22: Line 22:
 * v0.2 15 Feb 2011 Bug fixes. Works with both GPX 1.0 and 1.1, tracks without timestamps. Thanks malenki!
 * v0.1 28 Jan 2011 First release (not really kept public)
 * v0.2 15 Feb 2011 Bug fixes. Works with both GPX 1.0 and 1.1, tracks without timestamps. Thanks malenki!
 * v0.1 28 Jan 2011 First release (not really kept public)

gpxsplitter splits multi-track GPX files, containing waypoints, into individual one-track GPX files with their respective waypoints.

GPX files containing multiple tracks and waypoints jumbled together are produced on export by many GPS units, particularly MTK chipset-based devices such as the Qstarz Q1000 and Transystem i-Blue 474. Separating tracks and their associated waypoints was a headache until gpxsplitter came along.

Each file will be output and named according to the last timestamp of the track. The last modified time will also be set on the file to make organizing tracks on a filesystem level that much easier.

gpxsplitter depends on the Python 2.6 (or above in the 2.x series) and the modules:

  • lxml
  • mxDateTime

On Debian/Ubuntu, you can install the required dependencies with:

sudo aptitude install python-lxml python-egenix-mxdatetime

Download gpxsplitter.py directly (this link will always download the latest version), or browse the gpxsplitter repository on Gitorious.

Changelog

  • v0.2 – 15 Feb 2011 – Bug fixes. Works with both GPX 1.0 and 1.1, tracks without timestamps. Thanks malenki!
  • v0.1 – 28 Jan 2011 – First release (not really kept public)

Other programs

I found a few pre-existing programs that perform the same, or similar function:

  • gpxsplit is a Haskell/Haxml-based GPX file splitter. On Ubuntu, required some 360 MB of dependencies (Haskell compilers, libraries, etc).

  • gpxmgr is a Python/minidom-based GPX file splitter. Python's minidom is known for being notoriously slow.

Neither preserve waypoints, a discerning GpxSplitter feature. As you can see in Benchmarks, GpxSplitter is significantly faster.

Benchmarks

Very informal testing:

Program

Time

gpxsplit

24s

gpxmgr

32s

gpxsplitter

1s

Known issues

GpxSplitter is designed to split files with waypoints. It does this by determining the start and end times of the track, and finding all waypoints that occurred within that period. If a track does not have timestamps, then it's not (reliably) possible to correlate waypoints. To that effect, GpxSplitter doesn't handle tracks without timestamps very well… there are several bugs here to fix.

Future plans

Port to Python 3.

Remove dependency upon mxDateTime. (for Python 3 support)

Make lxml dependency optional, so GpxSplitter can run with Python's built-in ElementTree only. For better portability.

Formalize testing. I have a collection of GPX files I use for testing, but at the moment I test manually. To test functions within GpxSplitter, a rewrite of many functions will probably be required.

Thanks

Thanks for the following people who have helped test and develop GpxSplitter:

SamatsWiki: GpxSplitter (last edited 2016-08-26 16:44:39 by SamatJain)