GPS and Mapping with Linux

I acquired a Garmin eTrex 20 – my first GPS receiver – in late December 2014 to augment my backwoods travels, and have been going through the process of learning how to best use it.  The device itself seems pretty straightforward.  The PC side of things, however, is not.  Garmin publishes its proprietary BaseCamp software for map, track, and waypoint editing/viewing but it works only on Windows and OSX, and it’s proprietary.  I am also primarily interested in topographic maps rather than street maps so that puts me in a minority within a minority.  I’ve started this page for penguin powered hikers (there are others, right?) that are trying to figure out what choices they have.  I currently run Debian v8 (“Jessie”).

Updated Oct 27 2015:

QLandkarte GT (QGT) is a pretty capable mapping program.  It’s a very good GPX editor that makes it easy to:
– Split and join tracks.
– Hide or delete individual track points.
– Filter track points based on distance or azimuth change from adjacent track points.
– Move and edit way points.
– Display elevation profiles.

One useful thing QGT does not do is reverse a track.  This is sometimes needed to ensure tracks are going the same direction before joining them.  For this I use the Viking package.  Someday I’ll write a little Python script to do this.

Another useful thing missing is rendering professional-looking maps.  The output is basically just a screen shot – what you see is all you get.  This led me to look around some more until I found QGIS.

QGIS is a well-endowed, professional-level Geographic Information System tool.  Of course, that means there are a lot of features I’ll never use and there is probably a longer learning curve than with something targeted at doing basic trail maps, but the flexibility and option-richness is pretty amazing.  My maps aren’t at the level I want yet, but it’s not QGIS that’s holding me back.

Some important features:
– Trails and waypoints can be separated into various layers, each with their own stylesheet.  Layer visibility can be toggled.
– Stylesheets can define appearance in excruciating detail.
– Great control for formatting of multi-page maps.  You can specify what area goes on each page one time and that configuration is saved for subsequent renderings, and can always be changed as needed.
– Can define the scale for rendered maps as well as the DPI.
– Maps can include scale bars, reference grids, and legends.

So for me, the hot combination is QGT to edit the GPX files and QGIS to render the maps.  QGT is officially at a dead-end, but is still available and useful.  Its replacement is QMapShack but I haven’t checked it out yet.

For base maps, QGIS can use raster sources like the quad maps from TopoQuest.  These have a wide border around the image just like the paper quad maps but that can be very easily cropped by QGT so the maps can “tile” decently.  You can’t just crop the files in any old editor like GIMP because they are in the GeoTIFF format with embedded essential geographical metadata that GIMP will lose.

QGIS can also use streaming WMS/WCS/WFS sources.  Multiple sources can be configured and then toggled on and off as desired.  For example, while developing a map set I’ll use my collection of cropped quad maps.  They’re stored locally so panning and zooming is quick.  When rendering the final output, I’ll switch to the nicer-looking streaming USA_Topo_Maps.



5 Responses to GPS and Mapping with Linux

  1. rjulio says:

    i am a linux user and new to hikking , i really needed an advice how to get started. Thanks!

  2. Pierre M. says:

    Thanks for this !
    It really helps to get started with maps and tracks on Linux.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s