Differences between revisions 2 and 10 (spanning 8 versions)
Revision 2 as of 2011-01-04 23:42:16
Size: 1562
Editor: SamatJain
Comment: Flesh out page
Revision 10 as of 2011-02-16 06:26:44
Size: 2475
Editor: SamatJain
Comment: Remove unnecessary paragraph
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
GPX files containing multiple tracks and waypoints jumbled together are produced by many GPS units, in particular MTK chipset-based devices such as the Qstarz Q1000 and Transystem i-Blue 474 devices. Separating tracks and their associated waypoints was a headache until gpxsplitter came along. 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.
Line 5: Line 5:
gpxsplitter depends on the Python 2.6 and above and the modules: gpxsplitter depends on the Python 2.6 (or above in the 2.x series) and the modules:
Line 12: Line 12:
{{{#!highlight sh {{{
Line 16: Line 16:
[[FrontPage|Download gpxsplitter.py directly]], or browse the [[FrontPage|gpxsplitter repository on Gitorious]]. [[http://gitorious.org/samatjain/gpxsplitter/blobs/raw/master/gpxsplitter.py|Download gpxsplitter.py directly]] (this link will always download the latest version), or [[http://gitorious.org/samatjain/gpxsplitter|browse the gpxsplitter repository]] on Gitorious.
Line 20: Line 20:
v0.1 — 04 Jan 2010 — First release.  * 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:

 * [[http://b42.cz/gpxsplit/|gpxsplit]] is a Haskell/Haxml-based GPX file splitter. On Ubuntu, required some 360 MB of dependencies (Haskell compilers, libraries, etc).
 * [[http://shallowsky.com/software/mapping/|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.
Line 31: Line 41:
== Other programs == == Future plans ==
Line 33: Line 43:
I found a few pre-existing programs that perform the same, or similar function: Port to Python 3.
Line 35: Line 45:
 * [[http://b42.cz/gpxsplit/|gpxsplit]] is a Haskell/Haxml-based GPX file splitter. On Ubuntu, required some 360 MB of dependencies (Haskell compilers, libraries, etc).
 * [[http://shallowsky.com/software/mapping/|gpxmgr]] is a Python/minidom-based GPX file splitter. Python's minidom is known for being notoriously slow.
Remove dependency upon mxDateTime. (for Python 3 support)
Line 38: Line 47:
As you can see in Benchmarks, gpxsplitter is significantly faster, and requires fewer dependencies. 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:

 * [[http://www.openstreetmap.org/user/malenki|malenki]]

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.

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

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)