Changelog for QGIS 3.10

image1

Release date: 2019-10-25

QGIS 3.10 brings an extensive list of new changes and a lot of polishing of existing features - the highlights of which we will try to cover here. As always can we remind you that QGIS is an open source project and if you are able to, consider supporting our work through donations or contributions to the code documentation, web site and so on.

Thanks

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

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

Flagship

Large

Medium

Small

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

Map Tools

Feature: 3D line lengths shown in identify tool results

Using the Identify Features tool on a 3D linestring now includes the 3d Cartesian length of the line in the results (alongside the existing 2D Cartesian and 2D ellipsoidal lengths).

image2

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)

Symbology

Feature: Default resampling setting for newly-added raster layers

In QGIS 3.10 we've added a new setting for the default resampling mode to use when for newly-added raster datasets. (This setting can be found in the rendering panel of the options dialog).

image3

This feature was developed by Mathieu Pellerin

Feature: Improved copy/paste of symbols

We're passionate about making QGIS a user-friendly cartographic tool which is a joy to work with, so we've added a bunch of new shortcuts throughout the interface which allow you to copy and paste symbols from one part of QGIS to another. E.g, you can copy a symbol from a category and paste it directly onto another category, or a layout shape item, or inside the style manager dialog!

image4

This feature was funded by SMEC/SJ

This feature was developed by Nyall Dawson (North Road)

Feature: "Center of segment" placement mode for marker and hash line symbol layers

We've added a brand new "Center of segment" mode for placement of marker line or hashed lines symbols. This allows you to place markers or hash lines over the center point of individual line segments, exposing cartographic effects which were not possible before (and improving the quality of layers converted from ArcMap using the SLYR tool).

image5

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)

Feature: More flexible data defined offset expressions

In previous QGIS releases, only string values of the format 'x,y' would be permitted for data-defined symbol and label offsets. We've listened to user feedback that this was confusing, and in QGIS 3.10 we now allow arrays of numbers as a valid expression result for offsets. E.g. "array(3,5)".

image6

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)

Labelling

Feature: Create and manage text formats and label settings in QGIS styles

In QGIS 3.10 we've finally implemented a long-awaited feature, allowing users to manage their own libraries of custom text formats and label settings alongside their existing symbol libraries!

Now, the Style Manager dialog can be used to manage text formats (which store the font, color, buffers, shadows, and backgrounds of text formats) and layer-wide label settings. (A "text format" includes just font settings and other appearance related settings, while a "labe setting" also includes layer-type specific settings such as label placement, priority, and rendering settings).

Text Formats and Label Settings offer all the same functionality as you're used to for managing symbols and color ramps within styles, including import and export to XML files, tagging, smart groups, favoriting etc...

image7

This feature was funded by North Road

This feature was developed by North Road

Feature: Marker symbols as label backgrounds

Alongside all the other exciting labeling improvements which we've landed in 3.10, we now allow use of marker symbols as a background for labels. This allows you to use all the rich functionality available for marker symbols as a background to labels, and complements the existing shapes and SVG background choices!

image8

This feature was funded by North Road

This feature was developed by North Road

Feature: Label callouts!

A common practice when placing labels on a crowded map is to use 'callouts' - labels which are placed outside (or displaced from) their associated feature, with a line connecting the label and the feature. In QGIS 3.10, we've added native support for quickly and easily creating beautiful label callouts (no more expression mangling or drawing by hand!).

We've added many settings for controlling exactly how these label callouts are drawn, and naturally, you can take full advantage of the richness of QGIS line symbol support within your callouts! This includes all the existing line symbol styles, layer effects, and even support for data-defined settings!

In 3.10, we expose options for either a "simple" (direct line) or "Manhattan" (straight lines) callout styles. If you're interested in sponsoring additional callout styles in a future release, get in contact with the QGIS team to find out how you can make this happen!

image9

This feature was funded by SMEC/SJ

This feature was developed by Nyall Dawson (North Road)

Feature: Change multi-line label alignment for individual labels

We've added an additional option to allow you to control multi-line alignment on a label-by-label basis. Just active the Label Properties tool and click on your map labels, and a new setting for the text alignment is now available.

image10

This feature was developed by Mathieu Pellerin

Feature: Show unplaced labels

If you've ever been concerned about automatic label placement hiding away important labels on your map -- this feature is for you! In QGIS 3.10 we've added an option to show "Unplaced labels" on your map, so you can see immediately exactly what's been hidden from view (AKA "see what others can't")!

This new setting (which is accessed through the Labeling toolbar) will render these Unplaced Labels in a red color (but the color can be changed from the project Label Settings dialog). After identifying any missing labels in your map, we suggest you use the existing Labeling tools such as the "move label" or "show/hide label" tool to rearrange your map and make these labels visible again.

image11

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)

Feature: Overrun distance for line labels

We understand that making a cartographic masterpiece is a demanding task, so in QGIS 3.10 we've extended the capabilities of curved labels by adding a new "overrun distance" setting. This setting allows you to control exactly how far a curved label is allowed to extend past to ends of a line feature. Bumping up the distance will result in giving the labeling engine more flexibility in placing your labels, resulting in more labels being placed in better locations on your map! Win! The setting works for both curved and parallel label modes, and supports distances in mm/map units/pixels/etc, and data-defined distances.

image12

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)

Feature: Data defined control for "label every part of multipart features" setting

The "label every part" option was one of the very few settings which couldn't be previously data-definable for labels. We've remedied this omission in QGIS 3.10, and you can now control whether you want all parts labelled on a feature-by-feature basis!

image13

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)

Feature: Control "label all parts" via the label properties tool

