Project: QGIS

Changelog for version: 3.18


Following on from the feature-filled releases of QGIS 3.14 and QGIS 3.16, QGIS 3.18 introduces a host of enhancements and new features, along with a long-awaited feature - Native Point Cloud support in QGIS! Thanks to the efforts of Lutra, North Road, and Hobu, QGIS is now able to import and render point cloud data in various formats by leveraging the Open Source PDAL library. This functionality has been introduced due to the success of a crowd-funding campaign and would not have been possible without the support of the QGIS community and contributors. Thank you to all those involved in realizing this incredible milestone!

As QGIS Desktop 3.18 bids farewell to the DB2 database provider, it introduces support for users of the SAP HANA database system.

The QGIS ecosystem has also seen some exciting changes in the form of the QGIS HUB which is an extension of the plugin site which now supports the distribution of community developed styles, projects, and even processing models.

We would also like to extend a big thank you to the developers, documenters, testers, and all the many folks out there who volunteer their time and effort (or fund people to do so) to make these releases possible. From the QGIS community, we hope you enjoy this release! If you wish to donate time, money, or otherwise get involved in making QGIS more awesome, please wander along to QGIS.ORG and lend a hand!

QGIS is supported by donors and sustaining members. A current list of donors who have made financial contributions large and small to the project can be seen on our donors list. If you would like to become an official project sustaining member, please visit our sustaining member page for details. Sponsoring QGIS helps us to fund our regular developer meetings, maintain project infrastructure, and fund bug fixing efforts. A complete list of current sponsors is provided below - our very great thank you to all of our sponsors!

QGIS is Free software and you are under no obligation to pay anything to use it - in fact, we want to encourage people far and wide to use it regardless of what your financial or social status is - we believe empowering people with spatial decision-making tools will result in a better society for all of humanity.


General


Feature: QGIS 3.18 highlights (changelog)


User Interface


Feature: Hide derived attributes from the Identify results

Previously, the QGIS Desktop Identify utility would expose a large number of derived attributes, such as geometry information. Although incredibly valuable, for many use cases this information is verbose. Users will now have the option to toggle the display of derived attributes to create a more concise view of the Identify results.

This feature was developed by Richard Duivenvoorde


Feature: Close all tabs at once from message logs interface

The QgsMessageLogViewer now includes an "Empty tab and close others" to the log viewer panel context menu, supporting a quicker action to a clean interface when debugging.

This feature was developed by Olivier Dalang


Feature: API for layer source widgets

An API has been added in the provider GUI to allow a provider to create a custom widget, which exposes options to customize and change the layer's source. For example, a file-based layer provider could expose a widget for selecting a new file path, or an online provider could expose widgets for changing the host or authentication information.

Two implementations have been added for this:

  1. A file picker widget for GDAL file-based layers.

  1. A widget for customizing XYZ layer properties.

This feature was developed by Nyall Dawson


Feature: GUI for dynamic SVGs

QGIS now supports dynamic standard vector graphic elements, as outlined in QEP #199. This allows QGIS to dynamically replace attributes or node values in the XML of the SVG and apply data-driven values to SVG elements. QGIS Desktop has additionally added a GUI editor to ensure that users are able to properly leverage this new functionality.

This feature was developed by Denis Rouzaud


Feature: Zoom and pan to selection for multiple layers

The "Zoom to Layer" function can now zoom to the extent of all the selected layers in the layer tree.

The zoom and pan to the selected features now offer the ability to navigate to the extent of the selected layers in the layer tree or the selected features from all layers in the map.

Zoom

  • A menu item "Zoom to Selection from All Layers" has been added inside the "View" menu. This action zooms the map to the combined extent of the selected features from all the layers in the map.
  • The "Zoom to Selection" button in the Map Navigation Toolbar zooms to the selected features of all the selected layers in the layer tree.
  • The "Zoom to Selection" context menu action in the layer tree zooms to the selected features of all the selected layers in the layer tree.

Pan

  • A menu item "Pan Map to Selection from All Layers" has been added inside the "View" menu. This action pans the map to the combined extent of the selected features from all the layers in the map.
  • The "Pan to Selection" button in the Map Navigation Toolbar pans the map to the selected features of all the selected layers in the layer tree.

This feature was developed by Patrice Pineault


Feature: Zoom in/out by scrolling mouse wheel over map overview panel

Users can now zoom in and out from the Map Overview panel using the mouse scroll.

This feature was developed by Mathieu Pellerin


Accessibility


Feature: Improved color vision deficiency simulation

