A very tiny GIS

quickplot is a fast, interactive 2-D plotter. All it needs to do its job is a text file with x and y points in a list. If those points are longitude and latitude in decimal degrees, quickplot works like a simple GIS program, with some surprising capabilities.

This article explains how I set up quickplot to do species mapping for Australia. For most of my mapping work I use qgis and Google Maps/Earth, but quickplot is handy for quickly making simple maps and zooming in on details. With an executable size of only 453 kb, quickplot is the tiniest and fastest GIS I know.

#Make a base map

I've been using quickplot 0.8.15, which I found in my Debian 'Squeeze' repository. (The newer version 0.10.3 is the default for 'Wheezy' users.) quickplot is both a command-line and a GUI program, and I put some basic command-line options in a shell script which I launch with a panel menu item:

#!/bin/bash



quickplot \

--canvas-color "#ffffff" \

--geometry=800x800+10+80 \

--grid-color "#888888" \

--no-lines \

--point-size "1" \

--grid-line-width "1" \

--same-scale \

~/Spatial/Quickplot_data/australia.txt

The command here is quickplot, and the longitude/latitude file it opens is australia.txt (more on that file in a moment). I've chosen seven options for the command:

  • set the map background to white (canvas-color)
  • make the map window 800 pixels square, and place it where I like it on my desktop (geometry)
  • color the latitude-longitude grid lines a shade of grey (grid-color)
  • don't connect any of the latitude-longitude points with lines (no-lines)
  • make each latitude-longitude point exactly 1 pixel (point-size)
  • make the latitude-longitude grid lines 1 pixel wide (grid-line-width)
  • map all plots to the same scale (same-scale)

With those basics out of the way, I just click the quickplot menu item, and my base map appears immediately in the quickplot GUI (first screenshot):

#Understanding the plot

The Australian base map in the first screenshot is actually a collection of about 80,000 points (!). The points are simply listed one after the other in australia.txt as in this snippet:

...

146.5884    -43.5408

146.5804    -43.5371

146.5739    -43.5344

146.5577    -43.5284

146.5427    -43.5243

146.5407    -43.5241

146.5373    -43.525

146.5322    -43.5307

146.5295    -43.5307

146.5212    -43.5297

146.5194    -43.5272

146.5147    -43.524

146.5123    -43.5239

...

(I got the points in a roundabout way from a freely available shapefile of the Australian coastline. After converting the shapefile to a KML file in qgis, I used GNU/Linux text tools to reduce the KML to a tab-separated list of longitude-latitude pairs.)

Note that quickplot not only plots the 80,000 points very fast, but also adds a labelled grid of latitude and longitude lines. It does this rather neatly based on the range of longitude-latitude values it finds in australia.txt.

To zoom in on the quickplot map, I draw a rectangle around the smaller area I want using the right mouse button (second screenshot), then release the button:

quickplot redraws the map to show the zoomed-in portion, and also neatly recalculates and displays an appropriate set of grid lines (third screenshot):

I can zoom in repeatedly to look at smaller and smaller areas. To go back to the last zoomed view, I draw a rectangle with the right mouse button that finishes outside one edge of the map window, and release the button. Dragging and releasing the rectangle outside two edges of the map window will bring back the unzoomed view.

#Adding and styling layers

From here on in, I use the GUI dialogs, but there are simple keyboard shortcuts. For example, typing 'o' brings up the 'Open File' dialog (fourth screenshot):

For this demo I'll navigate through the file dialog to Geijera_parvifolia.txt. This is a simple text file listing the places (as longitude-latitude pairs) where the beautiful little tree wilga (Geijera parvifolia) has been recorded in Australia. After I choose that file and click 'OK', quickplot opens a new map tab with a plot of that species distribution. But I want those points overlaid on my base map, so I close the new tab.

Back on the base map tab, I type 'g' to bring up the graphing dialog with its 'Select Fields to Plot' tab, and here you can see quickplot logic (fifth screenshot). The first, 'x' field in a data file is '0' (longitude) and the second, 'y' field is '1' (latitude). Note how these are connected for australia.txt .

I choose the radio buttons similarly for the species data file (sixth screenshot) so quickplot can plot the data correctly:

Next, I type 'p' to bring up the plots dialog (seventh screenshot):

Here I click on 'Configure Plot' for the wilga file, then choose a marker size of 5 pixels and blue colour for that data layer. I'll also change the colour of Australia's coastline to black. And here's the map I wanted (eighth screenshot):

#GIS capabilities

I can add and style as many layers as I want to the map, and each can be separately deleted or 'unplotted', just as in GIS programs. I can zoom in as much as I like to inspect portions of the map (ninth screenshot), and the grid shows me where I am:

In this case I've plotted the distributions of two Queensland millipedes which have adjoining but non-overlapping distributions. The cursor in this view is halfway between the closest known approach of the two species, and quickplot gives the latitude-longitude of the cursor in the status bar at lower left. To grab a .png image of the current map view, I just type 'i', and name and save the image file.

For a tiny program, quickplot is impressively fast at loading and displaying large numbers of points. It was written by developer Lance Arsenault in the late 1990s and is still maintained by him. All quickplot versions are freely available under a GNU General Public Licence.

License

Verbatim copying and distribution of this entire article are permitted worldwide, without royalty, in any medium, provided this notice is preserved.