Changelog for QGIS 3.26

image1

Release date: 2022-06-17

The feature-packed release of QGIS 3.26 Buenos Aires includes a vast number of enhancements to a range of advanced core functionalities. This includes numerous improvements to 3D capabilities, improved tooling for point clouds, and the introduction of a new profile plotting framework for the creation of cross-sections and elevation profiles. Best of all, the new plotting framework uses the native QGIS rendering capabilities and comes with all the styling, symbology, and data driven properties we all know and love baked right in!

For a whirlwind tour of all the new functionalities introduced, you can view the highlight reel video on YouTube at https://youtu.be/pZmrw_zR7sA

The QGIS Community has also been active in various crowd-funding campaigns, Open Day events, and the growth of the STAC Ecosystem has led to inter-agency collaboration initiatives which include outcomes such as the STAC Browser QGIS Plugin, which make it nearly trivial to produce Raster Mosaics from Earth Observation data using Open Source and Open Data. There is also a new online analytics dashboard which collects information from the QGIS Feed in an attempt to show how and where QGIS is being used, providing valuable insight to developers and the QGIS community.

We would also like to extend a big thank you to the developers, documenters, testers, and 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 list of donors. 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 their financial or social status is - we believe that empowering people with spatial decision-making tools will result in a better society for all of humanity.

Breaking Changes

Feature: DB2 Support Removed

The DB2 provider has been marked deprecated and hidden from the QGIS UI for a number of releases. As no maintainers have come forward to support the maintenance of this data provider, it has been removed and will no longer be available for use in QGIS.

Map Tools

Feature: Selecting all features by attribute value from Identify Results panel

The identify results tools now provides an option available from the context menu of an attribute field value which allows for the quick selection of all features in that layer with matching values to be selected.

image3

This feature was funded by Camptocamp

This feature was developed by Ismail Sunni

User Interface

Feature: Coordinate ordering according to CRS

QGIS will now use the correct coordinate ordering for the project CRS when displaying coordinates in status bar (and identify results). A setting has been added in the project properties to allow users to override this with a specific coordinate ordering if desired (x/y or y/x).

Specifically, this means that projects in geographic CRS like EPSG:4326 will now show coordinates in latitude/longitude order instead of longitude/latitude (unless the specific CRS has different native ordering).

image4

This feature was funded by SevenCs GmbH

This feature was developed by Nyall Dawson (North Road Consulting)

Feature: Select features from expression based symbols

A “Select Features” action has been added to the right click context menu on legend class symbols. This allows you to rapidly select all features within a layer that match the associated symbol class in categorized, graduated, and rule based renderers.

image5

This feature was funded by City of Canning

This feature was developed by Nyall Dawson (North Road Consulting)

Feature: Copy preview expression value to clipboard

A new button has been added to the expression builder interface which allows the copying of the value in the expression preview field to the clipboard.

image6

This feature was funded by Camptocamp

This feature was developed by Ismail Sunni

Feature: Option to synchronize statistics panel with layer selection

A “Keep synchronized with TOC” checkbox has been added to the statistics panel, which allows the statistics panel to automatically synchronize with the table of contents layer list, ensuring that the active layer is selected for the computed statistics displayed in the statistics panel.

The most recently defined expression used for defining the statistics calculation on a layer will be retained for each layer independently.

image7

This feature was developed by Jacky Volpes

Feature: Implement scroll wheel action for color and symbol buttons

Triggering a mouse wheel action while hovering a symbol layers will now automatically adjust one of the style attributes, making it more efficient to adjust common symbology rules. This feature affects different symbol styles in various ways, based on which UI control is selected.

  • For marker symbols, the marker size increases / decreases

  • For line symbols, the line width increases / decreases

In addition, when triggering a mouse wheel action while hovering a color symbol, the color opacity will increase / decrease.

image8

This feature was developed by Mathieu Pellerin

Accessibility

Feature: Horizontal table scroll with shift+wheel

Attribute tables can now be scrolled horizontally using the key combination of Shift+ Mouse wheel, switching from the default vertical scroll operation.

This matches the behavior exposed by LibreOffice, and provides a convenient way to quickly horizontally scroll tables when a mouse doesn’t have a dedicated horizontal scroll wheel.

image9

This feature was funded by the City of Canning

This feature was developed by Nyall Dawson (North Road Consulting)

Symbology

Feature: New “Animated Marker” symbol type

A new marker symbol type allows points to be rendered using an animated marker, sourced from an animated gif, webp or mng animation. Options are present for marker file, size, angle and frame rate.

There are two ways in which animated symbols are handled.

  • If the map is NOT considered an animation (i.e. a regular QGIS project), then the frame to render will be based on the current timestamp alone.

  • If the map itself is considered an animation, then the frame rendered for the animated marker is based on the map animation frame and frame rate. This is the case when the temporal controller is set to the Animation mode. In this case, the animated markers will follow the temporal controller animation, e.g. pausing when the animation is paused, advancing frames with the animation, etc. This mode also applies when exporting an animation from the temporal controller and is used when a plugin specifically sets the frame rate and current frame properties.

image10

This feature was funded by North Road Consulting

This feature was developed by Nyall Dawson (North Road Consulting)

Feature: Allow any symbol to be an animated symbol

Users can now indicate that a symbol should be treated as an animated symbol, through the new “Animation Settings” option in the symbol widget’s Advanced menu.