This modifies the previous support for grayscale and LMS-based simulation for protanopia and deuteranopia, bringing it in line with the methodology currently used in Chromium and Firefox. QGIS now uses updated grayscale luminance calculations (renamed to achromatopsia), a precomputed protanopia matrix (renamed from protanope), a precomputed deuteranopia matrix (renamed from deuteranope), and an additional mode for tritanopia using a similarly precomputed matrix.

This feature was developed by Will Cohen


Feature: Rotation widget for the Georeferencer

The georeferencer canvas can now be rotated in order to facilitate the placement of reference points. This is especially useful for scanned images which may not have uniform orientations.

This feature was developed by uclaros


Symbology


Feature: Data defined overall symbol opacity

While it was previously possible to set the opacity for individual symbol layer colors via data defined expressions, it is now possible to set a data defined expression to control the overall symbol opacity.

This feature was developed by Nyall Dawson


Feature: Open the style gallery from the style manager

The Style Manager interface now includes a button to open the styles gallery from the QGIS HUB.

This feature was developed by Nyall Dawson


Mesh


Feature: New mesh export algorithms

New export options have been added for mesh layers. These allow the following options when exporting a mesh to a vector layer:

  • Export faces
  • Export edges (1D mesh)
  • Export as grid

This feature was funded by Lutra Consulting

This feature was developed by Lutra Consulting (Vincent Cloarec)


Feature: Native export for mesh layers

Previous versions of QGIS required the utilization of the crayfish plugin, however, this functionality has now been incorporated into QGIS core and allows users to export mesh layers to vectors and add the dataset value as an attribute.

This feature was funded by Lutra Consulting

This feature was developed by Lutra Consulting (Vincent Cloarec)


Feature: Mesh simplification for 3D

Mesh data can now be simplified by defining a level of detail for 3D rendering. This helps performance for complex datasets and ensures a smoother experience when 3D navigation is required.

This feature was developed by Vincent Cloarec


Feature: Multiple native mesh processing algorithms

A number of new processing algorithms have been ported from the crayfish plugin, including:

  • Rasterize mesh layer
  • Export contour to vector layers
  • Export cross section to text file (csv)
  • Export time series to text file (csv)

This feature was funded by Lutra Consulting

This feature was developed by Lutra Consulting (Vincent Cloarec)


Rendering


Feature: "Merged feature" renderer for polygon and line layers

A new rendering option allows area and line features to be "dissolved" into a single object prior to rendering to ensure that complex symbols or overlapping features are represented b a uniform and contiguous cartographic symbol.

This feature was developed by Nyall Dawson


Feature: Smarter Map Redraws

Previously, map redraws would attempt to redraw all elements in the frame. The map rendering has been significantly improved and now the existing map frame elements are used during the redraw process. This work was completed as a part of QEP #181 and was funded by the QGIS Grant program for 2020.

The following display outlines the redraw behavior before enhancement:

This feature was funded by QGIS grant 2020

This feature was developed by Lutra Consulting (Peter Petrik)


3D Features


Feature: Eye dome lighting

Eyedome lighting (EDL) is a post-processing effect which compares the depth of each pixel (distance from the camera) with the neighboring pixel depths and highlights edges according to the calculated differences.

An EDL configuration element has been added to the advanced settings tab of the 3D view configuration dialog. EDL strength has the effect of increasing the contrast, allowing for better depth perception (which may need to be adjusted when zooming in). EDL distance is the distance of the used pixels from the center pixel and it has the effect of making edges thicker.

The eye dome lighting is, by principle, an image-based rendering solution similar to SSAO (screen space ambient occlusion), and therefore works on the whole scene and doesn't differ between point clouds or regular 3D objects.

This feature was funded by Lutra Consulting

This feature was developed by Lutra Consulting (Nedjima Belgacem)


Feature: Data defined 3D material colors

3D material colors may now be data defined, allowing feature colors to be determined using the value of an attribute or expression.

Rendering of polygons may be currently done with multiple material types, each having distinct appearance and configuration of colors:

  • Realistic (Phong) material - calculated using 3 colors (diffuse, ambient, specular), which utilizes the 3D view lighting configuration
  • CAD (Gooch) material - calculated using 4 colors (diffuse, warm, cool, specular), which ignores the 3D view lighting configuration

Textured materials are unsupported at this time.

This feature was funded by Kristianstad

This feature was developed by Lutra Consulting (Vincent Cloarec)


Feature: 3D Orthographic projection support

QGIS now offers orthographic projection support for 3D scenes, a feature often often desired in the context of architecture, archeology, and more.

This feature was developed by Mathieu Pellerin


Point Clouds


Feature: Point Cloud Support

Following the successful crowdfunding campaign for point cloud support in QGIS, the engineers at Lutra, North Road, and Hobu have been able to introduce the ability for QGIS to import and render point cloud data.

