Changelog for QGIS 3.34

image0

Release date: 2023-10-29

Introducing QGIS 3.34, a major release of the QGIS Project that brings significant enhancements to the capabilities of the QGIS open-source geospatial data analysis and visualization software.

This release includes a variety of enhancements to existing APIs, expressions, and tools, print layout modifications, and improvements to rendering options for both 2D and 3D contexts.

For a whirlwind tour of all the new functionalities introduced, you can view the highlight reel video on YouTube at https://www.youtube.com/watch?v=LHFVo0edaXE

QGIS is a community effort, and we would 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 contribute towards 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 or 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 more 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 their financial or social status - we believe that empowering people with spatial decision-making tools will result in a better society for all of humanity.

Cesium 3D Tiles

Thanks to an ecosystem grant from the Cesium project, QGIS now has support for loading in 3D content in the Cesium 3D Tiles format! Tiles can be loaded from either local or remote datasources (including the Cesium ion platform and the Google Earth photorealistic tiles), and are visible in both 2D and 3D map views. In 2D views users can control the appearance of tile content by styling in either their original textures or in a wireframe view of the tile geometries, and users also have control over the desired level of detail in both 3D and 2D views.

This feature was developed by Martin Dobias and Nyall Dawson

Map Tools

Feature: Optional enforcement of "dot" as decimal separator for measure tool

A new Always use decimal point checkbox option has been added to the Measure Tool. This option will ensure that measurements and coordinates are copied to the clipboard using a decimal point (dot) separator, even if the current locale uses a comma.

This enables the ability to copy comma-separated (csv) data even in instances where the user locale uses a comma as the decimal separator.

image1

This feature was developed by Yoann Quenach de Quivillic

Feature: Show a highlight on identified raster pixels when using identify tool

QGIS now displays the geometry of the identified feature result for raster pixels on the map canvas. This matches the existing behavior of the identify tool against vector, vector tile, and point cloud feature types.

This is useful when a identifying a raster which has sections of similar colored pixels and it's difficult to visually determine the exact extent of a pixel.

image2

This feature was developed by Nyall Dawson

Feature: Show raster row/column of clicked point in identify results

When using the identify tool on raster layers, the derived results will now include row and column number of the identified pixel.

image3

This feature was developed by Hannes & Nyall Dawson

Symbology

Feature: Settings for overriding selection color and selection symbol for vector layers

New layer rendering settings allow users to control the color and symbol that will be used in place of the system or project defaults when highlighting selected features.

This setting is defined for each layer and is useful to improve the visibility of selected features by the application of an explicitly defined symbology.

This is useful in various scenarios, including instances where:

  • The layer uses a symbol color or style that matches the selection symbology, resulting in the feature selection not being visible
  • A line layer uses a thin symbol, and coloring selected lines does not make them visible enough
  • Layers with complex symbology (such as raster/ gradient fills/ lines/ shapeburst with a color ramp) would not have a default selection color applied. In these scenarios, the user can now specify a simpler symbol to use for selected features within the layer.

image4

This feature was developed by Nyall Dawson

Labelling

Feature: Toggle labels for Vector Tile Layers

Users can now toggle labels for vector tile layers using the vector tile layer styling panel and the layer context menu in the table of contents of the layers pane, effectively replicating the label toggle capabilities for vector layers.

This functionality is enabled by the addition of new functions to the QgsVectorTileLayer API by replicating the existing functionality on QgsVectorLayer.

image5

This feature was developed by Mathieu Pellerin

Rendering

Feature: "Sticky" Map Decorations

Dynamic map decorations are now rendered to a transparent overlay, preventing re-rendering of decoration objects (such as title or scale bar) during navigation. The QgsMapDecoration now also includes hasFixedMapPosition to fix a decoration to a geographic location.

image6

This feature was developed by Yoann Quenach de Quivillic

Feature: Add map render profiler

The debugging/ development profiling tools have been extended with a new "map render" profile (accompanying the existing Startup and Project Load profiles).

Through this tool, users are able to identify pain points in their map rendering and track down exactly which layers are causing long map redraws.

image7

This feature was developed by Nyall Dawson

Feature: Add choice of two different modes for "Refresh Layer at Interval"

When using "Refresh Layer at Interval" on vector layers, previous versions of QGIS would simply redraw the layer (for animations etc.), without refreshing data from the data source.

A new widget is provided which allows users to select the layer refresh options according to their preferred use case:

  • "Reload Data": The layer will be completely refreshed. Any cached data will be discarded and re-fetched from the provider. This mode may result in slower map refreshes.
  • "Redraw Layer Only": This mode is useful for animations or when the layer style should be updated at regular intervals. Canvas updates are deferred in order to avoid refreshing multiple times if more than one layer has an automatic update interval set.