This settings panel allows users to enable animation for the symbol and set a specific frame rate at which the symbol should be redrawn. When enabled, the @symbol_frame variable can be used in any symbol data defined property in order to animate that property.

For instance, setting the symbol’s rotation to the following data defined expression will cause the symbol to rotate over time, with rotation speed dictated by the symbol’s refresh rate.

@symbol_frame % 360

image11

This feature was funded by North Road Consulting

This feature was developed by Nyall Dawson (North Road Consulting)

Feature: Add a new classification method for “Fixed interval”

Allows users to create graduated breaks using a specific interval width for classes (instead of the total number of classes).

image13

This feature was funded by SLYR

This feature was developed by Nyall Dawson (North Road Consulting)

Feature: Custom dash pattern panel shows total pattern length

The custom dash pattern panel now displays the total dash pattern length, enhancing the ability for users to match the overall pattern length with sizes from other parts of a symbol.

image14

This feature was funded by North Road Consulting

This feature was developed by Nyall Dawson (North Road Consulting)

Feature: Select style categories when storing styles in database

QGIS supports the storing of layer styles in the source database, or in the local style database. QGIS then provides the ability to use those styles as the default style for a layer, or provide access to the style via the style manager.

In prior releases of QGIS, this process stored all available style categories in the database, however new functionality allows users to select which specific style categories should be stored, providing a similar level of flexibility for storing styles in database sources as was previously available only for the QML and SLD style formats.

image15

This feature was developed by Jacky Volpes

Labelling

Feature: Allow data-defined control over line anchor type

Allows data-defined control over whether the ‘hint’ or ‘strict’ anchoring type is used.

This feature was funded by City of Freiburg im Breisgau

This feature was developed by Nyall Dawson (North Road Consulting)

Feature: Control label anchor placement relative to text position

A control is now provided for defining what part of the text (start, middle, or end) of line labels correspond to the anchor position defined in label placement. This allows for more precise placement of labels according to specific requirements, such as lining up the end of a labels text with a specific point on a line feature.

In prior releases of QGIS, labels would always be centered over the anchor position of lines, unless it was a curved label, which used the start of the label for determining the anchor orientation.

A new option for “Follow placement” has also been added, which means that the text anchor will depend on the placement along line setting. This control attempts to determine the appropriate alignment option automatically according to the label placement on the feature and exhibits the following behaviors:

  • For labels anchored near the start of the line (0-25%), the anchor placement will be the start of the label text

  • For labels anchored near the end of the line (75-100%), the anchor placement will be the end of the label text

  • For anchor placements between 25 and 75%, the anchor placement will be the center of the label text

This feature was funded by City of Freiburg im Breisgau

This feature was developed by Nyall Dawson (North Road Consulting)

Feature: Interactively move curved line labels along their line features

Placement of curved label text can now be manipulated by using the interactive “Move Labels” tool.

image16

This feature was funded by City of Freiburg im Breisgau

This feature was developed by Alessandro Pasotti

Rendering

Feature: WMS provider resampling

Following the ability of QGIS 3.24 to convert WMS raster tiles to elevation data, QGIS has further been enhanced to include various resampling methods to reduce rendering artifacts in WMS DEM sources, such as pixelation encountered with hillshade rendering.

image17

This feature was funded by Maptiler

This feature was developed by Lutra Consulting (Vincent Cloarec)

Feature: Selective masking vectorization

QGIS introduced a selective masking feature in version 3.12, however the implementation relied on the rasterization of the map products and made it unsuitable for some cartographic work.

This long awaited feature implements selective masking in a way that vectorizes appropriate masked or clipped features wherever possible, allowing high quality vector outputs for SVG and PDF maps which use the masking features of QGIS.

This is implemented in line with QEP 186.

image18

This feature was developed by Julien Cabieces

3D Features

Feature: Transparency support for 3D Phong material

Provides support for rendering semi transparent objects in 3D. An opacity slider is provided for the phong material widget, which defaults to 100% (fully opaque).

image19

This feature was funded by Swedish QGIS user group.

This feature was developed by Lutra Consulting (Nedjima Belgacem)

Feature: 3D Maps inherit terrain settings from project

When a new 3D map is created in the project, the map will default to using the same terrain settings as are defined for the project. This makes it easier to create and destroy 3D maps, without having to re-setup their terrain settings each time.

This feature was funded by Crowdfunding for raster and point clouds improvements

This feature was developed by Nyall Dawson (North Road Consulting)

Feature: Sync 2D and 3D navigation

A new “Navigation sync” setting for 3D map frames provides the ability to automatically synchronize the 2D main map canvas extent and the 3D viewport based on various navigation options.

  • Option 1: Whenever the camera is moved in the 3D view, the main map (2D) canvas extent will be set to the viewed area

  • Option 2: Every change in position on the main map canvas (2D) will result in the 3D camera orientation being shifted to view approximately the same extent from the top (Nadir view position)

  • Option 3: A trapezoid area representing the field of view from the 3D map frame will be drawn on the main map (2D) canvas

Actions are also available for quickly turning these options on and off.

image20

This feature was funded by Crowdfunding for raster and point clouds improvements

This feature was developed by Lutra Consulting (Nedjima Belgacem)

Feature: 3D axis in 3D map viewer

A 3D axis annotation has been added to the 3D map viewer allowing users to better orient their view with their data.

This various additional includes controls and options for:

  • Displaying axis for X/Y/Z or using North/East/South/West based on the frame coordinate reference system (CRS)

  • Displaying a face-labeled cube instead of typical axis arrows