This includes the ability to add point cloud layers to QGIS projects, with support for the EPT format, and render them in 2D and 3D contexts.

This feature was funded by Point Cloud data support in QGIS

This feature was developed by Lutra Consulting (Peter Petrik)


Feature: Add point clouds to browser

The QGIS Browser and data source management interface now support the basic structure of PDAL supported point cloud layers.

This feature was funded by Point Cloud data support in QGIS crowd funding campaign

This feature was developed by Lutra Consulting (Peter Petrik)


Feature: Untwine PDAL Provider Integration

Ability to generate EPT index for (smaller) laz files directly in QGIS via the untwine library

This feature was funded by Point Cloud data support in QGIS crowd funding campaign

This feature was developed by Lutra Consulting (Peter Petrik)


Print Layouts


Feature: Gradient ramp based legends

Anew QgsColorRampLegendNode class was added which allows for the creation of color ramp-based legend nodes. It's now used for raster layers when using a pseudocolor renderer with the linear interpolation type or for the single-band gray renderer, as well as for point clouds using a ramp based renderer.

In a layout legend, the ramp item inherits the default legend symbol width and height, but it is possible to optionally override this behavior.

There are labels included for the minimum and maximum ramp value, which are rendered using the same font settings as other legend item text:

Label alignment will follow the legend settings:

And naturally, the items will work nicely with multi-column legends:

This feature was funded by Hans van der Kwast

This feature was developed by Nyall Dawson


Feature: Color ramp legend improvements

Color ramp legend items now support the following configurable options:

  • A prefix and suffix for the ramp text
  • Numerical formatting
  • Ramp direction
  • Customization of text formatting
  • The ability to create horizontal bars.

Users can also choose to refine these settings for a particular layout legend item. This functionality is available for all ramp items, including raster, point cloud, or mesh layers.

This feature was funded by Hans van der Kwast

This feature was developed by Nyall Dawson


Feature: Dynamic text presets

The new Add Item >> Dynamic Text menu contains preset dynamic text expressions that users can use to insert a label automatically containing the corresponding expression.

For example, using the dynamic text element Layout Name will insert a label containing the expression [% @layout_name %]. This improves the feature awareness, discoverability, and provides an easy method for users to access dynamic attributes.

This feature was developed by Nyall Dawson


Expressions


Feature: Optional formatting of UUID results

There is now a string format parameter available for the uuid() function in QGIS expressions. Users now have various options that they can use to stipulate the format of the returned UUID value, including the following options:

  • uuid(): {0bd2f60f-f157-4a6d-96af-d4ba4cb366a1}
  • uuid('WithoutBraces'): 0bd2f60f-f157-4a6d-96af-d4ba4cb366a1
  • uuid('Id128'): 0bd2f60ff1574a6d96afd4ba4cb366a1

This feature was developed by signedav


Feature: Layer CRS variable for expressions

QGIS expressions now support a layer_crs variable which will return the AuthID for a particular layer's coordinate reference system. This allows expressions to identify the layer CRS dynamically and perform transformations without needing to manually specify the CRS.

This feature was developed by Alex


Feature: Support for min, max, majority, sum, mean, and median functions on numerical arrays

QGIS expressions now include aggregate functions for arrays, which allow the easy retrieval of specific values from an array that may be used in QGIS elements such as symbologies. The following functions have been introduced:

  • array_min
  • array_max
  • array_majority
  • array_sum
  • array_mean
  • array_median

This feature was developed by uclaros


Feature: Negative index for array_get function

The function array_get now supports the use of negative index positions.

This feature was developed by Alex


Feature: Add map_credits function

A map_credits function was added that collates a list of all the layer metadata attribution strings for the layers shown inside a specified map item.

For example:

array_to_string( map_credits( 'Main Map' ) )

Returns a comma-separated list of layer credits for layers shown in the 'Main Map' layout item, e.g 'CC-BY-NC, CC-BY-SA'

There's an optional include_layer_names argument you can use to include layer names before their attribution:

array_to_string( map_credits( 'Main Map',
   include_layer_names := true,
   layer_name_separator := ': ' ) )

This would return a comma-separated list of layer names and their credits for layers shown in the 'Main Map' layout item, e.g. 'Railway lines: CC-BY-NC, Basemap: CC-BY-SA'

This feature was funded by SLYR

This feature was developed by Nyall Dawson


Digitising


Feature: Select features context menu

It is now possible to select features using a context menu on the map canvas. Right-clicking on the map will intelligently identify the features below the mouse cursor and allow the available features to be added or removed from the current selection. Where multiple features are available, a short delay may persist whilst the system attempts to search for available features that will become available in a nested menu item for selection, or users may simply use the select all function to select all available features at the given position.

