[QGIS-Developer] Processing 3.0: Possible change to the Convex Hull algorithm

Nyall Dawson nyall.dawson at gmail.com
Mon Jun 26 16:38:39 PDT 2017


Hi all,

As you may be aware, I've been working on rebuilding the backend of
Processing in c++ and refining how it operates.

As part of this I'd like to clear up the list of existing algorithms
and also refine how they behave. This list of "QGIS" algorithms has
grown organically during the 2.x cycle, and there's now numerous
oddities in the selection of available algorithms and their options.

This discussion relates to the "Convex Hull" algorithm. I'd like to:

1. Drop the "Field (optional, only used if creating convex hulls by
classes)" option and the accompanying method choice used to set the
convex hull to 'create convex hulls based on field'.

My motivations here are:

1. Removing duplicate functionality - I believe the Convex hull should
only operate on single features, and if users need Convex Hulls
grouped by class they should first use one of the existing algorithms
for collecting classes (such as dissolve or singleparts to multiparts)
to collect the classes together.

2. Simplicity and efficiency of algorithm code - removing this option
allows us to remove a bunch of inefficient code, which is better
implemented in dissolve/singleparts to multiparts

3. Complying with the goal of keeping algorithms modular and focused
on one particular task, and performing that task well

4. unlocking future performance gains. Ideally we want algorithms to
operate feature-by-feature whenever this is possible. This will allow
us (in some future piece of work) to implement feature pipes where
features pass through models having operations performed to each
feature in a chain (instead of the current approach of multiple
temporary output layers). This isn't planned work (yet), but making
this algorithm operate feature-by-feature now, while we have the
luxury of API and model break, will allow it to use these
optimisations in a future 3.x release. The "create convex hulls based
on field" support prevents this algorithm from operating
feature-by-feature.

Thoughts?

Nyall


More information about the QGIS-Developer mailing list