image21

This feature was developed by benoitdm-oslandia

Point Clouds

Feature: Point cloud triangulation in 3D views

QGIS can now render point cloud layers in the 3D view as a solid surface, which is obtained by 2.5D triangulation.

Triangulation is configured using a checkbox in the 3D styling options, and configuration options allow exclusion of triangles which surpass user defined thresholds for width or height.

This triangulation is available for all the 3D point cloud renderer styles, including unique color, ramp color, classification, and RGB.

image22

This feature was developed by Vincent Cloarec

Feature: Cloud Optimized Point Clouds (COPC) support

QGIS now provides support for reading Cloud Optimized Point Clouds from local and remote data sources.

For more information on the COPC format, visit https://copc.io/.

This feature was funded by Crowdfunding for raster and point clouds improvements

This feature was developed by Lutra Consulting (Nedjima Belgacem)

Feature: Point cloud filtering

Filtering support has been added for point cloud layers, including a graphical query tool. Using filter expressions, point cloud points on both 2d and 3d canvases may be conditionally displayed based on xyz and/or LAS attributes.

image23

This feature was funded by Crowdfunding for raster and point clouds improvements

This feature was developed by Lutra Consulting (Stefanos Natsis)

Feature: Point cloud style synchronization

A new “Follow 2d renderer” style for 3D point cloud symbology allows for a point cloud layer’s 3D symbol to be kept in sync with its 2D counterpart. Any changes to the 2D symbology will be automatically applied to the 3D symbology.

image12

This feature was funded by Crowdfunding for raster and point clouds improvements

This feature was developed by Lutra Consulting (Stefanos Natsis)

Feature: Improvements to the classified renderer

Classified renderer for point clouds has been improved to:

  • Show only classes that are in the dataset (instead of hard-coded list) & show also non-standard classes

  • Show percentage of points for each class

  • Work also for other attributes (return number, number of returns, point source and few other classes)

image55

This feature was funded by Crowdfunding for raster and point clouds improvements

This feature was developed by Lutra Consulting (Stefanos Natsis)

Expressions

Feature: Between/Not between operators

QGIS now includes support for SQL-like BETWEEN and NOT BETWEEN operators in expression clauses.

image25

This feature was funded by Kanton Solothurn

This feature was developed by Alessandro Pasotti

Feature: Static parent variable in aggregate expression functions

In prior releases of QGIS, aggregate expressions did not pass the parent object parameters as static variables, preventing them from being executed by the data provider (e.g. PostgreSQL). This change will result in significant performance increases for a number of aggregate expressions. For example, in the aggregate expression:

IF(aggregate(layer:='parks',aggregate:='count', expression:= 't_id', filter:=intersects( $geometry, geometry(@parent))) < 1, 'FALSE', 'TRUE')

The execution of the intersects( $geometry, geometry(@parent)) filter will be performed on the data provider directly.

This feature was funded by Amt für Geoinformation Kanton Schaffhausen

This feature was developed by David Signer

Digitising

Feature: Add a checkbox to disable vertex tool dock auto-opening behavior

The vertex tool dock now has a new checkbox for “Auto-open table”, which is checked by default and retains the existing behavior.

If a user opts to uncheck this, then the vertex editor dock auto open/close behavior will be disabled, leaving the dock as regular QGIS dock which behaves the same as any other dock.

This is desirable in situations when:

  • The user is editing in a full screen session with docks hidden, and doesn’t want the vertex editor dock to keep opening itself

  • The user has a heavily customized setup of stacked/tabbed/rearranged docks, and doesn’t want the vertex editor dock to keep appearing and disappearing and causing other docks to be rearranged

If a user has opted out of the auto-open table behavior, then the dock can be closed and won’t show immediately when switching to the vertex tool. The dock can then be re-opened either through the standard Views - Panels menu (or by right clicking a toolbar), OR through a new “Show Vertex Editor” action which has been added to the dropdown menu for the vertex editor toolbar button.

image26

This feature was funded by SevenCs GmbH

This feature was developed by Nyall Dawson (North Road Consulting)

Feature: Integrate shape map tools into feature digitizing

The Shape Tools have been extended and integrated with the features from digitizing tools, allowing the use of map tools to use shapes for digitizing operations.

This includes digitizing support for items such as:

  • StraightSegments

  • CircularStrings

  • Streaming

  • Shapes

This results in the ability to use the add part, add ring, or any other digitizing operations with the shape tools for hybrid digitizing operations, for example using the circular string or rectangle shape tools to create rings in existing area features.

This required significant refactoring and the porting of code from QgsMapToolDigitizeFeature to QgsMapToolCapture.

image27

This feature was developed by Denis Rouzaud

Feature: New constraints for advanced digitizing panel

The advanced digitizing panel now includes two additional soft constraints (snapping guides) for allowing users to capture positions relative to existing features. These constraints are optionally enabled and include:

  • Line extension: QGIS will provide a constraint that traces the extension of a line, based on the segment orientation defined by the selected vertex

  • Xy vertex: QGIS will provide a constraint that runs perpendicular to an existing vertex in vertical or horizontal orientation.

image28

This feature was funded by Métropole Européenne de Lille @Jean-Roc

This feature was developed by Antoine Facchini

Data Management

Feature: Add a “filter rules” search box to vector tile renderer and labeling widgets

Users may now filter the visible rules by a portion of their label, layer or filter strings. This can greatly help with finding rules in complex vector tile styles.

