Host side
GPS file format
From wikipedia and OpenStreetMap wikis, it seems to have 2 widely used GPS file format non-proprietary:
- GPX
- KML
(orignally google earth format, now international standard)
After investigation, it appears that KML is more used for describing
maps and GPX is more used for describing traces.
GPX seems to be supported by a big bunch of software, including
OpenStreetMaps, GPSbabel (cross-plateform tool) and a lot professional
apps like GRASS GIS (using itself gpsbabel)
So I propose to use GPX as in seems to be a de-facto standard.
GPX - format
GPX is a simple format to put down what our GPS received, or to store info on routes that could by used by a navigation tool to navigate us. The format can be extend at almost any XML field, so along co-ordinates from the GPS we could also store data coming from other sensors (e.g. pressure).
GPX consists of two main parts:
a) GPX tracks (where I've been)
<code class="xml">
<gpx>
<trk>
<name>My track #1</name>
<trkseg>
<trkpt lat="47.644548" lon="-122.326897"> <!-- where I've been -->
<ele>400.54</ele> <!-- additional info on elevation -->
<time>2014-06-27T18:37:26Z</time> <!-- additional info on time -->
</trkpt>
<trkpt lat="47.648898" lon="-122.327534"> <!-- where I've been later -->
<ele>405.88</ele> <!-- additional info on elevation -->
<time>2014-06-27T18:39:26Z</time> <!-- additional info on time -->
</trkpt>
</trkseg>
</trk>
</gpx>
</code>
To consider when implementing:
- remove unnecessary (duplicating) points.
b) GPX routes (route me there)
<code class="xml">
<gpx>
<rte>
<name>To visit my grandma</name>
<src>Google Maps</src>
<type>bike route</type>
<rtept lat="47.644548" lon="-122.326897"> <!-- Where to go next -->
<name>Crossing of routes X and Y</name> <!-- Some additional info e.g. street name -->
</rtept>
<rtept lat="47.644548" lon="-122.346897"> <!-- Where to go next -->
<name>Crossing of routes X and Z</name> <!-- Some additional info e.g. street name -->
</rtept>
<rtept lat="47.674548" lon="-122.346897"> <!-- Where to go next -->
<name>Destination point</name> <!-- Some additional info e.g. street name -->
</rtept>
</rte>
</gpx>
</code>
To consider when implementing:
- A route should be easily loadable from Google Maps.
- Use the following points to calculate direction where the user should
turn when they are following the route, so we could navigate them (tell
when and where they should turn).
Softwares
Command line:
- GPSBabel , a
cross-platform tool (GPL) used to convert from and to GPX file format
and to read/write to gps devices (manage several devices via usb,
including brands garmin and magelan)
- Garmin communicator plugin : an example of GPL soft communicating
with garmin devices and extract/transfer data from/to proprietary
format. It uses: tinyxml, garmintools, libusb, gcrypt, zlib
GUI:
- GeBabbel : simple GUI for GPSbabel
- GPSman : display one's traces on maps, create traces, save into gpx/kml format. Big disadvantage : it doesn't contain any map, they have to be scanned or downloaded manually
- Viking : a GPL app. Display traces on maps, edit traces, save into gpx/kml, get data from devices and send traces to devices. The big advantage is integration with servers (OpenStreetMap or others) and maps are so automatically downloaded.
- PyTrainer : GPL soft for
sportive activities : manage, order and compare history. Integrated with
google maps. Display graphs on cardio, altitude, etc. Do statistics on
sports and weeks/months.
- GPSBook : GPL soft to display
traces on google maps, seems to be less advanced
List of other Linux softs to deal with GPS data : http://www.gpspassion.com/forumsen/topic.asp?TOPIC_ID=121724
Non-relevant soft
Here is a list of non-relevant software listed to avoid spending to much time on evaluating th.
- gpsd : daemon to communicate
with the GPS in real time, which is not the use case
- TangoGPS for real-time
navigation through GPS
Documentation
Generic infos:
- http://doc.ubuntu-fr.org/gps
File formats:
- https://en.wikipedia.org/wikis/Keyhole_Markup_Language
- https://en.wikipedia.org/wikis/GPS_Exchange_Format
- https://wiki.openstreetmap.org/wikis/GPX
Other links:
- http://www.andreas-diesner.de/garminplugin/doku.php software communicating with garmin gps
- https://github.com/adiesner/GarminPlugin source code of the communication soft
- https://en.wikipedia.org/wikis/GPSBabel
- https://wiki.openstreetmap.org/wikis/Gpsbabel
- http://doc.ubuntu-fr.org/gpsbabel
- http://doc.ubuntu-fr.org/gpsman
- http://doc.ubuntu-fr.org/viking
- https://wiki.openstreetmap.org/wikis/Viking
- http://doc.ubuntu-fr.org/pytrainer
- http://www.gpspassion.com/forumsen/topic.asp?TOPIC_ID=121724 list of
linux software dealing with GPS traces and maps
- https://en.wikipedia.org/wikis/GRASS_GIS an open-source professional
software