This is the change log for the next release of QGIS - version 2.14.0 'Essen'. Essen was the host city to our developer meet ups in October 2012 and 2014.
Long Term Release
This is a special release since it is designated an 'LTR' (Long Term Release). LTR releases will be supported with backported bug fixes for one year, and will be in permanent feature freeze (i.e. no new features will be added, only bug fixes and trivial updates). Note that we are in discussion to extend the term of our LTR releases to two years, but for technical reasons we will not do this until QGIS 3.2.
The purpose of LTR releases is to provide a stable and less frequently changing platform for enterprises and organizations that do not want to deal with updating user skills, training materials etc. more than once per year. The success of the LTR is very much down to you, our beloved users - we need your support to help funding bug fixes and making sure in your support contracts with support providers specify that any bug fixes done on your behalf are applied to the LTR branch as well as our normal development branch.
If an LTR is important to you, please consider also directly supporting the QGIS project, or encourage your commercial provider to use LTR as a basis for your enterprise solution so that everyone may benefit from a stable platform that is being continuously improved and refined. Note that for users and organizations that like to live on the frontier, our regular four monthly releases will continue unabated.
New Features in QGIS 2.14 'Essen'
If you are upgrading from QGIS 2.8 (our previous LTR version) you will find a great many new features in this release. We encourage you to peruse the changelogs for the intermediate non LTR 2.10 and 2.12 releases as this QGIS 2.14 includes all features published in those releases too. Note that 2.14 first enters the regular package repositories and will not immediately replace 2.8 in the LTR package repositories. That will happen when 2.16 is released.
Whenever new features are added to software they introduce the possibility of new bugs - if you encounter any problems with this release, please file a ticket on the QGIS Bug Tracker.
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 and 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. If you are able to support QGIS, you can
The strpos function behaviour has been altered, so that no match now results in a "0" value and a non-zero value means a match at the specified character position. In older QGIS versions, a "-1" value would mean no-match and other return values represented the character position - 1.
Project files from earlier QGIS versions will need to be updated to reflect this change.
This feature was developed by Jürgen Fischer
QGIS 2.14 has gained finer control over the placement of north arrows, scale bars and copyright notices on the main map canvas. You can now precisely set the position of these elements using a variety of units (including millimeters, pixels and percent).
Prior to each release, we hold a paid bugfixing programme where we fund developers to clean up as many bugs as possible. We have decided to start including a report back on paid bugfixing programme as part of our changelog report. Note that this list is not exhaustive.
The field calculator can now be used to update a feature geometries using the result of a geometric expression. This is a handy shortcut to do operations such as apply a buffer to a group of selected features, and together with all the newly added geometry functions in 2.14 makes for a very handy way to manipulate your geometries!
This feature was developed by Nyall Dawson
During rendering, new variables will be available:
@geometry_part_count
: The part count of the currently rendered geometry (interesting for multi-part features)@geometry_part_num
: 1-based index of the currently rendered geometry partThese are useful to apply different styles to different parts of multipart features:
@map_extent_width
: The width of the currently rendered map in map units@map_extent_height
: The height of the currently rendered map in map units@map_extent_center
: The center point of the currently rendered map in map unitsVariables relating to the operating system environment have also been added:
@qgis_os_name
: eg 'Linux','Windows' or 'OSX'@qgis_platform
: eg 'Desktop' or 'Server'@user_account_name
: current user's operating system account name@user_full_name
: current user's name from operating system account (if available)This feature was funded by Andreas Neumann (the OS and user related variables)
This feature was developed by Nyall Dawson, Matthias Kuhn
get_feature
expression function (especially when the an indexed column in the referenced layer is used)SelectByAttribute
and ExtractByAttribute
processing algorithms are orders of magnitude faster, and can take advantage of database indices created on an attributePointsInPolygon
processing algorithm is many magnitudes fasterYou can now zoom to any feature from within the attribute table (without having to select it first) by right-clicking and selecting zoom to feature.
Lots of new expression functions have been added for version 2.14:
relate
: performs DE-9IM geometry relations by either returning the DE-9IM representation of the relationship between two geometries, or by testing whether the DE-9IM relationship matches a specified pattern.make_point
function now accepts optional z and m values, and a new make_point_m
function has been added for creation of PointM geometries.m
and z
functions for retrieving the m and z values from a point geometrymake_line
and make_polygon
functions, for creation of line and polygon geometries from a set of pointsreverse
, for reversing linestringseval
function, which can evaluate a string as though it is an expression of its owntranslate
function, for translating geometries by and x/y offsetdarker
and lighter
functions, which take a color argument and make it darker or lighter by a specified amountradians
and degrees
: for converting angles between radians and degreespoint_on_surface
: returns a point on the surface of a geometryexterior_ring
: returns the exterior ring for a polygon geometryis_closed
: returns true if a linestring is closedgeometry_n
(returns a specific geometry from within a collection), interior_ring_n
(returns an interior ring from within a polygon)num_geometries
: returns number of geometries inside a collectionnum_rings
: returns number of rings in a polygon geometry objectnum_interior_rings
: returns number of interior rings in a polygonnodes_to_points
, for converting every node in a geometry to a multipoint geometrysegments_to_lines
, for converting every segment in a geometry to a multiline geometryclosest_point
: returns closest point a geometry to a second geometryshortest_line
: returns the shortest possible line joining two geometriesnodes_to_points
and segments_to_lines
are intended for use with geometry generator symbology, eg to allow use of m and z values for nodes/lines with data defined symbology.
Other improvements:
case when $geometry then ... else ...
and case when get_feature(...) then ... else ...
This adds a new "edit symbol" item to the right-click menu for a renderer child legend item (eg categories for the categorised renderer). Selecting it opens a symbol editor dialog which allows for directly editing the classes symbol. It's much faster than opening the layer properties and going through the style tab. You can also double click on a child item to immediately open the symbol editor.
This feature was developed by Nyall Dawson
Allows toggling on/off all the symbol items for categorized/graduated/rule based layers via the right click menu on an item. Previously you'd have to manually toggle each item one-by-one.
This feature was developed by Nyall Dawson
Shows a color wheel widget in the menu, which allows you to interactively edit the color for a symbol without having to even open a single dialog!
This feature was developed by Nyall Dawson
A new "duplicate" button has been added to the symbol properties dialog, which allows symbol layers to be easily duplicated.
This feature was developed by Nyall Dawson
This adds a configuration interface and renderer that makes it easy to put all the pieces together which are required to get a 2.5D effect.
It allows for configuring some of the styling and is meant to create an easy-to-use setup.
Since every part of the system is built around QGIS' internal rendering and symbology engine, there is much to fine tune. To get all the possibilities, just change the renderer to a graduated, categorized or single symbol renderer upon creation and you will find full access to improve the style to your needs.
This feature was developed by:
This feature was funded by:
This feature was funded by Regional Council of Picardy, ADUGA, Ville de Nyon, Wetu GIT cc
This feature was developed by Matthias Kuhn, OPENGIS.ch
Non-bundled SVGs must add:
fill-opacity="param(fill-opacity)"
and
stroke-opacity="param(outline-opacity)"
to enable transparency support.
This feature was developed by Nyall Dawson
When features are required to be processed in a particular order, this can be specified by using an arbitrary expression.
This can be configured in the layer's symbology configuration dialog and can be a simple field or a complex expression.
It also provides control over ascending or descending order as well as if NULLs are first or last.
If possible, the request will be sent to the database (This depends on the complexity of the expression as well as the provider for the layer). If it is not possible to send the request to the database, the ordering will be performed on the local machine.
This is used by the 2.5D renderer to render features based on their distance from the "camera".
This is also available for plugins:
layer.getFeatures( QgsFeatureRequest().setOrderBy( 'name' ) ) -- alphabetical by name
This feature was developed by: Matthias Kuhn at OPENGIS.ch This feature was funded by: Regional Council of Picardy, ADUGA, Ville de Nyon, Wetu GIT cc
This feature was developed by Matthias Kuhn, OPENGIS.ch
Geometry generator symbols allow using the expression engine to modify the geometry before rendering or even creating new geometries while rendering based on feature attributes.
This can be used to use all kinds of spatial operators like buffer, translate, intersect or extrude with parameters based on attributes only for the rendering without actually modifying the data in the source.
Used for the roof of the 2.5D renderer
translate( $geometry, 10, 10 )
This generates a polygon which represents the outline of the original polygon (Example image)
difference( buffer( $geometry , 250 ), buffer( $geometry, -250 ) )
Different symbol layers can contain different geometry generators, this allows displaying different versions of a geometry at the same time. The 2.5D renderer serves as an example.
This feature was funded by Regional Council of Picardy, ADUGA, Ville de Nyon, Wetu GIT cc
This feature was developed by Matthias Kuhn, OPENGIS.ch
When this setting is active, the label distance applies from the bounds of the rendered symbol for a point instead of the point itself. It is especially useful when the symbol size is not fixed, eg if it is set by a data defined size or when using different symbols in a categorised renderer.
Note that this setting is only available with the new Cartographic point label placement mode.
Previously, only the point feature itself was treated as an obstacle for label candidates. If a large or offset symbol was used for the point, then labels were allowed to overlap this symbol without incurring the obstacle cost.
Now, the actual size and offset of the rendered symbol are considered when detecting whether a label collides with a point feature. The result is that QGIS now avoids drawing labels over point symbols in more circumstances.
A new control for setting a label's "z-index" has been added to the labeling properties dialog. This control (which also accepts data-defined overrides for individual features) determines the order in which labels are rendered. Label layers with a higher z-index are rendered on top of labels from a layer with lower z-index.
Additionally, the logic has been tweaked so that if 2 labels have matching z-indexes, then:
Diagrams can also have their z-index set (but not data defined) so that the order of labels and diagrams can be controlled.
Note that this does NOT allow labels to be drawn below the features from other layers, it just controls the order in which labels are drawn on top of your map.
This feature was developed by Nyall Dawson
In this placement mode, point label candidates are generated following ideal cartographic placement rules, eg labels placements are priortised in the order:
(respecting the guidelines from Krygier and Wood (2011) and other cartographic master works)
Placement priority can also be set for an individual feature using a data defined list of prioritised positions. This also allows for only certain placements to be used, so eg for coastal features you could prevent labels being placed over the land.
You can now define custom paths that should be used for QGIS to find composer templates. This means that you can for example put a bunch of templates in a network share and give your users access to that folder in addition to the local ones that exist on their own system. To manage the composer template search paths, look in Settings -> Options -> Composer
This feature was developed by Nathan Woodrow
The Composer Manager has gained support for managing multiple compositions at the same time. You can now open or delete multiple compositions at once by using the Ctrl key and selecting multiple compositions from the list.
This feature was developed by Médéric Ribreux
The new trace digitising tool is an advanced digitising tool that allows you to digitise features in one layer by tracing features in another layer.
The trace tool:
You can read more about this feature here and with this tutorial.
This feature was funded by: The Royal Borough of Windsor and Maidenhead, Neath Port Talbot County Borough Council, Ujaval Gandhi, Surrey Heath Borough Council, Matias Arnold, Northumberland National Park Authority, Buccleuch Estates Limited, Countryscape
This feature was developed by Lutra Consulting
This makes it possible to do things like save a geometryless table WITH a geometry type, so that geometries can then be manually added to rows. Previously this was only possible to do in QGIS by resorting to dummy joins or other workarounds.
Additionally, options have been added for forcing the output file to be multi type, or include a z-dimension.
This feature was developed by Nyall Dawson
The "SPIT" plugin is no longer bundled with QGIS, as the plugin was unmaintained and has been surpassed by DB Manager and the processing database import algorithms.
This feature was developed by Nathan Woodrow
A new form widget is now available. It is named "External resource" and it allows a more complete handling of attributes assigned to file paths storing. Here is a complete summary of the widget features:
For more information on configuration options, you can use the tool tips of the configuration dialog box.
The main aim of this new widget is to fix and improve the two existing 'File name' and 'Photo' widgets, and replace them with a single unified widget. For the moment, you can still use the old widgets but they will be deprecated and removed for QGIS 3.0. We recommend to switch your projects to use the new 'External Resource' widget now.
This feature was developed by:
This adds the possibility to manage data on a normalised relational database in N:M (many to many) relations. On the relation editor in a form, the tools to add, delete, link and unlink also work on the linking table if a relation is visualized as a N:M relation.
Configuration is done through the fields tab where on the relation a second relation can be chosen (if there is a suitable relation in terms of a second relation on the linking table).
Limitations:
QGIS is not a database management system.
It is based on assumptions about the underlying database system. In particular:
ON DELETE CASCADE
or similar measure on the second relationThis feature was funded by République et canton de Neuchâtel, Ville de Pully, Ville de Vevey
This feature was developed by Matthias Kuhn
This introduces two new options to filter legend elements.
The first, filter by expression, allows users to set an expression for filtering which features should be shown in the legend. Only symbols with a matching feature will be shown in the legend.
The second filter option allows a composer legend to be filtered to only include items which are contained within the current atlas polygon.
This feature was developed by Hugo Mercier (Oslandia)
This feature adds the possibility to paste the style of one layer to a layer group or selected layers.
This feature was developed by Salvatore Larosa
It is now possible to filter elements of the legend by an expression. It has been designed with the filtering of rule-based or categorized symbology in mind.
The legend filtering is available in the legend of the main application as well as for legend components of the QGIS composer.
This feature was funded by Agence de l'Eau Adour-Garonne (Adour-Garonne Water Agency)
This feature was developed by Hugo Mercier / Oslandia
The identify tool is now able to show any z or m value present in the identified features. If the feature is a line or polygon, the tool will show the vertex number and x/y/z/m for the nearest vertex to the identified point. The identify tool now also shows the number of parts and part number for collections.
This feature was developed by Nyall Dawson
When using either the merge attribute values or merge features tool, there are additional summary statistics available which can be used to set the resultant attribute values. The include Q1, Q3, inter-quartile ranges, majority and minority values, and number of unique values, amongst others.
This feature was developed by Nyall Dawson
In QGIS 2.14 the handling of various options regarding distance units, area units and coordinate display have been unified, simplified, and moved to Project Properties. This change brings numerous benefits, including:
$area
, $length
and $perimeter
functions.This feature was funded by QGIS sponsored bug fixing program
This feature was developed by Nyall Dawson
To guarantee the long-term stability of the processing module, a new testing framework has been introduced.
Processing geo-algorithms are executed after every change which hits the QGIS source code and the result is compared to a control dataset to guarantee correct behavior. This gives an immediate feedback about possible regressions.
It is possible - and desired - that more tests are added. You can read more about how to participate.
A short description is now shown along with the algorithm parameters, making it easy to understand the purpose of the algorithm.
Also, batch processes can be now started from the algorithm dialog, using the “Run as batch process…” button
QGIS 2.14 Processing now incorporates v.net GRASS modules (only for GRASS7). Those modules are a set of algorithms that perform on graph line vector layers (networks). A graph is a set of vertices (or nodes or points) linked together with a set of edges (or arcs or lines). The set of edges is often called a network.
Thanks to v.net modules, you can easily calculate le shortest path between a set of nodes on the network or even compute the isochrone map from a set of central points. you can also easily solve the complex travelling salesman problem from a network and a set of travel nodes.
v.net algorithms often use a line vector layer (for the network) and a point layer which represents the nodes you want to use for the computation. Be sure to use a true graph line vector layer for the network layer (edges need to be connected on vertex without intersection between edges) to avoid problems. You can also use any network layer attribute for cost calculation (the content of the attribute is used to calculate the travel cost of the edge).
Here is a quick summary of the different algorithms that have been included into Processing:
Use the "Help" tab on each of the v.net Processing algorithm to directly read the official GRASS7 documentation for more information.
This feature was developed by Médéric Ribreux
The simplified interface has been removed, and a new and more user-friendly system of managing providers has been added. The algorithm search functionality now searches also in providers that are not active, and suggests activating them.
The QGIS Browser is a filesystem, OGC Web Services and Database Connection panel that lets you easily drag and drop any layer from the aforementioned sources into your map canvas (or into the DB Manager window). Two useful new improvements were added for this release:
This feature was developed by Nathan Woodrow
The delimited text provider has gained support for WKT strings containing Z and M coordinates. For example you can express a point with z and measure elements like this : POINT ZM (1 1 5 60)
.
This feature was developed by Nyall Dawson
The delimited text provider now supports curved WKT strings, and the memory provider (eg "temporary scratch" layers) has gained full support for curved geometries. Additionally, if QGIS has been built using GDAL versions 2.0 and up then QGIS will fully support curved geometries in supported file types (eg GML files).
This feature was developed by Nyall Dawson
When using a PostGIS 2.2 instance, QGIS now uses the ST_RemoveRepeatedPoints function instead of the ST_SnapToGrid function to process server-side simplification, as described by Paul Ramsey.
This method will decrease the number of vertices of the geometries that QGIS needs to download from the server, which will increase rendering speed and save bandwith between QGIS and the PostgreSQL server.
This feature was developed by Michaël Douchin @kimaidou
QGIS 2.14 has improved handling of time and datetime field types, including:
This feature was developed by Jürgen Fischer, Nyall Dawson
For vector and raster files, QGIS relies on GDAL/OGR library. It means that nearly any file format that can be opened by GDAL or OGR can be directly opened in QGIS. Until now, some file extensions were not added in the GDAL or OGR file selector, resulting in users believing that QGIS could not open or handle those file formats. To minimise this problem, some new extensions have been added to GDAL and OGR file selector filters:
For vector files:
For raster files:
This feature was developed by Médéric Ribreux
A new option has been introduced to enable transactional editing.
When this option is enabled
This feature is currently Experimental. If you find any problems, please report them.
This is only implemented for postgres databases at the moment.
This feature was funded by SIGE
This feature was developed by Matthias Kuhn, OPENGIS.ch, based on work by Sourcepole
The ability to use the QGIS Authentication Manager introduced in 2.12 has been extended to the PostGIS provider. This allows connecting to Postgres using basic or PKI authentication, with the credentials stored in the QGIS configuration. The new Postgres provider authentication can also be used in the DB manager.
QGIS will now cache WMS GetCapabilities
requests so that on subsequent use response times will be quicker when using that service. By default the cache period is 24 hours, but you can adjust this in the Network
tab of the QGIS Settings dialog.
This feature was developed by Jürgen Fischer
Dynamic SQL queries can now be used on any kind of vector layers that QGIS is able to load, even if it the layer format itself has no support for SQL queries!
A new kind of vector layer called "virtual layer" is now available for that purpose. These allow you to create a virtual layer by defining a query (including support for aggregates and joins) from other layers in your project. The resultant layer will be a live, dynamic view of the query result, so any changes to the source layers will be automatically and immediately reflected in the virtual layer!
The supported SQL dialect is SQLite with Spatialite functions. QGIS expression functions can also be used in queries. Any kind of vector layers can be accessed in the query, including multiple layers from different data providers to make joins.
Support for virtual layers has also been added to DB Manager as well as to the Processing toolbox where a new 'Execute SQL' tool is available.
This feature was funded by MEDDE (French Ministry of Sustainable Development)
This feature was developed by Hugo Mercier / Oslandia
Add non standard parameter showFeatureCount to add feature count in the legend. To activate it,showFeatureCount can be set to TRUE or 1.
This feature needs a fake X server.
This feature was developed by 3Liz
In the project properties the user can:
The WMS 1.3.0 capabilities reflects the INSPIRE configuration.
This feature was developed by 3Liz
To assist with configuring a project for QGIS Server, a new configuration checker has been added to project properties.
The checker tests for errors like:
`STARTINDEX
is standard in WFS 2.0, but it's an extension for WFS 1.0 implemented in QGIS Server.
STARTINDEX
can be used to skip some features in the result set and in combination with MAXFEATURES
provides for the ability to use WFS GetFeature to page through results. Note that STARTINDEX=0
means start with the first feature, skipping none.
This feature was developed by 3Liz
A number of elements have both a Name and a Title. The Name is a text string used for machine-to-machine communication while the Title is for the benefit of humans. For example, a dataset might have the descriptive Title Maximum Atmospheric Temperature and be requested using the abbreviated Name ATMAX.
User can already set title for layers and project. OpenGeospatial Web Services, OWS (WMS, WFS, WCS), name is based on the name used in layer tree. This name is more a label for humans than a name for machine-to-machine communication.
To add the capability to users to define Name as a text string for machine-to-machine communication, this feature adds:
If a short name has been set for layers, groups and project it is used by QGIS Sever as the layer name.
This feature was developed by 3Liz
Support for the new authentication system has been added to the plugin manager. This allows users to apply authentication configurations for connections to plugin repositories, and system administrators to create authenticated access to plugin repositories and/or the download packages of plugins.
Adds an option and code editor to store python form init code into the project (and the DB, since it's in the style section)
QgsFeatureRequest now supports settings a maximum limit for the number of features returned. In many cases this limit is passed to the provider, resulting in significant performance gains when only a set number of features are required.
Additionally, QgsFeatureRequest now supports setting ordering for returned features. Again, in many cases this ordering is delegated to the provider so that it is performed "server side" for optimal performance.
This feature adds more options to the custom feature form Python code:
The configuration options, including the custom Python code entered in the dialog are stored in the project as well as in the style QML settings and can be exported/restored from a DB.