image29

This feature was funded by North Road Consulting

This feature was developed by Nyall Dawson (North Road Consulting)

Feature: User defined field names in export

When exporting layers, users may now override the field names in the resulting layers.

The export dialog fields interface includes the following changes:

  • A new “Export names” column has been introduced to the fields table

  • A convenience checkbox is provided to automatically generate aliases, or revert to original field names

  • When field names are modified by the user, the checkbox will display a “PartiallyChecked” state indicator

image30

This feature was funded by the Swiss QGIS User Group

This feature was developed by Damiano Lombardi

Feature: Georeferencing vector layers in georeferencer

QGIS now supports georeferencing vector layers in the georeferencer tool. This allows vector layers without spatial referencing to be interactively georeferenced, or layers with referencing to be re-referenced, in a similar manner to raster data. Georeferencing occurs in a task, so QGIS should remain responsive, even with large datasets.

Based on #41386

image31

This feature was funded by the Danish QGIS Usergroup

This feature was developed by Nyall Dawson (North Road Consulting)

Feature: Add field domain management capabilities to browser

A new API has been added to manage field domains through database connections, and QGIS now exposes this functionality through the browser panel.

This functionality is currently exposed only for GeoPackages, but support for other providers could potentially be exposed in future.

Included in this functionality is the ability to create new field domains, as well as set the field domain for GeoPackage table fields.

image32

This feature was funded by Provincie Gelderland

This feature was developed by Nyall Dawson (North Road Consulting)

Feature: Buffered Transactional Editing

With this edit mode, all editable layers are toggled synchronously and all edits are saved in a local edit buffer. Saving changes is executed within a single transaction on all layers (per provider).

This new edit mode attempts to provide a hybrid alternative for managing the data editing approaches used in the current editing modes, local edit buffers and transactional editing, and is implemented in line with QEP 203

image33

This feature was funded by Kanton Glarus

This feature was developed by Damiano Lombardi

Forms and Widgets

Feature: Access form reference in python form actions

The form instance, or QgsAttributeForm object, has now been exposed to the Python API for Drag and drop form actions.

This means that QGIS users can now reference the current form and produce actions that change values within the form itself, such as resetting default values or quick actions for applying other user defined presets.

This implementation has been done in line with QEP 251

image34

This feature was developed by Alessandro Pasotti

Feature: Allow drag and drop forms label font and color customization

The font and color of form labels and group or tabs titles can now be customized in the Drag & Drop from designer interface.

image35

This feature was funded by ARPA Piemonte

This feature was developed by Alessandro Pasotti

Feature: Collapse form group by expression

New configuration options are now available for Drag & Drop form group boxes which allow specifying an expression to define whether a form group should be collapsed.

image36

This feature was funded by ARPA Piemonte

This feature was developed by Alessandro Pasotti

Analysis Tools

Feature: “Keep disjoint features separate” option for dissolve algorithm

A “Keep disjoint features separate” option has been added for the dissolve algorithm which will cause features and parts that do not overlap or touch to be exported as separate features instead of parts of a single multipart feature. This makes it much simpler to perform simple aggregation based dissolves on a single class.

image37

This feature was funded by City of Canning

This feature was developed by Nyall Dawson (North Road Consulting)

Processing

Feature: Raise message model tool

A raise message algorithm has been added to the model tools which allows users to output additional information in models logs. This prevents the abuse of the raise error/warning algorithms and provides more granular control of model logging levels.

image38

This feature was developed by Mathieu Pellerin

Feature: Run batch processing steps in tasks

Individual steps from the batch processing dialog now run as a separate task whenever possible. Although individual steps are still run sequentially rather than parallel, this keeps the UI responsive, and permits responsive cancellation and progress reporting.

This feature was funded by NRCan Contract#3000739399

This feature was developed by Nyall Dawson (North Road Consulting)

Feature: Background processing of model algorithms

Previously, any graphical models designed in Processing would be forced to run on the main thread, and did not support background execution. QGIS now supports running model algorithms off the main thread so that they can safely be run in background tasks.

This feature was funded by NRCan Contract#3000739399

This feature was developed by Nyall Dawson (North Road Consulting)

Feature: Allow setting Examples in graphical model help

A new ‘Examples’ section has been added to the graphical model help editor dialog, allowing users to enter their own custom examples to help explain usage of the model.

More instructive help is now shown for models in the qgis_process tool, including outputting any example help which has been set.

image39

This feature was funded by NRCan Contract#3000739399

This feature was developed by Nyall Dawson (North Road Consulting)

Feature: Overlay tools with multiple overlay layers support

Adds new Intersect, Union and Difference tools which support multiple “overlay” inputs instead of a single overlay layer. The current workflow includes selecting the order of overlay layers used in the operation, which are used in an iterative process by using the output of an operation between two layers as an input for the same operation with the next layer.

This is a useful abstraction which can be utilized in various scenarios, such as processing models where iterative processes or loops may be limited.

image40

This feature was developed by Alexander Bruy

Application and Project Options

Feature: Project elevation properties framework

Elevation/terrain settings are now project-level settings, which are defined through the Project Properties, Terrain tab, in line with QEP 246 and in order to support the new elevation profile tools.

This framework provides configuration options for:

  • Flat terrain with a configurable terrain height setting

  • DEM (Raster Layer) with settings for defining the source raster layer, vertical scale and offset

  • Mesh with settings for defining the source mesh layer, vertical scale and offset

