QGIS API Documentation
3.6.0-Noosa (5873452)
|
An abstract QgsProcessingAlgorithm base class for processing algorithms which operate "feature-by-feature". More...
#include <qgsprocessingalgorithm.h>
Public Member Functions | |
QgsProcessingFeatureBasedAlgorithm ()=default | |
Constructor for QgsProcessingFeatureBasedAlgorithm. More... | |
QgsProcessingAlgorithm::Flags | flags () const override |
Returns the flags indicating how and when the algorithm operates and should be exposed to users. More... | |
virtual QgsFeatureList | processFeature (const QgsFeature &feature, QgsProcessingContext &context, QgsProcessingFeedback *feedback) SIP_THROW(QgsProcessingException)=0 |
Processes an individual input feature from the source. More... | |
Public Member Functions inherited from QgsProcessingAlgorithm | |
QgsProcessingAlgorithm ()=default | |
Constructor for QgsProcessingAlgorithm. More... | |
QgsProcessingAlgorithm (const QgsProcessingAlgorithm &other)=delete | |
Algorithms cannot be copied - create() should be used instead. More... | |
virtual | ~QgsProcessingAlgorithm () |
virtual QString | asPythonCommand (const QVariantMap ¶meters, QgsProcessingContext &context) const |
Returns a Python command string which can be executed to run the algorithm using the specified parameters. More... | |
virtual bool | canExecute (QString *errorMessage=nullptr) const |
Returns true if the algorithm can execute. More... | |
virtual bool | checkParameterValues (const QVariantMap ¶meters, QgsProcessingContext &context, QString *message=nullptr) const |
Checks the supplied parameter values to verify that they satisfy the requirements of this algorithm in the supplied context. More... | |
int | countVisibleParameters () const |
Returns the number of visible (non-hidden) parameters defined by this algorithm. More... | |
QgsProcessingAlgorithm * | create (const QVariantMap &configuration=QVariantMap()) const SIP_THROW(QgsProcessingException) |
Creates a copy of the algorithm, ready for execution. More... | |
virtual QWidget * | createCustomParametersWidget (QWidget *parent=nullptr) const |
If an algorithm subclass implements a custom parameters widget, a copy of this widget should be constructed and returned by this method. More... | |
virtual QgsExpressionContext | createExpressionContext (const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeatureSource *source=nullptr) const |
Creates an expression context relating to the algorithm. More... | |
QgsProcessingParameterDefinitions | destinationParameterDefinitions () const |
Returns a list of destination parameters definitions utilized by the algorithm. More... | |
virtual QString | displayName () const =0 |
Returns the translated algorithm name, which should be used for any user-visible display of the algorithm name. More... | |
virtual QString | group () const |
Returns the name of the group this algorithm belongs to. More... | |
virtual QString | groupId () const |
Returns the unique ID of the group this algorithm belongs to. More... | |
bool | hasHtmlOutputs () const |
Returns true if this algorithm generates HTML outputs. More... | |
virtual Q_DECL_DEPRECATED QString | helpString () const |
Returns a localised help string for the algorithm. More... | |
virtual QString | helpUrl () const |
Returns a url pointing to the algorithm's help page. More... | |
virtual QIcon | icon () const |
Returns an icon for the algorithm. More... | |
QString | id () const |
Returns the unique ID for the algorithm, which is a combination of the algorithm provider's ID and the algorithms unique name (e.g. More... | |
virtual QString | name () const =0 |
Returns the algorithm name, used for identifying the algorithm. More... | |
QgsProcessingAlgorithm & | operator= (const QgsProcessingAlgorithm &other)=delete |
Algorithms cannot be copied- create() should be used instead. More... | |
const QgsProcessingOutputDefinition * | outputDefinition (const QString &name) const |
Returns a matching output by name. More... | |
QgsProcessingOutputDefinitions | outputDefinitions () const |
Returns an ordered list of output definitions utilized by the algorithm. More... | |
const QgsProcessingParameterDefinition * | parameterDefinition (const QString &name) const |
Returns a matching parameter by name. More... | |
QgsProcessingParameterDefinitions | parameterDefinitions () const |
Returns an ordered list of parameter definitions utilized by the algorithm. More... | |
QVariantMap | postProcess (QgsProcessingContext &context, QgsProcessingFeedback *feedback) |
Should be called in the main thread following the completion of runPrepared(). More... | |
bool | prepare (const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback *feedback) |
Prepares the algorithm for execution. More... | |
virtual QVariantMap | preprocessParameters (const QVariantMap ¶meters) |
Pre-processes a set of parameters, allowing the algorithm to clean their values. More... | |
QgsProcessingProvider * | provider () const |
Returns the provider to which this algorithm belongs. More... | |
QVariantMap | run (const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback *feedback, bool *ok=nullptr, const QVariantMap &configuration=QVariantMap()) const |
Executes the algorithm using the specified parameters. More... | |
QVariantMap | runPrepared (const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback *feedback) SIP_THROW(QgsProcessingException) |
Runs the algorithm, which has been prepared by an earlier call to prepare(). More... | |
void | setProvider (QgsProcessingProvider *provider) |
Associates this algorithm with its provider. More... | |
virtual QString | shortDescription () const |
Returns an optional translated short description of the algorithm. More... | |
virtual QString | shortHelpString () const |
Returns a localised short helper string for the algorithm. More... | |
virtual QString | svgIconPath () const |
Returns a path to an SVG version of the algorithm's icon. More... | |
virtual QStringList | tags () const |
Returns a list of tags which relate to the algorithm, and are used to assist users in searching for suitable algorithms. More... | |
virtual bool | validateInputCrs (const QVariantMap ¶meters, QgsProcessingContext &context) const |
Checks whether the coordinate reference systems for the specified set of parameters are valid for the algorithm. More... | |
Protected Member Functions | |
void | initAlgorithm (const QVariantMap &configuration=QVariantMap()) override |
Initializes the algorithm using the specified configuration. More... | |
virtual void | initParameters (const QVariantMap &configuration=QVariantMap()) |
Initializes any extra parameters added by the algorithm subclass. More... | |
virtual QList< int > | inputLayerTypes () const |
Returns the valid input layer types for the source layer for this algorithm. More... | |
virtual QgsCoordinateReferenceSystem | outputCrs (const QgsCoordinateReferenceSystem &inputCrs) const |
Maps the input source coordinate reference system (inputCrs) to a corresponding output CRS generated by the algorithm. More... | |
virtual QgsFields | outputFields (const QgsFields &inputFields) const |
Maps the input source fields (inputFields) to corresponding output fields generated by the algorithm. More... | |
virtual QgsProcessing::SourceType | outputLayerType () const |
Returns the layer type for layers generated by this algorithm, if this is possible to determine in advance. More... | |
virtual QString | outputName () const =0 |
Returns the translated, user visible name for any layers created by this algorithm. More... | |
virtual QgsWkbTypes::Type | outputWkbType (QgsWkbTypes::Type inputWkbType) const |
Maps the input WKB geometry type (inputWkbType) to the corresponding output WKB type generated by the algorithm. More... | |
void | prepareSource (const QVariantMap ¶meters, QgsProcessingContext &context) |
Read the source from parameters and context and set it. More... | |
QVariantMap | processAlgorithm (const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback *feedback) override SIP_THROW(QgsProcessingException) |
Runs the algorithm using the specified parameters. More... | |
virtual QgsFeatureRequest | request () const |
Returns the feature request used for fetching features to process from the source layer. More... | |
virtual QgsFeatureSink::SinkFlags | sinkFlags () const |
Returns the feature sink flags to be used for the output. More... | |
QgsCoordinateReferenceSystem | sourceCrs () const |
Returns the source's coordinate reference system. More... | |
virtual QgsProcessingFeatureSource::Flag | sourceFlags () const |
Returns the processing feature source flags to be used in the algorithm. More... | |
bool | supportInPlaceEdit (const QgsMapLayer *layer) const override |
Checks whether this algorithm supports in-place editing on the given layer Default implementation for feature based algorithms run some basic compatibility checks based on the geometry type of the layer. More... | |
Protected Member Functions inherited from QgsProcessingAlgorithm | |
bool | addOutput (QgsProcessingOutputDefinition *outputDefinition) |
Adds an output definition to the algorithm. More... | |
bool | addParameter (QgsProcessingParameterDefinition *parameterDefinition, bool createOutput=true) |
Adds a parameter definition to the algorithm. More... | |
virtual QgsProcessingAlgorithm * | createInstance () const =0 |
Creates a new instance of the algorithm class. More... | |
bool | parameterAsBool (const QVariantMap ¶meters, const QString &name, const QgsProcessingContext &context) const |
Evaluates the parameter with matching name to a static boolean value. More... | |
QString | parameterAsCompatibleSourceLayerPath (const QVariantMap ¶meters, const QString &name, QgsProcessingContext &context, const QStringList &compatibleFormats, const QString &preferredFormat=QString("shp"), QgsProcessingFeedback *feedback=nullptr) |
Evaluates the parameter with matching name to a source vector layer file path of compatible format. More... | |
QgsCoordinateReferenceSystem | parameterAsCrs (const QVariantMap ¶meters, const QString &name, QgsProcessingContext &context) const |
Evaluates the parameter with matching name to a coordinate reference system. More... | |
double | parameterAsDouble (const QVariantMap ¶meters, const QString &name, const QgsProcessingContext &context) const |
Evaluates the parameter with matching name to a static double value. More... | |
int | parameterAsEnum (const QVariantMap ¶meters, const QString &name, const QgsProcessingContext &context) const |
Evaluates the parameter with matching name to a enum value. More... | |
QList< int > | parameterAsEnums (const QVariantMap ¶meters, const QString &name, const QgsProcessingContext &context) const |
Evaluates the parameter with matching name to list of enum values. More... | |
QString | parameterAsExpression (const QVariantMap ¶meters, const QString &name, const QgsProcessingContext &context) const |
Evaluates the parameter with matching name to an expression. More... | |
QgsRectangle | parameterAsExtent (const QVariantMap ¶meters, const QString &name, QgsProcessingContext &context, const QgsCoordinateReferenceSystem &crs=QgsCoordinateReferenceSystem()) const |
Evaluates the parameter with matching name to a rectangular extent. More... | |
QgsCoordinateReferenceSystem | parameterAsExtentCrs (const QVariantMap ¶meters, const QString &name, QgsProcessingContext &context) |
Returns the coordinate reference system associated with an extent parameter value. More... | |
QgsGeometry | parameterAsExtentGeometry (const QVariantMap ¶meters, const QString &name, QgsProcessingContext &context, const QgsCoordinateReferenceSystem &crs=QgsCoordinateReferenceSystem()) |
Evaluates the parameter with matching name to a rectangular extent, and returns a geometry covering this extent. More... | |
QStringList | parameterAsFields (const QVariantMap ¶meters, const QString &name, QgsProcessingContext &context) const |
Evaluates the parameter with matching name to a list of fields. More... | |
QString | parameterAsFile (const QVariantMap ¶meters, const QString &name, QgsProcessingContext &context) const |
Evaluates the parameter with matching name to a file/folder name. More... | |
QString | parameterAsFileOutput (const QVariantMap ¶meters, const QString &name, QgsProcessingContext &context) const |
Evaluates the parameter with matching name to a file based output destination. More... | |
int | parameterAsInt (const QVariantMap ¶meters, const QString &name, const QgsProcessingContext &context) const |
Evaluates the parameter with matching name to a static integer value. More... | |
QList< int > | parameterAsInts (const QVariantMap ¶meters, const QString &name, const QgsProcessingContext &context) const |
Evaluates the parameter with matching name to a list of integer values. More... | |
QgsMapLayer * | parameterAsLayer (const QVariantMap ¶meters, const QString &name, QgsProcessingContext &context) const |
Evaluates the parameter with matching name to a map layer. More... | |
QList< QgsMapLayer * > | parameterAsLayerList (const QVariantMap ¶meters, const QString &name, QgsProcessingContext &context) const |
Evaluates the parameter with matching name to a list of map layers. More... | |
QVariantList | parameterAsMatrix (const QVariantMap ¶meters, const QString &name, QgsProcessingContext &context) const |
Evaluates the parameter with matching name to a matrix/table of values. More... | |
QgsMeshLayer * | parameterAsMeshLayer (const QVariantMap ¶meters, const QString &name, QgsProcessingContext &context) const |
Evaluates the parameter with matching name to a mesh layer. More... | |
QString | parameterAsOutputLayer (const QVariantMap ¶meters, const QString &name, QgsProcessingContext &context) const |
Evaluates the parameter with matching name to a output layer destination. More... | |
QgsPointXY | parameterAsPoint (const QVariantMap ¶meters, const QString &name, QgsProcessingContext &context, const QgsCoordinateReferenceSystem &crs=QgsCoordinateReferenceSystem()) const |
Evaluates the parameter with matching name to a point. More... | |
QgsCoordinateReferenceSystem | parameterAsPointCrs (const QVariantMap ¶meters, const QString &name, QgsProcessingContext &context) |
Returns the coordinate reference system associated with an point parameter value. More... | |
QList< double > | parameterAsRange (const QVariantMap ¶meters, const QString &name, QgsProcessingContext &context) const |
Evaluates the parameter with matching name to a range of values. More... | |
QgsRasterLayer * | parameterAsRasterLayer (const QVariantMap ¶meters, const QString &name, QgsProcessingContext &context) const |
Evaluates the parameter with matching name to a raster layer. More... | |
QgsFeatureSink * | parameterAsSink (const QVariantMap ¶meters, const QString &name, QgsProcessingContext &context, QString &destinationIdentifier, const QgsFields &fields, QgsWkbTypes::Type geometryType=QgsWkbTypes::NoGeometry, const QgsCoordinateReferenceSystem &crs=QgsCoordinateReferenceSystem(), QgsFeatureSink::SinkFlags sinkFlags=nullptr) const |
Evaluates the parameter with matching name to a feature sink. More... | |
QgsProcessingFeatureSource * | parameterAsSource (const QVariantMap ¶meters, const QString &name, QgsProcessingContext &context) const |
Evaluates the parameter with matching name to a feature source. More... | |
QString | parameterAsString (const QVariantMap ¶meters, const QString &name, const QgsProcessingContext &context) const |
Evaluates the parameter with matching name to a static string value. More... | |
QgsVectorLayer * | parameterAsVectorLayer (const QVariantMap ¶meters, const QString &name, QgsProcessingContext &context) const |
Evaluates the parameter with matching name to a vector layer. More... | |
virtual QVariantMap | postProcessAlgorithm (QgsProcessingContext &context, QgsProcessingFeedback *feedback) SIP_THROW(QgsProcessingException) |
Allows the algorithm to perform any required cleanup tasks. More... | |
virtual bool | prepareAlgorithm (const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback *feedback) SIP_THROW(QgsProcessingException) |
Prepares the algorithm to run using the specified parameters. More... | |
void | removeParameter (const QString &name) |
Removes the parameter with matching name from the algorithm, and deletes any existing definition. More... | |
Additional Inherited Members | |
Public Types inherited from QgsProcessingAlgorithm | |
enum | Flag { FlagHideFromToolbox = 1 << 1, FlagHideFromModeler = 1 << 2, FlagSupportsBatch = 1 << 3, FlagCanCancel = 1 << 4, FlagRequiresMatchingCrs = 1 << 5, FlagNoThreading = 1 << 6, FlagDisplayNameIsLiteral = 1 << 7, FlagSupportsInPlaceEdits = 1 << 8, FlagDeprecated = FlagHideFromToolbox | FlagHideFromModeler } |
Flags indicating how and when an algorithm operates and should be exposed to users. More... | |
Static Protected Member Functions inherited from QgsProcessingAlgorithm | |
static QString | invalidRasterError (const QVariantMap ¶meters, const QString &name) |
Returns a user-friendly string to use as an error when a raster layer input could not be loaded. More... | |
static QString | invalidSinkError (const QVariantMap ¶meters, const QString &name) |
Returns a user-friendly string to use as an error when a sink parameter could not be created. More... | |
static QString | invalidSourceError (const QVariantMap ¶meters, const QString &name) |
Returns a user-friendly string to use as an error when a source parameter could not be loaded. More... | |
An abstract QgsProcessingAlgorithm base class for processing algorithms which operate "feature-by-feature".
Feature based algorithms are algorithms which operate on individual features in isolation. These are algorithms where one feature is output for each input feature, and the output feature result for each input feature is not dependent on any other features present in the source.
For instance, algorithms like "centroids" and "buffers" are feature based algorithms since the centroid or buffer of a feature is calculated for each feature in isolation. An algorithm like "dissolve" is NOT suitable for a feature based algorithm as the dissolved output depends on multiple input features and these features cannot be processed in isolation.
Using QgsProcessingFeatureBasedAlgorithm as the base class for feature based algorithms allows shortcutting much of the common algorithm code for handling iterating over sources and pushing features to output sinks. It also allows the algorithm execution to be optimised in future (for instance allowing automatic multi-thread processing of the algorithm, or use of the algorithm in "chains", avoiding the need for temporary outputs in multi-step models).
Definition at line 883 of file qgsprocessingalgorithm.h.
|
default |
Constructor for QgsProcessingFeatureBasedAlgorithm.
|
overridevirtual |
Returns the flags indicating how and when the algorithm operates and should be exposed to users.
Default flags are FlagSupportsBatch and FlagCanCancel.
Reimplemented from QgsProcessingAlgorithm.
Definition at line 808 of file qgsprocessingalgorithm.cpp.
|
overrideprotectedvirtual |
Initializes the algorithm using the specified configuration.
This should be called directly after creating algorithms and before retrieving any parameterDefinitions() or outputDefinitions().
Subclasses should use their implementations to add all required input parameter and output definitions (which can be dynamically adjusted according to configuration).
Dynamic configuration can be used by algorithms which alter their behavior when used inside processing models. For instance, a "feature router" type algorithm which sends input features to one of any number of outputs sinks based on some preconfigured filter parameters can use the init method to create these outputs based on the specified configuration.
Implements QgsProcessingAlgorithm.
Definition at line 815 of file qgsprocessingalgorithm.cpp.
|
protectedvirtual |
Initializes any extra parameters added by the algorithm subclass.
There is no need to declare the input source or output sink, as these are automatically created by QgsProcessingFeatureBasedAlgorithm.
Definition at line 857 of file qgsprocessingalgorithm.cpp.
|
protectedvirtual |
Returns the valid input layer types for the source layer for this algorithm.
By default vector layers with any geometry types (excluding non-spatial, geometryless layers) are accepted.
Definition at line 822 of file qgsprocessingalgorithm.cpp.
|
protectedvirtual |
Maps the input source coordinate reference system (inputCrs) to a corresponding output CRS generated by the algorithm.
The default behavior is that the algorithm maintains the same CRS as the input source.
This is called once by the base class when creating the output sink for the algorithm (i.e. it is not called once per feature processed).
Definition at line 852 of file qgsprocessingalgorithm.cpp.
|
protectedvirtual |
Maps the input source fields (inputFields) to corresponding output fields generated by the algorithm.
The default behavior is that the algorithm maintains the same fields as are input. Algorithms which add, remove or modify existing fields should override this method and implement logic here to indicate which fields are output by the algorithm.
This is called once by the base class when creating the output sink for the algorithm (i.e. it is not called once per feature processed).
Definition at line 847 of file qgsprocessingalgorithm.cpp.
|
protectedvirtual |
Returns the layer type for layers generated by this algorithm, if this is possible to determine in advance.
Definition at line 827 of file qgsprocessingalgorithm.cpp.
|
protectedpure virtual |
Returns the translated, user visible name for any layers created by this algorithm.
This name will be used as the default name when loading the resultant layer into a QGIS project.
|
protectedvirtual |
Maps the input WKB geometry type (inputWkbType) to the corresponding output WKB type generated by the algorithm.
The default behavior is that the algorithm maintains the same WKB type. This is called once by the base class when creating the output sink for the algorithm (i.e. it is not called once per feature processed).
Definition at line 842 of file qgsprocessingalgorithm.cpp.
|
protected |
Read the source from parameters and context and set it.
Definition at line 954 of file qgsprocessingalgorithm.cpp.
|
overrideprotectedvirtual |
Runs the algorithm using the specified parameters.
Algorithms should implement their custom processing logic here.
The context argument gives a temporary context with thread affinity matching the thread in which the algorithm is being run. This is a cut-back copy of the context passed to the prepareAlgorithm() and postProcessAlgorithm() steps, but it is generally safe for most algorithms to utilize this context for loading layers and creating sinks. Any loaded layers or sinks created within this temporary context will be transferred back to the main execution context upon successful completion of the processAlgorithm() step.
Algorithm progress should be reported using the supplied feedback object. Additionally, well-behaved algorithms should periodically check feedback to determine whether the algorithm should be canceled and exited early.
This method will not be called if the prepareAlgorithm() step failed (returned false).
c++ implementations of processAlgorithm can throw the QgsProcessingException exception to indicate that a fatal error occurred within the execution. Python based subclasses should raise GeoAlgorithmExecutionException for the same purpose.
Implements QgsProcessingAlgorithm.
Definition at line 869 of file qgsprocessingalgorithm.cpp.
|
pure virtual |
Processes an individual input feature from the source.
Algorithms should implement their logic in this method for performing the algorithm's operation (e.g. replacing the feature's geometry with the centroid of the original feature geometry for a 'centroid' type algorithm).
Implementations should return a list containing the modified feature. Returning an empty an list will indicate that this feature should be 'skipped', and will not be added to the algorithm's output. Subclasses can use this approach to filter the incoming features as desired.
Additionally, multiple features can be returned for a single input feature. Each returned feature will be added to the algorithm's output. This allows for "explode" type algorithms where a single input feature results in multiple output features.
The provided feedback object can be used to push messages to the log and for giving feedback to users. Note that handling of progress reports and algorithm cancelation is handled by the base class and subclasses do not need to reimplement this logic.
Algorithms can throw a QgsProcessingException if a fatal error occurred which should prevent the algorithm execution from continuing. This can be annoying for users though as it can break valid model execution - so use with extreme caution, and consider using feedback to instead report non-fatal processing failures for features instead.
|
protectedvirtual |
Returns the feature request used for fetching features to process from the source layer.
The default implementation requests all attributes and geometry.
Definition at line 921 of file qgsprocessingalgorithm.cpp.
|
protectedvirtual |
Returns the feature sink flags to be used for the output.
Definition at line 837 of file qgsprocessingalgorithm.cpp.
|
protected |
Returns the source's coordinate reference system.
This will only return a valid CRS when called from a subclasses' processFeature() implementation.
Definition at line 861 of file qgsprocessingalgorithm.cpp.
|
protectedvirtual |
Returns the processing feature source flags to be used in the algorithm.
Definition at line 832 of file qgsprocessingalgorithm.cpp.
|
overrideprotectedvirtual |
Checks whether this algorithm supports in-place editing on the given layer Default implementation for feature based algorithms run some basic compatibility checks based on the geometry type of the layer.
Reimplemented from QgsProcessingAlgorithm.
Definition at line 926 of file qgsprocessingalgorithm.cpp.