Quantum GIS 0.11.0, released last month, is a free geographic information system (GIS) application released under the GPL that runs on multiple platforms, including Linux. QGIS can read, edit, and export common GIS file formats. After installing it and using it to work with existing data layers available from official data repositories, performing common spatial analysis tasks, and sharing files and data with the commercial GIS products, I found QGIS has the potential to be a viable alternative to proprietary commercial GIS programs from the likes of ESRI and Intergraph/Geomedia.
My goal was to evaluate how well QGIS could supplement or replace commercial GIS products in small engineering or planning offices like mine. GIS software is both a necessary analysis and mapping tool, and very expensive. The cost of getting GIS software licenses for every planner in my office is far more than we can afford. In recent years, FOSS software has made great strides in providing free or inexpensive alternatives to commonly used proprietary software. QGIS costs significantly less than comparable proprietary software, even when you purchase commercial support.
The QGIS download page lists binary downloads for CentOS 5, Gentoo, Ubuntu Gutsy and Hardy, Fedora 8 and 9, and openSUSE 10.3 and 11. Naturally, the source code is available for download too; as a Slackware user, that is what I downloaded.
Getting QGIS is simple, but building it is not. In fact, QGIS is the most complex software I have built to date, primarily due to the large numbers of dependencies that must be built and installed before you can compile QGIS. Even the optional packages should really be considered necessary, because without them the more powerful QGIS plugins won't work. Even with automatic package handling as in Ubuntu and OpenSUSE, it is worth double-checking your package manager to make sure that everything gets installed correctly. Further complicating the build process is the fact that the Linux-related build instructions provided with the source code are only for Ubuntu Linux. A more generic set of instructions would have been helpful.
I built most of the packages from source using src2pkg and slackbuild scripts from Slackbuilds.org. Nearly all of necessary packages are also available as binaries and source code with slackbuild scripts from Slacky.eu. However, even though the binaries are available, you have to take care to build the dependencies in the proper order, because some dependencies depend on others.
After all of the preliminary work is done, you can build and install QGIS. Currently, QGIS 0.10.0 (the previous version) is available as a binary and as source code with a slackbuild script from Slacky.eu. I downloaded the slackbuild script, modified it to reflect the latest version number, and built QGIS 0.11.0 with it. Once built, the package installed well and worked fine.
Features and performance
Once installed and running, QGIS is pleasant to work with. Its interface is clean, with logically laid out toolbars and icons that generally make sense. Basic GIS chores are a breeze. QGIS imported ESRI-formatted shapefiles without problems. TIFF raster files imported and lined up well too (although MrSID raster files cannot be imported). Changing layer properties worked as expected. It was relatively easy to change the symbology (how different attributes of a layer are displayed) of data layers, including transparency settings. After you get the symbology just right, QGIS allows you to save a layer's symbology as a style to be applied to other layers.
Most of the functionality of QGIS is provided by plugins. The plugins at the official repository handle a lot of basic GIS tasks, such as geoprocessing (manipulating data layers), buffering features, and finding or selecting features in a layer by their attributes. Many of the basic features (like geoprocessing) are only available for data layers that have been imported into a PostgreSQL database. A lot of third-party plugins are available at the repositories list on the QGIS wiki page. I particularly liked the plugins provided by Carson Farmer's repository (the second repository listed on the wiki page). Particularly useful are his plugins for managing projections, joining attributes, spatially joining attributes, generating centroids, and calculating geometry. The last is one of the most common tasks one does with GIS: determining a feature's length or area.
QGIS has some quirks and at least one missing feature. Quirks include the fact that options for label placement take some trial and error to get the best results. The dialog box for labels does not make it clear just how the different options affect the placement, alignment, or appearance of labels. The select by attribute feature works strangely. Searching by attribute highlights features on the map and in the attribute table, but there's no way to show only the selected features in the attribute table without re-running the query in the attribute table itself. Finally, newly imported shapefiles need to be exported by QGIS to shapefiles again and then added to the map again in order for them to be editable.
The missing feature is the ability to select by location -- selecting the features from one layer that are within (or intersect, etc.) the features of another layer -- for example, selecting all the interstate highways in a certain township. QGIS does not seem to have this feature at all -- I could not find it in the manual or in the plugin repositories -- yet it is important for good data analysis in GIS. For many people GIS is about making maps, but the real power of GIS is in tying data to geography. This is powerful enough with a single data layer, but several times more powerful when you can combine several layers to show how different data layers relate in space. Simply speaking, GIS systems are databases with each layer being a table and the relationships among tables being the geographic location of the data. A function for selecting by location is essential for working with the relationships between layers.
Conclusion and wish list
I found QGIS has a lot of potential, but does not quite fit our needs as a replacement for proprietary GIS software. The lack of a select by location feature makes QGIS much less useful than it could be for the type of analysis we do. Furthermore, the underlying database engine for QGIS is PostgreSQL, which is an industrial strength application in its own right. PostgreSQL is designed to be set up by an administrator and run on a network with multiple users. This is an advantage when setting up a central data repository, especially when working in a networked environment. The disadvantage is the time it takes to properly administer a networked database. For a single user, PostgreSQL is a significant overkill.
If the version numbering means anything, the QGIS team has a lot of work planned for the future. My hope is that they would consider adding:
- The ability to import MrSID raster files.
- A select by location function.
- A personal geodatabase, possibly using OpenOffice.org Base databases as an alternative to using PostgreSQL.
Although complex to build, and missing a few key features, QGIS is a powerful FOSS alternative to proprietary GIS software. I recommend that people download and install it to see if it fits their needs. I will be keeping an eye on QGIS and looking forward to future improvements.