Changelog for QGIS 3.18

image1

Release date: 2021-02-19

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!

Flagship

Large

Medium

Small

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.

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.

image2

image3

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.

image4

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.
  2. A widget for customizing XYZ layer properties.

image5

image6

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.

image7

This feature was developed by Denis Rouzaud

Feature: Zoom to multiple layers

The "Zoom to Layer" function available from the context menu, the View menu and the Map Navigation toolbar can now zoom to the extent of all the selected layers in the layer tree.

image8

This feature was developed by Patrice Pineault

Feature: Zoom and pan to selection for multiple layers

The "Zoom to Selection" and "Pan Map to Selection" functions available from the context menu, the View menu or the Map Navigation toolbox now offer the ability to navigate to the extent of the selection from the selected layers in the layer tree.

image9

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.

image10

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.

image11

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

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

image12

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

image13

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.

image14

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.

image15

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)

image16

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 by a uniform and contiguous cartographic symbol.

image17

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:

image18

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.

image19

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.

image20

image21

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 desired in the context of architecture, archeology, and more.

image22

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.

image23

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.

image24

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)

Feature: Gradient ramp based legends

A new 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:

image25

Label alignment will follow the legend settings:

image26

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

image27

image28

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.

image29

image30

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.

image31

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

image32

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.

image33

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.

image34

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.

image35

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.

image36

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.

image37

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

image38

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)

image39

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.

image40

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.

image41

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.

image42

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.

image43

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.

image44

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

image45

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.

image46

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.

image47

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.

