Introduction to QGIS

QGIS is an open source and free GIS solution, QGIS fits a niche similar to ArcMap in functionality—however lacking Esri's platform and ecosystem. To supplement this though, there are other open source projects that enable similar functionality including GeoServer (ArcServer), GeoNode (Portal), and PostGIS (SDE/Geoprocessing tools).

In some respect you'll find QGIS to be superior in many ways to ArcMap—it's speed, developer friendliness, extendibility, and approachability are not seen in Esri's tools. There is a bit of adjustment when it comes to using it though, and there are features that just don't exist at all in the ecosystem that supports QGIS—and other features that are easily provided by Esri's platform are difficult to implement or require more work to set up.

QGIS is free software, both as in 'beer' and as in 'freedom'. The decisions made that guide the development of QGIS are in the hands of a council and the work and effort of developers who both donate their time or are paid by their places of work to develop for QGIS.

Under the GPL license, QGIS is open source and if you—or your place of work—makes changes to QGIS and distribute it to other users you must releases your changes to your clients under the same license. When speaking of the GPL, 'free software' means freedom, not price. As such, many companies can directly profit from selling their versions of QGIS as long as they also distribute the source code for their changes to their users.

QGIS.org, the organisation that guides the development and funding for QGIS, distributes its own official builds of QGIS. You'll also find builds distributed by companies like Boundless who package it together with a number of tools and plugins that they have developed. Their clients pay for service and binaries and get access to the source code of Boundless Desktop if they so choose.

Why does "Free" software matter?

As you may already know, proprietary GIS offerings can be prohibitively expensive. For the true democratization of GIS to occur, there needs to be a solution that everyone can access on the same level playing field—just because a proprietary vendor decides to wave license fees for a given purpose, does not make that software free.

This may work fine for a time, until that user wishes to do more than their no-or-reduced-cost license provides. If at this time, they're unable to meet the financial requirements to get a full license, they are locked out of expanding their project—and often much more. Not only that, but they are unable to make modifications to their software to suite their own needs.

The 'free' of QGIS is not just about costs, nor is it about providing the source code to users to see the inner workings. The 'free' of QGIS, due to and supported by the GPL license it uses, is about the liberty of users and their communities.

Free software—as in freedom, speech, or liberty—promotes social solidarity through sharing and cooperation (Stallman 2007). That is the model followed by QGIS and in the hearts of many of its core developers. By producing truly free software, the developers—and the organisation that surrounds them—are enabling the creation of tools that fully serve the users; fully respecting user freedoms without putting anyone above anyone else.

"Open source is a development methodology; free software is a social movement." -- Richard Stallman

About QGIS

QGIS—pronounced Q-G-I-S or Q-jiss—originally started life as Quantum GIS. Development began with Gary Sherman, an American from Alaska, on a GIS data viewer in 2002. His development work and open source goals prompted the Open Source Geospatial Foundation (OSGeo) to take the project under its wing in 2007; version 1.0 was released in January 2009, followed in version 2.0 in 2013—at this time the project's name was officially changed to QGIS. Version 3.0, released February 2018, saw many large improvements and underlying toolkit upgrades. We'll be using the latest full release of 3.16.3 throughout this document.

QGIS is built on the backs of giants, it utilises many open source tools from the Qt GUI toolkit that's used to draw its windows and widgets, to the Python programming environment that can hook into any aspect of the software, and even the underlying data loading and processing tools delivered by GDAL/OGR, GEOS, Grass, and Sextante. When you use QGIS, you're not just using software designed and developed by one team, you're using software from a variety of different communities and organisations—but all with the same goal, creating open and free software for the geospatial community.

The QGIS project is comprised of over 69'229 commits (changes), 416 individual contributors, and spans almost 1.8 million[1] lines of code—that's almost like 27 back-to-back copies of War and Peace—and that only includes the direct contributions to the QGIS project, that does not account for the software it relies upon like GDAL/OGR or Grass.

The QGIS.org non-profit organisation, established in 2016 as a Swiss association, guides the development and represents the users of QGIS world-wide. Individual countries can set up QGIS user groups and contribute back to the world-wide community by appointing a voting member, who in turn elect the project steering committee that determines the composition of the board that controls and guides the QGIS organisation. The organisation itself controls the trademark of QGIS (which gives them some measure of control over the use of the QGIS name and brand) and distributes funding received by the organisation for the development of QGIS. You can find more information on who's currently running the QGIS organisation at their governance page.