image41

This feature was funded by Crowdfunding for raster and point clouds improvements

This feature was developed by Nyall Dawson (North Road Consulting)

Feature: Optionally store UI configuration in projects

An opt-in setting for projects has been added for “Remember attribute table windows and docks between sessions”. If checked for a project, then any opened attribute tables will be saved into the project and immediately restored when loading that project.

This has been designed to improve workflows when a user has constructed a project with a particular set of attribute table configurations for their requirements, and re-setting up these attribute tables is a hassle.

image42

This feature was funded by City of Canning

This feature was developed by Nyall Dawson (North Road Consulting)

Feature: Optionally store layer edit state in projects

An opt-in setting has been added to project properties for “Remember editable layer status between sessions”. If checked, then any layers which are editable will be remembered when saving that project and immediately made editable whenever the project is restored to make it simpler for users who are making complex, data-editing focused projects to store their configurations on a project by project basis.

image43

This feature was funded by City of Canning

This feature was developed by Nyall Dawson (North Road Consulting)

Feature: Project style databases support

A new feature allows users to set a list of QGIS style databases for a project. This allows projects to link to multiple style databases, and then show all symbols and entities from those databases in the layer styling interface.

The style paths can point to style .db databases or .xml exports. When a project is loaded, symbol and label style selectors will show ALL symbols from ALL styles linked to the project. Additionally, every project now has a project-specific style database (which is stored alongside the project), for storing project-specific symbols, text formats, etc.

This functionality requires a QGIS build based on Qt 5.13 or later, and is hidden on older builds (e.g. on Ubuntu 20.04)

image44

This feature was funded by the QGIS Swiss user group.

This feature was developed by Nyall Dawson (North Road Consulting)

Feature: Added setting to show feature counts by default for newly added layers

If enabled, this option will cause the feature count to be enabled for any newly added/created map layers. This setting will remain disabled by default.

image45

This feature was funded by SevenCs GmbH

This feature was developed by Nyall Dawson (North Road Consulting)

Feature: Add a “Skip” option for custom environmental variables

The QGIS settings allow a particular user profile to modify the system environment variables for enhanced flexibility, in Settings –> Options –> Environment.

This functionality included options for “Overwrite”, “If Undefined”, “Unset”, “Prepend”, and “Append”, which allowed users to perform various functions from configuring credentials to extending their PATH variables.

A new “Skip” option is now provided which allows users to ignore values from an existing field, without losing the stored values or having to remove them from the settings to disable them.

image46

This feature was developed by Andrea Giudiceandrea

Feature: Revamped projects’ default symbols, color ramp, and text format

This new version of QGIS has revamped the way default projects symbols are handled, aiming at upgrading its UI/UX as well as behaving correctly in multi-user environments. The changes include:

  • Projects’ default symbols and color ramps are now stored as symbology XML rather than references, improving portability and integration with external applications and services

  • A new project-level default text format setting has been added to allow user defined configuration of the default project font for newly-added vector layers

  • The user interface has been upgraded to make use of QGIS’ symbol and color ramp buttons

image47

This feature was developed by Mathieu Pellerin

Profile Plots

Feature: Elevation profile plotting tool

QGIS now includes a native elevation profile plotting tool.

The tool includes the following features:

  • Support for vector, raster, mesh, and point cloud layers, based on the corresponding layer’s elevation settings.

  • Drawing profile lines interactively using a map tool, which supports snapping, tracing, stream digitizing and curves

  • Picking an existing line feature to use as the profile line. When this tool is active, users can click any line feature on the map to generate a profile curve along that line. If multiple features are present at the clicked point then a popup menu will appear allowing users to select from the available features.

  • Plots can be exported to PDF (as high quality vector objects) or various image formats

  • Profiles are rendered using standard QGIS line symbols, and so include support for advanced design and configuration, including support for geometry generators and paint effects.

  • Measuring distances on the plots

  • Identifying features in the plot via either a single click, or click-and-drag rectangle. Results are shown in the standard identify results dock, and support vector, raster, mesh, and point cloud layers.

Interactive navigation of the plot canvas is supported using the standard QGIS pan/zoom shortcuts, such as:

  • Middle mouse button: Pan

  • Space: Pan

  • Ctrl + Space: Zoom

  • Ctrl + Mouse wheel: Fine zoom

Shortcuts are available for nudging the elevation profile curve left and right, which allows users to “scrub” the curve across the map frame and find the optimal profile line. The step distance is set to match the chart’s tolerance distance, so that a single step will result in a different set of point and point cloud features shown in the chart.

Keyboard shortcuts for nudging are:

  • Ctrl+Alt+,: Scrub left

  • Ctrl+Alt+.: Scrub right

For more information on this awesome feature and framework, be sure to watch the QGIS Elevation Profiles Deep Dive presentation on YouTube.

image48

This feature was funded by Crowdfunding for raster and point clouds improvements

This feature was developed by Nyall Dawson (North Road Consulting)

Feature: Flexible vector layer symbology in elevation profiles

Vector layers added to profile charts will default to respecting their layer symbology. A checkbox has been added to disable this in the layer elevation properties.

This means that vector results in elevation profile charts will default to showing features using their corresponding 2D renderer, so custom styles such as categorized classes will be visible on the profile chart by default.