We aren't lying when we say that QGIS 3.10 is a love-letter to map labelling! Another new option we've added in this version is interactive control over whether all parts of a feature should be labeled via the Label Properties tool.

image14

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)

Feature: Vertical text orientation

As of 3.10, QGIS is now fully equipped to render vertically oriented labels. To our Chinese, Japanese, and Korean users: spread the word! :)

You can choose between two vertical orientation mode: one that always renders labels vertically, or an alternative mode that dynamically picks the orientation based on the label rotation.

image15

This feature was developed by Mathieu Pellerin

Feature: Control over font kerning

Another option we've added for improving the conversion of ArcMap symbology to QGIS (via SLYR) is a new setting for controlling whether label fonts are kerned (or not).

image16

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)

Rendering

Feature: Rendering raster layers outside the reported extent

Depending on the server technology used, sometimes the map extent reported by raster layers may be smaller than the actual area which can be rendered (especially notably for WMS servers with symbology which takes more space than the data extent). Previous version of QGIS would crop raster layers to the reported extents, resulting in truncated symbols on the borders of these layers. Now, there's a new option to allow you to override this behaviour and ignore the reported extent for affected servers.

This feature was developed by Matthias Kuhn (Opengis.ch)

Feature: Georeference PDFs and TIFs when saving the map canvas as image/PDF

In QGIS 3.10 we've implemented support for embedded georeferencing within PDFs and TIFs when using the save [map canvas] as image or PDF.

image17

This feature was developed by Mathieu Pellerin

Feature: New map canvas image decoration

We've added a brand new decoration for the QGIS main canvas, allowing you to add a bitmap and SVG image overlay (logo, legend, etc.) to your map window.

As with other parts of QGIS, the image decoration supports customizable fill and outline color for parameter-enabled SVGs.

image18

This feature was developed by Mathieu Pellerin

Feature: Logarithmic scale classification

You can now use a logarithmic based classification technique when creating ranges for the graduated renderer.

image19

This feature was developed by OPENGIS.ch

3D Features

Feature: Measurement tool in 3D map view

Now you can measure distances in 3D map views! This new tool is available in the 3D map view toolbar, and has the same workflow as the 2D measurement tool (with the same configuration settings of rubber band color, units, decimal place, etc). It also has the same behavior (left-click to add a new point, middle-click to delete the last point, and right-click to restart the measurement). This allows you to measure distances in 3d, e.g. the distance between two building’s roofs or the length of a river running down a mountain. See the 3D measurement tool in action:

This feature was funded by Google Summer of Code Program

This feature was developed by Ismail Sunni

Feature: Billboard Rendering for Points

We added a new kind of rendering style for point layers. It allows you to show the point with a QGIS symbol (e.g. marker, SVG, etc) that always faces the user and always has the same size. You can see sample usage in the video.

This feature was funded by Google Summer of Code Program

This feature was developed by Ismail Sunni

Feature: 3D On-Screen Navigation

In earlier QGIS versions, you could already navigate the 3D world by using a mouse and keyboard. Unfortunately, for a new user, it is not easy to start using them! 3D On-Screen Navigation will help to navigate the 3D world. There are buttons to zoom in/out, tilt up/down, pan up/down/left/right, and rotate the 3D map view. This feature can be activated from the 3D map view toolbar. See how to use it in this video:

image20

This feature was funded by Google Summer of Code Program

This feature was developed by Ismail Sunni

Feature: Right-to-left arrangement for legends

Thanks to funding from our right-to-left locale users, we've added a new choice for arrangement of legend elements. These include symbols to the left OR symbols to the right of the legend text, and alignment options for groups, subgroups and item text.

This feature allows creation of right-to-left locale friendly legends. To make things user-friendly, we even default to this right-to-left style alignment when creating new legends under a RTL based locale.

image21

This feature was funded by Kaplan Open Source

This feature was developed by Nyall Dawson (North Road)

Feature: Control margin under legend group and subgroup headings

If you're after pixel-perfect control over your legend appearance -- this one's for you! QGIS 3.10 now allows you to tweak the spacing applied under group or subgroup headings.

image22

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)

Feature: Data defined settings in text formats

Since so much of QGIS' cartographic power comes from the flexibility of data-defined symbol settings, we've now allowed them to be used for text formats too! This means you can now use data defined properties wherever text formats are used, e.g. within layout scalebar text.

image23

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)

Feature: @scale_value variable

To complement the new support for data-defined settings within text formats, we added a new @scale_value expression variable. This can be used when evaluating data defined text format properties while rendering scale bar text, and ultimately allows you to have per-label customisation of the text format inside scale bars (e.g. showing certain distance labels in bold).

image24

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)

Feature: Scalebar label placement options

We've extended layout scale bars with additional styling options, adding a pair of settings to refine the placement of scalebar labels. Now you can define whether labels are shown above or below the scalebar itself, as well as setting whether labels are centered in the middle of a segment or placed at its end.

image25

This feature was developed by Mathieu Pellerin

Feature: Simplify PDF or SVG exports

Previous QGIS versions would often generate HUGE PDF (or SVG) outputs, as these outputs included many redundant vertices which were not discernably different at the export DPI. Now, by default, we apply a simplification while writing out PDF or SVG files, causing geometries to be simplified and automatically removing any redundant vertices which are (e.g. if export DPI is 300 dpi, vertices less then 1/600 inch different from each other will be removed).

This new setting, "Simplify geometries to reduce output file size", is exposed in the SVG or PDF export settings dialogs shown when exporting a layout/atlas/report to PDF or SVG.

No more ridiculously complex and large export file size for your QGIS print layouts! Aside from the file size issues, these also cause problems when trying to load into other applications, e.g. Inkscape, which chokes on the huge number of vertices and grinds to a crawl.… ouch!