Info

Throughout this documentation you'll see a few different looking elements within the text.

When you see something that looks like: This look for a button that contains this text on-screen. Like the Next button in wizards or installers.

When you see text like: Menu or Browser; look for a menu or menu-item or window title. For example, FileExit means first click the File Menu and then the Exit menu option.

Installing QGIS

The QGIS developer team offers a couple ways to install QGIS. The primary method, and the one I recommend, is by using the OSGeo Network Installer. You can find this by heading to QGIS.org, clicking download now, and selecting the first link OSGeo4W Network Installer (64 bit) to download the installer (or, just click the previous link).

Once downloaded, run the setup and click "Yes" if it prompts you for administrator elevation (User Access Control) for the installation.

Select "Express Desktop Install" (pre-selected), and click Next >

(assets/qgis-install-p1.png)

Follow the installation wizard, clicking Next > when required, and the checkbox to accept licenses as requested. The defaults will install QGIS, GDAL[2], and GRASS[3].

Alternatively, you can select QGIS Standalone Installer Version 3.16 (64 bit); however this will miss some useful bundled components (like parts of GDAL and GRASS) that are installed from the above OSGeo installer. No really, use the network installer.

Using QGIS

Welcome to QGIS. When first run, QGIS will greet you with an introductory dialog, click Let's Get Started to initialize your user settings and show the main QGIS Window.

When opened, the QGIS window will by default show your most recently used map documents (when they exist), any configured templates, and some news items from the project coordinators.

To begin a new project, select ProjectNew from the top menu. Alternatively, double click a template in the intro screen, click the "New Project" icon in the main toolbar, or type CTRL+N on your keyboard.

Working around the main window

The main QGIS window is split into 5 pieces:

  1. Menu Bar
  2. Toolbars
  3. Map View
  4. Browser Panel
  5. Layers Panel

1. The Menu Bar

The Menus in QGIS are built around tasks and type of data being operated on.

The Project Menu focuses on settings for the currently open project (.qgs / .qgz file), including the coordinate reference system; including opening, saving, and launching the Print Layout view and Reporting tools.

What is a Coordinate Reference System?

Representing 3D objects in 2D space is a somewhat complicated task. In order to show a 3D object on a cartesian plane (a map, with features in x and y locations) we must project that object onto a flat surface.

This process uses a coordinate reference system (also called a spatial reference system, or a projection), to flatten the 3D object in consistent ways without having to discuss the mathematics involved.

Common coordinate reference systems in our region include "BC Albers" and "UTM Zone 11". Common world-wide reference systems include "WGS 84" (in degrees and minutes) and "Web Mercator" (in projected metres).

Different coordinate reference systems use different units, and all have varying consistencies with the real world.

For more detailed information see Map projection on Wikipedia and QGIS' documentation, Working with Projections.

2. Toolbars

Next up, we have toolbars. QGIS has many individual toolbars that can be toggled on and off. By right-clicking on any blank space at the end of a row of icons, you can toggle their visibility. This right-click menu shows both togglable toolbars and panels.

You can also find both of these toggle menus under ViewToolbars and ViewPanels if finding an empty space to right-click is difficult (based on your screen size, and what other toolbars are enabled).

Every button on these toolbars has a corresponding menu item. There are always multiple ways to access the same feature in QGIS.

3. The Map View

Most of the QGIS window is taken up by the Map View. If we had data loaded into our project, we would see it represented in this region, for example, in the following screenshot, I've loaded a sample of infrastructure data from Lumby:

And here, a satellite map from Esri's data catalog:

At the bottom of the map view, you'll see a few extra controls: the current coordinate of the mouse pointer, in the current reference system; the map scale, where it can be manually set if desired; a magnifier, to cause a zoom on the symbology size; rotation, so you can change which direction is "up" on your map view; a render toggle to prevent the mapview from automatically updating; and the current reference system of your map. Last on this is the messages panel toggle, in the dialog this brings up you can see any errors that QGIS has come across internally or with your data.

4. Browser Panel

The Browser panel is the swiss-army knife of adding data and loading maps within QGIS. From here you can browse your file system and add all kinds of data to the map view by dragging it from the file/folder tree into the Map View or Layers Panel.

