178 Commits

Author SHA1 Message Date
Nyall Dawson
58e2ddb7e5 Drop OTB Processing provider
As discussed in https://lists.osgeo.org/pipermail/qgis-developer/2023-November/066221.html

This plugin needs to be ported to a 3rd party plugin by a motivated maintainer.
2023-11-27 10:09:16 +10:00
Nyall Dawson
26ce45d6d5 Remove unused argument 2023-05-03 18:29:28 +10:00
Etienne Trimaille
3cab3c43a2
Python - Run pyupgrade on the processing plugin 2023-04-24 10:03:57 +02:00
rldhont
41a95bfc35 [Bugfix] Processing plugin: bad check layer from QgsProcessingOutputMultipleLayers
After running algorithm, the processing plugin take the layer from result to provide map layer instead of string.
In the case of QgsProcessingOutputMultipleLayers, the instance check is not done on the layer but on an array.
2023-04-24 10:25:31 +10:00
Nyall Dawson
894a938fff [processing] Drop unmainted saga provider from QGIS install
This provider has not been maintained and does not work with
newer SAGA versions. Users are encouraged to use the 3rd-party
"Processing Saga NextGen" plugin instead.
2022-11-10 17:25:06 +10:00
Nyall Dawson
dd368a4289 When processing is initialized in external scripts, ensure the GRASS,
SAGA and OTB providers are included by default

Fixes #45935
2022-02-01 18:14:48 +10:00
Nyall Dawson
8ef270b2cc [processing] Remove unused 'preconfigured' provider 2022-01-17 16:12:40 +10:00
Alexander Bruy
88d7a62321 [processing] add point cloud output and point cloud destination parameter
to Processing. These are useful for 3rd party tools as outputs can be
automatically loaded on algorithm completion.

It is an API change not visible for users.
2021-11-26 15:37:27 +10:00
Alexander Bruy
cfc093d0e9 separate otb provider into a plugin 2021-06-21 07:17:36 +03:00
Alexander Bruy
cbe1a472ca add missed plugin files
fix CMakeLists.txt
2021-06-21 07:17:36 +03:00
Alexander Bruy
0c3f57fb86 fix CMakeLists and imports 2021-06-21 07:17:35 +03:00
Nyall Dawson
b4025442e8 [processing] Automatically load the native and 3d providers
when a script calls Processing.initialize() if they are not
already loaded

This means the following ugly code can be avoided:

    Processing.initialize()
    QgsApplication.processingRegistry().addProvider(QgsNativeAlgorithms(QgsApplication.processingRegistry()))
    QgsApplication.processingRegistry().addProvider(Qgs3DAlgorithms(QgsApplication.processingRegistry()))

and instead the call to Processing.initialize() is sufficient to load
ALL providers

Fixes #41310
2021-02-09 20:13:01 +10:00
Nyall Dawson
2207c30a24 When calling processing.run() and an QgsProcessingExpection occurs,
don't raise a generic "something went wrong" exception but instead
ensure that the original exception with the proper error message
is raised for catching in Python instead
2020-10-09 05:17:49 +10:00
Nyall Dawson
c6690c2ee8 Create runtime profiles for various startup/provider initialisation
tasks in processing

Attempting to diagnose occasional very slow QGIS startup times
2020-05-19 04:35:34 +10:00
Nyall Dawson
b6a7a10703 Fix some more python formatting issues, remove more flake exceptions 2020-05-11 11:41:50 +10:00
Bas Couwenberg
2628c480c5 Don't include revision in sources.
Prevent changes to files that weren't changed between releases.
This eases review of the changes between releases significantly.
2019-05-17 16:47:47 +02:00
Rashad Kanavath
3b87f7b17f [FEATURE] [needs-docs] integrate OTB provider to processing plugin 2019-02-23 05:20:17 +10:00
Nyall Dawson
85d740026a [processing] Remove extraneous parameter value check
The subsequent call to checkParameterValues covers the same checks,
but in a more flexible way.

Refs discussion at https://github.com/qgis/QGIS-Documentation/pull/2797
2018-08-21 05:24:30 +10:00
Nyall Dawson
63fd4bab2a [processing][FEATURE] Store models inside QGIS project files
Allows processing models to be stored inside QGIS project files,
so that opening the project makes that model available.

Some models are so intrinsically linked to the logic inside
a particular project that they have no meaning (or are totally
broken) outside of that project (e.g. models which rely
on the presence of particular map layers, relations, etc)

This change allows these models to be stored inside that project,
avoid cluttering up the "global" model provider with models
which make no sense, and making it easier to distribute a single
project with these models included.

Models are stored inside projects by clicking the new "embed
in project" button in the modeler dialog toolbar. Models can be
removed from a project from the model's right click menu in the
toolbox.
2018-08-13 15:47:01 +10:00
Nyall Dawson
977e14b058 [processing] Fix potential crash when calling processing.run with
custom context, but no feedback object
2018-06-28 14:12:37 +10:00
Matthias Kuhn
5910ba9631 No print() usage in processing core 2018-04-25 11:26:46 +02:00
matteo
9107da368e [processing] fix missing import 2018-04-20 18:26:33 +10:00
Nyall Dawson
d5573a5a7b [processing] Use silent feedback by default in processing.run
Relying on the iface messagebar feedback as a fallback is not
safe for standalone scripts. If callers want to use a message
bar feedback they should specify this feedback object specifically
when calling processing.run
2018-04-11 09:47:34 +10:00
Nyall Dawson
ee185cce4d [processing] Fix python runAlgorithm when algorithm has missing optional outputs 2018-04-10 09:57:58 +10:00
Matthias Kuhn
a337d2050b Make use of new processing parameter infrastructure 2018-03-07 09:00:33 +11:00
Matthias Kuhn
b67813bdc9 API doc update 2018-03-01 10:42:51 -05:00
Matthias Kuhn
0c730596fa Hide unsupported parameters in modeller 2018-03-01 10:42:51 -05:00
Matthias Kuhn
eba96fb9cc Add a processing parameter registry
to manage parameter metadata in a single place.
2018-03-01 08:12:41 -05:00
arnaud.morvan@camptocamp.com
3718d4e65b [processing] Properly load basic providers
Processing module should only register it's own basic providers.
Note that when reloading a plugin, subclasses of ProcessingProvider remains and new ones are added,
so in such cases QgsProcessingProvider.__subclasses__() return same provider class many times.
2018-02-21 21:42:43 +00:00
Nyall Dawson
4bcc9df5b4 [processing] Add explicit output type for multiple layers
This was a missing capability in the processing API - while algorithms
could declare multiple layer input parameters, there was no corresponding
multi-layer output. This meant that algorithms (such as Package Layers,
Vector Split) which create a set of layers which cannot be determined
in advance had no way to pass these generated layers on for further model
processing steps.

It's also useful for algorithms which operate on a specified folder,
processing all layers found there, and allowing these generated
outputs to be utilised in other model steps (e.g. packaging
all of them, merging them, etc)
2018-02-11 10:57:44 +10:00
Alexander Bruy
4f2a4644db [processing] remove obsolete code and disable exporting models as script
until we update it so support new scripts format
2018-02-05 08:50:44 +02:00
Alexander Bruy
422d804db1 [processing] update script provider to use QgsProcessingAlgorithm
subclasses instead of custom script code
2018-02-05 08:49:59 +02:00
Nyall Dawson
216821c0b1 [processing] Warn on duplicate output and provider registration
And fix associated memory leaks
2018-02-01 13:02:59 +11:00
Alexander Bruy
e67aaf9a26 [processing] rename QGISAlgorithmProvider to QgisAlgorithmProvider to be
consistent with our guidelines
2018-01-15 11:59:01 +02:00
Alexander Bruy
7ecb0536fd [processing] correctly retrieve icon for script collection (fix #17780) 2018-01-15 11:59:01 +02:00
Alexander Bruy
3d4a59bb8b [processing] cleanup files from unused code and remove some files 2017-11-28 12:27:45 +02:00
Nyall Dawson
4b9986eb8c [processing] Add a generic map layer output type
For occasions when an algorithm creates a map layer, but the type
is not known in advance (i.e. could be raster OR vector)
2017-11-27 06:38:21 +11:00
Nyall Dawson
571a5ca5f8 Start bringing back saga algs - split RGB bands 2017-11-09 18:53:02 +02:00
Médéric Ribreux
733218caca (WIP) enable Grass7 provider and start to work on QgsProcessing new framework 2017-11-04 15:31:21 +01:00
Alexander Bruy
c53ff66caf fix permissions 2017-10-11 17:06:11 +03:00
Nyall Dawson
5c888c5830 Resurrect gdal warp algorithm 2017-08-14 04:56:24 +10:00
Mario Baranzini
78af413dcc Remove python future compatibility layer 2017-08-07 10:27:15 +02:00
Alexander Bruy
56208540f9 [processing] remove GeoAlgorithmExecutionException 2017-07-13 09:02:24 +03:00
Nyall Dawson
1e13d733c2 Move declaration of algorithm parameters/outputs to a new virtual
initAlgorithm() method

This allows 2 benefits:
- algorithms can be subclassed and have subclasses add additional
parameters/outputs to the algorithm. With the previous approach
of declaring parameters/outputs in the constructor, it's not
possible to call virtual methods to add additional parameters/
outputs (since you can't call virtual methods from a constructor).

- initAlgorithm takes a variant map argument, allowing the algorithm
to dynamically adjust its declared parameters and outputs according
to this configuration map. This potentially allows model algorithms which
can be configured to have variable numbers of parameters and
outputs at run time. E.g. a "router" algorithm which directs
features to one of any number of output sinks depending on some
user configured criteria.
2017-07-10 16:31:14 +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
f98bcb2b81 Update processing.run() for new API 2017-06-27 13:18:22 +10:00
Nyall Dawson
4e93f8d038 Don't set override cursor in processing.run
Callers may not want this, so leave it up to them to set
an override caller if desired
2017-06-27 11:24:59 +10:00
Nyall Dawson
3286ebb470 Explicit parameters, feedback, context arguments for processing.run 2017-06-27 11:24:33 +10:00
Nyall Dawson
2a1cdead51 processing.run requires a dictionary for parameters 2017-06-27 11:19:29 +10:00
Nyall Dawson
449d8f8c0b Restore script algorithm provider 2017-06-27 10:50:07 +10:00