This feature was funded by Kristianstad

This feature was developed by Lutra Consulting (Vincent Cloarec)


Feature: Curve tracing settings added to UI

Existing curve tracing settings were introduced previously and have now been exposed in the user interface to enable users to incrementally modify settings to optimize their results when capturing curve data.

This feature was developed by Olivier Dalang


Feature: Feature scaling tool

A new digitizing tool allows for selected features to be scaled when in editing mode. This implementation was based on the work of @roya0045 with #40650.

This feature was developed by Nyall Dawson


Data Management


Feature: New export to spreadsheet algorithm

Users may export a selection of vector layers as sheets in a new spreadsheet or append them as additional sheets to an existing spreadsheet

This feature was developed by Nyall Dawson


Feature: Reproject coordinates in the Georeferencer

The georeferencer now reprojects data points in a desired output projection, rather than using the map canvas CRS for determining data point positions. This allows users more flexibility and control when capturing control points.

This feature was developed by Alex


Feature: Polymorphic relations/ Document management system

A new GUI is available to manage polymorphic relations, implemented as a part of the dynamic relations described in QEP #79.

The "Add relation" button in the relation manager screen now has additional options for adding and editing polymorphic relations:

The "Add polymorphic relation" and "Edit polymorphic relation" open the same dialog, although in the latter case it will automatically be populated with existing values.

Once saved, the list of relations appear as a tree widget, where the generated relation objects for a polymorphic relation appear as children. The names of the generated relations cannot be changed.

Polymorphic relations are stored within a project and currently cannot be exported.

This feature was developed by Ivan Ivanov


Forms and Widgets


Feature: Soft and hard constraints in forms

Historically, required fields would prevent a form from being saved entirely. Using soft constraints allow forms to notify users that expected information has been omitted, without preventing the form submission. Hard constraints, by contrast, function identically to the previous "required fields" functionality and will prevent form submissions unless data is correctly captured for the field.

This feature was funded by Lutra Consulting

This feature was developed by Lutra Consulting (Viktor Sklencar)


Analysis Tools


Feature: Nominatim geocoder API

Although not exposed through the locator or as an algorithm, QGIS now includes a Nominatim API geocoder class. The geocoder class' implementation insures that it respects the OpenStreetMap Foundation Terms of Use by caching results and throttling requests by default.

This feature was developed by Mathieu Pellerin


Processing


Feature: Allow expression for order fields in PointsToPath algorithm

$id may be used as an expression for a csv with ordered values, and the ORDER_EXPRESSION parameter has been added to the PointsToPath algorithm.

This feature was developed by Matthias Kuhn


Feature: Override CRS for Clip Raster by extent output

In some instances, the Clip raster by extent algorithm may output features without a CRS specified, which can now be modified by explicitly enforcing the output to inherit it's CRS from the input layer.

This feature was developed by rldhont


Feature: Add "retain fields" algorithm

Allows users to select a list of fields to keep, and all other fields will be dropped from the layer. Helps with making flexible models where input datasets may have a range of different fields and only a certain subset of them need to be retained. This work was inspired by #39114

This feature was developed by Nyall Dawson


Feature: Reference common field parameter for multiple layers

Processing tools field parameters may support processing a common field for multiple vector layers, in an implementation inspired by the behavior of some processing algorithms in Orfeo ToolBox.

This feature was developed by Julien Cabieces


Feature: Extend import geotagged photos to include exif_orientation

The "Import geotagged photos" tool has been updated so that the exif_orientation parameter value is extracted to the output table. This ensures that maptips and other HTML widgets can be configured to correctly transform the photos to be correctly displayed based on the orientation value.

This feature was developed by Pelle Rosenbeck Gøeg


Feature: Export layer information algorithm

A new algorithm in the processing toolbox called export layers information has been added to support the creation of a polygon layer corresponding to extent of user-defined layer(s) with additional layer details which are attached as attributes to each polygon feature. The information collected currently supports the following elements:

  • CRS
  • Provider name
  • File path
  • Layer name
  • Subset filter
  • Abstract
  • Attribution

This feature was developed by Mathieu Pellerin


Feature: Cell stack percentile and percentrank algorithms

The characteristics of the Cell Statistics processing tool have been replicated and modified to allow for three new processing algorithms, which allow QGIS to calculate cell statistics in a similar manner to common percentage functions used in spreadsheet programs. The new processing algorithms are:

  • Cell stack percentile
  • Cell stack percentrank from value
  • Cell stack percentrank from raster layer

