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

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 Title

URL issues.qgis.org (if reported)

URL Commit (Github)

3.28 backport commit (GitHub)

QGIS cannot connect to MySQL if user’s password contains commas.

#54493

PR #54573

No

QGIS WFS server will look for .qgz file in wrong place if “map” is in path

#54533

PR #54639

PR #54855

Raster layer transparency/opacity not stored in saved style

#54496

PR #54644

PR #54854

WMS GetPrint with ATLAS_PK has incorrect layers visibility in versions >= 3.22

#54475

PR #54651

PR #54663

Error saving edit on PostGIS geometry when table also contains geography

#54572

PR #54664

PR #54714

Cant subtract or add angles since the degrees symbol has been added

#54501

PR #54687

N/A

WCS Keep Unavailable Layers

#54702

PR #54707

N/A

taxon legend from map whis atlas

#54654

PR #54692

N/A

Spinbox for colum space in legends does not allow to set values above 99.99 units

#54682

PR #54709

N/A

Geometry Error SpatiaLite Database

#54662

PR #54734

N/A

Splitting MultiLineStrings gives awkward results

#54155

PR #54744

PR #54851

Open project, then layer properties, close, close project: qgis thinks something has changed

#54741

PR #54757

N/A

Width field of attribute tables in print layouts only uses locale when being edited

#54204

PR #54769

PR #54781

Data Source Manger - Browser: Close and Help buttons are missing

#54171

PR #54770

N/A

0 port in OAuth2 callback URI

#54562

Cannot reproduce

N/A

QGIS Crashes when editing multiple features simultaneously that have a Value Relation field

#54164

PR #54889

TODO

Crash when playing with duplicated legends in layout

#52268

PR #54947

QGIS fails to request more than one WMS-Layer

#55042

PR #55064

N/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 Title

URL issues.qgis.org (if reported)

URL Commit (Github)

3.28 backport commit (GitHub)

qgsgeos.cpp: fix a -Wunused-variable warning

unreported

PR #54612

N/A

qgsvirtualpointcloudprovider.cpp: add a missing variable initialization

unreported

PR #54613

N/A

OAPIF does not honour the view extent

QGIS user mailing list

PR #54617

PR #54792

Does QGIS require units “m” for the projection coordinate variables in a netCDF/CF file?

QGIS user mailing list

GDAL PR 8407

N/A

Syntactical error with the use of == instead of = for comparison in the WHERE clause

#54608

Already fixed

Unable to write any additional layers to an existing FGDB

Add minimal CRS information to sqlite exports

#54560

PR #54630

PR #54715

Complex Attributes in OGC API Feature-Items have empty content

#54275

PR #54631

PR #54679

GPX Provider: missing element when importing gpx file

#54119

PR #54632

N/A

Saving edits on larger vector layers is slow

#53043

PR #54633

N/A