image26

This feature was funded by GeoPDF export group: Land Vorarlberg; Cantons of Zug, Thurgovia and Neuchâtel; Cities of Vienna and Dornbirn; Biodiversity Information Service for Powys & Brecon Beacons National Park

This feature was developed by Nyall Dawson (North Road)

Feature: Improved SVG layered exports

User feedback told us that the way we created layered SVG files in past releases was frustrating to work with. So, in QGIS 3.10, we've revamped this feature and now SVG layer names will match the layer names from QGIS, making it much easier for designers to understand the contents of the document! Read more about this are related features here.

image27

This feature was funded by GeoPDF export group

This feature was developed by Nyall Dawson (North Road)

Feature: Layout map redraw indicator

In earlier QGIS releases, there was no way to tell whether a map refresh had finished inside a QGIS print layout designer window. So, we've added a new indicator in the status bar which shows whenever there's a redraw is humming away in the background. No more user confusion!

image28

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)

Feature: GeoPDF Export

If you export PDF's from QGIS now, there is an option to export it as GeoPDF. If you open this PDF with a compatible PDF viewer, you will then be able to toggle layers on and off, pan and zoom around the PDF and interactively interrogate features! Futhermore, you can re-import these GeoPDF documents back into QGIS as vector layers, and see all the features in their original locations and with their original attribute values.

GeoPDF export is available for either print layouts or map canvas exports. We've added lots of flexibility to this new option, e.g. with options for controlling which layers will be exported as interactive layers. You can even choose to export multiple map themes into a single GeoPDF document, so that your readers can interactive switch between these themes! (Wow!)

Note that GeoPDF export requires a QGIS build based on GDAL 3.0 or later.

Read more at QGIS 3.10 Loves GeoPdf

image29

This feature was funded by GeoPDF export group: Land Vorarlberg; Cantons of Zug, Thurgovia and Neuchâtel; Cities of Vienna and Dornbirn; Biodiversity Information Service for Powys & Brecon Beacons National Park

This feature was developed by Nyall Dawson (North Road)

Feature: Data defined control grid properties

We've added data defined control over layout map grids, to give you extra flexibility in the appearance and behaviour of these grids, and to allow you to create layout templates and atlases with grids which dynamically respond to map scale changes.

Now, you're able to set data-defined control for:

  • grid enabled state
  • grid x/y intervals
  • grid x/y offsets
  • grid frame size and margin
  • annotation distances from the grid frame
  • grid cross size
  • grid frame line thickness

image30

This feature was funded by Andreas Neumann

This feature was developed by Nyall Dawson (North Road)

Feature: Dynamic grid segment sizes

Just like the existing scalebar setting of the same name, this new setting allows you to set a page-size-based range for map grid intervals. The grid interval will be dynamically calculated based on the map extent and scale to pick the largest possible "pretty" interval which results in grid sizes inside the desired range.

This change makes it possible for you to create layouts and layout templates with grids which respond elegantly to a wide range of map scales!

image31

This feature was funded by Andreas Neumann

This feature was developed by Nyall Dawson (North Road)

Feature: Spatial bookmarks for layout maps

Another long-requested feature we've implemented for QGIS 3.10 is a new button in the layout map item properties toolbar, which allows you to directly set a map item to the extent of a spatial bookmark!

image32

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)

Expressions

Feature: New expression functions

  • attributes(): returns a map containing all attributes from a feature, with field names as map keys. We've got flexible, robust support for working with map values in expressions now, so this allows rapid conversion of all feature attributes to a map to use with these handy functions!

  • New optional "format" parameters were added to the to_date, to_datetime, and to_time functions

  • | collect_geometries: this new function collects a set of geometries into a multi-part geometry object. Geometry parts can either be specified as separate arguments to the function or (more flexibly), as an array of geometry parts. This function allows geometries to be generated using iterator based approaches, such as transforming an array generated using generate_series, e.g: | collect_geometries( array_foreach( generate_series( 0, 330, 30), project($geometry, .2, radians(@element)) ) ) | Gives a nice radial effect of points surrounding the central feature point when used as a MultiPoint geometry generator

  • A new make_line expression function variant which accepts an array of points. This allows creation of lines from variable numbers of points, and from sequences from aggregates/dynamically generated sequences.

Digitising

Feature: GPS timestamp support

We've overhauled the existing GPS based functionality in QGIS 3.10, adding new options for automatically retrieving and storing GPS timestamps alongside GPS based features.

This feature was funded by NIWA

This feature was developed by Alessandro Pasotti (North Road)

Feature: Allowed gap exceptions

In QGIS 3.4 we introduced the ability to configure QGIS layers to run topological checks on every save operation. For 3.10, we have now added a new option to the check for "gaps" which allows you to actively mark some gaps as allowed. These exceptions will be saved on a separate, configurable layer. Whenever a gap is detected, you either have the possibility to fix it or to add it to the allowed exceptions with the press of a button.

image33

This feature was funded by Kanton Solothurn

This feature was developed by Matthias Kuhn (OPENGIS.ch)

Data Management

Feature: Composite Foreign Keys

In QGIS 3.10, we added the possibility to create layer relationships which utilise composite foreign keys. QGIS now fully supports editing parent and child features which are linked with more than one attribute. This functionality is accessed in the Project Properties -> Relations tab.

image34

This feature was funded by California Geological Survey

This feature was developed by OPENGIS.ch

Feature: Add circular data dependencies

Ever had issues with snapping when editing a feature that is modified by someone else (or a nasty database trigger)? Data dependencies allow refreshing the content of the dependent layers when the data is changed. We improved the dependencies support in QGIS by allowing refreshing the modified layer itself, which is kind of a circular dependency (a point layer and a line layer depending on each other for instance). No more snapping on ghost features!

More info in the pull request

image35

This feature was funded by QGIS.org

This feature was developed by Julien Cabieces (Oslandia)

Forms and Widgets

Feature: Update depending widgets real-time

Updates widget values on real time while editing the referenced fields. When widget A contains a default value depending on widget B, it updates as soon as widget B is edited.

image36

This feature was funded by Kanton Schaffhausen

This feature was developed by David Signer (OPENGIS.ch)

Analysis Tools

Feature: Stored filter expressions for attribute tables

While previous versions of QGIS allowed you to filter attribute tables using a custom expression, these expressions were lost whenever the attribute table was closed. Now, we've added the ability to store and manage your custom expression filters to the attribute table dialog. You can now build up your own personal collection of useful filters, which will always be available for re-use with a few simple mouse clicks!

image37

This feature was funded by Kanton Schaffhausen

This feature was developed by David Signer (OPENGIS.ch)

Feature: New operators for Raster Calculator

You ask, we listen: abs , min and max are now available in the Raster Calculator user interface!

image38

This feature was developed by Alessandro Pasotti

Processing

Feature: New algorithm "Point to layer"

This algorithm creates a new vector layer which contains a single feature with geometry matching a point parameter. It can be used in models to convert a point input into a layer, which can then be used for other algorithms which require a layer based input.

image39

This feature was developed by Olivier Dalang

Feature: Advanced model parameters

When creating inputs for a Processing model, you can now mark these input parameters as "Advanced" options. (Advanced parameters are hidden by default when users run your model through the Processing toolbox)

image40

This feature was developed by Alex Bruy

Feature: All GDAL based algorithms now support free-form "additional parameters"

We added an optional "Additional command-line parameters" parameter to all GDAL algorithms , useful for cases when you need to pass a specific command-line argument(s) which is not exposed in the algorithm UI.

image41

This feature was developed by Alex Bruy

Feature: Metatile size for XYZ tiles

You can now specify a custom metatile size when generating XYZ tiles. Larger values may speed up the rendering of tiles and provide better labelling (fewer gaps without labels) at the expense of using more memory.

image42

This feature was developed by Martin Dobias

Feature: New parameter type for colors

QGIS 3.10 brings a new parameter type for use in Processing models and scripts, which allows for users to pick a color value. Useful for any models and algorithms which require a color value as an input!

image43

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)

Feature: New algorithm "Create style database from project"

This algorithm extracts all style objects (symbols, color ramps, text formats and label settings) from a QGIS project and stores them in a new style XML database, which can then be managed and imported via the Style Manager dialog.

image44

This feature was funded by SMEC/SJ

This feature was developed by Nyall Dawson (North Road)

Feature: File filter and default values for file and folder inputs in models

For file or folder inputs in Processing models we've added a new file filter setting (with some standard file formats available as an optional preset), and now allow you to set a default value for these inputs.

image45

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)

Feature: New algorithm "Combine style databases"

The new "Combine style databases" algorithm combines multiple QGIS style databases into a single output style database. If any symbols exist with duplicate names between the different source databases these will be renamed to have unique names in the output combined database. It's designed to give users an easy way to condense multiple separate style databases into a single unified database.

It works brilliantly with results generated by running the "Create style database from project" in a batch mode!

image46

This feature was funded by SMEC/SJ

This feature was developed by Nyall Dawson (North Road)

Feature: Generate XYZ tiles using multiple threads

The existing Generate XYZ tiles algorithm has been optimised and can now generate tiles using multiple processing threads.

image47

This feature was developed by Isghj5

Feature: New algorithms for exporting and importing bookmarks to/from map layers

To complement the spatial bookmark overhaul in QGIS 3.10, we've added new Processing algorithms which allow you to create a bunch of new bookmarks corresponding to the features from a layer, or to export existing spatial bookmark extents to a new polygon layer.

image48

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)

Feature: New algorithm "Split features by character"

This brand new algorithm splits features into multiple output features, by splitting a field value with a specified character.

For instance, if a layer contains features with multiple comma separated values contained in a single field, this algorithm can be used to split these values up across multiple output features. Geometries and other attributes remain unchanged in the output.

Optionally, the separator string can be a regular expression for added flexibility.

This algorithm was designed for use in models which need to process input files with multiple concatenated values in a single attribute, e.g. geocoding a table with "address1,address2,address3" format strings.

image49

This feature was funded by SMEC/SJ

This feature was developed by Nyall Dawson (North Road)

Feature: New algorithm Climb Along Line

Previously available as a plugin, the "Climb Along Line" algorithm has been added to the out-of-the-box QGIS toolset. This algorithm calculates the accumulated height differences for lines in an input line layer, calculated using the Z values of the line vertices. A copy of the input line layer is returned with additional attributes for accumulated climb and descent, as well as the minimum and maximum Z values for each line.

image50

This feature was developed by Håvard Tveite (NMBU) and Matteo Ghetta (Faunalia)

Feature: Port Create Grid algorithm to C++

We ported the Create Grid algorithm from Python to C++ in order to speed up the algorithm. The algorithm now performs much faster for you and is also capable of creating point|line|rectangle|diamond|hexagon regular vector grids in high resolution in huge extents (eg. whole nations) in a reasonable amount of time.

image51

This feature was funded by Clemens Raffler

This feature was developed by Clemens Raffler

Browser

Feature: Extract symbols from QGIS projects within the browser

QGIS' Browser panel just keeps getting more and more powerful! In 3.10, we've added a new option when right-clicking a QGIS project within the browser: "Extract Symbols". Selecting this option opens a style manager dialog showing all symbols, color ramps, text formats and label settings from the selected project, allowing you to easily export the browse these symbols.

image52

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)

General

Feature: Show news items on welcome page

A curated QGIS news feed is now shown on the welcome page. This finally gives us a direct channel to push project news to ALL our users! Expect to see lots of interesting QGIS news, tips, and events coming your way!

image53

This feature was funded by QGIS.org

This feature was developed by Nyall Dawson (North Road)

Feature: Milliradians (SI definition) and mil (NATO) units

QGIS 3.10 allows you to measure angles in two new units, milliradians (SI definition) and mil (NATO) units.

image54

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)

Feature: Interface Customization dialog filtering

We've added a new "search" box to the Interface Customization dialog, which allows you to filter through the widgets and easily find the widget you are trying to customize...

image55

This feature was developed by DelazJ

Feature: Improved auto-fix broken layers

When a layer path is fixed in a project, QGIS 3.10 will automatically scan through all other broken paths and try to auto-fix any others which were also pointing to the same original broken file path. Any change which speeds up fixing broken layer paths is a welcome change in our view!

image56

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)

Feature: Spatial bookmarks supercharged!

We've totally revamped how spatial bookmarks are exposed and managed in QGIS 3.10. Spatial Bookmarks are now shown in the browser panel, and can be regrouped into custom, categorized folders. This offers a much easier way to navigate and manage your bookmarks.

We also added a brand new bookmark editor dialog, which features an extent widget that greatly facilitates bookmark editing.

Bookmarks can also now be dragged and dropped onto canvases, allowing secondary canvases to zoom to a particular bookmark. This allows bookmarks to play nice in multi-canvas projects, since you can drop them onto a specific canvas to zoom.

image57

This feature was developed by Mathieu Pellerin, Nyall Dawson

Feature: "Reselect Features" action in Edit -> Select menu

Ever spend 10 minutes painstakingly creating an interactive selection of features, only to accidentally deselect them all through an errant mouse click? If so, this feature is designed just for you! Now, you can restore a layer's selection following a selection clear operation via the new "Reselect Features" option in the Edit menu.

image58

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)

Feature: Parallelize snap index build

The idea was to parallelize for each layer the snap cache computing (sequential at the moment) and to make it non blocking. As a consequence it is still possible to use QGIS even if snap cache is currently building. User can for instance start to edit node while the snap cache build is in progress.

This feature was developed by Oslandia

Feature: Templates for QGIS Projects

QGIS 3.10 includes the ability to directly use Project Templates from the welcome page. Additionally, you can now ship project templates to your whole organisation by placing them in a system folder, next to the already existing possibility to put it into a user profile folder.

image59

This feature was funded by The QGIS Project

This feature was developed by Matthias Kuhn (OPENGIS.ch)

Data Providers

Feature: Read-write support for .shz and .shp.zip

For QGIS builds based on GDAL 3.1, you can now open and edit single-layer ZIP compressed shapefiles (.shz), or multi-layer ones (.shp.zip). Regardless of where you sit on the Shapefile vs Geopackage battle, you'll welcome this ability to de-clutter your folders and store shapefiles as a single file!

This feature was developed by Even Rouault

Feature: Oracle provider authentication

We've updated the Oracle database provider to add full support for QGIS built-in authentication system.

This feature was developed by Jürgen Fischer

Feature: Improved PostGIS raster support

PostGIS raster layers are now shown in the Browser panel and from the Data Source Manager dialog, allowing you to easily manage and add these layers to your projects. Currently only read support from browser is supported - you cannot drag rasters into a PostGIS database using the browser.

This feature was developed by Alessandro Pasotti

Feature: Oracle - Database transaction support

For version 3.10, we've enhanced the Oracle database provider and added support for editing layers via transactions.

This feature was developed by Nyall Dawson (North Road)

Feature: Z/M dimensions in delimited text layers

We've added optional support for Z and M fields to QGIS' delimited text provider, allowing you to create Z or M enabled layers directly from CSV files.

image60

This feature was developed by Mathieu Pellerin

Feature: Static data providers

One huge behind-the-scenes job we completed for QGIS 3.10 is a refactoring of the provider infrastructure. Now, providers allow both dynamic and static linking. This was a pre-requisite to be able to build QGIS libraries on platforms that do not support dynamic linkage (iOS), and allows for QGIS based tools like the Input data collection app to be distributed for iOS based devices!

This feature was funded by Lutra Consulting Ltd.

This feature was developed by Peter Petrik, Martin Dobias

QGIS Server

Feature: Using SVG in QGIS Server

Earlier QGIS server versions had rendering issues when remote SVG files were used in a project (e.g. those hosted via external http servers). We've improved how QGIS Server fetches these resources, and it's now possible to use remote SVG paths in your layers and publish them as WMS without rendering issues in QGIS Server.

image61

This feature was funded by Ifremer

This feature was developed by René-Luc D'Hont (3Liz)

Feature: WMS dimension

In QGIS 3.10 a WMS server can provide support for several type of dimensions such as time, elevation or other types of dimensions. The dimension has to be defined as the layer level and can be used by the WMS client to filter requested information. WMS Time is part of the WMS Dimension.

image62

This feature was funded by Ifremer

This feature was developed by René-Luc D'Hont (3Liz)

Feature: Server OAPIF (aka WFS3) support

QGIS 3.10 Server is one of the very first geospatial servers which supports the new OGC API - Features - Part 1: Core standard (also known as WFS3)!

This is a completely new implementation that provides an HTML and JSON based service for your web mapping developments, including a simple WebGIS interface which is available out of the box and it is easily customizable through an HTML template system.

More information is available in the documentation

image63

This feature was developed by Alessandro Pasotti

Programmability

Feature: New class QgsBookmarkManager

Attached to QgsProject and QgsApplication, this new class provides a stable, supported method of managing project and global bookmarks (vs the old undocumented, not stable approach of directly manipulating project keys or a sqlite database). Now your plugins and scripts are capable of reading, modifying, and managing spatial bookmarks!

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)

Feature: New API for provider database connections

Thanks to funding from the QGIS grant program, you can now use a new API aimed to manage DB connections in a unified way. The new connection API also provides a set of useful methods that can be used by plugin authors to access information about tables, schemas etc. and to run SQL arbitrary queries and get the results back into a handy Python array.

This feature was funded by QGIS

This feature was developed by Alessandro Pasotti

Notable Fixes

Feature: Bug fixes by Alessandro Pasotti

Bug TitleURL issues (if reported)URL PR or commit3.4 backport PR or commit
Crash when deleting print layout items#31549
DB manager python error#31457
QGIS 3.4.11: Clicking a PDF URL in GetFeatureInfo response generates error#31542Already fixed (by me) on 3.8 and Master
Watch file not adding new columns#31452
Loss of labels background from older project/style#31427PR #3164
"Text formats" dialog shows modifiable buffer properties while the "draw text buffer" is unchecked#31428PR #3173
Symbology tab widget does not horizontally expand in the layer properties dialog extent#31449PR #3166
Watch file not adding new columns#31452
Unreported but related to #31452PR #3168
Unable to add WMS service in QGIS, same URL works in other clients#31661
QGIS Server - Download of capabilities failed: SSL handshake failed#31675
apparent regression in raster calculator multiplying conditionals#31193PR #3169
Broken GPKG browser actions#31730PR #3173
Resizing the data source manager dialog fails to resize unfocused panels#31732PR #3174
In place processing multipart to singleparts does not handle unique constraints#31634PR #3175PR #3181
crash when adding legend via python#31713
UI: Legend does not refresh after classifincation bounds updated#31643Not affectedPR #3183
UI: PostGIS layer error message not helpful, disappears and shouldn't happen#31799PR #3184
Server GetLegendGraphics contextual (BBOX) fails if no WIDTH and HEIGHT are supplied#31846PR #3186PR #3188
extend/trim crash#31864
UI: any click on number of classes updown triggers twice#31635PR #3187
GPKG project is not marked dirty after it is deleted from the storage#30550PR #3187
Fix unreported issue with QVariantList to JSON conversion in QgsJsonUtilsunreportedPR #3192
Crash on adding WMS#31927#31927PR #3197
Raster calculator change sign does not work when OpenCL is on#32023PR #3202
Snapping map units always show "meters even when the project is in different units#31961PR #3201
QGIS Raster Calculator outputs nodata only rasters#32025PR #3202
Opening projects from PostgreSQL issue#32050PR #3206
GetLegendGraphic shows all identical symbols for content based legend#32020
WFS doesn't recognize advertised GeoJSON outputFormat string#32065PR #3210
creating indexes on geopackage failes (QGIS 3.8.3)#32094
DB manager import option "Create single-part geometries instead of multi-part" is broken#32089PR #3210
GetLegendGraphic shows all identical symbols for content based legend#32020PR #3212
WFS contextual legend issue when canvas CRS is different than layer's CRSunreportedPR #3212
PostGIS/geojson: Cannot input negative numbers in int fields#32149PR #3216
Information tab in WMS layer properties is unresponsive if a WMS service contains many layers#32213PR #3226
Data Source UI - PostgreSQL table multi-line comments make the grid table hard to read#32257PR #3233
More null pointer dereferences when plugins are off#32347PR #3235
null pointer dereferences when plugins are off#32338PR #3234
"Merge features" and "merge feature attributes" have broken numerical functionsPR #3236PR #3236

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

This feature was developed by Alessandro Pasotti

Feature: Bug fixes by Alexander Bruy

Bug TitleURL issues (if reported)URL PR or commit3.4 backport PR or commit
GDAL scripts in Processing need quoting on attribute names#30878PR #3171PR #3171
Processing GDAL algorithms does not handle correctly WFS input layers#29663PR #3173
shp files in zip files files cannot be used in Processing with 3rd party providers (SAGA, GRASS...)#29001PR #3174PR #3178
Not possible to toggle use selected features in the Processing layer combobox#30636PR #3173
Connect to postgis database fails in "Layer - Add Postgis layer" on databases with weird table names#27040PR #3176
GRASS v.build.polylines dosn't work in Qgis 3.4.10#31037
Processing Algorithms written with the @alg decorator don't get the gear icon#31252PR #3188
v.drape - no 25D export with SpatiaLite format#30066
Service url cannot include custom query parameters#26761
Processing: python error on startup#29535
Saving Processing's Package Layers algorithm's output to default temporary output leaves no result#30535
[Georeferencer] GDAL script does not set target SR#31353PR #3189
Processing "Build virtual vector" now fails in certain cases#29336PR #3190
Unreported issue with missed import in the Processing algorithms dialogunreportedPR #3190
db manager: python error when clicking "edit table" if the table is a postgis raster#30214PR #3190
DB Manager: Renaming a PostGIS geometry column causes it to lose its geometry type and SRS#27613PR #3192
Georeferencer incorrectly shows last image when reopened#26700PR #3193
DB Manager: Create Layer dialog should be closed or cleared once the new layer is generated#25535PR #3195
[Vector Save As...] Extension is not replaced in filename when switching format#26054PR #3196

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

This feature was developed by Alexander Bruy

Feature: Bug fixes by Peter Petrik

Bug TitleURL issues (if reported)URL PR or commit3.4 backport PR or commit
Reproducible Crash: retrieving QgsHighlight instance stored as a widget property#30766PR #3173PR #3197
Layer styling Mesh layer does not respond to change of Color ramp (first time)#29188PR #3198
qgis crashed on close in QSortFilterProxyModel#31721
QGIS freezes#29742
Crash when trying to save a project#29896
Crash on exit with advanced digitizing active#29143
Renaming macOS app causes authentication error#32163
QGIS cannot be opened after updating to Mac OS Catalina#32167

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

This feature was developed by Peter Petrik

Feature: Bug fixes by Even Rouault

Bug TitleURL issues (if reported)URL PR or commit3.4 backport PR or commit
QGIS master crash upon exit @ QgsCoordinateTransformPrivate::freeProj on Windows platform#31762PR #3176Commit 08bb3fe
QGIS master crash upon exit @ QgsCoordinateTransformPrivate::freeProj on Windows platform#31762PR #3184PR #3185
QGIS WFS stripping of viewparam KVP from WFS Feature Requests#31026PR #3176PR #3188
Crash: right click on image ->export ->save as->"save raster layer as"#30937PR #3176PR #3178
crash in discover relations for postgresql layers#31213PR #3176PR #3177
Exporting raster as raw data to GeoPackage fails silently#30644PR #3177PR #3178
QGIS crashes after deactivating a GDAL driver in use in the project#29212PR #3177PR #3180
Crash exporting to GS7BG format#31775PR #3178PR #3183
pgdump is no longer a recognized format for the GDAL/OGR convert format algorithm#31421PR #3181not worth
PBF files not loading correctly#31062PR #3181PR #31835
Error importing cover from Geoserver WFS service#29844PR #31813PR #31867
Feature count from online Geojson not updated upon refresh#30518PR #31860not worth
Edits in GeoJson datasources are not saved anymore#28580GDAL https://github.com/OSGeo/gdal/pull/1846Backported to GDAL 3.0 and 2.4 maintenance branches

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

This feature was developed by Even Rouault

Feature: Bug fixes by Sandro Santilli

Bug TitleURL issues (if reported)URL PR or commit3.4 backport PR or commit
Adding Postgis rasters from DB Manager ask for password for each add#31162
[processing] segmentizebymaxdistance puts qgis in endless CPU loop#31832Commit 6942b4b9Commit 3225f491
file INSTALL cannot find doc/api/html#31842Commit 3225f491n/a
QGIS died on signal 11 # at start up#31350
repository files modified by make check#25830PR #31980
CMake Error at cmake/FindGEOS.cmake:162#32170Commit bc9bb888Commit 27f13936
False success from ogr provider's committChanges#32144Commit f421dc4fCommit 136cec24
TestSagaAlgorithms: line 139, in check_algorithm: 'NoneType' object has no attribute 'checkParameterValues'#32143Commit 76b39de1n/a
PostGIS Data Loads Extemely Slow#26186PR #31858

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

This feature was developed by Sandro Santilli

Feature: Bug fixes by Matthias Kuhn

Bug TitleURL issues (if reported)URL PR or commit3.4 backport PR or commit
Crash when opening symbology tab of invalid layer#32041#32041n/a
PR reviewsMany :D
qgz are marked as temporary on windows#32118
Allow selecting geometry type in context#32121PR #32125n/a

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

This feature was developed by Matthias Kuhn

Feature: Bug fixes by Paul Blottiere

Bug TitleURL issues (if reported)URL PR or commit3.4 backport PR or commit
Fixes invalid schemaLocation in GetCapabilities doc#32085PR #32352
Invalid WMS GetFeatureInfo response with json info_format#32326PR #32386/files
QGIS Server SELECTION doesn't work with Postgres ids of type bigint or text#29779
Regression with opacities for the WMS GetPrint request#29317
Unreported regression: Invalid renderer type after loading a QML style fileunreported regressionPR #32388

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

This feature was developed by Paul Blottiere

Feature: Bug fixes by Nyall Dawson

Bug TitleURL issues (if reported)URL PR or commit3.4 backport PR or commit
Fix crash when deleting layouts from designer window#32465Commit e643e7f6n/a
Fix model to python when model has no input parametersCommit 6f1c42e7n/a
Fix string escaping when converting models to python code#32451Commit e3eb4f54n/a
Fix memory leakCommit 5be31915n/a
Fix potential overflow in raster rendererCommit 1ba8db41n/a
Restore project variables early in the project read cycle#32382Commit d76835fen/a
Improve docs for Join by Nearest, raise warning in log#32317Commit 670c81f9n/a
Catch some reprojection exceptions during raster rendering#32301Commit 1dfc0c1en/a
[labeling] Fix broken numeric formatting settings, add tests#32393Commit b58dd674n/a
Fix uncaught transform exception when determining AFS layer boundsunreportedCommit 857697ddn/a
Fix qt warning thrown when converting a 2.18 projectunreportedCommit 12ad9fcan/a
Add option to take no action ("Leave as an unknown CRS") when a layer is loaded which has no CRS#19762, #27634, #24815 (and probably others)Commit ffe66bffn/a
Don't force fallback to WGS84 for unknown layer CRSesunreportedCommit 93741566n/a
Fix memory layers cannot use non-EPSG CRS codesunreported, but likely a cause of many bugsCommit 2dad68f7n/a
Fix crash after deleting report sections#31302Commit 3356460cCommit d3230ac0
Ensure polygon rings generated for rendering are always closedunreportedCommit a69e38d9n/a
Don't crash QgsTessellator when an empty polygon is addedunreportedCommit 761b2e77n/a
Fix crash in topology checker plugin after a check is canceledunreportedCommit 606bcd35n/a
Fix topology checker multipart check#28361Commit 5101386bn/a
Fix crash on exit when topology checker dock is open with visible resultsunreportedCommit 64375ad4n/a
Don't load print layouts when opening project browser itemsvia emailCommit 9f1ce084n/a
Add QgsProject flag to avoid loading print layouts when reading a project file, avoids crashes when project is loaded in background threadvia emailCommit d0ed3746n/a
Don't try to load HTML content when a layout is created in a background threadvia emailCommit 53252496Commit 5fcab0e7
Huge speed up to QgsTessellatorCommit 577e1e96n/a
[processing] Ensure all objects used by the model are correctly imported#32004Commit e5e3fe47n/a
[processing] Avoid confusing use of expression parameter type in Random Points in Polygon algorithm#27640Commit 196e15a0n/a
[layouts] Update map settings variables in UI when map extent/rotation changes#24136Commit 86c83537n/a
[layouts] Fix layout variables set programmatically do not show in GUI#28837Commit 1afdd935n/a
[layouts] Ensure variable panels are updated when layout or atlas properties change#26402Commit 2b31e03an/a
[layouts] Move page background setting to a per-page option#25695Commit 45e847efn/a
Optimize QgsContrastEnhancementFunctionCommit f5c21a0fn/a
[layouts] Prevent removal of the last remaining page in a layoutvia emailCommit e6ecfdd3Commit b65f23f8
[layouts] Fix crash when exporting layout with no pagesvia emailCommit b784d698Commit f8355cbb
Fix conditional formatting panel high dpi issuesCommit 1f033fe8n/a
Fix loss of font setting when editing conditional formatCommit 72efc1edn/a
Avoid overflow in QgsImageOperationCommit aefbf662Commit 9f4d3a87
[processing] Extend api for retrieving a layer in a compatible formatvia 3rd party plugin bug trackerCommit 651c5071n/a
Fix conditional styles in feature list view do not update when the layer's conditional styles are changedCommit bccd5a46n/a
Fix broken display of conditional styles in feature list viewCommit 5f7264d4n/a
Fix incorrect conditional styling applied to rows in some casesCommit c15c7271n/a
Use invalid colors, not transparent colors, to indict not set colors in conditional formats, fixes incorrect colors used for conditionally styled rowsCommit bc82cffdn/a
"[labeling] When an extreme number of features are being labeled from a single layer, place additional limits on the maximum number of
labeling candidates to generate for features in this layer"Commit 61bfced6n/a
[layouts] Fix incorrect alignment of items when the align or distribute tools are used with items with a non-top-left reference point#31900Commit b4550dc4n/a
[processing] Respect user set default vector output format in vector split algorithmCommit 90bac82fn/a
Fix GUI is not updated when layout atlas is set to use the default filename expression#20786Commit a4da849en/a
[reports] Remove useless extra set of export actions#26384Commit d6b41813n/a
[reports] Fix crash when print button clicked before a report section is openedunreportedCommit c93fd0a4n/a
[reports] Reduce minimum width of report organiser dock#25916Commit 7c490848n/a
[layouts] Add a page number selection combo box at the top of the guide manager dock#25700Commit 2f22aeafn/a
Show color button style "Pick color" and "Chooe Color" and symbol button menu#25696Commit 39cfd0f9n/a
Fix out of sync layout bounds after page removal#26665Commit d498eed0n/a
[layouts] Fix odd selection behavior when keyboard modifiers are pressed when rectangular selection endsCommit 37b5af54n/a
Fix interaction with group members in items panel#26674Commit 5154240fn/a
[layout] Fix invalid svg exports when including metadata#28130Commit cc94aebcn/a
[legends] Fix missing symbols for inverted polygon layers when using filter by map content#22718Commit abc9f47cn/a
Use a slightly larger font size in CRS details on Windows#31297Commit 757017c2n/a
[processing] Add warning when packaging a geopackage with no layers#31888Commit f11e6603n/a
[layouts] Fix crash when opening layout with dynamic image in html label#28996Commit 5db6165fCommit e29865cd
Expose report feature settings when an attribute table is used in an atlas#28441Commit 9fd17c8fn/a
[layouts] Fix attribute table ignores cell margin for top/bottom aligned text#31259Commit 7b356fe4n/a
Fix truncated legend symbol borders when layer has opacity setCommit 30e14938n/a
Fix adding/moving legend is very slow with large projects#29058Commit 758ac909n/a
[reports] Fix predefined scale mode is incompatible with report outputs#29196Commit fcd21e48n/a
Ensure atlas expression evaluation has access to coverage layer scope#31807Commit 3de05939n/a
Resizing pages to content should not create empty page size if no items are present#29034Commit 421e68cfn/a
Fix map rotation does not immediately restore in reports#31217Commit f5afebe5n/a
Do not return nan values when an assistant is used with min val == max val#31242Commit 97923751n/a
[layouts] Fix label items don't update when their opacity < 100#29079Commit f9a47738n/a
Fix project load status indicator can get "stuck" after project loadunreportedCommit 40d95b69n/a
Fix corrupted expressions in filter indicator tooltipsCommit 393e623bCommit 8e0e368f
Fix cannot use GPS panel to draw features in multi polygon/line#29144Commit dc2b209dn/a
Fix loss of label background settings when restoring projects.#31427Commit aa4a8da3n/a
Fix crash in point displacement rendererCommit 7043933fn/a

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

This feature was developed by Nyall Dawson