Project: QGIS

Changelog for version: 3.0.0

The greatest QGIS release ever!


Feature: Live layer support

QGIS 3.0 now supports live layers. These layers get re-rendered automatically at a time interval that you determine, in a clean and flicker free way. Live layers are great for tracking continuously changing data like a fleet of cars, a flock of birds that you have telemetry data for and so on.

This feature was developed by Kartoza & North Road

Map Composer

Feature: Map Composer Overhaul

This PR implements a major rework to how compositions are managed.

Highlights are:

  • A new QgsLayoutManager class which is used for storage and serializing/deserializing of compositions. A QgsLayoutManager is attached to QgsProject. This allows core code to access the compositions attached to a project. All handling of compositions has been moved from app to core, making it easy for server (and other non-app based projects. QField/roam?) to access project compositions without resorting to fragile xml parsing.
  • Composer windows are created on demand and destroyed on close. This avoids the heavy requirement of creating all composer windows and widgets for every single composer item when loading projects. It's the main reason loading projects with compositions is so slow currently. Now, composer windows are created only when the window is opened and destroyed when the window is closed. Composer item configuration widgets are also only created on demand (when an item is selected) instead of precreating all widgets.
  • A side benefit of destroying composer windows on close is that we now no longer suffer from a Qt bug which blocked use of floating docks in composer windows. Now you can float the item/composition/etc panels! Much nicer for full screen working with compositions on multi-monitor setups.
  • Reworked API for working with composers through iface. Since composer windows don't exist unless they are currently open, I've redone all the iface methods for interacting with composers to make it clear that they only apply to open windows (code which works with compositions (not composers) should be updated to use the layoutManager() attached to the active project instead, since compositions in the manager always exist). Additionally, I've added a simple composer interface which provides a stable API for plugins and scripts to work with composer windows. Very basic for now, but in future we can extend with more hooks to allow plugins to interact with composer windows.
  • Lots of code cleanups and removal

This feature was funded by The Swiss QGIS User Group!

This feature was developed by Nyall Dawson (North Road)


Feature: Initial list of new features

See for an up to date list of the items - below is a snapshot...

commit f40fb9c4d25084e069831bb17b4c9ccd7d453b58
Author: Alexander Bruy
Date: Wed Jan 25 11:41:34 2017 +0200

[processing] fixes and new tools for LiDAR processing
courtesy of Niccolò Marchi

commit ecf1f5a5762b4b5e4e188efe9141dfb9574ac0a9
Author: Mathieu Pellerin
Date: Wed Jan 25 11:47:26 2017 +0700

[FEATURE] expression engine's is_layer_visible() (#4045)

commit 7a0fa23490a0fec8bd34f98be7c75eb88b4b5ef1
Author: Nyall Dawson
Date: Mon Jan 23 15:37:34 2017 +1000

[FEATURE] Holding alt while using map zoom tools inverts the zoom

Eg hold alt and click with zoom in tool = zoom out

commit 6c53ba25e372eec66d2af512da06844864f37ef3
Author: Nyall Dawson
Date: Tue Jan 17 15:25:13 2017 +1000

[FEATURE][composer] Data defined scalebar colors and line width

commit ec9ba9c2a2fab4969d0927b4c509ce7573ea35a3
Author: Nyall Dawson
Date: Tue Jan 17 14:32:30 2017 +1000

[FEATURE][composer] Data defined legend titles and column count

(fix #11913)

commit 934c7c91734f50d8de415b2807cc094bbabd4801
Author: Nyall Dawson
Date: Tue Jan 17 13:26:02 2017 +1000

[FEATURE][composer] Data defined svg colors and outline width for
composer picture items

Especially useful when the picture is showing a north arrow!

commit d6c7569dda4fc5699ef81e0b9c82b7208331718a
Author: Nyall Dawson
Date: Tue Jan 17 12:21:19 2017 +1000

[FEATURE][composer] Data definable item frame and background colors

commit 336b603b3aea2316b49549db533811208596a542
Author: Nyall Dawson
Date: Mon Jan 2 11:31:35 2017 +1000

Add support for more data definable properties to diagrams:

- Distance
- Priority
- ZIndex
- IsObstacle
- Show
- AlwaysShow
- Diagram Start Angle

commit 46f2ea13eeca912c980e55b1e0b805fb9c1cb96e
Author: Nyall Dawson
Date: Sun Jan 22 19:40:49 2017 +1000

[FEATURE] Add inches as a measurement choice for symbology/labeling

"Make imperial great again!"

commit 66f5d065cc2d27a053405ab74ac37113e627cd43
Author: Nyall Dawson
Date: Sun Jan 22 11:19:33 2017 +1000

[FEATURE] Expose points as valid choice for all symbol/label units

commit f6f6ebdb441d45b750090801f5a7c671d563f5f8
Author: Martin Dobias
Date: Thu Jan 19 11:48:07 2017 +0800

[FEATURE] API to enable/disable editing of raster data

To create a 2x2 raster block with one byte per pixel:

block = QgsRasterBlock(Qgis.Byte, 2, 2)

To overwrite existing raster data at position 0,0 by the 2x2 block:

provider.writeBlock(block, band, 0, 0)

commit 01cd784ee744e09760ee76f1ac883236357e3376
Author: lbartoletti
Date: Thu Jan 19 07:49:35 2017 +0100

[FEATURE][processing] Add overlay option to GridLine and GridPolygon

commit 9a6d714061fcd40217ca52e68f307e0a4ea26a47
Author: Nyall Dawson
Date: Tue Jan 17 19:18:47 2017 +1000

[FEATURE][composer] Allow choice of CRS for map items

This allows the CRS for map items to differ from the canvas/project
CRS. It also allows different map items to have different CRS,
eg an overview map can be set to a different CRS to the main map.

An unfortunate side effect of this change and the ongoing work
to separate compositions from canvas is that datum transforms
are no longer supported in composer. This cannot be fixed until
the datum transform store is rewritten to not depend on canvas
(ie, it's also broken for upcoming multi-canvas work)

commit 24c990f15f5b87b8af865f3fec6681e63ca522f7
Author: Nyall Dawson
Date: Sat Jan 14 19:45:22 2017 +1000

[needs-docs] Don't restrict project ellipsoid choice when
canvas OTF reprojection is disabled

These two settings aren't necessarily related - you may want
to disable OTF canvas reprojection while still wanting accurate
distance/area measurements using an ellipsoid.

This change should make distance/area calculation in QGIS more
reliable and predictable for users. Calculations are now
based entirely on the ellipsoid choice in project properties, so
it only takes checking a single setting to verify how
measurements are calculated.

commit ef8a135f1bef37f8825ea58816c68f2d2b1e9bee
Merge: 49b6c5f 932d9fb
Author: Hugo Mercier
Date: Fri Jan 13 16:16:14 2017 +0100

Merge pull request #3987 from mhugo/servermultithread

[server] parallel map rendering

commit 80d0d05b18410c3cee830916a984daa4b20eb260
Author: Alexander Bruy
Date: Wed Jan 11 15:12:30 2017 +0200

[FEATURE][processing] remove TauDEM provider from core Processing

TauDEM is quite specific set of tools and it requires installation of
some additional tools. So we decide to turn it into separate provider,
reducing core codebase size and maintenance efforts.

Tagged as feature to not forget mention in changelog and documentation

commit db1009cbfa4b83c9b44f09a50928e720645d75cf
Author: Nyall Dawson
Date: Mon Jan 9 14:10:07 2017 +1000

[FEATURE] New expression variables for map settings

- map_crs, map_crs_definition: retrieves crs details for map
- map_units: retrieves units for map (eg 'meters','degrees')

commit f2032ea2688715163a631cc0860b9e5f97257cfc
Author: Nyall Dawson
Date: Mon Jan 9 13:51:53 2017 +1000

[FEATURE] item_variables expression function inside compositions

This adds a new item_variables expression function when expressions
are used inside a composition context.

The function takes a single argument, the id for an item inside
the composition, and returns a map of variable name to value
for that item.

This allows you to do things like insert text in a label fetching
properties of another item in the composition, eg

Insert scale of map into a label:

map_get( item_variables( 'map'),'map_scale')

Insert x coordinate of map center into a label:

x(map_get( item_variables( 'map'),'map_extent_center'))

commit c2bd4b940bc8ed76f106f72126aa59bd711cc80d
Author: Alexander Bruy
Date: Thu Jan 5 20:35:29 2017 +0200

[FEATURE] new global expression variable $qgis_locale

Returns current locale used by QGIS. By default this is current
system locale. If user enabled locale override in QGIS settings
overriden locale will be returned.

commit 3a03c98a089a0e5aa39c50186b1aa17a394cbd3b
Author: Alexander Bruy
Date: Tue Jan 10 14:17:25 2017 +0200

[processing] configurable URL for scripts and models repository

commit e8c149ed42a53b1eb5f52b73f184e0edb905db0d
Author: volaya
Date: Thu Dec 15 09:43:31 2016 +0100

[processing] added ‘invalid feature handling’ option

commit e5e0ec51eb306761d7b4e0900902f31f451f6acf
Author: Nyall Dawson
Date: Fri Jan 6 10:12:05 2017 +1000

[FEATURE][processing] New algorithm to truncate tables

Irretrievably deletes all features from a table... use with caution!

commit 56d5a375a1a6def850753d241647e12c675961c7
Author: Mathieu Pellerin
Date: Tue Jan 3 12:15:03 2017 +0700

[FEATURE] Zoom in/out and fit items to view actions for the modeler (#3939)

commit 735b1c359a4b3941aa84b9b7f051352c9c714648
Author: rldhont
Date: Tue Dec 13 12:45:22 2016 +0100

[Feature][PostgreSQL] Compile expression functions

commit 60a17013770a16b35fec3cd83a85bca9ced5e6ce
Author: Even Rouault
Date: Tue Dec 20 17:58:16 2016 +0100

[FEATURE] Change of ergonomy of the visibility of layers inside groups


- Checking/unchecking a group doesn't change the check state of its children.
A node is visible if and only if it is checked and all its parents too.
- There is no more a semi-checked state for a group
- Ctrl-clic on a unchecked group will check the group and all its descendants.
- Ctrl-clic on a unchecked layer will check the lager and all its parents.
- Ctrl-clic on a checked group will uncheck the group and all its descendants.
- Ctrl-clic on a checked layer will uncheck the layer and all its parents.
- Those actions are available in contextual menu items in the tree view.
- Invisible layers because they or their parent(s) is unchecked are greyed out.

commit f54476cddaf70096c585c984c5963fdaf5530931
Author: nirvn
Date: Mon Jan 2 10:27:41 2017 +0700

[FEATURE] Export processing models as PDF/SVG

commit 1fb9ef6ca5c7fc26fb65097c476d7b1fddfff2c1
Author: Alexander Bruy
Date: Fri Dec 30 10:40:19 2016 +0200

[FEATURE] add search bar to the Configure Shortcuts dialog (fix #12681)
Supports search by action name and by shortcut

commit 4f73c28c5fc5290e1f7252c3d69337433991669c
Author: Nyall Dawson
Date: Tue Dec 27 11:05:00 2016 +1000

[FEATURE] Hide Deselected Layers action

Allows you to quickly hide all deselected layers. This is very handy
when you have a large project and want to quickly hide all except
for a couple of layers

commit f3d618a6ed52ffb5518059fe019975237f86c82c
Author: nirvn
Date: Tue Dec 27 16:20:06 2016 +0700

Add between/not between to numerical fields in select by form

commit 239b342a3f0bb8d7a13c4b73bc2dc12be4b2b47d
Author: nirvn
Date: Tue Dec 27 08:52:35 2016 +0700

[FEATURE] Raster stretch toolbar actions support for pseudocolor renderer

commit 5ece689033cfd448a634e2be7188f6c2b56346bc
Author: nirvn
Date: Mon Dec 26 11:13:28 2016 +0700

[FEATURE] Implement raster pseudocolor updated extent auto classification

commit 77ae8a23b653c899cc500abb7aaf2f6d57d8f431
Author: Nyall Dawson
Date: Fri Dec 16 19:25:29 2016 +1000

[FEATURE] Remove orphaned oracle raster plugin

Marked as feature to flag for documentation and changelog

commit 1605a833c065cbbe2a3c0b5b8b9fb6444fe14c6c
Author: Even Rouault
Date: Mon Dec 26 19:40:01 2016 +0100

Contrast enhancement in 'updated extent': fix taking into account OTF mode

commit f40e914b769c2e09d884c6a67cfb41cb934a40a9
Author: Alexander Bruy
Date: Mon Dec 26 19:09:32 2016 +0200

[FEATURE] replace GDALTools plugin with Processing

Tagged as feature to not forget mention in docs and changelog

commit 80b757b6dbd2241388309ae53d02092f0868aa02
Author: Nyall Dawson
Date: Thu Dec 15 20:47:58 2016 +1000

[FEATURE] Add zoom to features shortcut in select by form dialog

Allows very quick navigation to features which match the criteria
in the form

commit 0bfc9bb6e3ac45c544f79642cb668a28c1f06d8c
Author: Nyall Dawson
Date: Thu Dec 15 16:46:29 2016 +1000

[FEATURE] Show field values in autocompleter in form filter mode

This adds a new gui widget QgsFieldValuesLineEdit which includes
an autocompleter populated with current field values.

The autocompleter is nicely updated in the background so that
the gui remains nice and responsive, even if there's millions
of records in the associated table.

It's now used as a search widget for text fields, so can be seen
in the browser window if you set the filter to a text field, or
if you launch the form based select/filter by selecting a layer
and pressing F3.

commit 37d82bb7a578420cc43e880f2159d0540c8dd177
Author: Alexander Bruy
Date: Mon Dec 19 20:54:16 2016 +0200

[FEATURE] remove Interpolation plugin

tagged as feature to not forget mention this in docs and changelog

commit c3e3ba6b49dc223d226034f78de06c5bf5c864dc
Author: Alexander Bruy
Date: Sat Dec 17 15:05:07 2016 +0200

[FEATURE] remove Raster terrain analysis plugin

tagged as feature to not forget mention this in docs and changelog

commit 532eb58d1f4003a9bcb77ad2119ab8d1255ff7b6
Author: Even Rouault
Date: Thu Dec 15 01:31:05 2016 +0100

[FEATURE] Implement raster auto-stretching when updating canvas

This commit implements the improvements described at:

The QgsRasterMinMaxWidget now offers a seetting to specify that the statistics
should be computed each time the canvas extent changes.

Other changes:
- the content of the QgsRasterMinMaxWidget is now persistant.
- there is no longer any Load button. The global Apply / OK button of the raster
  properties dialog has this effect.
- the default "limits" for single band raster is now MinMax and not CumulativeCut
- the default "limits" can be configured for single band, multi band single byte and
  multi band multi byte
- "Strech using current extent" honours the "limits" instead of forcing min/max.

commit 398249806f9cc87d935c5cd8a76c7dee3816d45b
Author: nirvn
Date: Thu Dec 15 13:31:11 2016 +0700

[FEATURE] toggle visibility of opened panels in main window
Accessible via:
- View menu > Toggle Panels Visibility
- Ctrl+Tab keyboard shortcut

commit a85fe1fa4464e5b6f7bd7e9dbb76c679ec75ec29
Author: Juergen E. Fischer
Date: Wed Dec 14 22:15:15 2016 +0100

[FEATURE] DWG import into geopackage using libdxfrw

commit f02e4ad98fe40c482f6c8af5368ae7ffc8e5bfb8
Author: nirvn
Date: Sat Dec 10 10:30:48 2016 +0700

[FEATURE][raster] transparency support for paletted renderer

commit 170a94680d81825fa450e921877ae56bfea252bf
Author: volaya
Date: Fri Dec 9 12:03:22 2016 +0100

[processing] removed grass6 provider

commit 85e692ec40d693d039996d21d38102e8cdca4846
Author: Alexander Bruy
Date: Sat Dec 10 16:19:25 2016 +0200

[processing] add algorithm for calculating shortest path from multiple
start points defined by vector layer

commit 2f70f1f75c19325d1e76cc183469a05fdf62b23b
Author: Alexander Bruy
Date: Sat Dec 10 16:03:45 2016 +0200

[processing] add algorithm for calculating shortest path to multiple end
points defined by vector layer

commit aa3c7ccad21ef3dda212ef0793de7fcc1a6e9f0a
Author: Alexander Bruy
Date: Sat Dec 10 12:40:08 2016 +0200

[processing] add algorithm for calculating service areas from point

Add start point coordinates to outputs

commit ce342b0f87557ecbc0b90fdaa8902c655e655e07
Author: Alexander Bruy
Date: Tue Dec 6 14:49:37 2016 +0200

[FEATURE] remove RoadGraph plugin

tagged as feature to not forget mention this in docs and changelog

commit 77ecfb93e0cea051509cc053dbb1a499a98eeb20
Author: Alexander Bruy
Date: Sun Dec 4 13:08:14 2016 +0200

[processing] add service area algorithm

commit a60048c126b699c79cf7293ca99b9c48c8b23458
Author: Alexander Bruy
Date: Wed Nov 16 20:42:54 2016 +0200

[processing] add shortest path algorithm to Processing

commit a8b9723cbc64e911a7702aca41b8dfbb84f8ffc0
Author: Mathieu Pellerin
Date: Tue Dec 13 12:09:13 2016 +0700

[FEATURE] allow customization of line spacing for legend item labels (#3632)

* [FEATURE] allow customization of line spacing for legend item labels
* add test for legend line spacing and update control images

commit cf5f373f631e5a9924723df5e25b3267f161e618
Author: Matthias Kuhn
Date: Wed Dec 7 21:30:44 2016 +0100

Add support for fine-resolution mouse wheel zooming

Some mouses (notably on mac) have finer resolutions. They send mouse
wheel events in a higher frequency but with smaller angleDelta() values.
So far, zooming with such mouses was leading to unusable fast zoom

commit ffb6ba7a3e66efdd8c7a5d1af4e81102ae9748d4
Author: nirvn
Date: Fri Dec 9 14:03:55 2016 +0700

[FEATURE][raster] support setting of color and transparency on multiple
items in paletted UI

commit 4894a6d49808770e91254053554fa8c707412499
Author: nirvn
Date: Fri Dec 9 13:52:21 2016 +0700

[raster] allow multiple row deletion in the singleband pseudo-color UI

commit 364a51d8c46d8d62e867045e50bb568967273e75
Author: nirvn
Date: Fri Dec 9 13:51:40 2016 +0700

[FEATURE][raster] support setting of color and transparency on multiple
items in the singleband pseudo-color UI

commit ee55c4bc6608a07684a118f8b65c16aa8349b46a
Author: Nyall Dawson
Date: Fri Dec 9 10:43:30 2016 +1000

[FEATURE] Show an alpha slider in color button drop down menu

Allows quick tweaks to the color alpha

commit 4b6f3a3ee5a55b23dc3226f4b6bfa2eae8fee8da
Author: Nyall Dawson
Date: Fri Dec 9 06:15:35 2016 +1000

[FEATURE][processing] New algorithm to orthagonalize geometries

Adds a new QgsGeometry::orthagonalize method which tries to make
angles in geometries either right angles or straight lines

Also adds a processing algorithm exposing this feature.

commit bb7b6d41bc30b664fa05493131c1072f3dda2ae9
Author: volaya
Date: Wed Dec 7 13:11:57 2016 +0100

[processing] added predefined expressions to raster calculator

commit 034cc6593561dfffa50c4c47cf75b953bbe08298
Author: Nyall Dawson
Date: Wed Dec 7 12:07:33 2016 +1000

[FEATURE] Remove c++ heatmap plugin

No longer required as plugin has been ported to analysis lib
with processing frontend

Marked as feature for docs + changelog notices

commit 83c38b0172546ab019f8fd7b08ea3e74434a60d9
Author: Nyall Dawson
Date: Thu Nov 17 19:48:46 2016 +1000

[FEATURE][processing] Port heatmap plugin to processing algorithm

commit 16da9063989714824ab4f581d9d82b809ba62d92
Author: volaya
Date: Mon Dec 5 13:39:38 2016 +0100

[processing] allow multiple selection of tables

commit ebae15f23a1f62f43329cb7b6c49e397a0c5932e
Author: Nyall Dawson
Date: Fri Apr 15 07:35:22 2016 +1000

Framework for task manager

Adds new classes:
- QgsTask. An interface for long-running background tasks
- QgsTaskManager. Handles groups of tasks - also available as a global
instance for tracking application wide tasks
- QgsTaskManagerWidget. A list view for showing active tasks and their
progress, and for cancelling them

A new dock widget has been added with a task manager widget showing
global tasks

commit bd8d2121dccdeea61fe9ada620c84b311d3deb25
Author: Nyall Dawson
Date: Sat Nov 19 15:46:35 2016 +1000

[FEATURE] Create attribute index support for spatialite provider

Allows creation of attribute indexes for spatialite layers

commit 08ee1806a63fdb6b0360eca85fb048be3981bc54
Author: Mathieu Pellerin
Date: Sun Dec 4 11:39:41 2016 +0700

[FEATURE] cpt-city catalog support in color ramp's gradient-only mode (#3832)

cpt-city catalog ramps are now available for gradient-only:
- shapeburst fill
- gradient fill
- inner/outer glow effect

commit 04c6007e17f69ae1f74609de71453db0f648978f
Author: nirvn
Date: Sat Dec 3 10:53:23 2016 +0700

[FEATURE] save existing color ramp function

commit b02c6a32069004b1a7703724a81777a7e2452c3b
Author: Bernhard Ströbl
Date: Thu Nov 24 09:08:22 2016 +0100

[processing][FEATURE] Return multi geometries from split alg

accept multi geometries as input

commit a7f9018e11be823c090999434667268fee39fe03
Author: volaya
Date: Thu Nov 17 12:06:54 2016 +0100

[processing] added native raster calculator algorithm


commit 2c4eb3cb8c04669a4af23a2823ea4c7f84d4187b
Author: volaya
Date: Tue Nov 8 13:04:31 2016 +0100

[processing] allow selecting multiple file in ‘add script from file’

commit b30a1ff65df284b9112198b384ed3e09a4768fef
Author: Nyall Dawson
Date: Wed Nov 30 15:59:24 2016 +1000

[FEATURE][processing] New universal 'basic stats for field' algorithm

Replaces the existing 'Basic Stats for Numeric Fields' and
'Basic Stats for String Fields' algorithms and adds support
for date/time/datetime fields.

Having a single unified algorithm allows more flexible models
where a field type may not be known in advance.

Deprecate existing basic stats algorithms

commit fa16e3e40327578387737f5a20ea73c1ff985c34
Author: nirvn
Date: Tue Nov 29 13:49:59 2016 +0700

[FEATURE] color ramp button widget

commit 6bb4934907ea26bcff802bb4ae9abbb47eae7d5f
Author: Nyall Dawson
Date: Wed Nov 30 09:35:06 2016 +1000

[FEATURE][processing] Remove duplicate create points along lines script

This functionality is duplicated by the PointsAlongGeometry algorithm

Keep the algorithm version, since it has unit tests and supports things
like progress reports.

(marked as feature for inclusion in release notes)

commit d4c38f9277ffedf78492aa87db8e6609a68b4eb4
Author: Nyall Dawson
Date: Wed Nov 30 09:32:57 2016 +1000

[FEATURE][processing] Remove duplicate fill holes algorithm

The Fill_holes script is duplicated by the DeleteHoles algorithm,
and the DeleteHoles algorithm has many advantages:
- it's a full algorithm rather than a script
- uses qgis geometry classes and maintains curves/z/m
- has unit tests
- doesn't rely on non-standard external library (shapely)

(marked as feature for inclusion in release notes)

commit fef15e016563a1ef127534fd0b140b2160172ad3
Author: Nyall Dawson
Date: Mon Nov 28 13:12:50 2016 +1000

[processing] Consolidate 'delete holes' algorithms

Copy min area parameter from 'Fill holes' algorithm to 'delete
holes' algorithm.


- make algorithm maintain z/m values
- make algorithm work with curved geometries
- add unit tests

commit 193d400d2957769021a411f4defbcb3c4425b811
Author: Germán Carrillo
Date: Thu Oct 27 18:58:11 2016 -0500

Make QGIS Line Intersections algorithm able to keep all attributes.

commit 1e661e37b9757a680e02bc562fca24aea6c90821
Author: Nyall Dawson
Date: Thu Nov 24 09:40:52 2016 +1000

[FEATURE][processing] New 'drop geometries' algorithm

Simply removes any geometries from an input layer and returns
the features with attributes only

commit 0e2ef065d7e89ba65db93f3a628d46c9bb31f265
Author: Bernhard Ströbl
Date: Wed Sep 28 16:41:12 2016 +0200

[processing] [FEATURE] SplitWithLines

Rename algorithm SplitLinesWithLines to SplitWithLines
Accept polygon as input, too
Use only selected lines to split with (if processing is set to use selection only)
Issue log message if trying to split multi geometries
Update help

commit 2652aa50c913dd55cf85431bdb9eddae200a0470
Author: nirvn
Date: Wed Nov 23 12:05:58 2016 +0700

[processing] improve the modeler dialog UI and icons
- use a proper toolbar to match other parts of QGIS
- show keyboard shortcuts in toolbar action tooltips
- create vector icons to replace PNG ones

commit 489e00df8d086966815d31519b21d9203c0e955a
Author: Nyall Dawson
Date: Wed Nov 23 15:44:37 2016 +1000

[processing] Enhance create points layer alg

Clean up code, allow setting z/m columns

commit 20dc7fb266efba2f2bddc47443f129bf3eef9f03
Author: Nyall Dawson
Date: Tue Nov 22 12:07:25 2016 +1000

[FEATURE] raster_statistic expression function for retrieving
raster band stats from a loaded layer

Allows raster band stats (eg min, max, avg) to be used in

commit 188033a6afc298864860ba94a3f150dd5e23f86d
Author: Nyall Dawson
Date: Tue Nov 22 10:08:14 2016 +1000

[FEATURE] Expression variables for project CRS

Adds @project_crs and @project_crs_definition variables
for retrieving the current project CRS

commit 08f8ca7ebd5bcd55f2aebbbf884e1da35388ded8
Author: nirvn
Date: Sat Nov 19 12:15:23 2016 +0700

[FEATURE][style manager] import/export of symbols' tags
and favorite flag

commit 5e1a69fc88e6ac97675ed178bcb8f0d8e32da3c1
Author: Nyall Dawson
Date: Fri Nov 18 10:56:02 2016 +1000

[FEATURE][processing] Create attribute index algorithm

Allows creation of an index on an attribute in a layer for faster
attribute based filtering

Support depends on the underlying data provider for the layer

commit 24ffa15ecf1aa20ef389fad1f0aaf6f235b712da
Author: Nyall Dawson
Date: Thu Nov 17 12:48:39 2016 +1000

[FEATURE][processing] Extract by attribute can extract for null/notnull values

Adds support for filtering where an attribute value is null or not null

commit b5864cd4327a09f2bf2b0afffa09582370c6f194
Author: Nyall Dawson
Date: Tue Nov 8 16:59:07 2016 +1000

[FEATURE] Improve handling of defaults (inc provider default clauses,
literal defaults, and qgis expression defaults) and automatically
handle unique value constraints on layers

Add a new method QgsVectorLayerUtils::createFeature which returns
a new feature which includes all relevant defaults. Any fields
with unique value constraints will be guaranteed to have a value
which is unique for the field.

Currently only in use by the split feature tool.

Sponsored by Canton of Zug and the QGEP project

commit 5b4a88f8e07e8ee1f9bfc0570f76f68717688cf2
Author: Matthias Kuhn
Date: Mon Oct 31 15:30:29 2016 +0100

[feature] Add layer scoped actions

Within the attribute table, there is a new button to trigger actions
which are not based on individual features but instead on the whole layer.
Normally they will perform actions based on all features or the selection.

In addition to this, a lot of cleanup has been done.

commit 5e487cfea49f45bc696e116a5568f0c25c424d2d
Author: nirvn
Date: Mon Nov 7 08:41:33 2016 +0700

[FEATURE] Style management re-work and upgrade
- A new favorite grouping system was added, which the symbols list
widget defaults to
- The selected tag / smartgroup in the symbols list widget now
persists when switching layers (and across sessions)
- The symbols list widget will update the tag / smartgroup combo
box when users add / rename / remove categories
- Users can now directly tag, as well as add to favorites, symbols
while saving those to the style database
- To streamline style management, groups have been removed and
fully replaced by tags
- Tags have been integrated into the import/export user interface

commit 87d2ac3525f706759e646dba14919be529d53d9d
Author: Nyall Dawson
Date: Wed Nov 16 10:21:29 2016 +1000

Add @map_extent variable containing geometry of current map extent

...Because I've seen a lot of ugly workarounds to recreate this
extent using wkt/buffers/etc

commit a373f95707fb2bf52694fc7a4ae34bda81099f26
Author: Denis Rouzaud
Date: Tue Nov 1 16:03:05 2016 +0100

[FEATURE] add functionnality to copy/move feature to move feature map tool

commit 1f81a7c4fc2279f895a91dd3e694730c1bd02704
Author: Nyall Dawson
Date: Fri Nov 11 07:41:03 2016 +1000

[FEATURE] pole_of_inaccessibility expression function

Exposes calculation of pole of inaccessiblity to expression

commit d6f09c012e71cb827c2e4408783f724638094cec
Author: Nyall Dawson
Date: Thu Nov 10 17:06:15 2016 +1000

[FEATURE] Add method to calculate pole of inaccessibility for polygons

Implements a method in QgsGeometry and a processing algorithm to
calculate the pole of inaccessibility for a surface, which is the
most distant internal point from the boundary of the surface. This function
uses the 'polylabel' algorithm (Vladimir Agafonkin, 2016), which is an iterative
approach guaranteed to find the true pole of inaccessibility within a specified
tolerance. More precise tolerances require more iterations and will take longer
to calculate.

commit 132e76a596c71e3d559deef19c36b414c01630ec
Author: Nyall Dawson
Date: Thu Nov 3 16:37:00 2016 +1000

[FEATURE][processing] New input type for expressions

This adds a new input type for expression inputs. Expression
inputs can be linked to a parent layer so that the builder
shows the correct fields and layer variables.

It's designed for two use cases:

1. to be used when an algorithm specifically requires an expression,
eg Select by Expression and Extract by Expression.

2. to be potentially used as a replacement input instead of string
or number literals in algorithms. Eg - if the simplify algorithm
tolerance parameter was replaced with an expression paremeter, then
this expression would be evaluated for every feature before
simplifying that feature. It would allow parameters to be calculated
per feature, as opposed to the current approach of calculating
a parameter once before running the algorithm. It would also
mean algorithms like "variable distance buffer" would no longer
be needed, as a single "buffer" algorithm could then be used
for either a fixed distance, field based, or expression based

commit 72118f91f907acbb3947a6b882ba04ff7cef5233
Author: Nyall Dawson
Date: Wed Nov 9 13:45:08 2016 +1000

[processing] When an algorithm has string parameters, also
accept numeric, file and table field inputs in modeler

This allows a non-string parameter to be reused as a string
parameter in contexts where it makes sense.

commit 6b2b4c578ac45ae6f5745c240e03265c14cdfde1
Author: nirvn
Date: Tue Nov 8 11:56:16 2016 +0700

[FEATURE][expression] strpos() and regexp_match() improvements
- strpos() now relies on a simple string within a string search
- regexp_match() now returns pos of a matching regular expression

commit 0fbcc4b95d310e2223a805fac4e10d726ea8f9eb
Author: nirvn
Date: Fri Nov 4 15:41:04 2016 +0700

[FEATURE] upgrade the substr() function
- support negative start value (e.g. substr('hello',-2) returns 'lo')
- support negative length value (e.g. substr('hello',3,-1) returns 'll')
- length parameter now optional, defaults to end of string
  (e.g. substr('hello world',7) returns 'world')

commit b0bd61f308333381b832d8b7961dfd714e76338f
Author: Nyall Dawson
Date: Mon Nov 7 15:10:17 2016 +1000

[FEATURE] Detect default literal values from OGR layers

Requires GDAL >= 2

commit 0ae610c5e3dd364385c2fd91f901e706a04101f1
Author: Nyall Dawson
Date: Mon Nov 7 14:33:44 2016 +1000

[FEATURE] Detect literal default values for spatialite provider

commit bc1ad2ce82196402ffa83118b7fd3c2f195a4414
Author: Stéphane Brunner
Date: Fri Nov 4 12:56:44 2016 +0100

Add metadata for WFS provider in layer metadata informations

commit 1d245b2ef63eb62b40715d63b28b015f20df0d26
Author: nirvn
Date: Sat Nov 5 11:21:13 2016 +0700

[FEATURE] add regexp_matches() function
The new function returns an array of strings captured by capturing
groups in a supplied regular expression. For e.g., the following
expression: regexp_matches('qgis=>rocks','(.*)=>(.*)')
will return the following array: 'qgis', 'rocks'.

commit 9b667d1e8a0759a8f4d807cae98e7e4224dbf5ac
Author: Nyall Dawson
Date: Mon Nov 7 09:53:03 2016 +1000

[FEATURE] Remove c++ geometry snapper plugin

All functionality is now available through analysis lib + processing

Marked as feature for documentation + changelog flagging

commit 8acc286b0f14210c70a058c16c35b5482065bf16
Author: Nyall Dawson
Date: Mon Nov 7 08:28:24 2016 +1000

[FEATURE] Snap to layer algorithm accepts a mode parameter

With a new option to prefer to snap to closest point on geometry.
The old behaviour was to prefer to snap to nodes, even if a node
was further from the input geometry than a segment. The new option
allows you to snap geometries to the closest point, regardless
of whether it's a node or segment.

commit dae0a017617d3082b6e89f8a3e75c2c9bcd0ebf5
Author: Nyall Dawson
Date: Sat Nov 5 19:38:49 2016 +1000

[FEATURE][processing] Snap geometries algorithm allows snapping
to other layer types, supports point/line layers

Fix #14791, #15313

commit c3a978b9da33f69c6c5440e1166c78c89946dde4
Author: Nyall Dawson
Date: Fri Nov 4 17:13:59 2016 +1000

[FEATURE][processing] Snap geometries to layer algorithm

Port the Geometry Snapper plugin across to the analysis lib, and
expose to python bindings

Add a new algorithm which performs the snapping to layers

commit 2497375ee95c5eb3046a8316793adf75c4ef1768
Author: Alexander Bruy
Date: Thu Sep 8 15:10:32 2016 +0300

[FEATURE] save and restore color ramp used for singleband pseudocolor rendering

commit f65e770242d2e5e55167934f0a1a191726c01104
Author: Nyall Dawson
Date: Mon Oct 31 08:47:08 2016 +1000

[FEATURE[processing] New algorithm to compute geometry by expression

This algorithm updates existing geometries (or creates new
geometries) for input features by use of a QGIS expression. This
allows complex geometry modifications which can utilise all the
flexibility of the QGIS expression engine to manipulate and create
geometries for output features.

commit 3f2a7810cf4610e253a75118fed671aaed78ff66
Author: Nyall Dawson
Date: Wed Nov 2 13:39:07 2016 +1000

Respect non-enforced constraints when editing/adding features

Warnings are shown, but features can be committed. Fields which
fail an unenforced constraint are now shaded in yellow to differentiate
from the red failure for enforced constraints.

commit fac5bc0691101e9ef228f08d14ee1773bed92848
Author: Nyall Dawson
Date: Wed Nov 2 12:09:52 2016 +1000

[FEATURE] Field constraints can be enforced or not

Non-enforced constraints just show a warning to the user, but
do not prevent committing the feature. Enforced constraints
block users from comitting non compliant features.

Any constraints detected by the provider are always

commit bb6fc32eec3bc5576ee0810f5e6b38f5f66a2270
Author: Nyall Dawson
Date: Tue Nov 1 16:25:17 2016 +1000

[FEATURE] Not null constraint detection for ogr provider

Implements not null constraint detection for the OGR layers, where
supported for the data format by OGR.

(only available for GDAL >= 2.0)

commit 1cecf37b40d632e55ff104b2da2fea75cc56b1da
Author: Nyall Dawson
Date: Wed Oct 26 06:27:07 2016 +1000

Enforce unique constraints in attribute form

commit 3e40f803c30fd1fe8e7785462db402587bb63563
Author: Nyall Dawson
Date: Tue Oct 25 14:15:16 2016 +1000

Implement constraint detection for spatialite provider

commit f6c1bf7f5b3d2e3277a0bf8510665f09bfccd3e8
Author: Nyall Dawson
Date: Wed Oct 19 11:10:14 2016 +1000

Add gui for setting/exposing constraints in field properties

Provider set constraints cannot be changed by users, ie
if a not null constraint is set on the field at the database
then QGIS users cannot clear this constraint.

commit d1fd588499c3ed6ffdedb5a3c1d6a0f3f2be7f87
Author: Nyall Dawson
Date: Wed Oct 19 10:40:32 2016 +1000

Add method to fetch constraints from a vector data provider

Implemented for unique and not null constraints for postgres

commit 667718bc89e0bf54f84d0d66d117ae7052cd5c0c
Author: Patrick Valsecchi
Date: Tue Nov 1 08:36:21 2016 +0100

[feature] Editor widget auto config for foreign keys (#3699)

Automatically pick RelationReference widgets for foreign keys.

commit dd4b34ed16e0611b2e317788ed9364ef63b9d80f
Author: Nyall Dawson
Date: Mon Oct 31 14:37:12 2016 +1000

[processing] Modeller should not be modal

commit 82312e10e472fb91a5b5c0253456130dea86521e
Author: Nyall Dawson
Date: Sun Oct 30 17:10:37 2016 +1000

[FEATURE][processing] New algorithm to extract specific nodes

This algorithm allows you to extract specific nodes from geometries.
Eg you can extract the first or last node in the geometry.

The algorithm accepts a comma separated list of node indices to
extract, eg 0 = first node, 1 = second node, etc. Negative indices
can be used to extract nodes from the end of the geometry. Eg
-1 = last node, -2 = second last node.

commit 8dab2cd4d75f4fdf6d10e0741557915e783722ca
Author: Nyall Dawson
Date: Sat Oct 29 22:33:08 2016 +1000

[FEATURE][processing] New algorithm to extend lines

Allows extending linestrings by a set distance at the start
and end of the line

commit 2b545822e7755fe3ca92c1b90db8fe260e40dc30
Author: Nyall Dawson
Date: Sat Oct 29 22:24:24 2016 +1000

[FEATURE] New expression function 'extend'

Extends linestrings by a specified amount at the start and
end of the line

commit 121f48d654eb6dc201b0840ad3f903eb3665b923
Author: nirvn
Date: Sat Oct 22 11:28:03 2016 +0700

[processing] add import into spatialite algorithm

commit 74e64645e410dff89685f029ea0169eb825c7689
Author: Nyall Dawson
Date: Sat Oct 29 08:05:26 2016 +1000

[FEATURE][processing] New extract by expression algorithm

Filters an input layer by expression

commit 17fc7dbe53367f66c0b68930b6d278e41d896b49
Author: nirvn
Date: Fri Oct 28 10:26:39 2016 +0700

[FEATURE] add array_distinct() function

commit f80a33be659200c1497a55c455a5521dc1e8c529
Author: Matthias Kuhn
Date: Tue Oct 25 18:53:36 2016 +0200

[FEATURE] Expose @parent variable in aggregate functions

This makes it possible to access attributes and geometry from the parent
feature when in the filter of the "aggregate" expression function.

With this in place aggregates can be calculated per feature.

E.g. max "measurement" for each point_station per polygon_research_area.

Or a default attribute value when digitizing features:

    aggregate(layer:='countries', aggregate:='max', expression:=\"code\",
filter:=intersects( $geometry, geometry(@parent) ) )

commit 01f3c9ae38de51e82a4a18a48488695deb51f72f
Author: Matthias Kuhn
Date: Thu Oct 27 14:45:13 2016 +0200

[FEATURE] Add is_selected and num_selected functions

* is_selected() returns if the current feature is selected
* num_selected() returns the number of selected features on the current layer
* is_selected(layer, feature) returns if the "feature" is selected. "feature"
  must be on "layer".
* num_selected(layer) returns the number of selected features on "layer"

commit 7373036edf6e9e549a0871f6f778f13b7f6902d8
Author: nirvn
Date: Thu Oct 27 13:53:58 2016 +0700

[FEATURE] add string_to_array() and array_to_string() functions

commit 8b74201470d98eb02871211f510a1edcaf6980fc
Author: nirvn
Date: Tue Oct 25 14:36:04 2016 +0700

[FEATURE] array support for the replace() expression function

commit 322edff6e490357b75e705ec0a0db4fc27f26f69
Author: Matthias Kuhn
Date: Wed Oct 26 10:55:10 2016 +0200

Snapping toolbar

commit 6f82740670d32d644f2eeff93c75ee1b87413d17
Author: Nyall Dawson
Date: Wed Oct 26 16:04:38 2016 +1000

[expressions] Allow non-greedy regex by switching to QRegularExpression

commit 3b77e4b395c27d3c3b384bf9c519e7d1a075b9c2
Author: Even Rouault
Date: Tue Oct 18 22:33:23 2016 +0200

[FEATURE] [OGR provider] Load/save style in database for GPKG and Spatialite

commit b2587b7bf33376dc2f158e145322f82b341a1922
Author: Nyall Dawson
Date: Mon Oct 24 08:43:44 2016 +1000

[FEATURE] Remove zonal stats plugin

This is now fully exposed via processing, which is the logical
place for this feature to reside.

One less c++ plugin is a good thing!

(marked as feature so we remember to mention this in changelog!)

commit e75b572b6e08f141a927c62f710a67629a0dbe46
Author: Nyall Dawson
Date: Mon Oct 24 08:27:22 2016 +1000

[FEATURE] Remove dxf2shp converter plugin

This functionality is available in OGR and there is no longer
a need for a dedicated QGIS plugin to do this task

Marked as feature for documentation + changelog reminder

commit 169b367c5b5ed5997052e8fa536f1bf8adef4386
Author: Nyall Dawson
Date: Tue Oct 4 12:29:14 2016 +1000

[FEATURE] Allow label font size in mm/pixels

And all other label sizes (eg buffer size) now accept sizes in
pixels too

commit 687c66f5d6766ffcc391464171390024626fcef2
Author: Nyall Dawson
Date: Sat Sep 24 09:44:42 2016 +1000

Add Points as valid render unit (for font sizes)

commit 5eb875d63bd761cab63220a72444d79e26a8bb99
Author: Nyall Dawson
Date: Mon Oct 24 11:07:00 2016 +1000

[processing] Add algorithm to strip null geometries

commit 772f2019c1bd869e5e76576104042fb0de9b86b8
Author: nirvn
Date: Fri Oct 21 09:10:56 2016 +0700

[processing] add a spatialite execute SQL algorithm

commit 7bd431597093e20a650b8629528fafac649d6cbb
Author: Alexander Bruy
Date: Wed Oct 12 12:02:29 2016 +0300

[processing] expose zonal statistics from Zonal statistics plugin in toolbox

commit 774965c2d4ee1678219c725e279760027c73534f
Author: Alexander Bruy
Date: Tue Oct 11 11:42:18 2016 +0300

[processing] expose TIN interpolation from interpolation plugin in toolbox

commit f7575e08f5b2bdff65fce468f37938ea557ab0f5
Author: Alexander Bruy
Date: Mon Oct 10 20:07:42 2016 +0300

[processing] expose IDW interpolation from Interpolation plugin in toolbox

commit 3f2866c47a0fc2960bd7c3760f242be8dce2c680
Author: Even Rouault
Date: Tue Oct 18 14:26:46 2016 +0200

[FEATURE] [DBManager] Add a GeoPackage dedicated plugin

commit e8be0ed988f091bac1c8c6653777869f9f3f222c
Author: Nyall Dawson
Date: Tue Oct 18 13:40:34 2016 +1000

[composer] Allow syncing pictures to true north

Previously pictures could only be synced to grid north, which
can be totally wrong for many CRSes (especially in polar areas)

Users now are given a choice of grid or true north, and can also
enter an optional offset to apply if eg magnetic north is instead

When synced to true north the bearing is calculated using the
centre point of the linked map item.

Fix #192, #4711

This fix was sponsored by the Norwegian Polar Institute's
Quantarctica project ( and
coordinated by Faunalia.

commit a6148deb3093af0d076a1ab8ad4b470fdd40159b
Author: Nyall Dawson
Date: Mon Oct 17 15:44:19 2016 +1000

[FEATURE] Data defined symbol layer visibility

Adds a data defined override to control a symbol layer's
visibility. Allows users to disable drawing certain symbol layers
for matching features.

commit b8c2e68fc53bc0aba8bdcfcdc1906f70ea28c041
Author: Nyall Dawson
Date: Thu Oct 13 07:39:49 2016 +1000

[FEATURE] Allow symbol layers to be temporarily disabled

Adds a new checkbox at the bottom of each symbol layer's
properties which allows you to control whether the layer is
enabled or not.

Disabled layers are not drawn, but are saved and can be
enabled at a later stage.

This makes it easier to tweak symbol appearance without
having to totally delete a symbol layer.

commit 17e318bd954f749ccb88f19c200534219254803b
Author: Nyall Dawson
Date: Fri Oct 14 10:54:28 2016 +1000

[FEATURE] Drag qpt to QGIS to create new composer from template

commit ec2d7fea0c651545df4cc936a2808817f0dc705a
Author: nirvn
Date: Fri Oct 14 11:13:05 2016 +0700

[FEATURE] control over drawing of composer table grid horizontal & vertical lines

commit 34894c6f5a9ed0fd93d25f72354f819b5b0cbd8c
Author: Even Rouault
Date: Thu Oct 13 00:16:22 2016 +0200

[FEATURE] Vector layer save as: offer file/layer overwriting, new layer creation, feature and field appending

When saving a vector layer into an existing file, depending on the capabilities
of the output driver, the user can now decide whether:
- to overwrite the whole file
- to overwrite only the target layer (layer name is now configurable)
- to append features to the existing target layer
- to append features, add new fields if there are any.

All above is available for drivers like GPKG, SpatiaLite, FileGDB, ...
For drivers like Shapefile, MapInfo .tab, feature append is also available.

commit 7b747743221ddb82fefad9732eabdccfc75eed22
Author: Alexander Bruy
Date: Thu Oct 6 19:38:09 2016 +0300

[processing] expose Relief from Raster terrain analysis plugin in toolbox

commit 15902aa2fa229dabbbf68c649eb62d751fcac1cb
Author: Alexander Bruy
Date: Thu Oct 6 19:37:11 2016 +0300

[processing] expose Hillshade from Raster terrain analysis plugin in toolbox

commit 2c2ff64f7df19a3f6d7a473ecd7bf8cd1254a5c8
Author: Alexander Bruy
Date: Thu Oct 6 19:36:13 2016 +0300

[processing] expose Ruggedness from Raster terrain analysis plugin in toolbox

commit 48c7c49c73c3e21e7d80807bb5314626bb44ec8a
Author: Alexander Bruy
Date: Thu Oct 6 19:35:08 2016 +0300

[processing] expose Slope from Raster terrain analysis plugin in toolbox

commit e76a4678babf533a811c566e5ad42839f265e2a9
Author: Alexander Bruy
Date: Thu Oct 6 19:34:17 2016 +0300

[processing] expose Aspect from Raster terrain analysis plugin in toolbox

commit 9263abe4a14815f9a6e09a82912fce4687c0038b
Author: Nyall Dawson
Date: Tue Oct 11 15:57:08 2016 +1000

[composer] Move all grid settings into seperate panel

Now grid settings are accessed by clicking "Modify grid"
from the composer map properties panel. This opens a new
stacked panel with all the grid settings.

This helps make the composer map widget less confusing.
Before it was absolutely jammed with controls, including
lots of nested groups.

commit 028db7e54182a82c4e64e955dfe4971210b21f5b
Author: Nyall Dawson
Date: Thu Oct 6 08:13:05 2016 +1000

[FEATURE] Port composer config widgets to QgsPanelWidgets

Brings the inline (ie, no modal dialogs!) color modification
and symbol editing from the layer styling panel to
composer item configuration.

commit e08fdaa444f2ffdc138b0eb847210f0449fd97e0
Author: volaya
Date: Mon Sep 12 06:17:23 2016 +0200

[processing] support for expressions in numerical values in modeler

includes cleanup of modeler, to adapt to latest changes in parameters architecture

commit b9ca91a55a981ddf6d99e0e5b9e4ecc9f6425e88
Author: Alexander Bruy
Date: Fri Sep 16 10:48:52 2016 +0300

[FEATURE] support for 2.5D geometries in memory provider

commit 36e276f993d5620740d23941ab58aea8d549c6b5
Author: Nyall Dawson
Date: Mon Aug 15 12:04:17 2016 +1000

[FEATURE] Point cluster renderer

Groups nearby points into a single rendered marker symbol.

QgsPointDisplacementRenderer has been split into a new
pure virtual QgsPointDistanceRenderer base class which handles the
detection of clusters and grouping of points. The new cluster
renderer reuses this base class to avoid code duplication.

Additionally, some improvements have been made to the
displacement renderer, specifically:
- points are now assigned to the group which is "nearest" them,
rather then just assigning them first group within the search
distance. In some cases this was assigning features to a more
distant cluster, resulting in less predictable cluster patterns
- individual points are now correctly shown in their own
selection state

Lots of code cleanup + documentation too.

Sponsored by:
- Andreas Neumann
- Qtibia Engineering (Tudor Barascu)
- Karl-Magnus Jönsson
- Geonesia (Nicolas Ponzo)
- Plus numerous additional anonymous backers whose generous
contributions are also highly valued!

commit ecba25430331bd64307d286752538ecf23701b25
Author: Patrick Valsecchi
Date: Wed Sep 28 10:32:04 2016 +0200

Add relation discovery for SpatiaLite

commit 31a1c239039c31cb12a5815287b22c425d3ee0b1
Author: Patrick Valsecchi
Date: Mon Sep 26 13:51:37 2016 +0200

Add auto-discovery of relations for PostgresQL

Fixed the add relation functionnality: the table is sorted. When the code
was setting the sorted column, the row was sorted and the other columns it was
setting were set on the wrong row.

commit 8069154aadd76aa0fd48d4fb3126109728f26963
Author: Matthias Kuhn
Date: Wed Sep 21 20:41:35 2016 +0200

[Feature] Allow configuring link/unlink feature buttons on relation editor widget

commit b45a6b42298f36e00ceaabcf49c8384378b1e58b
Author: Nyall Dawson
Date: Wed Sep 21 13:35:53 2016 +1000

[FEATURE] Enable tabbed floating docks for Qt >= 5.6

commit f622c5bf2c2e460561033482f31b622e0dad88d8
Author: Patrick Valsecchi
Date: Mon Sep 12 10:30:05 2016 +0200

Add expression functions for arrays and maps

commit 6260f9dea5293ec082ffe7cfae3211e914021288
Author: Patrick Valsecchi
Date: Thu Sep 8 15:28:14 2016 +0200

Add support for arrays in the spatialite provider

New versions of GDAL/OGR (since trunk@35289) convert list types (StringList,
IntegerList, Integer64List and RealList) to a JSON string when it stores a
Spatialite table. It sets the column type as JSONSTRINGLIST, JSONINTEGERLIST,

commit 62ea90c59c22d679750126e2ab654643ff40e1fa
Author: Juergen E. Fischer
Date: Mon Sep 19 20:34:10 2016 +0200

[FEATURE] dxf export: support reprojection

commit 59a3bc2ca73696df7d79c5e593cfbe258901bd50
Author: Matthias Kuhn
Date: Thu Sep 15 11:16:38 2016 +0200

[feature] Add flag to only copy selected features

This extends the offline editing possibilities to only work on subset of
large layers

Sponsored by DB Fahrwegdienste GmbH

commit ec50cac2ef96d171bbb68e5765ce1df9c916f78f
Author: Nyall Dawson
Date: Wed Sep 14 14:02:27 2016 +1000

[FEATURE] New "preset" colors color ramp option

Allows use of a color ramp consisting of a list of selected colors.
Currently there's no way in QGIS to classify a renderer using
some list of colors you've previously selected. So you can modify
the colors manually after classifying, but that's a pain
if you're regularly using the same color scheme.

Basically, it's like the color brewer color ramp options but
allowing users to pick their own preset list of colors to use*

(Because Cynthia Brewer isn't the only cartographic color expert!)

commit abc55f4c42aee16f5cc1daaf918d3f6ef62c8886
Author: Patrick Valsecchi
Date: Tue Sep 6 15:03:16 2016 +0200

Add support for arrays in PostgresQL

Fix parsing of PostgresQL hstore. Had problems when the key or values were
containing comas.

commit 1882cabea9aeec06d726e9b17759165ef3ad75ab
Author: Matthias Kuhn
Date: Thu Sep 8 12:19:23 2016 +0200

[Feature] conditional visibility for tabs and groupboxes

This adds a new configuration option to conditionally show or hide
tabs and groupboxes in drag and drop designer forms.

Configuration is done via a double click in the designer tree in the
fields configuration interface.

An expression can be entered to control the visibility. The expression
will be re-evaluated everytime values in the form change and the tab or
groupbox shown/hidden accordingly.

commit a90217db16289a5c3dfc9abde6b0df0aefc59412
Merge: 74cceb4 e533f0c
Author: Matthias Kuhn
Date: Thu Sep 8 11:42:37 2016 +0200

Merge pull request #3459 from pvalsecc/hstore

[FEATURE] hstore

commit 7169079f915f168afc88aa42ccd451be6c3e06a9
Author: Patrick Valsecchi
Date: Fri Jul 15 12:11:43 2016 +0200

Smarter default edit widgets with plugins to pick them

Now the widgets factories can give a score on how good they could handle
a widget.

Additionaly, plugins can be added to choose a widget factory in function
of an external information. One of them uses a table in PostgresQL to
allow specification of the widget type and configuration.

I took the opportunity to remove a few deprecated method in relation to

commit 679797e22bcc3d29840248c9ec73fc2911c6cb40
Author: Nyall Dawson
Date: Sat Sep 3 21:52:06 2016 +1000

[FEATURE] New simplify + smoothing expression functions

Exposes simplification and smoothing algorithms to expression
engine, via:

- simplify(): applies Douglas-Peucker geometry simplification
- simplify_vw(): applies Visvalingam-Whyatt geometry simplification
- smooth(): smoothes a geometry

Carto tip: use smooth along with geometry generators to minimise
the typical "GIS" noded look of rendered geometries!

commit 4d60d0cdb54cc75f15c4e841aa87a3fd6994c918
Author: Nyall Dawson
Date: Thu Sep 1 18:14:25 2016 +1000

[FEATURE] Add option to QgsGeometry::smooth to not smooth
segments shorter than a certain threshold or sharp corners
with an angle exceeding a threshold

Expose the angle threshold to processing smooth algorithm

- optimise QgsGeometry::smooth for new geometry classes
- Fix smooth does not work with geometries containing Z/M

commit 56b77db88c4b617f254a7fa1309f86ee7d3cedfa
Author: Nyall Dawson
Date: Thu Sep 1 08:22:18 2016 +1000

[FEATURE][processing] Add choice of simplification method to simplify

This change allows users to choose which method to use when running
the simplify geometries algorithm, with choices of the existing
distance based (Douglas Peucker) algorithm, area based (Visvalingam)
algorithm and snap-to-grid.

Visvaligam in particular usually results in more cartographically
pleasing simplification over the standard distance based methods.

commit 24bde35ce67a0996e2673afa450fc1feb0cd6f53
Author: Patrick Valsecchi
Date: Fri Jul 15 12:11:43 2016 +0200

Smarter default edit widgets with plugins to pick them

Now the widgets factories can give a score on how good they could handle
a widget.

Additionaly, plugins can be added to choose a widget factory in function
of an external information. One of them uses a table in PostgresQL to
allow specification of the widget type and configuration.

I took the opportunity to remove a few deprecated method in relation to

commit da78ddeb7cb79eabccb48d9707ea15d9e9b16d50
Author: Nyall Dawson
Date: Thu Aug 25 18:36:28 2016 +1000

[FEATURE] New expression functions for angle/distance interpolation

angle_at_vertex: returns average (bisector) angle to a geometry
at a specified vertex index
distance_to_vertex: returns distance along geometry to a specified
vertex index
line_interpolate_angle: calculates the angle parallel to a geometry
at the specified distance along the geometry

Sponsored by Andreas Neumann

commit 9fa4e776dbf2ba5004583be1bcb0e8eb8c343301
Author: Nyall Dawson
Date: Thu Aug 25 18:16:40 2016 +1000

[FEATURE][processing] Extract nodes algorithm now saves node
index, distance along line and angle at node

Also correctly handles null geometries

commit 8db9284cb304618c91c22c380711a0d4dd02f707
Author: Nyall Dawson
Date: Thu Aug 25 08:24:52 2016 +1000

[FEATURE][processing] Optimised points along geometry algorithm

Supports also polygon geometries, handles null geometries,
and records the original line angle along with the distance
for each point.

commit b225a82b3e425a93ab114c8c828d1ea9903b4682
Author: Nyall Dawson
Date: Wed Aug 24 15:00:07 2016 +1000

[FEATURE] Make color brewer and limited random ramp editors show
inline in style panel

commit 2a326ef8adb0769a012cae999a668501042ace38
Author: nirvn
Date: Mon Aug 22 13:57:03 2016 +0700

[FEATURE] support aggregation of geometry
This feature adds a 'collect' aggregation method resulting in a
single multipart geometry from a list of geometries. This is exposed
in the expression engine via the existing aggregate() function,
as well as a new collect() function.

commit 5735be131fcde2ad841824a44843b6a34571023d
Author: Nyall Dawson
Date: Tue Aug 23 20:20:03 2016 +1000

[FEATURE] Make map unit scaling dialog show inline in style dock

commit 26dd13063e801bf462d36f30c1129076ba2d2e8e
Author: Martin Dobias
Date: Sun Aug 21 13:24:07 2016 +0200

[FEATURE] Drag'n'drop layers from layer tree view to browser dock

Makes it easy to e.g. store your temporary layers in PostGIS

commit e110ba7d54b0ac7d3f63e8ed7eaebb2845f9f38c
Author: Nyall Dawson
Date: Sun Aug 21 20:59:57 2016 +1000

[FEATURE] Add linear referencing functions to expression engine

Adds new functions
- line_interpolate_point: interpolates a point by a given distance
along a linestring geometry
- line_locate_point: returns the distance along a linestring to
the closest position on the linestring to a given point

commit 24cc0e2febe76de1a11bb3db7edc24d3cbcac38f
Author: Marco Hugentobler
Date: Fri Aug 19 15:03:02 2016 +0200

[FEATURE]: possibility to segmentize feature info geometry in server

commit 1bd26f75a5cf5772ad6421d9eec0abd3d2c649e5
Author: Matthias Kuhn
Date: Fri Aug 19 13:23:19 2016 +0200

[feature] Allow controlling labels for individual edit widgets

In the drag and drop designer, a double click on an item will allow
controlling if the label should be shown for each item individually.

Fix #15450

commit 989d9864c5457e96f861b66695ee2d6124899ae8
Author: Nyall Dawson
Date: Sun Aug 14 12:32:23 2016 +1000

[FEATURE][processing] New algorithm for single sided buffers

commit 298d04712594ebe0255266910771a3c735987fb4
Author: Nyall Dawson
Date: Sun Aug 14 12:20:41 2016 +1000

[FEATURE] Expression functions for offset_curve and single_sided_buffer

Especially useful with geometry generators!

commit 5ee97adc1696bc1d274b0926f3f6ece1adc76033
Author: Patrick Valsecchi
Date: Tue Jul 19 15:41:06 2016 +0200

Add heuristic to not simplify geometries for nothing

Tested with a release binary and Swiss OSM roads in PostGIS at several zoom
levels (the higher, the less features), values in ms (average over at
least 100 queries):

Level | Before | After | % improvement
7     |  37    |  36   | 2.7
6     |  41    |  38   | 7.32
5     |  48    |  46   | 4.17
4     |  70    |  64   | 8.57
3     | 114    | 109   | 4.39

Not much improvement (I'm quite dispointed, here), but not much change in
the code.

commit 0f268bf27a3928d6a9a19403c8e8dcd5862b0ef5
Author: Nyall Dawson
Date: Sun Aug 14 14:36:10 2016 +1000

[FEATURE][processing] New algorithm for translating (moving) points

Allows geometries to be shifted by a x/y displacement

commit 001ae44b67bb2bc542e11d69ab52706e65ae15c5
Author: Nyall Dawson
Date: Sun Aug 14 13:32:38 2016 +1000

[processing] If supported, use memory layers instead of shapefiles
when writing to a temporary result

Avoids truncation of field names and other format specific

commit e9423dc4ddcb7935b1554a8b12c8cb7a29b0a342
Author: Nyall Dawson
Date: Fri Aug 12 07:39:18 2016 +1000

[processing] Rework centroid algorithm to handle non-polygon layers

The existing polygoncentroids algorithm has been deprecated
(and hidden from the toolbox), and a new, generic centroids
algorithm added which works with lines and multipoints

commit 5025c828e557871095839469a45131d8e851bf15
Author: Nyall Dawson
Date: Thu Aug 11 18:35:19 2016 +1000

[processing] Expose buffer settings (cap/join style/mitre limit)

Also make fixed distance buffer correctly handle null geometries
(copy the row as a geometryless row)

commit af1fee525a0a5acdcd3919a87118dcdcf52f80f1
Author: Denis Rouzaud
Date: Wed Aug 10 11:49:16 2016 +0200

Move feature now benefits from Advanced Digitizing

QgsMapToolMoveFeature now inherits QgsMapToolAdvancedDigitizing
this allows to specify distance, angles, complex and multiple moves at once
it is now a click and click operation (similarly to the rotate feature map tool): so it can be cancelled once enabled with the right click

commit 82f4a82c66865e3d0b4af6c9410821c740eb3232
Author: Nyall Dawson
Date: Thu Aug 11 08:38:43 2016 +1000

[FEATURE][processing] New algorithm for offsetting lines

commit 142de7cb08601c3262974cc74689372d4652198c
Author: Nyall Dawson
Date: Wed Aug 10 16:57:38 2016 +1000

[FEATURE][processing] Point on surface algorithm

commit ab022451a58196f2c96f6a0482e2155b5171bad5
Author: Nyall Dawson
Date: Wed Aug 10 16:32:31 2016 +1000

[FEATURE][processing] New algorithm for geometry boundary

commit bd8db5d156071b308f9e091bc444857424879f06
Author: Nyall Dawson
Date: Wed Aug 10 15:41:44 2016 +1000

[FEATURE][processing] New algorithm for calculating feature bounding boxes

commit b4fe9002d8a4c48bd629468d023863fb84ca2060
Author: Martin Dobias
Date: Tue Aug 9 08:49:42 2016 +0200

[FEATURE] API to allow drag'n'drop of custom browser items

QgsDataItem implementations may provide hasDragEnabled(), mimeUri()
and QgsCustomDropHandler implementation to deal with drop of custom items.

commit 592c33f41ee51d5782dd6d032317ece231651db1
Author: Alexander Bruy
Date: Thu Jun 23 12:07:47 2016 +0300

[FEATURE][processing] add search to Get Scripts and Models dialog (fix #12067)

commit bb54b4f41a726737d5d28a71632ed29a9a8045df
Author: Nyall Dawson
Date: Fri Jul 29 18:46:23 2016 +1000

[FEATURE] Make processing dissolve algorithm accept multiple fields

This allows you to dissolve based on more than one field value

commit 30fcaed634aa43d01528a031fd8f2d255f97f837
Author: Nyall Dawson
Date: Fri Jul 29 05:55:57 2016 +1000

[FEATURE][processing] New algorithm for merging connected lines

This algorithm joins all connected parts of MultiLineString
geometries into single LineString geometries.

If any parts of the input MultiLineString geometries are not
connected, the resultant geometry will be a MultiLineString
containing any lines which could be merged and any non-connected
line parts.

commit 10c92394e7ccacb7dacef163f04ae7bdc0d910b1
Author: Nyall Dawson
Date: Thu Jul 28 20:33:27 2016 +1000

[FEATURE] API + expression function for merging linestrings

Adds a new method to QgsGeometry for merging linestrings.
By passing a multilinestring, any connected lines will
be joined into single linestrings. Behind the scenes this
uses GEOS' line merge.

A corresponding expression function "line_merge" has also
been added.

commit 1a4ceb1680e9adb4dd78c1bc11887c5a05ba0d19
Author: Nyall Dawson
Date: Thu Jul 28 08:15:01 2016 +1000

[FEATURE] Expression function for calculating geometry boundary

The new 'boundary(...)' function returns a geometry's topological
boundary, ie for polygons this is a multilinestring representing
the polygons rings

commit 5f33991e7bcd95069ba88e01cafa7078bbad5f24
Author: Nyall Dawson
Date: Wed Jul 27 13:36:49 2016 +1000

[FEATURE] Label polygons using curved labels along perimeter

This adds a new mode for labeling polygons, where the perimeter
of the polygon is labeled using curved labeling.

commit 12a21474276322084e9c67ad46dd68aa486c34f1
Author: Nyall Dawson
Date: Fri Jul 22 07:19:08 2016 +1000

[FEATURE] Add an option to show user color schemes menus

This adds the ability for users to set whether a user created
color scheme should show up in the color button drop-down menus.

It's accessed through the color picker dialog, on the lists tab.
Just add a new color scheme, then from the scheme menu tick the
new "show in buttons" option.

Handy if you have sets of common palettes and want them to be
instantly available through the color menu.

commit 48da1de1a43ec2f590b11e24a82d3308f8a658ec
Author: Marco Hugentobler
Date: Thu Jul 14 14:51:15 2016 +0200

[FEATURE]: pan to current feature in attribute table

blog comments powered by Disqus