image48

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 TitleURL issues.qgis.org (if reported)URL Commit (Github)3.16 backport commit (GitHub)
Crash with VRT layers using Python pixel functions#41048Works for me
Cannot enter attributes and save edits on PostGIS table when user has only the INSERT privilige#40922PR #41059no
GeoPackage layer name truncated when filename contains more that one dot#40864PR #41061no
Unable to right click GeoPackage table from browser#40856Works for me
Empty Temporary scratch layer made permanent is not editable#38834PR #41075no
Update MXE build, several issuesmultiple issuesCommit afff8ba7be2794fe521a462feaf83b1a5d7cce63 PR #40923yes (CI)
can't change value in vertex editor if "locale" settings use commas as decimal separator#29682PR #41082PR #41607
Empty String '' is shown as NULL with a spatialite layer using OGR provider#41076PR #41109PR #41123
Wrong WFS 2.0.0 request returns duplicate features#41087PR #41169no
Server WMS GetFeatureInfo feature ID inconsitencies#41124PR #41137PR #41148
WMS throws LayerNotDefined when layer name contains plus sign (+)#41116PR #41211PR #41331
QGIS Server WFS 1.1: issue with axis order#36584PR #41242PR #41608
raster export (save as...) not working if QGIS locale uses commas as decimal separator#41284PR #41316PR #41330
QGISserver WFS returns invalid GML in case of cascading WFS#41292PR #41335PR #41387
Better handling of duplicated FIDs in GPKGs#41156Works for me
Cannot Create New Tables in a Geopackage (browser)#41342PR #41355PR #41403
QGIS crashes when cancelling add child form#41295PR #41375N/A
Group has no name when importing sublayers from browser panel#41343PR #41379PR #41402
Identifty tool does not work anymore on arcgis map services layers#41311PR #41427PR #41430
Signal committedAttributeValuesChanges not emitted when project in auto transaction mode#41477PR #41539risky
The project file does not store variables with formatted text#41541Upstream bug in QT
New spatial table in a geopackage with index always throw a warning#41436PR #41556PR #41609
Empty "Exclude layers" selection list in Server settings dialog when using projects saved in GPKG files or PGSQL databases#40552PR #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 TitleURL issues.qgis.org (if reported)URL Commit (Github)3.16 backport commit (GitHub)
Skipping unknown layer type circle in vector tiles#41529PR #41584todo
Passwords cannot be saved into keychain on macOS with QGIS 3.16#40541QGIS-Mac-Packager PR #112automatic
Symbol not found: _curl_mime_addpart with GDAL mergeQGIS-Mac-Packager Issue #111QGIS-Mac-Packager PR #112automatic
initGUI() results in Segmentation fault on macOS in standalone PyQgis#40378answered with the fix to the script
QgsCompoundColorWidget instance crash when QgsApplication::colorSchemeRegistry() is empty \#28208invalid
Include missing fonts in buildQGIS-Mac-Packager Issue #105PR #41412not needed?
Mishandling Grib Data Values#37504unable to replicate in qgis 3.16 macos
Error opening .2dm and .xmdf mesh data#40385PR libspatialindex #221automatic
r.watershed error on macOS#40996QGIS-Mac-Packager Commit 7238782QGIS-Mac-Packager Commit 7238782
OpenCL Acceleration not found on macOS#41182PR #41374Github commit
Proj.db not found for SAGA tools on QGIS 3.17 Mac nightly#41606QGIS-Mac-Packager Commit 7a71390automatic
[mesh][ui] Changing settings for 2D Contour color ramp shader shows confusing widgets"#39571PR #41442not needed?
QGIS crashes when "open directory" is selected from the recent projects contextual menuPR #41591PR #41591todo
Data-defined setting in html frame does not work#41590investigation 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 TitleURL issues.qgis.org (if reported)URL Commit (Github)3.16 backport commit (GitHub)
PostgreSQL provider doesn't support special characters for authentication on Windows#41132PR #41144PR #41179
WMS/WFS connections XML import fails silently if there are two connections with the same name#39758PR #41145PR #41195
QgsAttributeWidgetRelationEditWidget::setRelationEditorConfiguration(): avoid crash on corrupted relation#40495PR #41147PR #41175
[Processing] Rescale Raster gives bad results#41084PR #41155PR #41194
QGIS not using PostGIS spatial index on geography column#39453PR #41296PR #41301
Geopackage with DateTime field (temporal selection) behave different for painting and attributetable#41074Analysis of the issue
Crash with VRT layers using Python pixel functions#41048GDAL PR 3424GDAL Commit a2ed089
Empty layer names adding Raster layer from GDAL / OGCAPI driver#41428PR #41452not appropriate
Imported GeoTIFF not using data extent to select CRS - NAD83 vs NAD83(CSRS)#41456invalid
Georeferencer: fix crash on .points files generated by older QGIS versionsnot reportedPR #41480N/A
Crash trying to load ArcGis community map vector tiles#41401PR #41481PR #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 TitleURL issues.qgis.org (if reported)URL Commit (Github)3.16 backport commit (GitHub)
Record count regression on views#41188Won’t fix
Integer overflow errors creating and saving virtual layers#40503PR #41332PR #41054
Vertex Tool uses old cached data resulting in corrupted data in db#40720PR #41357PR #41509
WMS layer metadata - count for available CRS is not correct#40318PR #41363
Layer variables missing from Field Calculator algorithm on QGIS 3.16.1#40255PR #41417PR #41510/
Filter is not applied in duplicated layers#40349Feedback
Unable to save results to PostgreSQL database when iterating features in processing algorithms#39620PR #41446
Closed Python call to --processing.run('qgis:fieldcalculator'-- fails to catch divide by zero#37737Already Fixed
Expression widget does not list fields when Selected features only is checked#40055PR #41457PR #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 TitleURL issues.qgis.org (if reported)URL Commit (Github)3.16 backport commit (GitHub)
Fix text edit widget wrapper incorrectly shows "NULL" string for indeterminate statenot reportedCommit fa91357PR #41054
[layouts] Expose the correct expression context for attribute and manual table text format widgetsnot reportedCommit f337271PR #41054
Fix incorrect error when saving attribute modifications to layers with joinsnot reportedCommit 01889d9PR #41054
Fix misleading JSON error message when an attribute form fails to save changesnot reportedCommit fd657bePR #41054
Fix project "avoid tile artifacts" setting has no effect on server#37679Commit 04d6ea9Not 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 namesnot reportedCommit 0f49cb9Commit c708ca58
Fix add/remove buttons have no icons in create relationship dialogsnot reportedCommit 2e81dbcN/A
Fix restoring previous GDAL alg raster creation options when running an algorithm from processing historynot reportedCommit 645397eCommit c708ca5
Fix setting the current GDAL profile options temporarily overwrites the definition of one of the stored GDAL profiles#41378Commit 7ff0187Commit c708ca58e
Fix crash when running model from file through qgis_process with the --json switchnot reportedCommit ccd4fb6Commit 8bda37c
When labelling job takes a long time to render, don't clear the map canvas between the finished layer render state and final statenot reportedCommit 1beb1bdN/A
Don't loop through all selected features multiple times (once per field) when the attribute form is opened#41366Commit c661359PR #41054
Fix incorrect feature request filter expression generated when rule based renderer uses a NOT IN rulenot reportedCommit a895598Commit 5eec9e4
Ask users for existing destination fields for Sum Line Length and Count Points In Polygons result fields when running in in-place mode#39807Commit 12e8130Not appropriate
Fix crash when no layers exist in projectnot reportedCommit 039bc20N/A
[processing] Fix exception in algorithm locator filter if an algorithm has no group setnot reportedCommit 46dbd8bCommit 7ef7b17
Expose additional GDAL supported resampling methods as options for "early" raster resampling#40746Commit 13fbcd1cNot appropriate
[processing] Add commands to qgis_process tool to enable or disable plugins from the command line#41218Commit d140970PR #41054
Fix transparency for ImageServer layers added via browser#41126Commit 9fb554fNot appropriate
[server] Just skip any broken projects on the landing page, instead of blocking the whole landing pagnot reportedCommit e4a4b83Not appropriate
Automatically update map canvas and layouts if set to a user crs and the user changes that crs definitionnot reportedCommit ea57cfeNot appropriate
Don't show duplicate "source"/"path" rows for local filesnot reportedCommit 8aa9c6aN/A
Fix retrieval of sql results from geopackages#40856Commit f65fe3d
Don't default to input field for optional expression parameters#41063Commit 1fed902PR #41054
[layouts] Always update label after text changes#40203Commit 5d14c61PR #41054
Fix fill symbol only related properties (like ring filters) show for line symbols in some contexts.#33398Commit 9cba248Not appropriate
Ensure layer style dock is updated when toggling legend items through layer tree menu#40630Commit 457d661PR #41054
Fix rendering of Vector Field marker symbol layer when map is rotated#40916Commit 157bdcaPR #41054
Fix marker line symbol layer renders vertices for segmentized versions of curved geometries instead of the actual vertices#39750Commit 71090b0PR #41054
Fix scalebar decoration uses incorrect map extent when restoring a project#40748Commit f1ea5a9Commit 6b1e67d
Fix missing identify results right click menu items for non vector layer typesnot reportedCommit 176e972Not appropriate

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

This feature was developed by Nyall Dawson