While the percentile algorithm only offers the possibility of calculating percentiles based on an input fraction value (ranging between 0 and 1), a percentrank raster can also be calculated based on an input value raster. This gives the user the opportunity to calculate per-cell percentranks based on dataset driven value input (eg. sample layers).

All algorithms provide different methods for calculating percentiles and percentranks:

Percentile: - Nearest Rank - Inclusive linear interpolation (see LibreOffice's and Microsoft Excel's PERCENTILE.INC function) - Exclusive linear interpolation (see LibreOffice's and Microsoft Excel's PERCENTILE.EXC function)

Percentrank: - Inclusive linear interpolation (see LibreOffice's and Microsoft Excel's PERCENTRANK.INC function) - Exclusive linear interpolation (see LibreOffice's and Microsoft Excel's PERCENTRANK.EXC function)

This feature was developed by Clemens Raffler


Feature: Points to lines processing algorithm

A native processing algorithm has been added in c++ that creates line layers from point layers, similar to the existing python Points to path but with extended functionality:

  • Added support for natural sorting ( '10' > '9' )
  • Avoid creating invalid lines with a single vertex
  • Avoid creating closed lines with two vertices

This feature was developed by uclaros


Application and Project Options


Feature: Hidden layers

QGIS Projects now support the inclusion of hidden layers, which are capable of being included in a project but are not visible in the table of contents.

The layer property is configurable from the Data Sources tab of the project properties and includes API support for text filtering.

This feature was funded by ARPA Piemonte

This feature was developed by Alessandro Pasotti


Feature: Custom "Full Extent" definition

A new "View Settings" tab has been added to the project properties, with the option to manually defined the full extent of a project. The extent defined here will be the extent used when zooming to the full map extent, instead of the calculated or maximum extent of all layers. This is useful for defining a particular area of interest for a project and does not limit user's ability to "zoom out" further than the defined extent.

This feature was developed by Nyall Dawson


Feature: Toggle network caching to QgsNetworkAccessManager

A checkbox in the network logger panel now allows users to temporarily disable the network cache, which is useful when debugging QGIS network activity, or when using QGIS to test server-side changes.

This is a transient setting by design and is forgotten as soon as QGIS is closed.

This feature was developed by Nyall Dawson


Browser


Feature: Unify ArcGis Feature Service and ArcGIS Map Service connections in browser

The separate "ArcGis Feature Service" and "ArcGIS Map Service" browser connections have been replaced with a single, unified, "ArcGIS Rest Servers" connection and browser node, which shows a definitive view of the server and exposes both service types.

This feature was developed by Nyall Dawson


Feature: Allow browsing ArcGIS REST by content groups

ArcGIS Feature Service connections which have their corresponding Portal endpoint URLS set can be explored by content groups in the browser panel.

If a connection has the Portal endpoints set, then expanding out the connection in the browser will show a "Groups" and "Services" folder, instead of the full list of services usually shown. Expanding out the groups folder will show a list of all content groups that the user is a member of, each of which can be expanded to show the service items belonging to that group.

This feature was funded by SRK Consulting

This feature was developed by Nyall Dawson


Data Providers


Feature: Native DXF export algorithm

Allows exporting individual or multiple layers into a single DXF file. For each input layer, users can select which attribute to use for splitting a single layer into multiple output layers.

Implements a native DXF export algorithm using QgsDxfExport functionality, which is also used by Project>>Import/Export>>Export Project to DXF.

This feature was developed by Alexander Bruy


Feature: Additional geometry types for PostGIS Export

Some available geometry types from the GDAL ogr2ogr operation used for exporting data to PostGIS databases have been added to the tool interface. This functionality also includes the option to specify vector dimensions for exported data and resolves issue 39003.

This feature was developed by mazano


Feature: Improved network requests with GDAL

A QgsCPLHTTPFetchOverrider utility class was added and used in the OGR provider which redirects GDAL's CPL HTTP calls through QgsBlockingNetworkRequest. This ensures that GDAL can use the QGIS network provider rather than redirecting requests through cURL. Additional head(), put() and deleteResource() methods were added to QgsBlockingNetworkRequest.

This feature was developed by Even Rouault


Feature: Read only generated fields

An API method has been added to ensure that readonly generated columns are not exposed in editors.

This feature was developed by Julien Cabieces


Feature: Improve MSSQL loading with predefined parameters

To reduce layer loading times, the map layer extent can be precomputed, and primary keys can be specified, removing the need for QGIS to calculate these characteristics and improving performance.

This is done by extending dbo.geometry_columns tables and adding the following extra columns, which may be populated accordingly by database administrators:

  • Extent : qgis_xmin, qgis_xmax, qgis_ymin, qgis_ymax
  • Primary key : qgis_pkey