There’s also options to change the interpretation of the elevation profile for vector layers. By default, the elevation profile tool will use an “individual features” option, which samples discrete positions where the cross section profile line intersects the vector features. There’s also a “continuous surface” option which will generate an interpretation of the surface by interpolating across the sample positions for enhanced visualization, such as the production of a continuous surface line from contour lines or surveyed elevation points.

Additional rendering capabilities are provided for the “continuous surface” interpretation option, such as a “fill below” symbol style. This can be easier to interpret in some cases, and helps match expected symbology conventions in certain disciplines.

image49

This feature was funded by Crowdfunding for raster and point clouds improvements

This feature was developed by Nyall Dawson (North Road Consulting)

Feature: Flexible symbology for point cloud profile plotting

Point cloud layers in profile charts include the following symbology features:

  • Single color display of points or a setting to inherit classification and coloring from the 2D symbology (e.g. RGB colors)

  • Respecting the profile curve distance tolerance setting

  • Option to reduce the opacity of points which are further from the profile curve

  • Automatic refinement based on plot visible area and scale, with a user controllable max screen error

  • Control over appearance of points (color, size and shape)

image50

This feature was funded by Crowdfunding for raster and point clouds improvements

This feature was developed by Nyall Dawson (North Road Consulting)

Feature: Vector feature extrusion for profile charts

The elevation profile tool provides support for vector feature extrusion and offset heights for incorporation of 2D vector in profile charts. These propertied can be data defined, and will also be used as the default offset/extrusion settings for any new 3D polygon symbols created for that layer.

image51

This feature was funded by Crowdfunding for raster and point clouds improvements

This feature was developed by Nyall Dawson (North Road Consulting)

Browser

Feature: Rename bookmark groups context menu control

Creating new spatial bookmarks from the browser will now default to the “project bookmark” category, and a new context menu option has been added for renaming of bookmark groups. The existing behavior of renaming bookmark groups using the F2 key remains unchanged.

image52

This feature was funded by Camptocamp

This feature was developed by Ismail Sunni

Data Providers

Feature: Support reading ESRI vector tile packages (.vtpk) files directly

ESRI vector tile packages (VTPK files) can now be opened directly as vector tile layers via drag and drop, including support for style translation.

This feature was funded by North Road Consulting, thanks to SLYR

This feature was developed by Nyall Dawson (North Road Consulting)

Feature: SQL Logging in the Debugging/Development panel

The debugging/development panel now includes support for logging the SQL queries made by QGIS to backend data providers.

This provides an effective method of debugging algorithms and data providers, as well as capturing the SQL statements made to perform specific actions against particular providers.

Note that this is specifically designed to be used as a debugging and development tool and is not designed to be a replacement for any logging capabilities on the backend databases systems.

This has been implemented in line with QEP 242.

image53

This feature was developed by Alessandro Pasotti

QGIS Server

Feature: Alternate periodic check strategy for detecting project updates

QGIS Server now provides an alternate lastModified() strategy for invalidating the internal project cache, addressing concerns about the ability of QGIS server to invalidate the cache when a project file is updated on atypical file systems, such as NFS, or when the project file is stored in a database system like PostgreSQL.

An asynchronous periodic check strategy using the last modified value of a project is now provided for checking project configuration for changes.

The QGIS_SERVER_PROJECT_CACHE_STRATEGY environment variable may be used to configure the server caching strategy using the following values:

  • periodic for the alternative strategy

  • filesystem to use the file system watcher strategy

  • off to disable internal caching completely.

QGIS_SERVER_PROJECT_CACHE_CHECK_INTERVAL is used for controlling the periodic strategy interval.

The QFileSystemWatcher strategy remains the default configuration.

This feature was funded by 3Liz

This feature was developed by David Marteau

Feature: Add more server highlight label parameters

New parameters have been added to better control the placement of highlight labels on the WMS server, including:

  • HIGHLIGHT_LABELDISTANCE: Distance between the feature and the label, defined in mm

  • HIGHLIGHT_LABELROTATION: Label rotation, defined in degrees

  • HIGHLIGHT_LABELVALI: Vertical alignment for placing the label directly on a point

  • HIGHLIGHT_LABELHALI: Horizontal alignment for placing the label directly on a point

This feature was developed by mhugent

Feature: Temporal properties support for WMS Server

Prior releases of QGIS Server only provided support for the dimensions of time and elevation for vector layers and provided no integration with the updated temporal properties API provided by QGIS.

QGIS Server has now been extended to support the time dimension in the GetCapabilities response for WMS services, and accept a TIME query string parameter which provides capacity for temporal data filtering.

Parsing time values will be performed with the implementation specification provided by OGC API - Features (OAPIF) and use the following structure:

| interval| syntax | |—|—| | interval-closed | date-time “/” date-time | | interval-open-start | [“..”] “/” date-time | | interval-open-end | date-time “/” [“..”] | | interval | interval-closed / interval-open-start / interval-open-end | | datetime | date-time / interval |

Note that this filtering applies to single values only, and a list of instants or ranges is not currently supported.

To prevent conflict with existing TIME dimension stipulations on legacy projects, if a TIME dimension was explicitly defined for a vector layer, the temporal properties for that layer will not be activated and the explicitly set TIME dimension will be considered instead.

This feature was funded by Gis3W

This feature was developed by Alessandro Pasotti

Programmability

Feature: Add a QgsScaleCalculator function to calculate canvas width from a given extent, scale, and dpi

A new calculateCanvasWidth( extent, scale ) was added to the QgsScaleCalculator class to derive canvas width in pixel unit when providing an extent, a scale, and a DPI.

