Nyall Dawson
05e8928e30
Use native algorithms for processing tests where possible
...
And fix a few issues in the dissolve algorithm
2017-07-07 13:49:43 +10:00
Nyall Dawson
ac51ae106c
Add unit tests
2017-07-07 11:36:41 +10:00
Nyall Dawson
3ea70696f0
Add descriptions for model algorithm variables
2017-07-07 11:35:31 +10:00
Nyall Dawson
35e16b2f31
Add method for specifying variable description when adding to contexts
...
And use this description in expression builders when it's set.
2017-07-07 11:35:31 +10:00
Nyall Dawson
534844f999
Add function to return variables available for child algorithms during
...
model execution
And use this function to determine in advance dependencies between
child algorithm parameters with expression based values and
which other child algorithms they depend upon.
2017-07-07 11:35:31 +10:00
Nyall Dawson
3f9cfe0ce7
Fix setting number parameters to expressions
2017-07-07 11:35:31 +10:00
Nyall Dawson
82ef7d2a89
Create specific expression context scope for child algorithms
...
Contains variables for model parameters, algorithm results for
other child algorithms which are not dependent on the
algorithm.
Allows removal of final pieces of ModelerAlgorithm code
2017-07-07 11:35:31 +10:00
Nyall Dawson
d8086e549d
Use c++ method for available sources
2017-07-07 11:35:31 +10:00
Nyall Dawson
17199c8ffd
Reimplement getAvailableValuesOfType in QgsProcessingModelAlgorithm
2017-07-07 11:35:31 +10:00
Nyall Dawson
26cd6017b8
Use an expression context when evaluating child parameters with expression sources
2017-07-07 11:35:31 +10:00
Nyall Dawson
3243a1a34c
Allow model child parameters to take values from an expression
...
The expression is evaluated just before the child algorithm is
executed, so can utilise results already calculated by other
children in the model through the use of expression context
functions
2017-07-07 11:34:17 +10:00
Nyall Dawson
52f4c5e975
Merge pull request #4799 from nyalldawson/m2
...
Run processing algorithms using task manager
2017-07-07 11:31:22 +10:00
Nyall Dawson
2c91df4c12
Expand on docs
2017-07-07 10:14:51 +10:00
Nyall Dawson
da02c9a7ba
Fix deadlock when running algs in task manager and python exception occurs
2017-07-07 09:28:20 +10:00
Nyall Dawson
ac9a39f09a
Fix processing.runAndLoadResults
2017-07-07 09:28:20 +10:00
Nyall Dawson
55ce31b371
When calling procesing.run(), map layer results are automatically
...
converted to QgsMapLayer objects with the ownership transferred
to the Python caller
This should make it super-easy for PyQGIS scripts to run processing
algorithms and immediately utilise the results, even if they
are memory layers. They call processing.run(), and get a dict of
results back which includes those layers ready for adding to the
current project or doing some other processing or operations
with, and if they don't transfer to ownership off then these
layers will be correctly garbaged collected by Python.
2017-07-07 09:28:20 +10:00
Nyall Dawson
a2af3a9345
Make concave hull alg more efficient
...
- remove temporary layers from context, delete them as soon as they
are finished with
- directly remove features via data provider, instead of selecting
and using edit buffer
- use native geometry methods for splitting to single features
and removing rings
2017-07-07 09:28:20 +10:00
Nyall Dawson
70cc19687d
Add a method to take result layers (and ownership) from processing context
2017-07-07 09:28:20 +10:00
Nyall Dawson
db816ec3fe
Port a multi-step algorithm to new API (concave hull)
2017-07-07 09:28:20 +10:00
Nyall Dawson
a15d283cd6
Port delaunay triangulation alg to new API
2017-07-07 09:28:19 +10:00
Nyall Dawson
75cd91b1a0
Port voronoi polygons algorithm to new API
2017-07-07 09:28:19 +10:00
Nyall Dawson
90f10ae853
Port snap geometries algorithm to new API
2017-07-07 09:28:19 +10:00
Nyall Dawson
05364aa5f0
When running algorithm tests, if two parameters share the same
...
layer source, ensure that the actual parameter values point
to the same layer
2017-07-07 09:28:19 +10:00
Nyall Dawson
ab06973d6a
Don't try to load default styles in processing test layers
2017-07-07 09:28:19 +10:00
Nyall Dawson
3cbcd75d2f
Add equality operator for QgsProcessingFeatureSourceDefinition
2017-07-07 09:28:19 +10:00
Nyall Dawson
3601138d2a
Use a feature source instead of vector layer for QgsGeometrySnapper
2017-07-07 09:28:19 +10:00
Nyall Dawson
8a84e134cc
Algorithms don't have to be split to prepare/process/postProcess
...
Since it's safe to evaluate parameters in background threads
now, it's usually going to be ok to evaluate everything in
the processAlgorithm step.
This keeps the algorithm code as simple as possible, and will
make porting faster.
Note that the prepare/postProcess virtual methods still exist
and can be used when an algorithm MUST do setup/cleanup work
in the main thread.
2017-07-07 09:28:19 +10:00
Nyall Dawson
3108d68f87
Indentation
2017-07-07 09:28:19 +10:00
Nyall Dawson
4fa2bc025c
Keep correct order for zonal stats options, set some stats by default
2017-07-07 09:28:19 +10:00
Nyall Dawson
4eca20f28d
Fix zonal stats algorithm execution
2017-07-07 09:28:19 +10:00
Nyall Dawson
274d684f64
Fix procesing test layer loading
2017-07-07 09:28:19 +10:00
Nyall Dawson
b917a82662
Better debuging from processing alg tests
2017-07-07 09:28:19 +10:00
Nyall Dawson
6654aec6a5
Fix execution of script algorithms was not releasing layers/sinks
2017-07-07 09:28:19 +10:00
Nyall Dawson
e9e335a7bd
Don't set thinking cursors when running processing algorithms
...
Since now they're run in a background thread, it's not appropriate
anymore
2017-07-07 09:28:19 +10:00
Nyall Dawson
e1184cd69a
Make QgsProcessingAlgRunnerTask work correctly
...
It now safely can execute algorithms in background threads
without issues
2017-07-07 09:28:19 +10:00
Nyall Dawson
e5b156b86a
Make processing algorithms safe to run in threads
2017-07-07 09:28:19 +10:00
Nyall Dawson
5350483c90
Add method to take results from another processing context and
...
add to the current context
With appropriate note and tests to ensure that both the current
context and that which the results being taken from share the
same thread affinity
2017-07-07 09:28:19 +10:00
Nyall Dawson
d20c68d3f1
Add method to copy thread safe settings between processing contexts
2017-07-07 09:28:19 +10:00
Nyall Dawson
6c6f646291
Add methods to retrieve current thread affinity and push contexts
...
to another thread
With suitable assert in place to ensure that pushes are only
made when current thread == existing thread affinity
2017-07-07 09:27:35 +10:00
Nyall Dawson
1dce459610
Add method to transfer all layers from one map store to another
...
With a note and assert that both stores must have the same
thread affinity
2017-07-07 09:27:35 +10:00
Nyall Dawson
1b2086e8a6
Make algorithm dialog use background tasks to execute algorithms
2017-07-07 09:27:35 +10:00
Nyall Dawson
8cfcf57541
Fix tests
2017-07-07 09:27:35 +10:00
Nyall Dawson
e0c7daa2d8
Rename QgsProcessingAlgorithm::clone to ::create
...
Since it better describes what the function does. It returns a new
pristine copy of the algorithm, not a clone of its current state
2017-07-07 09:27:35 +10:00
Nyall Dawson
cd7776ca1c
Upgrade ported python algs to be thread ready
2017-07-07 09:27:35 +10:00
Harrissou Sant-anna
9e6b8ed59d
Use PostGIS and PostgreSQL spelling when appropriate
2017-07-07 01:26:38 +02:00
Harrissou Sant-anna
6fab688298
Use SpatiaLite right spelling when needed
2017-07-07 01:26:38 +02:00
Harrissou Sant-anna
0c967927ef
Replace "drop down" and some dropdown by drop-down
2017-07-07 01:26:38 +02:00
Harrissou Sant-anna
15be88918f
Replace "double click" and "doubleclick" by double-click
2017-07-07 01:26:38 +02:00
Nyall Dawson
c2621b1275
Split algorithm execution into separate prepare/process/postProcess steps
...
The prepare and postProcess steps are designed to be run in main
thread only, while the process step can safely be run in a background
thread.
2017-07-07 09:26:17 +10:00
Nyall Dawson
5c4f64270d
Add clone method to ScriptAlgorithm
2017-07-07 09:26:17 +10:00