In the database connection configuration widget, there are now two extra checkboxes which make use of these parameters:

  • Use layer extent from the extra columns
  • Use the primary key from the extra column

This feature was funded by ms.GIS

This feature was developed by Lutra Consulting (Vincent Cloarec)


Feature: Filter schemas for MS SQL

Users may now filter the available schemas for MS SQL connections. The database connection widget now contains options for filtering available schemas, so that only the expected schemas are available from the QGIS browser.

This feature was funded by ms.GIS

This feature was developed by Lutra Consulting (Vincent Cloarec)


Feature: SAP HANA database support

QGIS now supports SAP HANA databases. SAP HANA is an in-memory database with an OGC-compliant spatial engine with a free express edition available from www.sap.com

This feature was developed by Maxim Rylov


Feature: Deprecate support for DB2

The DB2 data provider has been marked as deprecated, and is hidden from the QGIS UI by default.

QGIS has adopted a gentle approach to removing unmaintained core providers, and users of deprecated providers may enable support for them by setting the hidden "providers/showDeprecated" settings key to true.

This feature was developed by Nyall Dawson


Feature: Oracle connection API

The QGIS API now includes QgsAbstractDatabaseProviderConnection for the Oracle provider.

This feature was funded by Metropole de Lille

This feature was developed by Julien Cabieces


Feature: Add advanced options for raster data imports

New functionality has been introduced which allows advanced parameters to be specified when importing layers using the GDAL data provider, opening a vast range of new possibilities, especially when working around expected dataset issues and shortcomings.

This feature was developed by Mathieu Pellerin


QGIS Server


Feature: GetLegendGraphics Symbol Scale

The QGIS Server WMS GetLegendGraphics request now supports the inclusion of min/max scale denominators to json symbol exports

This feature was developed by Alessandro Pasotti


Feature: Drag and drop for WMS GetFeatureInfo response

With the drag and drop editor form, it is possible to reorder the attributes and add groups or subgroups from within the edit form. This functionality has been extended so that the WMS GetFeatureInfo response may be modified to include groups and subgroups, as well as allow the response content to be modified and reordered using the editor form, with support for drag and drop functionality.

This feature was developed by mhugent


Programmability


Feature: Run multiple items from command history dialog

The QGIS Python Console now supports the execution of multiple selected commands from the history dialog by adding a new Paste button.

This feature was developed by Salvatore Larosa


Feature: Enable or disable plugins from the command line

The qgis_process command line tool has had new commands added which allow users to enable or disable plugins using the commands as outlined below:

  • qgis_process plugins enable plugin_name: enables the named plugin
  • qgis_process plugins disable plugin_name: disables the named plugin

This improves the automation capabilities of QGIS and allows the use of plugins on headless environments with the qgis_process tool.

This feature was developed by Nyall Dawson


Notable Fixes


Feature: Bug fixes by Alessandro Pasotti

Bug Title | URL issues.qgis.org (if reported) | URL Commit (Github) | 3.16 backport commit (GitHub) -- | -- | -- | -- Crash with VRT layers using Python pixel functions| #41048| Works for me| Cannot enter attributes and save edits on PostGIS table when user has only the INSERT privilige| #40922| PR #41059| no GeoPackage layer name truncated when filename contains more that one dot| #40864| PR #41061| no Unable to right click GeoPackage table from browser| #40856| Works for me| Empty Temporary scratch layer made permanent is not editable| #38834| PR #41075| no Update MXE build, several issues| multiple issues| Commit afff8ba7be2794fe521a462feaf83b1a5d7cce63 PR #40923 | yes (CI) can't change value in vertex editor if "locale" settings use commas as decimal separator | #29682| PR #41082| PR #41607 Empty String '' is shown as NULL with a spatialite layer using OGR provider| #41076| PR #41109| PR #41123 Wrong WFS 2.0.0 request returns duplicate features| #41087| PR #41169| no Server WMS GetFeatureInfo feature ID inconsitencies| #41124| PR #41137| PR #41148 WMS throws LayerNotDefined when layer name contains plus sign (+)| #41116| PR #41211| PR #41331 QGIS Server WFS 1.1: issue with axis order| #36584| PR #41242| PR #41608 raster export (save as...) not working if QGIS locale uses commas as decimal separator| #41284| PR #41316| PR #41330 QGISserver WFS returns invalid GML in case of cascading WFS| #41292| PR #41335| PR #41387 Better handling of duplicated FIDs in GPKGs | #41156| Works for me| Cannot Create New Tables in a Geopackage (browser)| #41342| PR #41355| PR #41403 QGIS crashes when cancelling add child form| #41295| PR #41375| N/A Group has no name when importing sublayers from browser panel| #41343| PR #41379| PR #41402 Identifty tool does not work anymore on arcgis map services layers| #41311| PR #41427| PR #41430 Signal committedAttributeValuesChanges not emitted when project in auto transaction mode| #41477| PR #41539| risky The project file does not store variables with formatted text| #41541| Upstream bug in QT| New spatial table in a geopackage with index always throw a warning| #41436| PR #41556| PR #41609 Empty "Exclude layers" selection list in Server settings dialog when using projects saved in GPKG files or PGSQL databases| #40552| PR #41605|

