QGIS 3.0 "Girona"
25.02.2018 08:20 · GIS · qgis, release
The release of QGIS 3.0 “Girona” has been announced.
QGIS is a free and open-source geographic information system (GIS) running on Linux, Unix, Mac OS X, Windows, and Android (QField project). This release is named after the city of Girona, where the 15th QGIS developer meeting and the 2nd QGIS User Conference took place in spring 2016.
As this is the first release in the 3.x series, it is marked as an “early adopter release” and is aimed at enthusiasts and advanced users. Of course, anyone can install it, but keep in mind that this version is not yet as stable and polished as the 2.x series. Also, note that QGIS 2.14 has reached its end of life and QGIS 2.18 is now LTR.
The full list of changes can be found here, but most users will find the visual changelog more informative. The most important and notable changes are listed below.
General
The biggest change, though not visible to end users, is a huge overhaul and cleanup of the QGIS codebase. This includes migrating to Qt 5 and Python 3, updating the API to make it more logical and easier to use, removing deprecated classes and methods, and adding many new classes.
QGIS now supports a new zipped project file format .qgz
in addition to the existing XML-based .qgs
. The new format allows the user to pack the auxiliary .qgd
file next to the actual QGIS project file. Most importantly, this feature opens the door to the ability to embed and ship a wide range of resources (such as SVGs, colour ramps, etc.) with the project.
Another useful change is the support for run-time profiles, which contain all QGIS settings, including installed plugins. Users can create as many profiles as they like and switch between them without leaving QGIS.
The context help system has been completely removed, instead, all “Help” buttons are now linked to the QGIS User Guide. By default, an online version is used, but it is also possible to use a version stored on a LAN or on a local drive. This new system also allows users to combine different help sources, e.g. to show custom help for some dialogs or open plugin documentation.
User interface
The user interface and associated APIs have been improved and made more consistent. Among other things:
- standardised the use of transparency/opacity/alpha in the UI and API.
- added a new widget to control opacity
- standardised how rotation is handled in the UI and API, rotation is now always clockwise
- standartised scale API
A search bar has been added to the Keyboard Shortcuts dialogue to make configuring shortcuts easier and more user-friendly. It is possible to search for both action names and shortcuts.
One of the most anticipated features is the addition of the Locator bar. Located in the lower left corner of the main QGIS window, the Locator bar is a flexible and pluggable search bar for performing any type of search. Out of the box, it supports searching for actions, Processing algorithms, layers, and features of the active layer. If you need more, just create your own search filter.
A new colour ramp selection widget has been added. The new widget provides quick access to your favourite colour ramps, shows a preview of the colour ramp, supports colour ramp inversion and remembers custom colour ramp settings.
Individual buttons for adding different types of layers that cluttered the QGIS toolbar have been replaced with a new unified Data Source Manager dialogue.
Expressions
A number of new expression variables have been added. These include project variables @project_crs
and @project_crs_definition
to retrieve the current project CRS; global variable @qgis_locale
containing the current QGIS locale (system or user override, depending on the setting); map setting variables @map_crs
, @map_crs_definition
and @map_units
.
Many new expression functions: aggregate expressions (array_agg(…)
); functions to handle arrays; colour, date and time, geometry, map, attribute expressions and more.
Symbology
Symbol layer handling enhancements: data-defined symbol layer visibility and the ability to disable individual symbol layers without removing them from the symbol.
A brand new “cluster” renderer for point layers has been added. This renderer groups nearby points into a single symbol and optionally displays the number of features grouped.
The Style Manager has received a major update: the ability to mark styles and symbols as favourites has been added; groups have been replaced by a tag system; styles and symbols can be tagged while saving them to the style database and more.
Added support for user-created colour schemes. These colour schemes can also be added to the colour button drop-down menus for quicker access.
Added support for ’live’ layers, which are automatically re-rendered at the specified time interval. This is a huge help for those who need to track moving objects such as cars, or visualise data that is constantly changing.
Digitizing
The new geometry classes handle Z and M values correctly, and it is also possible to create new layers with Z/M geometries.
The trace digitising tool can now be used with an offset, making digitising much faster in some cases. Another useful improvement is the ability to select a range of vertices in the Vertex tool.
A new Copy and Move Features tool has been added to make it easy to duplicate existing features and move them around with a single click.
Data management
The metadata handling has been completely rewritten, and a new internal metadata schema has been introduced. Layer metadata can be stored at the project level or in a sidecar XML file. An updated metadata viewer/editor has been added to the layer properties dialogue. Along with the user-oriented work, a number of new API classes have been added to allow developers to easily manipulate metadata.
Auxiliary storage has been added to make the handling of data-defined properties simple and transparent to users. This allows non-editable layers to have data-defined settings. Auxiliary data is stored in the project sidecar file (with .qgd
suffix) when using the old XML-based project format and within the project file when using the new zipped format.
GeoPackage is now a first-class citizen in QGIS. This not only means that the data format is fully supported, but also that QGIS now proposes GeoPackage as the default format when creating new vector layers or exporting existing layers.
Raster layers can now be exported in any GDAL-writable format.
Improved database support, including:
- support for attribute indexes in SpatiaLite databases
- Support for
hstore
andarray
datatypes in PostgreSQL/PostGIS databases - recognition and correct handling of provider-side NOT NULL and UNIQUE constraints
Added integration with GeoNode — an open source geospatial content management system. Once a connection to a GeoNode instance is added to QGIS, it is displayed in the browser and any data provided by that instance can be added to QGIS as WMS/WFS/XYZ layers.
API
As I mentioned at the beginning of this post, in QGIS 3.0 the developers did a major overhaul of almost the entire QGIS codebase, removing old, unused API, refactoring existing classes, and adding new functionality.
Among other changes, there has been a major overhaul of the geometry classes. Old classes have been renamed, and new classes have been introduced with full support for Z/M values.
A new framework for creating and managing background tasks has been added. Background tasks can depend on other tasks and contain subtasks. The QgsTaskManager
class is used to handle all tasks: start, pause and cancel them either programmatically or via the UI.
Processing
The Processing core has been revised and rewritten in C++, making it much more stable and faster. Along with the Processing core update, many existing algorithms have been ported to C++. Most of the old analysis plugins such as Interpolation and Raster Analysis have also been ported to Processing. In addition to porting existing tools, many new algorithms have been added: Single-sided Buffer, Extend Lines, and Offset Lines, to name a few.
To reduce maintenance, keep the QGIS codebase smaller, and make it easier to follow the release cycle of external tools, the TauDEM, OTB and LidarTools providers have been moved out of the QGIS core. They will be maintained by interested parties from the QGIS community or outside.
The Graphical Modeler has been improved, and models can now be exported to PDF and SVG formats.
QGIS Server
The server component has been completely refactored, with some services rewritten and others reimplemented from scratch. As a result:
- QGIS Server now supports multithreaded rendering like the desktop application
- added Python bindings to the server API (say “yes” to server plugins)
- implemented support for WFS 1.1
- project file parsing was unified with the desktop application
Map Composer
Like many other parts of the QGIS codebase, the Print Composer has undergone extensive refactoring and rewriting to turn it into a flexible reporting framework. Among the improvements:
- composer map elements can now have different CRSs
- more control over drawing composer tables
- much more data-definable controls
- better API for working with the composer
- and more
3D
A new 3D map window has been added to display a 2D map rendered from project layers on top of the terrain layer, e.g., DEM. It is also possible to apply 3D renderers to vector layers to turn them into true 3D objects. For example, polygons can be extruded, and points can be rendered as 3D models or 3D symbols.