You can change the size of the Browser panel by dragging the handle between the Layers and Browser panels.

By right-clicking on items in this list, you can modify, create, and change different things within it. For example, right clicking any folder in the directory tree below a drive, will present options to create new features within it, or add it to the "Favorites" tree for easy access later.

5. Layers Panel

Here is your table of contents. Every data element within your project will be listed here, both spatial and non-spatial (tabular).

Right-clicking on any layer will show a context menu containing options for each layer: layer zooming (change the map view to the extent of the layer), management, visibility settings (including scale ranges), quick access to the layer's CRS (coordinate reference system), styling (copy and paste styles between layers), attribute table, editing states, exporting, and properties (symbology, fields many other options for each data layer).

The Manage Map Themes icon enables the user to select and create presets, or themes, of layers to be enabled at the same time. This allows for pre-configured layer presets, for both the Map View and in the Layout Composer.

Project Properties

Project properties is where you can set both basic and advanced setting that relate directly to your Project: find it in the Project menu under Project Properties...

Of note, on the General page, you can set your measurement units and coordinate display units (for the bottom of the map window). You can find your current corrdinate reference system under the CRS page of the Project Properties window.

Loading Map Documents

To open a map document, select ProjectOpen and browse to it in the Open File Dialog. QGIS Project Documents have the extension of .qgs or .qgz depending on what version of QGIS created the file and the settings when originally saved. Here's I've selected and opened a map document from the town of Lumby:

Another method of loading a map document is by navigating to it within the Browser Panel:

This is useful as you can expand the map document to see what layers are contained within it, without having to open the document first:

What is the difference between .qgs and .qgz project files?

QGIS has two different extensions for it's file type: .qgs and .qgz; with the latter, .qgz being the newest format. The new format is actually a zip archive that is capable of bundling extended features and data directly with the map object. This enables a number of new features that were introduced in QGIS 3.0.

Getting Around the Map

After you've loaded a map document, there's a few tools that can help you navigate around it:

The first, and default tool in QGIS, is the hand or Pan tool, this allows you to grab hold of the map, and move it within the Map View, similar how to dragging on a Google Map lets you pan around.

With this tool, and most other, tools selected, you can use the scroll wheel on your mouse to change the scale of the map, essentially zoom in and out. The Magnifying glass icons (3rd and 4th icon) with + and - allow you to do the same.

When any tool is selected, you can also use the Middle Mouse Button (your mouse may trigger a middle click when you push down on the scroll wheel) to pan the map just like with the hand/pan tool.

Towards the end of the toolbar are two magnifying glasses with < and > arrows overlaid, with these you can go to your last map view and your next map view: similar to how the back and forward buttons function in a web browser. If your mouse has buttons for back and forward, they will trigger the same functionality.

See QGIS Documentation documentation: General Tools for more information on navigating the map.

Querying Map Data

QGIS provides an Identify Features tool to query the attributes (a.k.a. fields, columns or properties) of a given feature.

Once selected, clicking on a feature in the map view, will show a panel with the details of that feature. By default, the Identify Features tool works against the currently selected layer from the Layers Panel:

Notice that in the Layers Panel (on the left) the "Water Valve" layer is selected. Clicking on a water valve populates the Identify Results panel on the right with that features attributes.

If I next clicked on a water pipe, the results panel would clear and I would get no information about the clicked pipe.

Not until I select the "Water Pipe" layer in the Layers Panel, then click the pipe again, will the Identify Results panel be populated with the expected attributes.

There is an easy way around this, at the bottom of the Identify Results panel, is an optional drop down called Mode; by default Current Layer is selected, however if you change that to Top Down the identify tool will query all layers where you clicked, and return multiple features to the Identify Results Panel.

You may need to collapse some of the elements in the Identify Results panel in order to see the other features:

See QGIS Documentation documentation: Interacting with Features, Identifying for more information on using the Identify tool


  1. The QGIS Project has 1'793'809 lines of code, across it's own source, python extensions, and Unit Tests to ensure correct operation—essentially all written just for QGIS—in 8362 different files as of 2021-02-11 ↩︎

  2. GDAL is a geospatial data swiss-army-knife, able to load and convert all kinds of spatial data ↩︎

  3. GRASS is a geo-processing backend/tool for complex geospatial algorithms/processes ↩︎