This feature was funded by QGIS.ORG (through donations and sustaining memberships)

This feature was developed by Alessandro Pasotti


Feature: Bug fixes by Peter Petrik

Bug Title | URL issues.qgis.org (if reported) | URL Commit (Github) | 3.16 backport commit (GitHub) -- | -- | -- | -- Skipping unknown layer type circle in vector tiles | #41529 | PR #41584 | todo Passwords cannot be saved into keychain on macOS with QGIS 3.16 | #40541 | QGIS-Mac-Packager PR #112 | automatic Symbol not found: _curl_mime_addpart with GDAL merge | QGIS-Mac-Packager Issue #111 | QGIS-Mac-Packager PR #112 | automatic initGUI() results in Segmentation fault on macOS in standalone PyQgis | #40378 | answered with the fix to the script | QgsCompoundColorWidget instance crash when QgsApplication::colorSchemeRegistry() is empty \ | #28208 | invalid | Include missing fonts in build | QGIS-Mac-Packager Issue #105 | PR #41412 | not needed? Mishandling Grib Data Values | #37504 | unable to replicate in qgis 3.16 macos | Error opening .2dm and .xmdf mesh data | #40385 | PR libspatialindex #221 | automatic r.watershed error on macOS | #40996 | QGIS-Mac-Packager Commit 7238782 | QGIS-Mac-Packager Commit 7238782 OpenCL Acceleration not found on macOS | #41182 | PR #41374 | Github commit Proj.db not found for SAGA tools on QGIS 3.17 Mac nightly | #41606 | QGIS-Mac-Packager Commit 7a71390 | automatic [mesh][ui] Changing settings for 2D Contour color ramp shader shows confusing widgets | "#39571 | PR #41442 | not needed? QGIS crashes when "open directory" is selected from the recent projects contextual menu | PR #41591 | PR #41591 | todo Data-defined setting in html frame does not work | #41590 | investigation done |

This feature was funded by QGIS.ORG (through donations and sustaining memberships)

This feature was developed by Peter Petrik


Feature: Bug fixes by Even Rouault

Bug Title | URL issues.qgis.org (if reported) | URL Commit (Github) | 3.16 backport commit (GitHub) -- | -- | -- | -- PostgreSQL provider doesn't support special characters for authentication on Windows | #41132 | PR #41144 | PR #41179 WMS/WFS connections XML import fails silently if there are two connections with the same name | #39758 | PR #41145 | PR #41195 QgsAttributeWidgetRelationEditWidget::setRelationEditorConfiguration(): avoid crash on corrupted relation | #40495 | PR #41147 | PR #41175 [Processing] Rescale Raster gives bad results | #41084 | PR #41155 | PR #41194 QGIS not using PostGIS spatial index on geography column | #39453 | PR #41296 | PR #41301 Geopackage with DateTime field (temporal selection) behave different for painting and attributetable | #41074 | Analysis of the issue | Crash with VRT layers using Python pixel functions | #41048 | GDAL PR 3424 | GDAL Commit a2ed089 Empty layer names adding Raster layer from GDAL / OGCAPI driver | #41428 | PR #41452 | not appropriate Imported GeoTIFF not using data extent to select CRS - NAD83 vs NAD83(CSRS) | #41456 | invalid | Georeferencer: fix crash on .points files generated by older QGIS versions | not reported | PR #41480 | N/A Crash trying to load ArcGis community map vector tiles | #41401 | PR #41481 | PR #41516

This feature was funded by QGIS.ORG (through donations and sustaining memberships)

This feature was developed by Even Rouault


Feature: Bug fixes by Julien Cabieces

Bug Title | URL issues.qgis.org (if reported) | URL Commit (Github) | 3.16 backport commit (GitHub) -- | -- | -- | -- Record count regression on views | #41188 | Won’t fix | Integer overflow errors creating and saving virtual layers | #40503 | PR #41332 | PR #41054 Vertex Tool uses old cached data resulting in corrupted data in db | #40720 | PR #41357 | PR #41509 WMS layer metadata - count for available CRS is not correct | #40318 | PR #41363 | Layer variables missing from Field Calculator algorithm on QGIS 3.16.1 | #40255 | PR #41417 | PR #41510/ Filter is not applied in duplicated layers | #40349 | Feedback | Unable to save results to PostgreSQL database when iterating features in processing algorithms | #39620 | PR #41446 | Closed Python call to --processing.run('qgis:fieldcalculator'-- fails to catch divide by zero | #37737 | Already Fixed | Expression widget does not list fields when Selected features only is checked | #40055 | PR #41457 | PR #41511

