Much more than just making pretty maps and helping us get from point A to point B, GIS technologies are what allow us to plan our cities, route the infrastructure that enables everything we do, preserve our natural resources, save lives in times of disaster, and so much more.
If you've ever worked with geographic data on the desktop, chances are that you used Esri's ArcGIS application in at least part of your work. ArcGIS is an incredibly powerful tool, but unfortunately, it's a proprietary product that is designed for Windows. Linux and Mac users are out of luck unless they want to run ArcGIS in a virtualized environment, and even then, they're still using a closed source product that can be very expensive to license. While their flagship product is closed source, I would be remiss not to note that Esri has made numerous contributions to the open source community.
Fortunately, GIS users have a few choices for using open source tools to design maps and work with spatial data that can be obtained under free and open source licenses and which run on a variety of different non-Windows operating systems. Let's take a look at some of the options.
Let's begin with GRASS. GRASS, which stands for Geographic Resources Analysis Support System). It has a very long history, dating back to original development which began in 1982 under the US government. In the time since, GRASS has been adopted by the academic community, where its development continues today.
I mention this history because it will help you to understand the interface, which launches with a terminal window and asks you a few questions about setting up your project before launching a separate control and display window for working with your data. If the GUI feels like it was later tacked on to a powerful program working under the hood, well, that's probably what actually happened.
While the interface may not feel as intuitive to newcomers as some other GIS applications, I like it for two reasons. One, since it really is just a GUI abstraction to the underlying Python commands, advanced users can easily manipulate data and display directly from the Python console, for speed, preciseness, and importantly for academic applications, easy replicability. The second reason I like the interface is that it exposes the wide and powerful array of data manipulation tools directly. GRASS is definitely the winner when it comes to data analysis and geoprocessing, and its tools can be used from external applications, making it an extremely extensible tool which is worth learning even if you don't take it on as your primary desktop GIS system.
GRASS is written primarily in C/C++, although many of its modules are written in Python or other languages. You can find its source code in this Subversion repository under a GPL license.
For many people, discovering QGIS is the end of their search for an ArcGIS alternative. It has a clean interface, it's easy to use, and it just works. QGIS supports a wide variety of raster and vector formats, and if you're a Linux user, there's a good chance that it's already packaged for your distribution's default repositories. In addition to Linux, downloads and instructions for macOS, Windows, BSD, and Android can be found on the project's website.
QGIS has great documentation which can be found in its user manual, as well as an active user community which has produced numerous tutorials, guides, and even books to help you succeed. There are also a huge number of plugins that add a ton of functionality not found in the base package, and its Python interface makes it relatively easy for newcomers to create new ones.
If you're an experienced ArcGIS user and want to understand more about how QGIS is similar to and differs from that platform, this article will take you through 27 different comparisons. You can find the source code to QGIS, which is written primarily in C++, on GitHub under a GPLv2 license.
While I've been a user of both GRASS and QGIS for several years now, recently I've been trying to expand my horizon a bit and have been trying out uDig, which stands for User-friendly Desktop Internet GIS.
uDig different than the other two tools in that built more as an application framework than a complete solution. It is, in fact, a stand-alone program, and if you download it and fire it up you can begin adding and exploring your data like a more traditional desktop GIS tool.
But its strength comes in its framework design, being built around the same Eclipse IDE that many developers are familiar with already. In this way, uDig makes it easy to develop your own GIS application which meets the specific needs of your users. The project's gallery hosts many examples, from smart grid to forestry to logistics.
uDig is jointly licensed under the Eclipse Public License and a BSD license, and you can find its Java-based source code on GitHub.
There are, of course, other open source tools that desktop GIS enthusiasts will want to explore. One that I've heard a good bit about but never personally used is gvSIG Desktop, a GPL-licensed tool for Windows, Mac, and Linux with several features around map creation, data queries, and geoprocessing, which supports a variety of different data formats. For a very in-depth look at a wide range of tools, check out this spreadsheet which provides details about feature support across a gamut of different open source desktop GIS tools.
Just like any other industry, there's a big difference in the scale and scope of work done on the desktop when compared to the tools used to create interactive platforms with huge numbers of users, or processing performed on gigantic data sets. Desktop mapmaking only scratches the surface of what GIS can deliver.
In addition to these desktop tools, there are numerous tools beyond the desktop that GIS users can take advantage of. There are libraries for developing web-based mapping tools like Leaflet and OpenLayers. On the database site, most major database systems will support basic X/Y coordinates, but PostGIS leads the pack with spatially-enabled open source databases by providing extensions on top of PostgreSQL. Libraries like GDAL/OGR provide base functionality to many other spatially enabled programs and have bindings for many popular programming languages. Projects like GeoServer and MapServer offer server-side spatial data hosting.
Many of these open source projects find commercial support from companies like Boundless. The open source geospatial ecosystem is rich, and perhaps richer, than its closed-source counterpart. Several of the projects above fall under the umbrella of OSGeo, the Open Source Geospatial Foundation, which houses a number of different geographic tools and projects which are worth checking out.
Are you a spatial data nerd like me, or maybe a beginning map making enthusiast? What are some of your favorite open source tools, and why?