image8

This feature was developed by Nyall Dawson

3D Features

Feature: Allow GPU memory limit configuration

Users are now able to configure the GPU memory limit configuration on each layer (previously fixed at 500MB per entity/ layer)

A warning is also displayed when a limit is hit, which should assist in troubleshooting large scenes.

This functionality is useful for users utilizing large 3D scenes which exhaust the available GPU memory resources.

image9

This feature was developed by Martin Dobias

Feature: Add support for boundingbox3d

Additional API methods for relevant geometry classes are now available for boundingBox3D and calculateBoundingBox3D, as well as extensions to boundingBoxIntersects methods which will now support checking intersections between 3D bounding boxes.

This feature was developed by Jean Felder

Feature: Select multiple layout items

New functionality is provided for handling the selection of multiple items simultaneously from the item list within print layouts.

This also improves the user experience of multi-select existing functionality which is available with visual selections by keeping the item selection synchronized with the items list.

image10

This feature was developed by Yoann Quenach de Quivillic

Feature: Layout Page number reflected in page properties

When a layout has more than one page, the current page number will be displayed in the item properties header section using the format page_number/pagecount.

image11

This feature was developed by Yoann Quenach de Quivillic

Feature: Automatically open exported layouts

A new "Open file after exporting" checkbox option has been added to the export options for PDF, SVG, and Image output types. When selected this option will attempt to automatically open the output file once the export is completed.

The application used to open the file will use the configured default application on the system based on type (using QDesktopServices::openUrl). This feature will leverage the user settings API to remember the selection for the active user profile.

image12

This feature was developed by Yoann Quenach de Quivillic

Expressions

Feature: Add bearing expression function

A new bearing function has been added which computes the bearing angle (in radians) between two points.

The bearing is determined in the given CRS and measured clockwise on the given ellipsoid.

image13

This feature was developed by Andrea Giudiceandrea

Feature: Add "layer_crs_ellipsoid"

QGIS expressions now include a layer_crs_ellipsoid layer variable, as well as the crs_ellipsoid property available from the layer_property function. The value returned will be the ellipsoid acronym of the layer CRS.

image14

This feature was developed by Andrea Giudiceandrea

Digitising

Feature: Improve "avoid overlap" type awareness

When digitizing features with the "avoid overlap" option, QGIS has improved the behavior of automatically coercing the feature type and includes more meaningful messages to notify users of the automated behaviours.

An example use case would be the digitizing of a multipart polygon on a singlepart polygon target layer, which cannot be saved. QGIS will now automatically only keep the largest geometry portion, and prompt users to optionally restore the additional features as singlepart polygons.

This prevents the digitizing of "sliver" polygons and frustrations with improper feature types.

image15

This feature was developed by Matthias Kuhn

Data Management

Feature: Improve save vector features handling for pre-existing files

When using the save vector features to file algorithm, QGIS will inform users of the default behavior for handling pre-existing files (file overwrite) and provide the abiltiy to select from a range of alternate behaviors (such as overwrite layer or append new features to existing layer)

This greatly improves the ability for users to manage data using flat file data storage formats such as geopackage, whilst minimizing the risk of data loss or unwanted side effects.

image16

This feature was developed by Mathieu Pellerin

Feature: Maintain relations for copied features

New functionality ensures that copied features within the same layer will continue to respect project relationship(s) strength.

When copying features within the same vector layer using the map, attribute table, or the copy/ move feature(s) tool, QGIS will now track any relationship within the opened project and duplicate features with the relations intact.

This feature was developed by Mathieu Pellerin

Analysis Tools

Feature: Support raster band description

QGIS will now show band descriptions in the symbology tab for raster layers, in addition to the band number.

image17

This feature was funded by Summer is getting warmer and warmer.

This feature was developed by Alessandro Pasotti

Processing

Feature: Antialias setting for raster tile processing plugin

A new "Enable antialiasing" parameter has been added to the "Generate XYZ Tiles" processing tool.

This option will be enabled by default (replicating the current behavior) but allow users to disable the antialiasing of map content.

image18

This feature was developed by ASAI Hitoshi

Feature: Create Grid row_index and col_index fields

Fields for the row_index and col_index have been added to the output of the "Create Grid" processing algorithm. The fields are added to all outputs of type point, rectangle, and hexagon.

Field values are integers for which the count begins at 0 and increments from left to right (column index) and top to bottom (row index).

image19

This feature was developed by Valentin Buira