This feature was funded by QGIS.ORG (through donations and sustaining memberships)

This feature was developed by Julien Cabieces


Feature: Bug fixes by Nyall Dawson

Bug Title | URL issues.qgis.org (if reported) | URL Commit (Github) | 3.16 backport commit (GitHub) -- | -- | -- | -- Fix text edit widget wrapper incorrectly shows "NULL" string for indeterminate state | not reported | Commit fa91357 | PR #41054 [layouts] Expose the correct expression context for attribute and manual table text format widgets | not reported | Commit f337271 | PR #41054 Fix incorrect error when saving attribute modifications to layers with joins | not reported | Commit 01889d9 | PR #41054 Fix misleading JSON error message when an attribute form fails to save changes | not reported | Commit fd657be | PR #41054 Fix project "avoid tile artifacts" setting has no effect on server | #37679 | Commit 04d6ea9 | Not appropriate Don't crash when a relation is created where the field names defined in the relation differ in case from the layer's field names | not reported | Commit 0f49cb9 | Commit c708ca58 Fix add/remove buttons have no icons in create relationship dialogs | not reported | Commit 2e81dbc | N/A Fix restoring previous GDAL alg raster creation options when running an algorithm from processing history | not reported | Commit 645397e | Commit c708ca5 Fix setting the current GDAL profile options temporarily overwrites the definition of one of the stored GDAL profiles | #41378 | Commit 7ff0187 | Commit c708ca58e Fix crash when running model from file through qgis_process with the --json switch | not reported | Commit ccd4fb6 | Commit 8bda37c When labelling job takes a long time to render, don't clear the map canvas between the finished layer render state and final state | not reported | Commit 1beb1bd | N/A Don't loop through all selected features multiple times (once per field) when the attribute form is opened | #41366 | Commit c661359 | PR #41054 Fix incorrect feature request filter expression generated when rule based renderer uses a NOT IN rule | not reported | Commit a895598 | Commit 5eec9e4 Ask users for existing destination fields for Sum Line Length and Count Points In Polygons result fields when running in in-place mode | #39807 | Commit 12e8130 | Not appropriate Fix crash when no layers exist in project | not reported | Commit 039bc20 | N/A [processing] Fix exception in algorithm locator filter if an algorithm has no group set | not reported | Commit 46dbd8b | Commit 7ef7b17 Expose additional GDAL supported resampling methods as options for "early" raster resampling | #40746 | Commit 13fbcd1c | Not appropriate [processing] Add commands to qgis_process tool to enable or disable plugins from the command line | #41218 | Commit d140970 | PR #41054 Fix transparency for ImageServer layers added via browser | #41126 | Commit 9fb554f | Not appropriate [server] Just skip any broken projects on the landing page, instead of blocking the whole landing pag | not reported | Commit e4a4b83 | Not appropriate Automatically update map canvas and layouts if set to a user crs and the user changes that crs definition | not reported | Commit ea57cfe | Not appropriate Don't show duplicate "source"/"path" rows for local files | not reported | Commit 8aa9c6a | N/A Fix retrieval of sql results from geopackages | #40856 | Commit f65fe3d | Don't default to input field for optional expression parameters | #41063 | Commit 1fed902 | PR #41054 [layouts] Always update label after text changes | #40203 | Commit 5d14c61 | PR #41054 Fix fill symbol only related properties (like ring filters) show for line symbols in some contexts. | #33398 | Commit 9cba248 | Not appropriate Ensure layer style dock is updated when toggling legend items through layer tree menu | #40630 | Commit 457d661 | PR #41054 Fix rendering of Vector Field marker symbol layer when map is rotated | #40916 | Commit 157bdca | PR #41054 Fix marker line symbol layer renders vertices for segmentized versions of curved geometries instead of the actual vertices | #39750 | Commit 71090b0 | PR #41054 Fix scalebar decoration uses incorrect map extent when restoring a project | #40748 | Commit f1ea5a9 | Commit 6b1e67d Fix missing identify results right click menu items for non vector layer types | not reported | Commit 176e972 | Not appropriate

This feature was funded by QGIS.ORG (through donations and sustaining memberships)

This feature was developed by Nyall Dawson