Tutorial SIG Open Source Quantum GIS
Tutorial SIG Open Source Quantum GIS
Opening Notes
Open-source tools for research in ecology and evolutionary biology, among other
fields, are constantly expanding. Herein, I provide a tutorial of QGIS (www.qgis.org),
which is capable of almost any GIS operation Ive ever needed, either on its own, or
using the various plugins and associated tools. QGIS installs and directly links with
other programs including SAGA GIS and GRASS GIS, allowing users to take advantage
of cooperation among the free and open source software developers. Furthermore, data
can be exported to a variety of formats, for use in other programs.
My goal here is to provide a basic skill-set to the new GIS/QGIS user, so they may
navigating the software for their own work, and further explore its capabilities. This
tutorial is by no-means comprehensive. I suggest users browse and search the QGIS
documentation (http://qgis.org/en/docs/index.html) when they are stuck, or make use
of relevant support channels (http://qgis.org/en/site/forusers/support.html).
Some brief acknowledgements: I am grateful to the QGIS community for constant
development and support of the software. I also thank Dr. Michelle Lawing in the
Department of Ecosystem Science and Management at Texas A&M University (TAMU)
for getting me involved in, and organizing a workshop at for which this material was
first developed. Additionally, Dr. Toby Hibbitts, curator reptiles and amphibians at the
of the Biodiversity Research and Teaching Collections at TAMU provided data for
copperhead specimens, used herein as a text-delimited data source.
Table of Contents
Opening Notes .............................................................................................................................. 1
Table of Contents ......................................................................................................................... 2
Installing QGIS ................................................................................................................. 4
Installing Plugins ............................................................................................................. 5
Data Sources Used in this Tutorial ............................................................................................ 6
Get to Know QGIS ........................................................................................................................ 7
Open Shapefiles ................................................................................................................ 8
Open Delimited Text Layer (e.g., points based on a table with Coordinates) ......... 9
Add a Background Layer ............................................................................................... 10
Open and Manipulate a Raster Layer .......................................................................... 12
Projections................................................................................................................................... 14
Projection of Layers and Project .................................................................................. 14
Changing Projections (CRS) ......................................................................................... 15
Changing Project CRS.............................................................................................. 15
Changing Vector CRS (for a Shapefile) ................................................................. 16
Changing Raster CRS............................................................................................... 17
Geo-Processing of Data Layers and Associated Tables......................................................... 19
Some Basic Vector Operations ..................................................................................... 19
Clipping ..................................................................................................................... 19
Difference Clip (Clip out the inner area of a polygon) ........................................ 20
View and Edit the Attribute Table ......................................................................... 22
Spatial Join................................................................................................................ 23
Installing QGIS
I generally recommend working with the most recent version of QGIS available (the
current version at the time of writing is 2.6.1). Either the 32 bit or 64 bit version should
work (everything presented herein was tested using QGIS 2.6.1, 64 bit, on Windows 7).
Note: The installation files can be somewhat large (a few hundred megabytes for
Windows versions) and might take some time to download and install.
When it gives you the option, you do not need to download the sample datasets,
although feel free to and use them for other tutorials or examples.
Installing Plugins
One of the strengths of QGIS is the availability of capable plugins that have been written
for it.
To see what plugins are installed, open QGIS by double-clicking on the QGIS
Desktop icon on your desktop or in your start menu.
Then, click the Plugins menu at the top of the main QGIS window, and navigate
to Manage and Install Plugins.
When the Plugins window opens, search for the following plugins and install
them if they are not indicated as already installed (having an X to the left of the
name):
o OpenLayers Plugin
o Table Manager
o Zonal Statistics Plugin
o Processing
Raster Data
The raster dataset used in this tutorial is the 1 Arc-second (~30m) Digital Elevation
Model from the U.S. Geological Survey
Close the tip of the day you can permanently disable or scroll through them.
Only one pane is open the Layers pane on the left side
Explore icons by hovering over them with the mouse; click on menu-bar items to
explore the drop-down menus.
To save the project click the Save icon and designate a file location. When you re-open
a project, any layers that you were using should be in the same locations on your
computer; if they are not, you will need to re-designate the appropriate file paths. If you
transfer data and a project file to another computer, keep the files in the same locations
relative to one another and the project should open without a problem. Make sure to
periodically save the project as you work.
Before we get started, we will set the software to Project on the Fly. This is described
in more detail in the section on Projections, but in brief, it allows layers in different
projections to be displayed in a common coordinate system. Click on the Projectmenu
from the menu bar at top, and select Project Properties. In the window that appears,
select the CRS tab, check the box next to Enable on the fly CRS transformation and
click the OK button.
Open Shapefiles
Click the Add Vector Layer icon (Or use Layer menu and navigate to Add
Vector Layer)
o Set the Source Type to File and Encoding to System
o Click Browse and navigate to the appropriate files, using the appropriate
file types (for Shapefiles, set to ESRI Shapefiles [OGR] (*.shp)).
o Open County Boundary, City Limits, and Rivers and Stream layers.
**Note To access data from ESRI Geodatabase (.gdb files), set Source
Type to Directory, and navigate to the .gdb file.
Adjust the layer order by clicking and dragging layers up and down in the
Layers pane.
o Put Rivers and Streams on top, then City Limits, and County Boundary
To view the tabular data, right click on the layer and select Open Attribute
Table.
Open Delimited Text Layer (e.g., points based on a table with Coordinates)
Click Add Delimited Text Layer icon. (See example dialogue box on next page.)
o Navigate to the appropriate file (Copperhead Data; Brazos County_A
contortrix.csv) and set appropriate text delimiter (comma for this file).
o If the first line contains field names (column names) make sure the First
record has field names box is checked
o Set the geometry definition (typically Point Coordinates), and identify
fields for X and Y coordinates (e.g., Longitude and Latitude, respectively).
o If the data are based on a geographic projection Decimal Degrees are
expected; if data are as Degrees Minutes Seconds, check the DMS
Coordinates box
o Click OK and layer will appear in Layers pane. You can adjust the
symbology by editing the properties as described above.
Click on Web from the menu bar at top, navigate OpenLayers Plugin, and
then to the layer type of your choice (lets go with the Google Maps Google
Hybrid layer for now), and it will appear as the top layer on your map.
Adjust the layer order and symbology so you can better visualize what is going on.
The image below (right), illustrates the scene with this background layer and the
county boundary.
10
o If you look at the project properties, you should see that the project
projection has changed to WGS 84 / Pseudo Mercator this corresponds
to what is used in these server-based data.
11
Change Render Type to Singleband pseudocolor (Avoid multiband options unless you are using multi-band imagery like Landsat
data)
Select a color ramp that you like (e.g., BrBG) and click Classify
button to set bins automatically, and click Apply. If you like it,
click OK, if not, adjust as needed. Feel free to try adjusting other
options too.
You can also adjust colors and labels in the editing box to the
left.
You can use Save Style and Load Style buttons to use a
standard color ramp across multiple projects or raster layers.
12
You can use the Zoom In tool to zoom in enough to see individual pixels. Select
the tool from the toolbar, and click and drag a box on the area you wish to zoom
to.
To measure an individual pixel and make sure it is the size you expect click on the
Measure tool from the toolbar, and select Measure Line from the drop-down
menu.
o Click at one edge of the pixel, and drag the cursor to the other side; the
dialogue box will show the measurement based on the units and datum of
the Project CRS (see Projection Section, next).
13
Projections
Projection of Layers and Project
QGIS automatically reads projection information (i.e., the Coordinate Reference System
[CRS]), if available, from respective layer files. For shapefiles, it relies on the .prj file;
for raster data, it is often embedded in the file. If you load data without built-in
projection information (e.g., a Delimited Text File), it assumes a geographic coordinate
system (Lat/Long), and uses the World Geodetic Survey 1984 (WGS84) datum. It is
always a good idea to check that the projection information is interpreted correctly by
QGIS.
To check the CRS, (and set it if it was not automatically detected) right-click on
layer and select Set Layer CRS.
o If you do this for the Copperhead Data you will see the CRS that selected
is WGS84 (using Lat/Long coordinates). This is correct the datum of the
original data was exactly that, so nothing needs to be changed, although if
it was incorrect, you could fix that here.
Earlier we set QGIS such that layers with different projections are Projected on the Fly
for visualization they are automatically transformed to be in the same coordinate
space. Changing that, which will make it is easy to tell if individual layers are set to
drastically different CRS. Click the Project Menu at on the menu bar at top and select
Project Properties (or press CTRL+SHIFT+P). Then, uncheck the box at top for Enable
on the fly CRS transformation and click OK. Now you can see how the layers line up
to each other when using their native projections click the Zoom Full button on the
toolbar at top, and the map area will zoom out to include all layers.
14
15
Alternatively, right-click on a layer with the desired CRS, and select Set Project
CRS from Layer [not applicable for this project].
Right-click on layer that you wish to change the CRS of (in this case, select the
Copperhead Data) and Select Save As
Use the Save As box to designate an appropriate file location and name for the
resulting shapefile.
16
Click on the Raster menu, mouse along to Projections, and click on Warp
(Reproject).
If using a computer with a multi-core processor, check the box for Use
multithreaded warping implementation
Check the box for Load into canvas when finished to bring the final product
into the current project.
17
**Note specific parameters for the reprojection of rasters can also be edited using the
text at the bottom of the dialogue box, based on the arguments described here:
http://www.gdal.org/gdalwarp.html. To start editing this section, simply click the pencil
icon, place the cursor in the box, and start typing.
18
Select the Vector menu at the top and navigate to Geoprocessing Tools and then
Clip (illustrated on the next page)
o Input Vector Layer is the layer that you want altered (Rivers and
Streams).
o Clip Layer is the Layer that you are clipping data to (City Limits).
o Designate the new file you want to create in the Output Shapefile box
(CS Rivers.shp).
o Check the box for Add result to canvas and click OK.
19
20
Select the Vector menu at the top and navigate to Geoprocessing Tools and then
Difference (from the same menu shown on the previous page).
o Input Vector Layer is the layer that you want altered (Brazos County
Boundary).
o Clip Layer is the layer subtracting from the Input Vector Layer (City
Limits).
o Designate the new file you want to create in the Output Shapefile box
(Brazos Cty No CS.shp).
o Check the box for Add result to canvas and click OK.
Upon completion, inspect the result and delete original if it is no-longer needed.
21
To view the attribute table, simply right click on the desired layer and select
Open Attribute Table. Lets start with the attribute table for the Rivers and
Streams layer.
Theres lots of information here that came with the layer. Some things that might be of
interest for researchers include the Name and the HydroType (what type of stream/river
each element is).
If you want to look at a single data entry simply select that row by clicking on the
number to the left of the data, and it will become highlighted on the map. For the stream
segments, theyre small, so youll need to zoom in to see it. While looking at the map,
select the Rivers and Streams layer by clicking on it in the Layers pane, and then use the
Zoom to Selection icon to focus on the selected stream segment. To zoom out to the
entire map again, use the Zoom Full icon, or click the Zoom Out icon and click on
the map.
To edit the table, you must first enable editing by clicking the Toggle Editing Mode
icon in the toolbar above the table. Then you can edit text, and add/delete rows or
columns using the icons at the top of the window. You can also do some table
manipulations by altering the layer properties. You cannot, however, alter existing
column names or data types from this menu. To do that, it is best to use the Table
22
Manager plugin. If it is installed, click the icon, typically located on the left, along the
Layers pane.
Spatial Join
We can use the spatial relationships among objects in our project to join tables with
different information.
Lets add the name of the county that streams are located in as a field for the Rivers and
Streams layer. We will use the Rivers and Streams and the County Boundary layers in
this example.
We need to make sure the attribute table for County Boundary has a field with
the county name, preferably with a field name that is unique among both layers.
o Open the attribute table for County Boundary; there is a field with the
county name (Name). We could use this column as-is for the join, but
Rivers and Streams already has a column called Name. To avoid
confusion, we will re-name the column
Highlight the field Name, click the Rename button, and change
the name to something logical (e.g., CountyName). Click the Save
button, and close the window.
23
With the attribute tables set up appropriately, we can do the now do the join.
Use the Vector menu to access Data Management Tools, and then click Join
attributes by location. (Dialogue box on the next page).
The Target Vector Layer will be the layer we wish to add information to (Rivers
and Streams)
The Join Vector Layer will be the layer we wish to add information from
(Brazos County Boundary)
For this example, use the default options for Attribute Summary and Output
Table, and set a the information for the resulting shapefile.
Click OK and select Yes when a window pops up asking if you want to add the
new layer to the project.
If you open the attribute table for the new stream layer, you will see all of the
information from County Boundary associated with the streams.
24
25
Most of the vector layers we are using already have geometry data. For this exercise, we
will first remove the geometry column for the Rivers and Streams layer and then use
QGIS to add geometry information back in.
Click on the Rivers and Streams layer in the Layers pane to select it.
26
If you want, open the Attribute Table for the layer to confirm the field was
deleted. Close it before the next step.
Use the Vector menu to navigate to Geometry Tools and Export/Add geometry
columns.
Select the Rivers and Streams layer, use Calculate using = Layer CRS (for the
current projection of the layer) and click OK.
o After the processing bar completes, close the window.
Open the attribute table for Rivers and Streams and you should now see a new
column, LENGTH.
27
Use the Raster menu to navigate to Analysis and then DEM (Terrain models)
In the Dialogue box, select the Input File (DEM Albers), and designate an output
file (note: you will have to designate a file type; here I use ERDAS Imagine format
(.img), but you can use others as well; be sure to include the file extension in the
file name).
Set the Mode to Slope. There are a number of other processing options you
can choose if you wish.
Change any of the Mode Options if you wish, though I will just use the default
settings; make sure the Load into canvas when finished box is checked.
Click OK.
28
*Note As with the reprojection of rasters, the terrain model options can also be
adjusted with the set of commands at the bottom following the arguments listed here:
http://www.gdal.org/gdaldem.html. To enable editing, click the pencil icon, illustrated
to the left.
29
Reclassify Raster
Many times we need to reclassify values from a raster dataset. In this example, we will
change continuous data into categorical groups; this may be appropriate if we know
specific tolerances of a species, and have a relevant raster layer. I find the easiest ways to
reclassify a dataset are using either the GRASS or SAGA GIS utilities, accessed through
the Processing Toolbox. Here, well use SAGA GIS (www.saga-gis.org/).
Open the Processing Toolbox - click the Processing menu, on the menu bar at top,
and select Toolbox.
You should now see the Processing Toolbox (above, left). Make sure the option
at the bottom is set to Advanced Interface, not Simplified Interface. This
toolbox allows you to access algorithms and functions from a variety of other
programs that were installed with QGIS including GRASS and SAGA.
We will reclassify values of the DEM (elevation) to indicate that pixels are suitable for a
hypothetical species (>75 m; set to 1), or not suitable ( 75 m; set to 0).
30
Expand the list under SAGA by clicking on the + next to it, then expand the list under
Grid - Tools, and double-click on Reclassify grid values.
Select the DEM Albers layer as the Grid layer, and change the Method to [2]
simple table
Fill in the table as indicated below, then put your cursor in the third column and
click Remove row, and then OK. The lowest and highest values (0 and 150)
are based on the maximum and minimum of the entire DEM, which can be
viewed by clicking the + next to the layer in the Layers pane.
Make sure the box is checked for Open output file after running algorithm
Set the Reclassified Grid to a file of your choice (for this, geoTIFF [.tif] seems to
work well; .img does not for some reason, as it has multiple bands in the output).
Click Run; you will see a new layer Reclassified Grid in the Layers Pane
right click on it and select Rename to rename it appropriately (e.g., DEM
Reclass)
31
*Note, there are a variety of options here; those used here accomplish the task at hand; I
encourage you to explore SAGA GIS, and explore what other options do in your free
time.
32
We will now do the same thing for the Slope raster using, following the values in the
lookup table below. (Low slope, 0-2 are suitable for the hypothetical species; high
slopes, >2, are not). Rename this new layer appropriately (e.g., Slope Reclass)
To verify that these reclassified layers are correct, you can bring the respective
reclassified layer to the top, and use the Identify Features tool to inspect the values of
each raster. Click on the icon in the toolbar, and a new pane should appear (typically on
the lower left, Identify Results). Then click the mouse on a point, and it will by default
show you the properties (e.g., value or fields) of the layer highlighted in the Layers
pane. You can adjust the Mode and View options in the pane, to view characteristics
of multiple layers at once.
33
Raster Calculator
Many times we need create a new raster layer that is based on a composite of other
layers. For example, in the previous examples we reclassified DEM Albers and Slope
Albers rasters to identify where elevation and slope are suitable for a hypothetical
species. We can combine these reclassified layers, mathematically, to identify where
BOTH elevation and slope are suitable, simply by multiplying overlapping pixels from
the respective layers. In this resulting raster, areas where a pixel is 0 in either raster will
be 0 (unsuitable based on both layers); locations where both characteristics are suitable
will be represented by values of 1.
Designate an output location, set the format, check Add result to project, and
click OK.
After processing, you will see the new layer in the Layers pane, and you can explore it
to ensure the output is as-expected.
34
You can use this tool for various other calculations, using the buttons provided. You can
also type in the Raster calculator expression box at the bottom, to add numeric terms
and such.
35
Click on the Raster menu from the menu bar, navigate to Extraction and click
on Clipper to open the relevant dialogue box (shown on the next page).
Designate a raster as the input file (I will use SlopeDEM_Reclass, the result of
the previous raster calculation, or the habitat suitability map for a hypothetical
species).
Check the box for No data value and set it to something not in your current
raster layer. Well use -9999, which is commonly used for this purpose.
For Clipping Mode, click in the circle for Mask layer and select a vector layer
that you want to use for the boundaries of the new raster layer. Well use the City
Limits in this exercise. If you wish, you can also use the Extent option and
designate the appropriate bounding coordinates.
Make sure the box is checked for Load into canvas when finished and click
OK
The new layer will appear in the Layers pane and you can inspect as needed.
36
* This operation is effectively done using the same basic commands as for reprojection
of rasters, and similarly, the parameters can be edited in the text box at the bottom
based on the gdalwarp function.
** To fit the raster in the appropriate space as designated by the vector layer, it actually
resamples the raster data and moves it slightly to fit. You can use the arguments in the
gdalwarp command to select the desired resampling type.
37
Use the Raster menu from the menu bar to navigate to and click on Zonal
statistics
For Raster layer, select the raster that you want to compute statistics from; for
the Polygon layer containing the zones, select the appropriate vector layer.
Well use the DEM and the County Boundary layers, respectively
Designate an prefix for the resulting columns (to help remember which raster you
used) and click OK
You can view the result by opening the attribute table for the polygon layer; and you will
see new columns representing the count (count of all contained pixels, the sum
(sum of all values for the contained pixels), and the mean (average of all values for the
contained pixels).
38
In the Processing Toolbox expand the menu for SAGA, then expand Shapes
Grid and double-click on Grid statistics for polygons. Note there are a
number of other useful options, like adding grid values to points or other shapes.
In the dialogue box (next page), under Grids click the button to and select
the desired raster (well use the DEM again).
Under Polygons select the vector layer you wish to calculate the raster statistics
for. Again, well use the County Boundary.
Select whichever statistics you wish to calculate. Note there are a number of
options. Well use Mean and Variance (for the others, change the box below
the titles to No.
o You can designate quartiles you wish to calculate; if you want the Median,
calculate the 50th quantile.
In the Statistics box, you can let it save the output to a temporary file, which
will add new columns to the existing table and create a new layer for it called
Statistics.
Check the box for Open output file after running algorithm and click Run
You can then view the results in the attribute table. In QGIS the columns are not
named with the statistic, but with an abbreviation of the raster and a sequential
number; you can use the table manager to rename these appropriately.
39
40
To get started, open the print composer by clicking on icon indicated at left. If
you were to have an existing layout that you wish to access in the project, click on
the icon to the right, Composer Manager. After clicking the icon to create a new
layout, you can either designate a new name or allow the program to generate one
for you.
areas suitable for the hypothetical species, purple represents unsuitable, and the blue
lines are the rivers and streams.
Think about what types of coordinate you want to show on the borders of the map; they
have to be the same as used in the Project CRS. Many people like to see the geographic
coordinates. For this I often work with the Project CRS as WGS84, and use projection
on-the-fly. You may want to be explicit in a caption about what projection you used to
conduct any analyses. After setting that, make sure to click the Zoom Full button to
make sure the focal area takes up as much of the viewing area as possible. (You can also
42
adjust the viewing scale using the Scale adjustment at the bottom of the main QGIS
screen.)
Once satisfied with the layout of the main map, we are ready to start putting a final
layout together.
In the pane that is on the left, adjust the layout settings through the
Composition tab.
The only thing well change for now is the Paper Size change to ANSI A
(Letter; 8.5x11 in).
43
In the Composition window click the Add Map icon, and click and drag a box
for in the area you would like the main map to occupy. The view from the main
QGIS window should now appear in that area.
o You can go to the Item Properties tab to adjust the extent and such. I
simply click the button Set to Map Canvas Extent to show the same
extent as in the main QGIS window.
Check the box for Lock layers for map item; if you dont, when you
create an inset, this map will be altered.
In the Item Properties tab, check the box and expand the section for Show
grid. The settings I use are shown in context on the next page and the general
appearance is illustrated below.
The units will be the same as used in the Project CRS. Adjust the spacing and
offset in the Interval and Offset boxes. This usually takes some trial ane error
to make it aesthetically pleasing.
Expand the Grid frame section and change Frame style to Zebra.
44
Expand the Draw coordinates section and check the respective box. Adjust
settings as you see fit; the only adjustment I illustrate is changing the precision of
coordinates shown.
45
46
For the Scale Bar: click the Add Scale Bar icon, and click and drag a box where
you want the scale bar to be placed.
o The scale bar will appear in that area with some default settings. You can
adjust things like the units and appearance in the Item Properties tab,
which now characterizes the scale bar.
*Note: the Item Properties tab is dynamic, changing with the type of object you have
selected.
For the North Arrow: click the Add Image icon, and click and drag a box where
you want the north arrow placed.
o In the Item Properties tab, expand the section for Search Directories.
The default path links to a directory that has available images included
with QGIS. You will see a few that work as a north arrow; select one and
click the Add button. You can rotate it if necessary, to match rotation of
the map if it is not the typical north-to-the-top orientation.
47
For the Legend: Click the Add new legend icon, and click and drag a box where
you want it to be placed. A default legend will appear in that area; the box will
automatically resize to accommodate the dimensions.
o Again, use the Item Properties tab to adjust the settings. Most obviously,
we want to change some of the labels in the legend so they are not simply
the layer names from our QGIS project. Note that you cannot change the
symbology here you must do that in the main QGIS project window.
Expand the Legend items section. You can add a new layer to the
legend, re-arrange the order, and rename items. To change the
name of an entry, click on the legend entry you wish to edit, and
click the Edit icon and type a new name that you prefer. In the
example shown below, the City Limits entry is being renamed to
College Station Boundary. For editing specific entries for grouped
legend items (e.g., the legend for Habitat Suitability layer), expand
the group by clicking the + icon next the highest level item, and
select the specific item you wish to
edit before clicking the Edit icon.
48
Adding an Inset
Now, the map is starting to really look like a map, but one thing that is useful to have is
an inset that shows where things are in the broader context. To create this, we need to
again set up our layers as we wish them to appear in the inset. The only layers we really
need here are the County Boundary and the City Limits. It is best to use a copy of the
City Limits layer, as it is used on the main map, and editing the original will alter the
final product when we export it. To duplicate a layer, in the Layers pane of the main
QGIS window, select the layer you want a copy of, right click, and click Duplicate.
Do as described earlier to create a suitable looking map with the Brazos County
Boundary and City Limits layers in the main QGIS window. Below is an example
setup.
In the Composition window, click the Add new map icon again, and draw a box
where you want it to appear. You can edit it, as with the main map, using the
Item Properties tab. Perhaps add a frame to it, to make it stand out and
delineate it as a separate entity from the rest of the map. You can also add
gridlines and coodinates as desired.
49
You can add a label to this using the Add new label icon; select it and click and
drag a box where you would like the text.
o In the Item Properties tab you can edit the text, font characteristics, and
text box characteristics.
50
51
Closing Comments
My goal in this tutorial is to give new users a working knowledge of QGIS.
Although we only had time for a handful of operations, I hope that you now have
sufficient familiarity with QGIS to explore it further on your own. If you continue
expanding your use of QGIS, you may wish to script your work for better reproducibility
and documentation. Python is a common language used for scripting in QGIS, and you
can find more details on the web (e.g.,
http://docs.qgis.org/testing/en/docs/pyqgis_developer_cookbook/intro.html).
QGIS is constantly being further developed, and I suggest users periodically
check for updates to the software, as new tools are often implemented, and processing
and data management protocols are often improved. Since I first started using QGIS, the
software has become much more user-friendly, tools have become much more
expansive, and bugs have been fixed. Keep up with it, and I think youll find it to be a
suitable alternative, which is even superior in some ways, to expensive, paid GIS
software.
52