QgsVectorLayerSaveAsDialog: uncheck ‘Add saved filed to map’ when selecting PGDump driver (refs #54548)

PR #54647

PR #54647

Not worth it

Spatial filtering of multipart polygons within a shapefile dataset broken

GDAL issue 8481

Not a bug

qgis cannot find/identify a polygon feature by clicking a newly created (multi)polygon part

#54537

PR #54761

PR #54782

qgis cannot find/identify a polygon feature by clicking a newly created (multi)polygon part

#54537

GDAL PR 8483

GDAL PR 8503

Export to spreadsheet creates an xlsx file with errors when exporting empty tables/layers

#42945

GDAL PR 8484

GDAL PR 8515

export bbox wrong when feature crosses anti-prime-meridion (180 deg)

#42827

GDAL PR 8485

Not worth it

QgsVectorDataProvider.changeAttributeValues() returns True even when it fails

#54816

PR #54905

PR #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 Title

URL issues.qgis.org (if reported)

URL Commit (Github)

3.28 backport commit (GitHub)

Fix segfault in coordinate transform

unreported

PR #54609

N/A

Wrong rendering for HIGHLIGHT_LABEL_ROTATION above 89°

#54598

PR #54667

N/A

Database string connection visible in the message bar/QGIS logs

#54437

PR #54650

N/A

PostGIS Connection’s “Session ROLE” is not kept

#54638

PR #54681

N/A

Example files are installed by the server build, and additionally they are in a wrong place

#54423

PR #54708

N/A

Point to Path tool causes QGIS to crash

#54686

PR #54710

PR #54784

qgs/qgz project does not save mesh symbology correctly

#54384

PR #54711

N/A

Endless loop if profile is drawn outside layer extent

#54349

PR #54745

N/A

Server: Can’t enable WFS3 API update endpoint (PUT/PATCH) on layers without geometry

#46119

PR #54789

N/A

Add safe guard around -of in gdal command for batch processing

#54122

PR #54800

N/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 Title

URL issues.qgis.org (if reported)

URL Commit (Github)

3.28 backport commit (GitHub)

Have QgsRectangle null rectangle printed as EMPTY in wkt

unreported

PR #54831

N/A

Fix aspect ratio computation in QgsLayoutItemMap::zoomToExtent

unreported

PR #54827

N/A

Do not include a BoundingBox tag in GetFeatureInfo responses, when it is null

unreported

PR #54858

N/A

Always run the spell and shell checkers if possible, print warning when not possible

unreported

PR #54847

N/A

Tweak Null rectangle handling

unreported

PR #54872

N/A

Run spellcheck only on changed files in prepare_commit.sh

unreported

PR #54893

N/A

Fix prepare_commit.sh

unreported

PR #54918

N/A

Fix extent computation in QgsSpatiaLiteProvider

unreported

PR #54917

N/A

Do not force verbose build in mingw build

#54932

PR #54924

N/A

Make QgsBookmark string output more explicit about it being EMPTY

unreported

PR #54923

N/A

Fix extent computation in QgsAFSProvider

unreported

PR #54944

N/A

Add tags make target

unreported

PR #54948

N/A

Handle null rectangles in QgsExtentWidget::outputExtent

unreported

PR #54953

N/A

Handle null in QgsRectangle grow() and include() methods

unreported

PR #54955

N/A

Add QgsRectangle::setNull(), deprecating setMinimal()

unreported

PR #54934

N/A

Handle Null rectangle in QgsRectangle::buffered

unreported

PR #54967

N/A

Fix extent computation in QgsVirtualLayerProvider

unreported

PR #54976

N/A

Add a QgsRectangle::createNull() temporary static method

unreported

PR #55008

N/A

Fix testRegisterFeatureUnprojectible - Use valid extent in testRegisterFeatureUnprojectible

unreported

PR #55011

N/A

Have QgsGeometry::boundingBox return null rect for null geom

unreported

PR #55012

N/A

Have QgsGeometry::fromRect(NULL RECT) return null geometry

unreported

PR #54954

N/A

Stop considering Rectangle(0,0,0,0) null - while Rectangle(1,1,1,1) is not null

#45563

PR #54646

N/A

Run doxygen layout checker in prepare-commit script, when possible

unreported

PR #54936

N/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 Title

URL issues.qgis.org (if reported)

URL Commit (Github)

3.28 backport commit (GitHub)

qgs3daxissettings: Correctly read viewport ratio on a saved project

unreported

PR #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 Title

URL 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

#54914

PR #54920

pending

Fix crashes in layout designer

#52079

PR #54907

Too intrusive

Fix layout label adjust size to text logic

unreported

PR #54896

pending

Fix toggling visibility of group layers resets child layer mask blend modes

#53088

PR #54897

N/A

Ensure identify highlight works for very transparent symbols

#54830

PR #54864

PR #54883

Fix layout maps force rasterisation of whole layout when map item has transparency set

unreported

PR #54882

Too intrusive

Fix crash in merge features dialog when a field has a unique constraint set

#54856

PR #54862

PR #54878

Fix initial zoom level when opening layout designer windows

#44421

PR #54849

PR #54880

Fix hang when exporting 3d maps

#50067

PR #54845

Too risky

Fix layout labels don’t immediately react to changes when semi-transparent

unreported

PR #54839

PR #54863

Fix crash when opening layer properties for raster layer with broken data source

#49176

PR #54812

PR #54838

Fix Execute SQL exeception

#54833

PR #54837

PR #54842

Cleanup all browser layer properties dialog before exiting

#39094

PR #54808

PR #54822

Avoid loss of attributes when calculating fields

#47385

PR #54815

PR #54879

Fix crash when changing layers between editable/non-editable layers

#54802

PR #54813

N/A

Fix QgsField::ConfigurationFlag::None causes syntax error when starting PyQGIS

unreported

PR #54809

N/A

Handle sql=’’ or sql=”” as empty sql strings instead of ‘’ / “” literals

#53736

PR #54806

PR #54826

Fix crash when certain symbol pages are open in style dock and QGIS is closed or a new project opened

unreported

PR #54749

Too 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 Title

URL issues.qgis.org (if reported)

URL Commit (Github)

3.28 backport commit (GitHub)

Masking with SVG symbol doesn’t work

#54926

PR #54927

Bug on graduated symbology on French QGis 3.28.10

#54549

PR #54943

PR #54963

QGIS crashes when undoing moving of elements in map layout

#52740

PR #54959

PR #54969

QGIS Crashes Upon Exporting Layout to PDF when Using Random Point Fill Symbology

#54065

poly2tri 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

#54141

PR #55051

PR #55052

Activating notify/listen feature crash QGIS

#54260

PR #55062

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

This feature was developed by Julien Cabieces (Oslandia)