12 Commits

Author SHA1 Message Date
Nyall Dawson
5d2495e65a [api] Add helper api to directly retrieve a point/linestring/polygon from
a QgsMultiPoint/QgsMultiLineString/QgsMultiPolygon

Avoids the need to have to manually do an annoying cast when we
already know the geometry type
2020-08-18 08:33:53 +10:00
Nyall Dawson
ce5faa1524 [processing] Force regeneration of primary key for more algorithms
Fixes #21445
2019-03-05 07:06:30 +10:00
Nyall Dawson
249dca7830 [processing] Consist helpful error messages when sinks cannot be created
And throw exceptions always when sinks are not created to avoid
generic errors
2018-04-28 05:50:47 +10:00
Nyall Dawson
5339d62715 [processing] More helpful errors when sources cannot be loaded
Include descriptive text with the specified parameter value
in error, and always check that sources were loaded to avoid
raw Python exceptions when they are not
2018-04-28 05:50:47 +10:00
Nyall Dawson
0dfb3c2d8c [processing] Use distance parameter for more algorithms 2018-04-20 18:27:00 +10:00
Nyall Dawson
0156656882 [processing] Throw exceptions when sources/sinks cannot be loaded
Instead of silently indicating algorithm success
2018-04-09 16:52:41 +10:00
Nyall Dawson
5986444ccc [processing] Support dynamic properties for all native c++ algorithms 2018-02-26 13:40:10 +10:00
Nyall Dawson
a05d941e4e [processing] Default to allowing background execution of algorithms
Since the underlying issues with the Python bindings are now fixed,
in most cases we can safely default to allowing an algorithm to
run in a background thread!!

So now we make this the default, and require individual algorithms
which are NOT thread safe to declare this. This includes algorithms
which directly manipulate the current project or layers (such as
setting layer styles), alter the selections in layers, or which
rely on 3rd party libraries (for now, SAGA and GRASS algorithms
are marked as not thread safe... TODO - someone more familiar with
these libraries can investigate and remove the flag if appropriate).

Also models are marked as non-thread safe. TODO: only flag an
individual model as thread-unsafe if any of its child algorithms
report this flag.
2018-01-29 17:37:05 +11:00
Nyall Dawson
c14e6ca772 Most c++ algorithms can run safely in background threads 2018-01-10 05:33:02 +10:00
Alexander Bruy
1d482cf953 [processing] add groupId() method to algorithms to get unique ID of the
algorithm group.

Adapt native algorithms
2017-12-14 14:12:00 +02:00
Nyall Dawson
70361063d8 Rename QgsGeometry::geometry as QgsGeometry::get()
Because feature.geometry().geometry() is confusing, and impossible
to search for in python code (e.g. is input.geometry() a QgsGeometry
or a QgsAbstractGeometry?)

But more importantantly: also add a const version
QgsGeometry::constGet(). The non-const
version is slow, since it now forces a detach to avoid corrupting
geometries (since QgsGeometry is shared, it's not safe to directly
access its primitive QgsAbstractGeometry and start messing with
it without first detaching). This is a big risk in the 2.x API
which could potentially corrupt feature geometries with unexpected
outcomes.

Update all uses to constGet where possible.
2017-10-26 07:06:34 +10:00
lbartoletti
977ce426db [FEATURE][processing]Transect processing
Adds a C++ version of the "ststion lines" plugin as a
new processing algorithm for creating transect lines.
2017-10-24 05:42:03 +11:00