This feature was developed by Mathieu Pellerin

Feature: Clear current symbol action in symbol button widget

A set to null / clear current symbol action has been added to clear the current symbol attached to a symbol button widget.

image54

This feature was developed by Mathieu Pellerin

Notable Fixes

Bug fixes by Even Rouault

Bug Title

URL Issues (if reported, Github)

URL Commit (Github)

3.22 backport commit (GitHub)

WFS provider doesn’t recognize CRS strings other than OGC URNs

#46485

PR #48550

N/A

QgsMapCanvas::showEvent access violation / QGIS crash

#48438

PR #48551

PR #48558

[GDAL provider] Minimal support for GDT_Int64/GDT_UInt64 of GDAL 3.5.0

(not reported)

PR #48553

access to QgsRubberBand-methods crashes QGis

#48471

PR #48554

PR #48561

annotationManager with access to canvas-items crashes QGis

#48436

PR #48554

PR #48561

Can not import excel File with new version of QGIS

#47838

N/A - freexl bug. Patch submitted to upstream

N/A

Layers added by QGIS are not correct if datasource is a collection

#47610

PR #48556

PR #48572

SQLite: No Spatial Index Creation though QGIS misleadingly reports success

#44513

PR #48557

PR #48565

Saving a large edited point layer takes far too long

#46355

GDAL PR 5730

GDAL PR 5753

Non-existent but registered attribute table in GPKG is added as empty table

#30670

GDAL PR 5752

Not appropriate

Accents displayed incorrectly when saving metadata to geopackage

#47435

PR #48625

PR #48631

Raster tiles are clipped based on the gpkg_contents bounding box of a GeoPackage

#45530

Not a bug

Pan-action freeze after use of middle mouse button and ‘copy coordinate’

#48645

PR #48666

PR #48684

New GeoPackage layer cannot be loaded (QGIS thinks it’s invalid but it isn’t really)

#48671

PR #48692

PR #48774

[regression] New filter for duplicated WFS layer is also applied on source layer

#48465

PR #48998

N/A

These bugfixes were funded by QGIS.ORG (through donations and sustaining memberships)

Bugs fixed by Even Rouault

Bug fixes by Alessandro Pasotti

Bug Title

URL Issues (if reported, Github)

URL Commit (Github)

3.22 backport commit (GitHub)

@project_keywords are no longer tested on Rule based filters

#48480

Not a bug

No more styles after duplicate layer and change filter in query builder in 3.22.6

#48467

Works for me on 3.24.2 and master

MSSQL Add Connection Dialog never enables OK button

#48462

Works for me on master

Highlight of identified feature not displaying correctly on “geometry generator” marker from different CRS

#48439

PR #48579

TODO

Cannot past copied features as temporary scratch layer

#48401

PR #48611

TODO

QGIS crash by opening a form with relation content

#48443

PR #48616

TODO

Relation reference widget: filter expression does not work with variables

#48190

PR #48619

TODO

Random order of attributes in oracle feature query

#35309

PR #48668

no

CSV datasource not converted from 3.16 to 3.22 correctly - projects not usable anymore

#48587

Works for me on 3.24 and master

Documentation doctest failure

QGIS developer mail list

QGIS Documentation PR 7581

no

“Add to group” option in sub layer window always add at top of layer tree

#48694

PR #48696

no

Name/id of map objects in GetProjectSettings follows an order that is the inverse of the order used to add the map objects in a layout

#46143

PR #48728

no

Aborted inserts in Postgis geometryless tables are saved anyway

#48171

PR #48741

no

Inconsistent coordinate rounding in Raster “Layer Properties”

#48767

PR #48790

TODO

Drag and Drop Postgis-Table in QGIS Browser alters name of Geometry-Column

#48748

PR #48796

no

Layer filter does not work on multiline strings values with linebreaks

#47530

PR #48818

no need

QGIS Crashes while searching in the expression builder

#48189

PR #48856

PR #48864

Server GetPrint with multiple maps following map themes apply prefixed LAYERS (map0:LAYERS) to all maps

PR #48923

PR #48923

TODO

These bugfixes were funded by QGIS.ORG (through donations and sustaining memberships)

Bugs fixed by Alessandro Pasotti

Bug fixes by Alex Bruy

Bug Title

URL Issues (if reported, Github)

URL Commit (Github)

3.22 backport commit (GitHub)

QgsProcessingParameterMultipleLayers adds an extra list element when reordering inputs

#45634

Works for me on 3.24 and master

GDAL Vector to Raster (gdal_rasterize) fail to produce ESRI ASCII as output

#39140

Not a bug

Processing: Drape / qgis:setzfromraster inconsistent NODATA behaviour

#43650

Works for me on master

Algorithm output node is placed half outsize model canvas

#48132

PR #48600

PR #48661

Inconsequence in CRS-names/id’s in Copy Coordinate in MapCanvas

#37226

PR #48599

QGIS Batch Mode Populating Form are producing gaps between rows

#43869

PR #48601

PR #48636

Processing settings dialog cleared after a search is done in Settings dialog

#34543

PR #48602

PR #48633

QgsProcessingAlgorithm with FlagHideFromModeler flag is still visible in the Model Designer

#48586

PR #48603

PR #48632

Batch Nominatim Geocoder output directly saved to file has no CRS

#48385

PR #48618

PR #48708

Iterating over features in processing algorithm not creating correct destination folder

#48383

PR #48646

PR #48657