Feature: New 'Calculate expression' algorithm for use in models

The new "Calculate expression" algorithm will calculate the results of a QGIS expression and make the result available for use in other parts of the model.

It avoids the need to use the same expression multiple times throughout a model if the same result needs to be used more than once and provides additional use cases (such as generating a static timestamp value for use throughout a model).

image20

This feature was developed by Nyall Dawson

Feature: Add algorithm to convert content from a GLTF/GLB file to standard vector layer features

QGIS now allows the conversion of 3D tile content in GLTF and GLB formats into editable vector feature formats.

image21

This feature was developed by Nyall Dawson

Feature: Port SAGA "DTM Filter (slope-based)" tool to a native QGIS algorithm

The SAGA DTM Filter tool has been ported to a native QGIS algorithm.

image22

This feature was developed by Nyall Dawson

Application and Project Options

Feature: Clear recently opened project list

A "Clear Recently Opened" action is now listed at the bottom of the Project → Open Recent menu, which will remove every unpinned project from the menu.

An additional context menu is also available to enable the ability to remove individual projects from the recent project list, as well as "pin" and "unpin" items.

The state will be synchronized between the recent projects menu and the QGIS Welcome Page.

image23

This feature was developed by Yoann Quenach de Quivillic

Feature: OAUTH2 PKCE Authorization Code

An implementation of Proof Key for Code Exchange (PKCE, RFC 7636) has been added for OAUTH2 Authorization Code flows, improving resilience to CSRF and code injection attacks.

This feature was funded by Comune di Roma

This feature was developed by Alessandro Pasotti

Feature: Set processing defaults from QGIS configuration file

QGIS now supports the capability to configure the default values for GUI tools within the QGIS Processing framework using parameters specified in the QGIS.ini settings file.

This allows for the configuration of user-specific or organization-wide default values for certain algorithms. For example, to set the default value of the GRID_SIZE (precision) parameter on the intersection algorithm, the following configuration may be added to the QGIS/QGIS3.ini in the active user profile directory root:

[Processing]
DefaultGuiParam\native%3Aintersection\GRID_SIZE=0.01

When a user with this configuration opens the relevant toolbox to execute an algorithm, the default value will be specified for them automatically.

This feature was developed by mhugent

Profile Plots

Feature: Add setting to control background color for elevation profile charts

This option (available from the new Settings → Options → Elevation tab) allows users to set a specific color to use as the background color for elevation profiles.

This can make the chart more readable for certain datasets, e.g. point clouds with RGB coloring, where the default background color is too similar to point colors to be easily discernable.

This is an opt-in setting, and by default the elevation profiles will continue to display using the standard system background color.

image24

This feature was developed by Nyall Dawson

Data Providers

Feature: Discover relations for Oracle provider

QGIS now supports the automated discovery of relations for the Oracle data provider.

image25

This feature was funded by Métropole de Lille

This feature was developed by Jacky Volpes

Plugins

Feature: Drop interactive shell from GRASS C++ Plugin

For maintenance reasons, the interactive shell for the GRASS C++ Plugin, as well as the embedded QTermWidget, have been removed from future releases.

It is expected that the GRASS Processing Plugin will be given priority development and maintenance support going forward, and providing an interactive GRASS shell is not a critical functionality for QGIS itself but rather something that users may manage externally.

Further details on the specifics of this feature cleanup can be found on the feature Pull Request.

This feature was developed by Nyall Dawson

Programmability

Feature: Function to export runtime profiler model content as text

A new function has been added to allow for the export of the current runtime profiler (QgsRuntimeProfiler) model content as a multi-line text string.

This feature was developed by Mathieu Pellerin

Notable Fixes

Feature: Bug fixes by Alessandro Pasotti (itOpen / qcooperative)

Bug TitleURL issues.qgis.org (if reported)URL Commit (Github)3.28 backport commit (GitHub)
QGIS cannot connect to MySQL if user's password contains commas.#54493PR #54573No
QGIS WFS server will look for .qgz file in wrong place if "map" is in path#54533PR #54639PR #54855
Raster layer transparency/opacity not stored in saved style#54496PR #54644PR #54854
WMS GetPrint with ATLAS_PK has incorrect layers visibility in versions >= 3.22#54475PR #54651PR #54663
Error saving edit on PostGIS geometry when table also contains geography#54572PR #54664PR #54714
Cant subtract or add angles since the degrees symbol has been added#54501PR #54687N/A
WCS Keep Unavailable Layers#54702PR #54707N/A
taxon legend from map whis atlas#54654PR #54692N/A
Spinbox for colum space in legends does not allow to set values above 99.99 units#54682PR #54709N/A
Geometry Error SpatiaLite Database#54662PR #54734N/A
Splitting MultiLineStrings gives awkward results#54155PR #54744PR #54851
Open project, then layer properties, close, close project: qgis thinks something has changed#54741PR #54757N/A
Width field of attribute tables in print layouts only uses locale when being edited#54204PR #54769PR #54781
Data Source Manger - Browser: Close and Help buttons are missing#54171PR #54770N/A
0 port in OAuth2 callback URI#54562Cannot reproduceN/A
QGIS Crashes when editing multiple features simultaneously that have a Value Relation field#54164PR #54889TODO
Crash when playing with duplicated legends in layout#52268PR #54947
QGIS fails to request more than one WMS-Layer#55042PR #55064N/A

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

This feature was developed by Alessandro Pasotti (itOpen / qcooperative)

Feature: Bug fixes by Even Rouault (Spatialys)

Bug TitleURL issues.qgis.org (if reported)URL Commit (Github)3.28 backport commit (GitHub)
qgsgeos.cpp: fix a -Wunused-variable warningunreportedPR #54612N/A
qgsvirtualpointcloudprovider.cpp: add a missing variable initializationunreportedPR #54613N/A
OAPIF does not honour the view extentQGIS user mailing listPR #54617PR #54792
Does QGIS require units "m" for the projection coordinate variables in a netCDF/CF file?QGIS user mailing listGDAL PR 8407N/A
Syntactical error with the use of == instead of = for comparison in the WHERE clause#54608Already fixedUnable to write any additional layers to an existing FGDB
Add minimal CRS information to sqlite exports#54560PR #54630PR #54715
Complex Attributes in OGC API Feature-Items have empty content#54275PR #54631PR #54679
GPX Provider: missing element when importing gpx file#54119PR #54632N/A
Saving edits on larger vector layers is slow#53043PR #54633N/A
QgsVectorLayerSaveAsDialog: uncheck 'Add saved filed to map' when selecting PGDump driver (refs #54548)PR #54647PR #54647Not worth it
Spatial filtering of multipart polygons within a shapefile dataset brokenGDAL issue 8481Not a bug
qgis cannot find/identify a polygon feature by clicking a newly created (multi)polygon part#54537PR #54761PR #54782
qgis cannot find/identify a polygon feature by clicking a newly created (multi)polygon part#54537GDAL PR 8483GDAL PR 8503
Export to spreadsheet creates an xlsx file with errors when exporting empty tables/layers#42945GDAL PR 8484GDAL PR 8515
export bbox wrong when feature crosses anti-prime-meridion (180 deg)#42827GDAL PR 8485Not worth it
QgsVectorDataProvider.changeAttributeValues() returns True even when it fails#54816PR #54905PR #54909

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

This feature was developed by Even Rouault (Spatialys)

Feature: Bug fixes by Paul Blottiere (Hytech-imaging)

Bug TitleURL issues.qgis.org (if reported)URL Commit (Github)3.28 backport commit (GitHub)
Fix segfault in coordinate transformunreportedPR #54609N/A
Wrong rendering for HIGHLIGHT_LABEL_ROTATION above 89°#54598PR #54667N/A
Database string connection visible in the message bar/QGIS logs#54437PR #54650N/A
PostGIS Connection's "Session ROLE" is not kept#54638PR #54681N/A
Example files are installed by the server build, and additionally they are in a wrong place#54423PR #54708N/A
Point to Path tool causes QGIS to crash#54686PR #54710PR #54784
qgs/qgz project does not save mesh symbology correctly#54384PR #54711N/A
Endless loop if profile is drawn outside layer extent#54349PR #54745N/A
Server: Can't enable WFS3 API update endpoint (PUT/PATCH) on layers without geometry#46119PR #54789N/A
Add safe guard around -of in gdal command for batch processing#54122PR #54800N/A

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

This feature was developed by Paul Blottiere (Hytech-imaging)

Feature: Bug fixes by Sandro Santilli (strk)

Bug TitleURL issues.qgis.org (if reported)URL Commit (Github)3.28 backport commit (GitHub)
Have QgsRectangle null rectangle printed as EMPTY in wktunreportedPR #54831N/A
Fix aspect ratio computation in QgsLayoutItemMap::zoomToExtentunreportedPR #54827N/A
Do not include a BoundingBox tag in GetFeatureInfo responses, when it is nullunreportedPR #54858N/A
Always run the spell and shell checkers if possible, print warning when not possibleunreportedPR #54847N/A
Tweak Null rectangle handlingunreportedPR #54872N/A
Run spellcheck only on changed files in prepare_commit.shunreportedPR #54893N/A
Fix prepare_commit.shunreportedPR #54918N/A
Fix extent computation in QgsSpatiaLiteProviderunreportedPR #54917N/A
Do not force verbose build in mingw build#54932PR #54924N/A
Make QgsBookmark string output more explicit about it being EMPTYunreportedPR #54923N/A
Fix extent computation in QgsAFSProviderunreportedPR #54944N/A
Add tags make targetunreportedPR #54948N/A
Handle null rectangles in QgsExtentWidget::outputExtentunreportedPR #54953N/A
Handle null in QgsRectangle grow() and include() methodsunreportedPR #54955N/A
Add QgsRectangle::setNull(), deprecating setMinimal()unreportedPR #54934N/A
Handle Null rectangle in QgsRectangle::bufferedunreportedPR #54967N/A
Fix extent computation in QgsVirtualLayerProviderunreportedPR #54976N/A
Add a QgsRectangle::createNull() temporary static methodunreportedPR #55008N/A
Fix testRegisterFeatureUnprojectible - Use valid extent in testRegisterFeatureUnprojectibleunreportedPR #55011N/A
Have QgsGeometry::boundingBox return null rect for null geomunreportedPR #55012N/A
Have QgsGeometry::fromRect(NULL RECT) return null geometryunreportedPR #54954N/A
Stop considering Rectangle(0,0,0,0) null - while Rectangle(1,1,1,1) is not null#45563PR #54646N/A
Run doxygen layout checker in prepare-commit script, when possibleunreportedPR #54936N/A

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

This feature was developed by Sandro Santilli (strk)

Feature: Bug fixes by Jean Felder (Oslandia)

Bug TitleURL issues.qgis.org (if reported)URL Commit (Github)3.28 backport commit (GitHub)
qgs3daxissettings: Correctly read viewport ratio on a saved projectunreportedPR #54870

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

This feature was developed by Jean Felder (Oslandia)

Feature: Bug fixes by Nyall Dawson (North Road)

Bug TitleURL issues.qgis.org (if reported)URL Commit (Github)3.28 backport commit (GitHub)
Don't show help for algorithms which can't be run in qgis_process#54914PR #54920pending
Fix crashes in layout designer#52079PR #54907Too intrusive
Fix layout label adjust size to text logicunreportedPR #54896pending
Fix toggling visibility of group layers resets child layer mask blend modes#53088PR #54897N/A
Ensure identify highlight works for very transparent symbols#54830PR #54864PR #54883
Fix layout maps force rasterisation of whole layout when map item has transparency setunreportedPR #54882Too intrusive
Fix crash in merge features dialog when a field has a unique constraint set#54856PR #54862PR #54878
Fix initial zoom level when opening layout designer windows#44421PR #54849PR #54880
Fix hang when exporting 3d maps#50067PR #54845Too risky
Fix layout labels don't immediately react to changes when semi-transparentunreportedPR #54839PR #54863
Fix crash when opening layer properties for raster layer with broken data source#49176PR #54812PR #54838
Fix Execute SQL exeception#54833PR #54837PR #54842
Cleanup all browser layer properties dialog before exiting#39094PR #54808PR #54822
Avoid loss of attributes when calculating fields#47385PR #54815PR #54879
Fix crash when changing layers between editable/non-editable layers#54802PR #54813N/A
Fix QgsField::ConfigurationFlag::None causes syntax error when starting PyQGISunreportedPR #54809N/A
Handle sql='' or sql="" as empty sql strings instead of '' / "" literals#53736PR #54806PR #54826
Fix crash when certain symbol pages are open in style dock and QGIS is closed or a new project openedunreportedPR #54749Too intrusive

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

This feature was developed by Nyall Dawson (North Road)

Feature: Bug fixes by Julien Cabieces (Oslandia)

Bug TitleURL issues.qgis.org (if reported)URL Commit (Github)3.28 backport commit (GitHub)
Masking with SVG symbol doesn't work#54926PR #54927
Bug on graduated symbology on French QGis 3.28.10#54549PR #54943PR #54963
QGIS crashes when undoing moving of elements in map layout#52740PR #54959PR #54969
QGIS Crashes Upon Exporting Layout to PDF when Using Random Point Fill Symbology#54065poly2tri issue https://github.com/jhasse/poly2tri/issues/55
Label expression with more than 32767 chars becomes invalid when switching from expression dialog back to layer properties#54141PR #55051PR #55052
Activating notify/listen feature crash QGIS#54260PR #55062

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

This feature was developed by Julien Cabieces (Oslandia)