QGIS API Documentation  3.2.0-Bonn (bc43194)
Public Member Functions | Protected Member Functions | List of all members
QgsProcessingFeatureBasedAlgorithm Class Referenceabstract

An abstract QgsProcessingAlgorithm base class for processing algorithms which operate "feature-by-feature". More...

#include <qgsprocessingalgorithm.h>

Inheritance diagram for QgsProcessingFeatureBasedAlgorithm:
Inheritance graph
[legend]

Public Member Functions

 QgsProcessingFeatureBasedAlgorithm ()=default
 Constructor for QgsProcessingFeatureBasedAlgorithm. 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 &parameters, 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 &parameters, 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...
 
QgsProcessingAlgorithmcreate (const QVariantMap &configuration=QVariantMap()) const
 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...
 
QgsExpressionContext createExpressionContext (const QVariantMap &parameters, 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 Flags flags () const
 Returns the flags indicating how and when the algorithm operates and should be exposed to users. 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 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...
 
QgsProcessingAlgorithmoperator= (const QgsProcessingAlgorithm &other)=delete
 Algorithms cannot be copied- create() should be used instead. More...
 
const QgsProcessingOutputDefinitionoutputDefinition (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 QgsProcessingParameterDefinitionparameterDefinition (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 &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback)
 Prepares the algorithm for execution. More...
 
virtual QVariantMap preprocessParameters (const QVariantMap &parameters)
 Pre-processes a set of parameters, allowing the algorithm to clean their values. More...
 
QgsProcessingProviderprovider () const
 Returns the provider to which this algorithm belongs. More...
 
QVariantMap run (const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback, bool *ok=nullptr, const QVariantMap &configuration=QVariantMap()) const
 Executes the algorithm using the specified parameters. More...
 
QVariantMap runPrepared (const QVariantMap &parameters, 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 &parameters, 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...
 
QVariantMap processAlgorithm (const QVariantMap &parameters, QgsProcessingContext &context, QgsProcessingFeedback *feedback) override SIP_THROW(QgsProcessingException)
 Runs the algorithm using the specified parameters. More...
 
virtual QgsFeatureList processFeature (const QgsFeature &feature, QgsProcessingContext &context, QgsProcessingFeedback *feedback) SIP_THROW(QgsProcessingException)=0
 Processes an individual input feature from the source. More...
 
virtual QgsFeatureRequest request () const
 Returns the feature request used for fetching features to process from the source layer. 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...
 
- 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 QgsProcessingAlgorithmcreateInstance () const =0
 Creates a new instance of the algorithm class. More...
 
bool parameterAsBool (const QVariantMap &parameters, const QString &name, const QgsProcessingContext &context) const
 Evaluates the parameter with matching name to a static boolean value. More...
 
QString parameterAsCompatibleSourceLayerPath (const QVariantMap &parameters, 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 &parameters, const QString &name, QgsProcessingContext &context) const
 Evaluates the parameter with matching name to a coordinate reference system. More...
 
double parameterAsDouble (const QVariantMap &parameters, const QString &name, const QgsProcessingContext &context) const
 Evaluates the parameter with matching name to a static double value. More...
 
int parameterAsEnum (const QVariantMap &parameters, const QString &name, const QgsProcessingContext &context) const
 Evaluates the parameter with matching name to a enum value. More...
 
QList< int > parameterAsEnums (const QVariantMap &parameters, const QString &name, const QgsProcessingContext &context) const
 Evaluates the parameter with matching name to list of enum values. More...
 
QString parameterAsExpression (const QVariantMap &parameters, const QString &name, const QgsProcessingContext &context) const
 Evaluates the parameter with matching name to an expression. More...
 
QgsRectangle parameterAsExtent (const QVariantMap &parameters, 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 &parameters, const QString &name, QgsProcessingContext &context)
 Returns the coordinate reference system associated with an extent parameter value. More...
 
QgsGeometry parameterAsExtentGeometry (const QVariantMap &parameters, 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 &parameters, const QString &name, QgsProcessingContext &context) const
 Evaluates the parameter with matching name to a list of fields. More...
 
QString parameterAsFile (const QVariantMap &parameters, const QString &name, QgsProcessingContext &context) const
 Evaluates the parameter with matching name to a file/folder name. More...
 
QString parameterAsFileOutput (const QVariantMap &parameters, const QString &name, QgsProcessingContext &context) const
 Evaluates the parameter with matching name to a file based output destination. More...
 
int parameterAsInt (const QVariantMap &parameters, const QString &name, const QgsProcessingContext &context) const
 Evaluates the parameter with matching name to a static integer value. More...
 
QgsMapLayerparameterAsLayer (const QVariantMap &parameters, const QString &name, QgsProcessingContext &context) const
 Evaluates the parameter with matching name to a map layer. More...
 
QList< QgsMapLayer * > parameterAsLayerList (const QVariantMap &parameters, const QString &name, QgsProcessingContext &context) const
 Evaluates the parameter with matching name to a list of map layers. More...
 
QVariantList parameterAsMatrix (const QVariantMap &parameters, const QString &name, QgsProcessingContext &context) const
 Evaluates the parameter with matching name to a matrix/table of values. More...
 
QString parameterAsOutputLayer (const QVariantMap &parameters, const QString &name, QgsProcessingContext &context) const
 Evaluates the parameter with matching name to a output layer destination. More...
 
QgsPointXY parameterAsPoint (const QVariantMap &parameters, const QString &name, QgsProcessingContext &context, const QgsCoordinateReferenceSystem &crs=QgsCoordinateReferenceSystem()) const
 Evaluates the parameter with matching name to a point. More...
 
QgsCoordinateReferenceSystem parameterAsPointCrs (const QVariantMap &parameters, const QString &name, QgsProcessingContext &context)
 Returns the coordinate reference system associated with an point parameter value. More...
 
QList< double > parameterAsRange (const QVariantMap &parameters, const QString &name, QgsProcessingContext &context) const
 Evaluates the parameter with matching name to a range of values. More...
 
QgsRasterLayerparameterAsRasterLayer (const QVariantMap &parameters, const QString &name, QgsProcessingContext &context) const
 Evaluates the parameter with matching name to a raster layer. More...
 
QgsFeatureSinkparameterAsSink (const QVariantMap &parameters, const QString &name, QgsProcessingContext &context, QString &destinationIdentifier, const QgsFields &fields, QgsWkbTypes::Type geometryType=QgsWkbTypes::NoGeometry, const QgsCoordinateReferenceSystem &crs=QgsCoordinateReferenceSystem()) const
 Evaluates the parameter with matching name to a feature sink. More...
 
QgsProcessingFeatureSourceparameterAsSource (const QVariantMap &parameters, const QString &name, QgsProcessingContext &context) const
 Evaluates the parameter with matching name to a feature source. More...
 
QString parameterAsString (const QVariantMap &parameters, const QString &name, const QgsProcessingContext &context) const
 Evaluates the parameter with matching name to a static string value. More...
 
QgsVectorLayerparameterAsVectorLayer (const QVariantMap &parameters, 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 &parameters, 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, 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 &parameters, 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 &parameters, 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 &parameters, const QString &name)
 Returns a user-friendly string to use as an error when a source parameter could not be loaded. More...
 

Detailed Description

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).

Since
QGIS 3.0

Definition at line 849 of file qgsprocessingalgorithm.h.

Constructor & Destructor Documentation

◆ QgsProcessingFeatureBasedAlgorithm()

QgsProcessingFeatureBasedAlgorithm::QgsProcessingFeatureBasedAlgorithm ( )
default

Member Function Documentation

◆ initAlgorithm()

void QgsProcessingFeatureBasedAlgorithm::initAlgorithm ( const QVariantMap &  configuration = QVariantMap())
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.

See also
addParameter()
addOutput()

Implements QgsProcessingAlgorithm.

Definition at line 780 of file qgsprocessingalgorithm.cpp.

◆ initParameters()

void QgsProcessingFeatureBasedAlgorithm::initParameters ( const QVariantMap &  configuration = QVariantMap())
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 817 of file qgsprocessingalgorithm.cpp.

◆ inputLayerTypes()

QList< int > QgsProcessingFeatureBasedAlgorithm::inputLayerTypes ( ) const
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 787 of file qgsprocessingalgorithm.cpp.

◆ outputCrs()

QgsCoordinateReferenceSystem QgsProcessingFeatureBasedAlgorithm::outputCrs ( const QgsCoordinateReferenceSystem inputCrs) const
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 812 of file qgsprocessingalgorithm.cpp.

◆ outputFields()

QgsFields QgsProcessingFeatureBasedAlgorithm::outputFields ( const QgsFields inputFields) const
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 807 of file qgsprocessingalgorithm.cpp.

◆ outputLayerType()

QgsProcessing::SourceType QgsProcessingFeatureBasedAlgorithm::outputLayerType ( ) const
protectedvirtual

Returns the layer type for layers generated by this algorithm, if this is possible to determine in advance.

Definition at line 792 of file qgsprocessingalgorithm.cpp.

◆ outputName()

virtual QString QgsProcessingFeatureBasedAlgorithm::outputName ( ) const
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.

◆ outputWkbType()

QgsWkbTypes::Type QgsProcessingFeatureBasedAlgorithm::outputWkbType ( QgsWkbTypes::Type  inputWkbType) const
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 802 of file qgsprocessingalgorithm.cpp.

◆ processAlgorithm()

QVariantMap QgsProcessingFeatureBasedAlgorithm::processAlgorithm ( const QVariantMap &  parameters,
QgsProcessingContext context,
QgsProcessingFeedback feedback 
)
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.

Returns
A map of algorithm outputs. These may be output layer references, or calculated values such as statistical calculations. Unless the algorithm subclass overrides the postProcessAlgorithm() step this returned map will be used as the output for the algorithm.
See also
prepareAlgorithm()
postProcessAlgorithm()

Implements QgsProcessingAlgorithm.

Definition at line 829 of file qgsprocessingalgorithm.cpp.

◆ processFeature()

virtual QgsFeatureList QgsProcessingFeatureBasedAlgorithm::processFeature ( const QgsFeature feature,
QgsProcessingContext context,
QgsProcessingFeedback feedback 
)
protectedpure 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.

◆ request()

QgsFeatureRequest QgsProcessingFeatureBasedAlgorithm::request ( ) const
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 883 of file qgsprocessingalgorithm.cpp.

◆ sourceCrs()

QgsCoordinateReferenceSystem QgsProcessingFeatureBasedAlgorithm::sourceCrs ( ) const
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 821 of file qgsprocessingalgorithm.cpp.

◆ sourceFlags()

QgsProcessingFeatureSource::Flag QgsProcessingFeatureBasedAlgorithm::sourceFlags ( ) const
protectedvirtual

Returns the processing feature source flags to be used in the algorithm.

Definition at line 797 of file qgsprocessingalgorithm.cpp.


The documentation for this class was generated from the following files: