Size: 2628
Comment: Change links to point to new repository. Indicate new release v0.2
|
Size: 2475
Comment: Remove unnecessary paragraph
|
Deletions are marked like this. | Additions are marked like this. |
Line 15: | Line 15: |
At some point, I'm going to refactor gpxsplitter to not need mxDateTime and depend on ElementTree in Python's stdlib, so script can work on Python 3. |
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: