Project: QGIS

Changelog for version: 3.8

Release date: 21 June, 2019


QGIS 3.8 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, sponsorship 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 sponsors. A current list of donors who have made financial contributions large and small to the project can be seen on our donors list. If you would like to become an official project sponsor, please visit our sponsorship page for details. Sponsoring QGIS helps us to fund our six monthly developer meetings, maintain project infrastructure and fund bug fixing efforts. A complete list of current sponsors is provided below - our very great thank you to all of our sponsors!

QGIS is Free software and you are under no obligation to pay anything to use it - in fact we want to encourage people far and wide to use it regardless of what 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.

Sustaining members for QGIS version 3.8


Large : 9000 EUR

QGIS user group Denmark

QGIS user group Denmark

QGIS user group Sweden

QGIS user group Sweden

QGIS user group Switzerland

QGIS user group Switzerland

QGIS user group Switzerland

QGIS user group Switzerland


Medium : 3000 EUR

AERO ASAHI Corporation

AERO ASAHI Corporation

ARTOGIS a/s

ARTOGIS a/s

GAIA mbH

GAIA mbH

GIAP Sp. z o.o.

GIAP Sp. z o.o.

LIFA A/S Landinspektører

LIFA A/S Landinspektører

Land Vorarlberg

Land Vorarlberg

Lutra Consulting Limited

Lutra Consulting Limited

MIERUNE INC.

MIERUNE INC.

OPENGIS.ch GmbH

OPENGIS.ch GmbH

OSGeo:UK

OSGeo:UK

Office of Public Works, Flood Risk Management and Data Management Section

Office of Public Works, Flood Risk Management and Data Management Section

QGIS España Association (QGIS user group Spain)

QGIS España Association (QGIS user group Spain)

QGIS user group Germany

QGIS user group Germany

SECON Private Limited

SECON Private Limited

Spatial Networks, Inc.

Spatial Networks, Inc.

Terraplan

Terraplan

WIGeoGIS

WIGeoGIS


Small : 500 EUR

2D3D.GIS

2D3D.GIS

Agresta S. Coop.

Agresta S. Coop.

Alta ehf

Alta ehf

Asociación Geoinnova

Asociación Geoinnova

BGEO Open GIS, SL

BGEO Open GIS, SL

Bathurst Regional Council

Bathurst Regional Council

Baumsicht

Baumsicht

Beacon Environmental

Beacon Environmental

CADaGEO

CADaGEO

CHARTWELL Resource Group Ltd.

CHARTWELL Resource Group Ltd.

CartoData

CartoData

City of Canning

City of Canning

Datarock Pty Ltd.

Datarock Pty Ltd.

Dr. Kerth + Lampe Geo-Infometric GmbH

Dr. Kerth + Lampe Geo-Infometric GmbH

EFN eifel-net Internetprovider GmbH

EFN eifel-net Internetprovider GmbH

EPrime Formacion Ltda

EPrime Formacion Ltda

Forest Design SRL

Forest Design SRL

GFI - Gesellschaft für Informationstechnologie mbH

GFI - Gesellschaft für Informationstechnologie mbH

GIS Mexico - Soluciones Geográficas de México SC

GIS Mexico - Soluciones Geográficas de México SC

GIS Support Sp. z o.o.

GIS Support Sp. z o.o.

GKG Kassel, (Dr.-Ing. Claas Leiner)

GKG Kassel, (Dr.-Ing. Claas Leiner)

Gaia3D, Inc.

Gaia3D, Inc.

Gemeente Gouda

Gemeente Gouda

GeoS Geodätische Software Andreas Hellinge

GeoS Geodätische Software Andreas Hellinge

Gispo Oy

Gispo Oy

Gistree, Lda.

Gistree, Lda.

HermeSys, Inc.

HermeSys, Inc.

Inforest Research o.c.

Inforest Research o.c.

InfraGIS GmbH

InfraGIS GmbH

Infraplan Engineering Services Pvt. Ltd.

Infraplan Engineering Services Pvt. Ltd.

Ingenieurbüro Kauppert

Ingenieurbüro Kauppert

Ingenieurbüro Reinhard Beck GmbH & Co. KG

Ingenieurbüro Reinhard Beck GmbH & Co. KG

Integrate Sustainability Pty Ltd

Integrate Sustainability Pty Ltd

K + D Landschaftsplanung AG

K + D Landschaftsplanung AG

Kaplan Open Source Consulting Ltd

Kaplan Open Source Consulting Ltd

Le Groupe SYGIF inc.

Le Groupe SYGIF inc.

MHTC Ltd

MHTC Ltd

MappingGIS S.L.U.

MappingGIS S.L.U.

Natural GIS LDA

Natural GIS LDA

OPGK Kraków

OPGK Kraków

OSGeo.JP

OSGeo.JP

Oester Messtechnik GmbH

Oester Messtechnik GmbH

Omkeere B.V.

Omkeere B.V.

Open Geo Groep

Open Geo Groep

Orbitalnet Inc.

Orbitalnet Inc.

Pixalytics

Pixalytics

QTibia Engineering

QTibia Engineering

RaumRegionMensch ZT GmbH

RaumRegionMensch ZT GmbH

Region Midtjylland (Central Denmark Region)

Region Midtjylland (Central Denmark Region)

SIGMOÉ

SIGMOÉ

SOLTIG (Soluciones en Tecnologías de Información Geográfica)

SOLTIG (Soluciones en Tecnologías de Información Geográfica)

Septima

Septima

Sherborn Forest Trails

Sherborn Forest Trails

Solargis s.r.o.

Solargis s.r.o.

Syddjurs Kommune

Syddjurs Kommune

TYC GIS

TYC GIS

TerreLogiche

TerreLogiche

Trage Wegen vzw

Trage Wegen vzw

Urbsol

Urbsol

Veitch Lister Consulting

Veitch Lister Consulting

Västra Götalandsregionen

Västra Götalandsregionen

WAGNER-IT

WAGNER-IT

WhereGroup GmbH

WhereGroup GmbH

correlate analytics gmbh

correlate analytics gmbh

map-site

map-site

thinkWhere

thinkWhere

tkt teleconsult Kommunikationstechnik GmbH

tkt teleconsult Kommunikationstechnik GmbH


General


Feature: QGIS projects inside geopackage files

Did we already say that QGIS loves GeoPackage? Need any more proof of this? Well, in QGIS 3.8, we've added to ability to store QGIS projects directly inside GeoPackage files! Now you can create a totally self-contained GeoPackage which embeds a QGIS Project AND all the data used by the project. (Let's see Shapefiles match that one!)

This feature was funded by QCooperative

This feature was developed by Alessandro Pasotti


Feature: Much Improved Coordinate Transform Handling

Thanks to underlying work from the tireless PROJ and GDAL teams, QGIS now sports many huge improvements in geodetic and transformation capabilities! Highlights include:

  • The PROJ CRS database is now used to populate QGIS' CRS selection lists, removing the custom database we used in previous releases. This means that ALL responsibility for CRS definitions and updating these sit were they belong, upstream in the PROJ library -- and consequently you can expect to see QGIS CRS definitions being a closer match to the official definitions, and newer CRS definitions will be added much faster than in previous releases.. This change also means we'll be an exact match for projection handling as all other open-source geospatial tools which have completed the port to the latest PROJ version, such as GDAL 3.0.
  • We now rely entirely on PROJ's wonderful logic for generating the best coordinate operation to transform between CRS pairs. This means (amongst other stuff), we correctly support complex things like operations which require a "pivot datum", e.g. transformation to and from the GDA2020 coordinate systems.
  • Instead of the older approach QGIS used for datum transformations (carrying around our own table of when grid shift files can be used), we now use PROJ to determine these. This considerably changes the user interface shown when a user has opted into selecting manually a transform to use when multiple transforms exist, and we now show a simplified list of available (and non-available) pathways.
  • We also use PROJ's database to populate lists of available ellipsoids for use in distance and area calculations. This has cleaned up the ellipsoid choices considerably, and added many additional ellipsoid definitions as a result.
  • The UX for notifying users about issues in coordinate transforms is greatly improved, e.g. users are now alerted when a more accurate transform is possible, but not usable on their system (due to missing .GSB grid shift files). Wherever possible, we present users with direct download links to obtain these required/desired grid shift files. The intention here is to ensure users are informed when transforms can be improved, instead of silently falling back to less accurate options.
  • Users also now have the option of placing grid shift files in a "proj" folder under their QGIS user profile. This change means users can install grid shift files and make them available in QGIS without requiring administrative rights.
  • We've also completed a project which began back in the lead-up to 3.0, which ensures that project-specific transformation pathway settings are correctly respected EVERYWHERE a coordinate transform is performed. This also means we're ready for the next stage in handling 4d temporal based coordinate transforms (when these start to land in 2020 and beyond).

A lot of this is only possible thanks to improvements in the underlying PROJ and GDAL libraries, which landed as a result of the GDAL "barn raising" effort. On the QGIS side, it was ONLY possible thanks to funding from the Australian ICSM.

This feature was funded by ICSM

This feature was developed by Nyall Dawson (North Road)


Map Tools


Feature: Force Cartesian Measurements when Measuring Distances/Areas

In 3.8, we added an option to the measurement tool which forces Cartesian measurements for distance or area measurements. Previously, the measurement tools always used ellipsoidal/geodesic area and distance calculations, but there's occasions when this is not desirable and users require pure Cartesian calculations instead.

This feature was funded by Oslandia

This feature was developed by Loïc Bartoletti (Oslandia)


User Interface


Feature: Save to Template Button

While QGIS has offered support for Project Templates for many years, we enhanced this in 3.8 and made it much simpler for users to create new templates. Now, users can create a new template from their current project by selecting "Save To -> Templates" from the "Project" menu.

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


Feature: Improved "Zoom to Native Resolution" behavior

We've improved the "Zoom to Native" action, so it now works correctly with tiled (e.g. WMTS/XYZ/ArcGIS MapServer) layers, by zooming to the closest native tile resolution. Additionally, we tweaked tile rendering so that pixel-perfect rendering occurs when the map is viewed at a native tile resolution. The result: super-crisp map renders when using tiled layer sources!


Feature: Drag and Drop Layers to Map Layer widgets

To improve the usability of large QGIS projects, we now support direct drag and drop of layers from the project table of contents to any widget which asks for a map layer selection (e.g. Processing algorithms). For complex projects, locating a layer in the table of contents and dragging it is much easier then picking it from the flat map layer widget combo box!

Additionally, for Processing algorithms, layers can be dragged direct from the Browser panel to input layer choices.

This feature was developed by Nyall Dawson (North Road)


Symbology


Feature: Multi-character strings for font markers

While QGIS has long offered support for rendering points using font-based character markers, we've enhanced this functionality in 3.8 and now offer the ability to render multi-character strings! And since we're always aiming to make the QGIS application interface as user-friendly and pleasant to use as possible, we also took the opportunity to tweak the UI for font markers and squash a number of frustrating GUI issues which previous versions suffered from.

This feature was developed by Mathieu Pellerin


Feature: Point Displacement label distance factor

Another addition to the new symbology features added in 3.8 is a brand new label distance factor control for Point Displacement markers. This option allows displaced marker labels to be placed at a distance based on the actual marker diagonal size instead of a fixed distance.

This feature was developed by henrik


Feature: Hash Line symbol type

QGIS loves cartography, and we know you love making pretty maps! So we've added a brand-new line symbology option for "Hashed Lines". This line symbol type is designed to replicate the ArcGIS Hash Line symbol layer type, and allows for a repeating line segment to be drawn over the length of a feature (with a line-sub symbol used to render each individual segment).

All options available for the existing Marker Line symbol layer are also available for hash lines, - e.g. first/last vertex, mid points, regular intervals, data-defined intervals, etc. The hash line length and angle can also have data defined overrides, which are evaluated per-line segment, allowing for the hash line to change size and angle over the length of a single rendered feature.

This feature was funded by anonymous

This feature was developed by Nyall Dawson (North Road)


Feature: Average line angles for marker and hashed line symbology

In previous QGIS versions, when a marker line was rendered using interval or center point place placement, the symbol angles were determined by taking the exact line orientation at the position of the symbol. This often leads to undesirable rendering effects, where little "jaggies" or corners in lines which occur right at the position of the symbol cause the marker to be oriented at a very different angle to what the eye expects to see.

We want your maps to be as beautiful as possible, so in QGIS 3.8 the marker angle is instead calculated by averaging the line over a specified distance either side of the symbol. E.g. averaging the line angle over 4mm means we take the points along the line 2mm from either side of the symbol placement, and use these instead to calculate the line angle for that symbol. This has the effect of smoothing (or removing!) any tiny local deviations from the overall line direction, resulting in much nicer visual orientation of marker or hash lines.

Like all symbol settings, the average angle smoothing distance can be set using mm/pixels/map units/etc, and supports data-defined values. Closed rings also correctly consider wrapping around these average angles from the start/end vertex.

This option is available for both the marker line symbol and the new hash line symbol types.

This feature was funded by anonymous

This feature was developed by Nyall Dawson (North Road)


Feature: Offset settings for point pattern fill symbol layers

To round out the new symbology options we've added in 3.8, the Point Pattern Fill symbol type has a new setting allowing for offsetting the markers in the pattern by a preset (or data-defined!) amount. This opens the door for many styling possibilities which were not possible in earlier versions, and further increases our compatibility with converted ArcGIS symbol and layer styles.

This feature was developed by Mathieu Pellerin


Feature: Live Effects Blur Radius is now hi-dpi friendly

QGIS 3.8 brings a highly-desired fix to layer effects' blurring radius (aka strength). In earlier QGIS versions, these blur settings did not take into account the DPI of the map render — resulting in inaccurate effects rendering when exporting canvases/layouts at high resolutions. In 3.8, this was fixed and high-resolution map exports now match the results shown on the map canvas and are completely resolution-independent.

This feature was developed by Mathieu Pellerin


Labelling


Feature: Geometry generators for labeling

This is a huge one! During the developer's meeting in A Coruña, Matthias Kuhn took the opportunity to implement a frequently-asked-for feature in our labeling engine: Geometry Generator support.

Just like Geometry Generators for symbols, we now allow label paths and positions to be calculated using dynamically-evaluated geometry expressions. You can take advantage of the rich support for geometry processing which QGIS' expression engine exposes, and use this to do ALL sorts of pre-processing to your feature geometries before they are labelled. Want to place labels around the start or end point of linestring geometries? What about dynamically smoothing and simplifying the path used for labeling river features, based on the current map scale? How about buffering polygon objects inward by a percentage of their area, and then labeling around the perimeter of this shrunken area? Now, it's ALL possible, thanks to the power of labeling geometry generators!

This feature was funded by QGIS user group switzerland

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


Feature: Label Map Tools now use click-click behavior

Like the other QGIS digitizing and map tools, the "Move Label" and "Rotate Label" tools now use the standard left-click-to-start edit, left-click-to-end behavior. Consistency is good!


3D Features


Feature: Wide lines and polygon edge highlighting

Like all recent QGIS releases, in version 3.8 we've significantly boosted QGIS' 3D rendering capabilities. New 3D rendering features include:

  • Configurable line width (in screen units) for "simple" 3D lines (in previous versions they were always 1px wide)
  • Optional highlighting of edges of 3D polygons

This feature was funded by Andreas Neumann

This feature was developed by Martin Dobias (Lutra Consulting)


Feature: Export 3d animations

Another exciting change we've introduced in QGIS 3.8 is the ability to export your 3D animations! These are exported as a series of png/jpg/... images, which can be easily merged into .avi or other standard video files (using external tools).

This feature was funded by Northumberland National Park Authority

This feature was developed by Peter Petrik (Lutra Consulting)


Feature: Terrain from online sources

With this new version 3.8 feature, you can now directly fetch terrains for your 3D scenes from online sources (e.g. tiles hosted on AWS). No more sourcing and preparing rasters with DEM, just enable this option and see beautiful 3D scenes out-of-the-box!

This feature was funded by Crowdfunding: More QGIS 3D

This feature was developed by Martin Dobias (Lutra Consulting)


Feature: Configuration of field of view angle of camera

In QGIS 3.8, the field of view of the camera through which 3D scenes are rendered has gained a new configurable field of view settings.

This feature was developed by Mathieu Pellerin


Print Layouts


Feature: Distribute spacing between items evenly

To make it easy to create your perfect QGIS Print Layout, we added new tools for automatically re-positioning items so that horizontal or vertical space between them is equal. This addition nicely rounds out the existing options for aligning items, bringing more of the power of a dedicated DTP application directly inside the QGIS Print Layout Designer!

This feature was developed by Matteo Nastasi


Feature: North Arrow Creation

We've listened to user feedback which indicated that the previous approach for creating north arrows within print layouts was too difficult, and consequently have added a new button in the Print Layout Designer for direct north arrow creation. This button is a shortcut to adding a picture item, setting it to a north arrow picture, and linking it with a map. The end result is identical, but it's much easier for new users to understand if we expose it as an explicit "North Arrow" item!

Even experienced users will likely appreciate the improved workflow, including automatically linking the picture rotation to a sensible default map choice (if a map is selected, it's used. If not, the topmost map item under the newly drawn north arrow is used. If there's none, the layout's 'reference map' (or biggest map) is used as a fallback).

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)


Expressions


Feature: Order by support for expression aggregate and concatenation functions

Since certain aggregate and concatenation expressions require results in a certain order, we now allow control over the order features are added to the aggregate during expression evaluation.

E.g. concatenate("Station",concatenator:=',', order_by:="Station") will give a comma-separated list of station names in alphabetical order, rather than layer feature order.

This feature was funded by SMEC/SJ

This feature was developed by Nyall Dawson (North Road)


Feature: Simplified variant of "attribute" function

This improvement brings a second variant for the existing "attribute" function. The "attribute" function in previous QGIS releases required both a target feature and attribute name to be specified. The new version is much simpler, automatically using the current feature and only requiring an attribute name.

E.g.

Previous behavior:

attribute($currentfeature, 'name' ) -> returns value stored in 'name' attribute for the current feature

Improved behavior:

attribute( 'name' ) -> returns the value stored in 'name' attribute for the current feature

It's just a faster shorthand version!

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)


Feature: Retrieve vertices from the end of geometeries

We added negative index support to the point_n(), angle_at_vertex(), and distance_to_vertex() functions, allowing for retrieval of vertices counting backward from the end of a geometry.

This feature was developed by Mathieu Pellerin


Feature: New expression functions

As always, a new QGIS release brings a bunch of new functions for use within QGIS' expression engine. These new functions add increased flexibility and power to the expression engine, and everywhere it's used throughout QGIS. This round, we've added a set of new functions which make it super-easy to operate on file names and paths.

New expression functions developed by Nyall Dawson of North Road:

  • base_file_name: Returns the base name of the file without the directory or file suffix.
  • file_exists: Returns true if a file exists
  • file_name: Returns the file name from a full path
  • file_path: Returns the directory/path from a full file path
  • file_size: Returns a file size
  • file_suffix: Returns a files suffix/extension
  • is_directory: Returns true if a file path is a directory
  • is_file: Returns true if a file path is a file

New expressions functions developed by Mathieu Pellerin of iMHere Asia:

  • array_all: Returns true if an array contains the all values of a given array.
  • concatenate_unique: Returns all unique strings from a field or expression joined by a delimiter.

Feature: New aggregation method: concatenate_unique

We added a new function concatenate_unique() to the expression engine (and Processing's "aggregate" algorithm) to support concatenating only unique values from a list or set of features.

This feature was developed by Mathieu Pellerin


Digitising


Feature: Floating widget for advanced input next to cursor

To make the existing Advanced Digitizing tools easier to use, we added an option to show the current distance/angle/x/y values as a floating display next to the mouse cursor.

This feature was funded by Kanton Schaffhausen

This feature was developed by Olivier Dalang and OPENGIS.ch


Feature: Chained add vertex at the endpoint

In QGIS 3.0, we added the ability to extend an existing line feature by clicking a "+" indicator at the start or end of line features when using the node tool. Version 3.8 extends this functionality by allowing addition of more than one vertex using the "+" button.

This feature was funded by Kanton Schaffhausen

This feature was developed by Olivier Dalang and OPENGIS.ch


Feature: Improvements in the vertex editor

For this release we improved the vertex editor so it will now properly link the selected vertices on the canvas with the vertices for manual coordinate editing in the table.

This feature was funded by QGIS User Group Switzerland

This feature was developed by Denis Rouzaud, OPENGIS.ch


Forms and Widgets


Feature: Allow browsing feature list

arrows allow browsing the feature list in the attribute table in form view the current edited feature can be highlighted and the map canvas automatically panned or zoomed


Feature: HTML Form Widget

Thanks to the generous sponsorship by A.R.P.A Piemonte (one of the italian regional environmental agencies) we developed a new form widget with HTML body and access to feature values and expressions.

This feature was funded by A.R.P.A. Piemonte

This feature was developed by Alessandro Pasotti


Feature: Form widgets custom background color

Thanks to the generous sponsorship by A.R.P.A Piemonte (one of the italian regional environmental agencies) we finally freed you from the boredom of gray backgrounds.

This feature was funded by A.R.P.A. Piemonte

This feature was developed by Alessandro Pasotti


Feature: Browse through features in the attribute table form view

We've added the possibility to browse through the attributes of features in a layer. This makes workflows for asset management a lot easier! You can:

  1. Define a filter
  2. Browse through all matching features
  3. Review and adjust

You can also pan and zoom to the geometry of the feature or highlight the current feature as you browse.

(This replaces the previous ItemBrowser plugin with equivalent inbuilt functionality.)

This feature was funded by regioDATA

This feature was developed by Denis Rouzaud, OPENGIS.ch


Processing


Feature: Add "Save layer styles into GeoPackage" option for Package Layers algorithm

QGIS loves GeoPackage, so it's likely no surprise that every new QGIS version brings improvements to GeoPackage handling! In 3.8, we enhanced the "Package Layers" Processing algorithm so that it now allows embedding the current layer styles directly into the packaged layers!

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)


Feature: Overlap Analysis

This new Processing algorithm calculates the area and percentage cover by which features from an input layer are overlapped by features from a selection of overlay layers. New attributes are added to the output layer reporting the total area of overlap and percentage of the input feature overlapped by each of the selected overlay layers.

This is quite a common GIS task request, yet is full of traps for inexperienced users, and the amount of manual data work usually done by users to calculate these figures can often lead to mistakes and inaccurate results. We want to make spatial analysis as easy and foolproof as possible, so we've added Overlap Analysis as an inbuilt tool which allows this task to be done in a single step without risk of human error.

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)


Feature: Allow rounding values in Extract Layer Extent

We've added a parameter to the Processing algorithm 'Extract Layer Extent' to round the extent bounding box coordinates to a certain interval. While rounding, the bounding box will only ever be enlarged, to ensure it will always cover the input data set. (I.e. the x and y minimum coordinates are rounded down, and x and y maximum coordinates are rounded up).

This feature was developed by Raymond Nijssen


Feature: New options for autofilling batch Processing

In QGIS 3.8 we moved the existing "double click column header" to fill values down functionality to a new "Auto fill" button in the Processing Batch dialog, making this feature much more user-discoverable (we suspect many users had no idea this handy shortcut even existed!). In addition, we've added TONS of new functionality to easily auto-populate the batch table. These include:

  • File or layer parameters can now be batch populated by searching for files in a directory with a matching filename pattern (including recursive searches!). Ever needed to auto convert 100s of Shapefiles from a set of folders? Now it's easy to do!
  • An option to add calculated values from a QGIS expression, allowing complex range-based values to be added to the dialog (e.g. values from 100-1000, increasing by 50)
  • A "Calculate by Expression" option allows for updating existing batch table cells using the results of a QGIS expression. These expressions can freely utilise other parameter values from the input batch rows, making it easy to craft the exact output file name you desire based on the other columns values in a batch row.

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)


Feature: Generate raster XYZ tiles

We've added a brand-new algorithm to generate raster "XYZ" tiles using the current QGIS project. Tile images can be saved as individual images in directory structure, or as a single file in the "MBTiles" format.

This feature was funded by Hansestadt Herford, SWK mbH, Datenbankgesellschaft mbH

This feature was developed by Lutra Consulting


Feature: Resurrection of the OTB provider

QGIS 3.8 brings back the OTB Processing provider, which was removed in the QGIS 3.0 update. The provider was updated to use all the new goodies which are available in Processing in QGIS 3, and is once again available out-of-the-box for all your imagery analysis requirements!

(Note that OTB is a third party dependency which must be manually installed by users. Instructions on installing OTB are available here)

This feature was developed by Rashad Kanavath


Feature: Expression variables for a model

We've added a new "Model Variables" dock panel to the model editor, allowing you to create and set custom expression variables for use in your Processing models. These variables are available anywhere expressions are evaluated within the model, so you can use them as input parameter values for child algorithms, within data-defined dynamic parameters, etc.

The prime use case here is for models which use a constant value throughout multiple steps within the model (e.g. @target_resolution: a target raster resolution, @max_simplification: a simplification value for input features coming from different sources, etc). Previously, you'd need to hunt down and replace these values in multiple places when you wanted to tweak them. By replacing them with variables in your model you only have a single place you need to edit these values when you want to adjust them!

Model variables are stored within an individual Processing model itself, and are not exposed outside of the model designer dialog.

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)


Feature: Improved modeler UI

We've added numerous usability improvements to the Processing Graphical Modeler, including

  • The addition of helpful tooltips when hovering over model components
  • Algorithms and inputs connected to model components are highlighted as you hover the mouse over different parts of the model, making it much easier to visualise the model flow and connections inside complex models
  • Input parameter types are now shown in the title of the parameter definition dialog
  • The data type for numeric parameters may now be specified, allowing for integer-only inputs for models

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)


Feature: Flagging algorithms with known issues

By default, we now hide 3rd party algorithms with known issues from the Processing toolbox, helping you avoid frustration (or misleading results) when running these algorithms. A new setting in the Processing options screen allows these algorithms to be shown, but they will be highlighted in the toolbox with a warning icon. Use at your own risk!

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)


Feature: Raster Boolean logical OR/AND algorithms

In version 3.8 we've added new algorithms which calculate the boolean OR or AND for a set of input rasters. For AND, if all of the input rasters have a non-zero value for a pixel, that pixel will be set to 1 in the output raster, otherwise it will be set to 0. For OR, if ANY of the input rasters have a non-zero value for a pixel, that pixel will be set to 1 in the output raster, else 0.

A reference layer parameter allows you to specify an existing raster layer to use as a reference when creating the output raster. The output raster will have the same extent, CRS, and pixel dimensions as this layer.

By default, a nodata pixel in ANY of the input layers will result in a nodata pixel in the output raster. If you check the 'Treat nodata values as false' option, then nodata inputs will be treated the same as a 0 input value.

These new algorithms make for much simpler raster boolean logic calculation, without the complexity of using the raster calculator. They are also dynamically scalable to any number of input rasters (unlike the raster calculator), so are much more flexible when used within your Processing models.

This feature was funded by SMEC/SJ

This feature was developed by Nyall Dawson (North Road)


Feature: New input parameter types for Print Layouts and Print Layout Items

By adding new parameter types for Print Layouts and Print Layout items, we've opened up QGIS 3.8 to a whole new world of Processing algorithms which operate on print layouts. These new parameter types allow for creation of Processing algorithms and graphical models which prompt users to select a print layout and/or an item on the layout when run.

This feature was funded by SMEC/SJ

This feature was developed by Nyall Dawson (North Road)


Feature: New parameter type for Map Scales

We've added a new parameter type specifically for map scales, QgsProcessingParameterScale. Scale values are evaluated using self.parameterAsDouble, which return the map scale denominator (matching the standard in other parts of the QGIS API).

Scale parameters are displayed to users using the standard QgsScaleWidget, which includes the combo box of predefined scales and a shortcut button to match the current map scale. The addition of this new parameter type allows you to create Processing algorithms and models which require a scale choice at run time.

This feature was funded by SMEC/SJ

This feature was developed by Nyall Dawson (North Road)


Feature: Improved "point" parameter handling

We improved the workflow for algorithms with a "point" input parameter. When picking the point coordinate from a map you can now take advantage of QGIS snapping tools, allowing you to exactly match the point parameter to a feature's boundary.

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)


Feature: New "Print Layout Map Extent to Layer" algorithm

Taking advantage of the new facilities for accessing Print Layouts in Processing, we added a new algorithm which creates a polygon layer containing the extent of a print layout map item. The output layer also includes handy attributes specifying the map size (in layout units), scale and rotation.

If you've ever wanted to create an advanced overview indicator, and the inbuilt layout tools haven't sufficed — this new algorithm is for you!

This feature was funded by SMEC/SJ

This feature was developed by Nyall Dawson (North Road)


Feature: Add X/Y fields to layer

This new algorithm is a handy shortcut for adding X and Y (or latitude/longitude) fields to a point layer. You can even calculate the X/Y values using a different coordinate reference system from the layer (e.g. creating latitude/longitude fields for a layer in a projected CRS).

This feature was funded by SMEC/SJ

This feature was developed by Nyall Dawson (North Road)


Feature: "Join attributes by nearest" algorithm

You can now perform K-nearest neighbour joins from the Processing toolbox!

QGIS 3.8 brings a new algorithm which takes an input vector layer and creates a new vector layer with additional attributes in its attribute table. The additional attributes and their values are taken from a second vector layer, where features are joined by finding the closest features from each layer.

By default only the single nearest feature is joined, but optionally the join can use the n-nearest neighboring features instead. If a maximum distance is specified, then only features which are closer than this distance will be matched.

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)


Feature: Grass r.geomorphon algorithm

The upstream GRASS team has been hard at work creating a new GRASS module for terrain analysis — "r.geomorphon". In 3.8 we expose their efforts via a new Processing tool, which calculates geomorphons (terrain forms) and associated geometry using a machine learning approach.


Feature: GDAL pansharpening algorithm

Another third party tool which we've added to the Processing toolbox in QGIS 3.8 is the GDAL pansharpening tool. Now it's easy to take advantage of this fast, powerful tool in your Processing analysis scripts and models.

This feature was developed by Alexander Bruy


Feature: New fields prefix parameter for overlay algorithms

We've added overlay layer fields prefix parameter for the following algorithms:

  • intersection algorithm
  • line intersection algorithm
  • symmetrical difference algorithm
  • union algorithm

This can come in very handy to avoid arbitrary colliding field renaming when merging layers.

This feature was developed by Mathieu Pellerin


Browser


Feature: Direct access to sheets from XLSX/ODS files

QGIS 3.8 brings even more power to the browser panel, and now displays all sheets from spreadsheet files (e.g. Microsoft Excel and LibreOffice calc files) in the browser file tree.

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)


Data Providers


Feature: postgres provider: add support for generated identity columns

This feature was developed by jef-n


Feature: String List support for compatible layers

QGIS 3.8 now fully supports disk-based layers with String List fields, allowing you to take advantage of QGIS' flexible handling of list field types with these formats.

This feature was developed by Mathieu Pellerin


Feature: Much Improved ArcGIS MapServer Handling

We rebuilt the ArcGIS MapServer provider, adding significant improvements over previous versions:

  • Tiled layers are now loaded progressively, with immediate feedback
  • We significantly optimised the provider, resulting in much faster map redraws
  • MapServer layers now correctly respect authentication settings and HTTP referrer settings.
  • "Nested" services are correctly shown in the QGIS browser panel
  • ImageServer services can be added using the provider

End result: MapServer layers are now silky smooth in QGIS!

This feature was developed by Nyall Dawson (North Road) & Mathieu Pellerin (iMHere Asia)


Feature: SQL Server: handle v2 geometries, including curved and Z/M geometries

SQL Server users rejoice: QGIS now fully supports curved geometry types (and other "version 2" geometry fields)!

In past QGIS versions, the SQL Server provider would only handle version 1 type geometries, and could only show straight feature types. In 3.8, we've added full support for version 2 geometries. This change also allows full support for Z or M enabled geometry types! Additionally, we fixed several known issues with geography field types.

This feature was developed by Tamas Szekeres


Feature: WMS: Define one filter for several layers

Sometimes, you need to define the same filter for every selected layer when making a WMS request (e.g. when accessing user-specific data). In previous QGIS versions we had to define the filter using the format:

&FILTER=layer1:"column1" = 'value1';layer2:"column1" = 'value1';layer3:"column1" = 'value1'

With QGIS 3.8, we've simplified this, and now allow the filter format:

&FILTER=layer1,layer2,layer3:"column1" = 'value1'

This feature was funded by VEOLIA

This feature was developed by Julien Cabieces (Oslandia)


QGIS Server


Feature: Allow configuring size for GetLegendGraphics

For this release we improved how the legend for QGIS servers handles the size of symbols which are scaled by map units. Whenever possible, the server will determine the legend size based on the map canvas and resolution. Even more, for cases where this information is not available in the GetLegend request, it is now possible to configure a default scale in the project, symbols in the legend will then be drawn in the size they will have when rendered at this scale.

This feature was developed by David Signer, OPENGIS.ch


Plugins


Feature: Support for plugin dependencies

In QGIS 3.8, we've introduced a long-sought-after feature for QGIS plugin developers: the ability to specify dependencies for your plugins.

To add a plugin dependancy, you can use the new metadata "plugin_dependencies". The format is a comma-separated list of PIP-like plugin names (with optional version). E.g:

plugin_dependencies=GeoCoding,IPyConsole==1.9

The example above will require:

  • Any version of GeoCoding
  • Version 1.9 of IPyConsole

When a plugin is installed, the metadata is parsed and a user will be prompted with a dialog listing the dependencies. The user can then decide what to do with the dependencies:

  • Install
  • Upgrade/downgrade
  • Do nothing

This feature was funded by GISCE TI

This feature was developed by Alessandro Pasotti


Programmability


Feature: REGEXP SQL syntax support for spatialite provider and python connections

We've enabled REGEX to be used with the spatialite provider. (This comes in handy when setting filters!). We've also added support for this syntax via any python connections made through Qgis.utils's "spatialite_connection" API - allowing you to use REGEXP in your SQL queries from within DB Manager.

This feature was developed by Mathieu Pellerin


Feature: Nearest Neighbour search in QgsSpatialIndex

We added API to allow accurate nearest neighbor search based on QgsGeometry to QgsGeometry searches via QgsSpatialIndex. In previous QGIS versions only point to geometry nearest neighbour searches were possible. But with this change, you can safely and accurately use QgsSpatialIndex to determine the nearest neighbours between any types of geometries.

This feature was funded by North Road

This feature was developed by Nyall Dawson (North Road)


Notable Fixes


Feature: Support for curves in DXF export

You can now export curved geometry layers to DXF format without segmentizing the features — no more loss of curves!

This feature was funded by Kanton Schaffhausen

This feature was developed by Jürgen Fischer in collaboration with Matthias Kuhn


Feature: Bug fixes by Alessandro Pasotti

Bug Title | URL issues.qgis.org (if reported) | URL Commit (Github) | 3.4 backport commit (GitHub) -- | -- | -- | -- Raster Calculator wrong results|#21405|fixed in master| QGIS server ignores custom rendering order when loading parent group|#21917|PR #9878|Done WMS Client: GetFeatureInfo in JSON format doesn't display numeric attribute values|#21735|PR #9879|Done Crash when adding New Field to ShapeLayer|#22100|| Priority in labelling not greyed out when data defined settings are enabled|#22077|Invalid| $length return bad value|#22105|works for me (and for everybody)| Relation reference widget wrong feature when "on map identification"|#22071|| Map composer: "href" HTML attribute issue in PDF output|#22075|won't fix| Issue exporting raster layer to Geopackage|#20848|PR #10036|Done Create vector New shapefile POLYGON|#22107|invalid| "Export to PostgreSQL" python error if rather schema has an uppercase letter in its name|#22035|PR #10063| Relation reference widget wrong feature when "on map identification"|#22071|PR #10047|Done DB Manger imports the wrong data|#22033|PR #10077|Done qgis crash when filtering a layer with an attachment field|#21775|Fixed by Nyall| Raster calculator, abs() not working|#29824|PR #29965|Done Valid file URL link fails in Identify window|#29879|PR #29967|Done QgsProject.instance().clear() crashes QGIS when LayoutDesigner Window is open|#29821|PR #29968|Done QGIS Server WFS DescribeFeatureType advertises double precision virtual fields as integer|#29767|PR #29970|Done QGIS crahses when exporting a template|#29798|PR #29981|Done Export atlas as image fail when expression filename contain dot|#29980|PR #29983|Done Buttons to adjust marker size in the digitizing tab of the general settings dialog not work|#29987|PR #29991| Map Composer crashes QGIS when copying mixture of elements in page layout|#29747|PR #30017|TODO QGIS crashes with PostgreSQL views|#29673|cannot reproduce and cannot ask for feedback| Browser - "Project home" folder shortcut does not appear when a new project is saved|#29919|PR #30025|TODO Crash when calling QgsRasterHistogram.histogramVector|#29700|PR #30033|Done Do not offer to "Import settings from Qgis2?" if no such settings exist|#30082|PR #30092|Done In gpkg, query builder prevents autogenerate of pasted feature with same fid as hidden feature|#30062|PR #30096|TODO Drag and drop geopackage from filesystem into map misses vector layers, loses names for raster layers|#30050|PR #30098|Done Qgis crashes when try to identify a layer with duplicated fields|#29937|PR #30100|TODO label properties will not saved to project files (buffer and background)|#29882|works for me on release-3_4 and master| Saving edits to a layer with JSON field throws an error|#30131|PR #30137|Risky? Value relation widget settings lost on import of layer definition file|#30115|PR #30151|Risky? Unable to add new features in QGIS for PostGIS table using sequence for gid. Data type serial: 'integer overflow'|#30041|PR #30184|Done

This feature was funded by QGIS.ORG donors and sponsors

This feature was developed by Alessandro Pasotti


Feature: Bug fixes by Alexander Bruy

Bug Title | URL issues.qgis.org (if reported) | URL Commit (Github) | 3.4 backport commit (GitHub) -- | -- | -- | -- v.net.distance - node cost column|#22013|PR #10060|Done shapefile to raster conversion does not work|#21922|| GRASS r.in.lidar.info, can only choose .txt not the intended .las|#21910|PR #10061|Done SAGA OpenCV Image Analysis|#21746|| SAGA "saga split rgb bands" tool is not inside any (SAGA) group of tools|#21849|PR #10062|Done r.sun cannot be executed because it calls on two incompatible options|#21637|PR #10074|Done i.segment (GRASS 7.4.2) only produces a Goodness Raster but no Segmented Raster|#20646|works fine in master and 3.4| Majority filter (SAGA) returns erroneous results if input is .tif|#22118|invalid| Processing batch process interface: no way to go back|#16893|PR #10080|Done DB Manager rename PostGIS column error|#21425|PR #10082|not needed Word wrapping not working in maptips|#21388|PR #10081|Done Styles stored in QML files with same name as layer no longer auto loaded|#21691|PR #14660|Done QGIS 3.4.6 crashed when I tried classifying a layer|#21693|PR #29951|Done Fixed table not working under User defined filter (SAGA)|#29999|PR #30001|Done DB Manager Versioning: _current view lacks primary key|#25888|PR #30045|

This feature was funded by QGIS.ORG donors and sponsors

This feature was developed by Alexander Bruy


Feature: Bug fixes by Victor Olaya

Bug Title | URL issues.qgis.org (if reported) | URL Commit (Github) | 3.4 backport commit (GitHub) -- | -- | -- | -- Processing "iterate" does not work anymore|#21524|PR #10078| parameter type error in SAGA Gaussian Filter|#21797|Commit| Distance matrix does not maintain data type and precision for Input Point Layer in Linear (N*k x 3)|#21501|| Processing "Build virtual vector" now fails in certain cases|#21519|PR #10083| SAGA raster calculator loads more grids than selected when a sdat is supplied in XGRIDS|#22131|PR #10085| Export selected Objects generated line layer not selectable in graphical modeller|#21705|PR #10093| Batch processing error in r.mapcalc.simple|#29822|| Help for algorithms not visible in modeller|#21536|| Bug fixes related the batch interface, not linked to any bug report. They are regressions introduced in recent changes, that i found while working on another issue||PR #29948| ||PR #29950|

This feature was funded by QGIS.ORG donors and sponsors

This feature was developed by Victor Olaya


Feature: Bug fixes by Even Rouault

Bug Title | URL issues.qgis.org (if reported) | URL Commit (Github) | 3.4 backport commit (GitHub) -- | -- | -- | -- ENVI driver ignores "geo point" (GCP) metadata on reading|#1528|Commit| WFS GetFeature fails on TypeNames parameter|#21768|PR #29946|Done Cannot load GPX file automatically after creating it QGIS 3.4.7 QGIS 3.6.2|#22005|PR #29947|Done Cannot create temporary SpatiaLite cache|#29819|PR #29949|Done PostGIS closed circle in Curved Polygon is not displayed|#29895|PR #30010|Done Fix GeoJSON output of MultiPolygon/MultiSurface|PR #30012|PR #30012|Not needed Multipatch features are not shown anymore|#29376|PR #30024|Done Multiple issues and deadlocks with WFS|#29258|PR #30026|Done WFS provider: Avoid dangling download progress dialog |PR #30039|PR #30039|Done

This feature was funded by QGIS.ORG donors and sponsors

This feature was developed by Even Rouault


Feature: Bug fixes by Denis Rouzaud

Bug Title | URL issues.qgis.org (if reported) | URL Commit (Github) | 3.4 backport commit (GitHub) -- | -- | -- | -- issues in embedded layers|#29678|PR #9993 and PR #10004

This feature was funded by QGIS.ORG donors and sponsors

This feature was developed by Denis Rouzaud


Feature: Bug fixes by Peter Petrik

Bug Title | URL issues.qgis.org (if reported) | URL Commit (Github) | 3.4 backport commit (GitHub) -- | -- | -- | -- Editing a GeoPackage feature with spaces in the field names can crash QGIS|#29630|PR #29997|TODO Crash on update pg layer|#29814|duplicate|N/A XMDF file type missing from Madiera 3.4.5|#29381|invalid|N/A Mesh calculator: crash when 'All Selected Dataset Times' button clicked|#30003|PR #30005|N/A Crash when editing fields|#29200|unable to replicate|N/A Closing Vertex Edititor crashes the app|#30028|PR #30030|TODO Detached 3D view crash [macOS]|#29169|unable to replicate|

This feature was funded by QGIS.ORG donors and sponsors

This feature was developed by Peter Petrik


Feature: Bug fixes by Loïc Bartoletti

Bug Title | URL issues.qgis.org (if reported) | URL Commit (Github) | 3.4 backport commit (GitHub) -- | -- | -- | -- No snap when selecting point of rotation|#29706|duplicate / not a bug| Crashs when working with auxiliary storage label and data defined|#30078|unable to replicate| Improve the advanced digitizing by angle|#30133|not a bug| Fix reshape for snapped point with Z||PR #30108|

This feature was funded by QGIS.ORG donors and sponsors

This feature was developed by Loïc Bartoletti


Feature: Bug fixes by Nyall Dawson

Bug Title | URL issues.qgis.org (if reported) | URL Commit (Github) | 3.4 backport commit (GitHub) -- | -- | -- | -- Fix string values are always repeated in expression build field value list|unreported|Commit|N/a Fix priority of parallel label placements, avoid placing labels below lines accidentally|unreported|Commit|Done Fix collecting geometries when one of the added geometries is already multipart|#30208|Commit|Done [processing] Fix missing default value for Select by Expression|#30218|Commit|Done [processing] Fix exception in select by expression using not equal to operator|#30135|Commit|Done Fix attribute table filtering to items within atlas feature when atlas feature has a different CRS to table layer|Unreported|Commit|Done Avoid sqlite database lookup on EVERY https network request|Unreported|Commit|Done [layouts] Fix filtering of attribute table to visible features when linked map is rotated|Unreported|Commit|Done Fix crash when closing QGIS with open layout designer windows|Unreported|Commit|Done Fix inverted polygon is distorted when map is rotated|#26381|Commit|Done Fix incorrect bounding box of labels used when map is rotated|#24680|Commit|Done Fix cannot use labeling map tools when canvas is rotated|#25384|Commit|Done Fix exception in BatchAlgorithmDialog|Unreported|Commit|N/A Don't limit label distances to postive values|Unreported|Commit|Done Fix curved labels sometimes placed below line even when set to above line only|Unreported|Commit|Done Fix curved labeling fails when line feature geometry begins with small segments|#28699|Commit|Done Fix some curved labels randomly disappear at certain scales|#12173|Commit|Done Ensure "merge connected features" setting works correctly with line networks that contains forks and branches|#12173|Commit|Done Fix missing labels when multilinestring features are used in conjunction with the "merge connected lines" setting|#12173|Commit|Done Rework new project CRS handling |#27516|Commit|Done Fix offset labels from reprojected layers when map is rotated|#24796|Commit|Done Fix labeling ignores "label per part" setting when geometry parts are adjacent|#26763|Commit|Done Fix crash when filtering layer with attachment field|#21775|Commit|Done Regenerate distance area calculation on demand in attribute table|#25500|Commit|Done Fix dxf export ignores multisurface geometry types|#21779|Commit|Done Avoid resetting column selection when restoring project with an atttribute table set to the "atlas feature" source|#20538|Commit|Done

This feature was funded by QGIS.ORG donors and sponsors

This feature was developed by Nyall Dawson