Dragging multiple layers in processing algorithm layer selection widget crashes QGIS

#47728

PR #48649

PR #48656

These bugfixes were funded by QGIS.ORG (through donations and sustaining memberships)

Bugs fixed by Alex Bruy

Bug fixes by Sandro Santilli

Bug Title

URL Issues (if reported, Github)

URL Commit (Github)

3.22 backport commit (GitHub)

Add simple bash script to run tests as done by CI

QGIS QEP #244

PR #48617

Not appropriate

test_provider_eptprovider occasionally aborts

#48778

PR #48793

not needed

Issue with QgsVectorLayerUndoCommand class (QGIS crashes)

#23243

PR #48700

PR #48934

Check that source files are not overridden

#25830

PR #48654

Not appropriate

TestQgsGdalProvider failures in absence of netcdf support

#48906

PR #48907

PR #48926

test_core_gdalprovider modifies tests/testdata/zip/landsat_b1.zip source file

#48846

PR #48917

PR #48926

Drop gpkg_metadata_reference_column_name_update trigger generated by GDAL < 2.4.0

N/A

PR #48953

PR #48957

Fix test analysis processing modification of source files

#48937

PR #48959

PR #48961

ctest: No module named ‘qgis.server’

#48958

PR #48993

PR #48999

PyQgsLocalServer test fails: AttributeError: module ‘platform’ has no attribute ‘dist’

#48962

PR #48976

PR #49028

Fix old GDAL triggers in geopackage files

N/A

PR #49037

PR #49039

These bugfixes were funded by QGIS.ORG (through donations and sustaining memberships)

Bugs fixed by Sandro Santilli (strk)

Bug fixes by Nyall Dawson

Bug Title

URL Issues (if reported, Github)

URL Commit (Github)

3.22 backport commit (GitHub)

layer_property(…, ‘path’) should work for all layer types

#49011

PR #49042

PR #49046

Improve UX for virtual layer creation dialog

unreported

PR #49015

Not appropriate

[db manager] Don’t load preview layers into project

#47159

PR #49016

PR #49019

Don’t hang when an error occurs while trying to build a virtual layer

#48908

Commit 988edc8700

Too intrusive

Don’t offer non-vector layer providers as options for virtual layer

#48908

Commit 988edc8700

Too intrusive

Fix selecting/deselecting all in offline editing dialog when some layers are in unchecked groups

#48971

PR #48985

PR #49002

Fix hovering features in attribute table in dark themes selects them

#48914

PR #48986

PR #49001

Fix atlas expression context is not available when rendering item overview frames

#48963

PR #48967

PR #48984

Fix regression where layout attribute table conditional styles don’t apply

#48965

PR #48968

PR #48973

Review and finish open PR PR #48314

Fix geometry based expression attributes for diagrams

#47800

PR #48893

PR #48911

Fix loss of precision when an extent is manually entered in processing extent widgets

#48887

PR #48895

PR #48910

Fix some undersized icons on hidpi displays

unreported

PR #48875

Not appropriate

Make atlas coverage layer available to expression builder for custom grid format

#48833

PR #48839

PR #48894

Fix regression where user defined default style doesn’t apply to MapInfo TAB files

#48667

PR #48840

PR #48892

Fix picking values from QgsFeatureListComboBox

#48459

PR #48841

PR #48881

Fix clear values for offset along line spin boxes

unreported

PR #48872

PR #48878

Fix ambiguous “show all labels” setting and address regressions in label when this setting is misinterpreted

#41043

PR #48771

Too intrusive

Main annotation layer should follow project crs unless it has items added

#42378

PR #48815

Too intrusive

Fix some misleading warnings about transformations for non-earth crs

#42378

PR #48815

Too intrusive

Never show the transformation selection dialog for the first layer added to a project

unreported

PR #48811

PR #48814

Ensure layer level expressions work correctly for diagrams

#478000

PR #48803

PR #48813

Fix handling of WMTS sources with dimensions in browser

#36264

PR #48800

PR #48812

Ensure that all units are changed when setting output unit for a symbol

#45961

PR #48786

Fix loss of mesh layer styling when fixing a broken path to a mesh layer

unreported

PR #48765

PR #48768

Show pinned label highlights also for pinned curved labels

#48753

PR #48764

N/A

Don’t hide parts of the mesh renderer widget if the layer is invalid

unreported

PR #48757

Add layer opacity widget in mesh layer renderer properties widget

unreported

PR #48756

Review and finish open PR PR #44941

Fix a crash when QgsProject::instance() is accessed when no QgsApplication exists

unreported

PR #48721

N/A

Better approach to filtering lists by tags which works across different styles

#48659

PR #48689

N/A

Fix slow layout view when atlas is enabled with legend filter enabled

#47033

PR #48686

PR #48704

Fix crash after running model from history dialog

#40258

PR #48687

PR #48709

Fix crash on QGIS exit

likely solves a number of open tickets, but needs end user confirmation

Commit 5b052730b5

Too intrusive

Add support for map field types to memory provider, avoid data loss in models/processing

unreported

PR #48638

Too intrusive

Fix crash when convertng a curved geometry to curves

#48045

#48045

PR #49024

Fix many memory leaks

unreported

PR #48590

N/A

Fix ctrl modifier scrolling on symbol buttons

unreported

PR #48581

N/A

These bugfixes were funded by QGIS.ORG (through donations and sustaining memberships)

Bugs fixed by Nyall Dawson