22 #include "qgsprocessingmodelalgorithm.h"
41 for ( QVariantMap::const_iterator it = customVariables.constBegin(); it != customVariables.constEnd(); ++it )
73 if ( vars.remove( name ) )
92 QString
id = values.at( 0 ).toString();
100 return c.variablesToMap();
105 return new GetLayoutItemVariables( mLayout );
118 GetLayoutMapLayerCredits(
const QgsLayout *
c )
122 <<
QgsExpressionFunction::Parameter( QStringLiteral(
"layer_name_separator" ), true, QStringLiteral(
": " ) ), QStringLiteral(
"Layout" ) )
131 QString
id = values.value( 0 ).toString();
133 if (
QgsLayoutItemMap *map = qobject_cast< QgsLayoutItemMap * >( mLayout->itemById(
id ) ) )
136 const QVariantList mapLayers =
c.variable( QStringLiteral(
"map_layers" ) ).toList();
138 const bool includeLayerNames = values.value( 1 ).toBool();
139 const QString layerNameSeparator = values.value( 2 ).toString();
142 for (
const QVariant &value : mapLayers )
144 if (
const QgsMapLayer *layer = qobject_cast< const QgsMapLayer * >( value.value< QObject * >() ) )
146 const QStringList credits = !layer->metadata().rights().isEmpty() ? layer->metadata().rights() : QStringList() << layer->attribution();
147 for (
const QString &credit : credits )
149 if ( credit.trimmed().isEmpty() )
152 const QString creditString = includeLayerNames ? layer->name() + layerNameSeparator + credit
155 if ( !res.contains( creditString ) )
168 return new GetLayoutMapLayerCredits( mLayout );
180 GetCurrentFormFieldValue( )
186 QString fieldName( values.at( 0 ).toString() );
187 const QgsFeature feat( context->
variable( QStringLiteral(
"current_feature" ) ).value<QgsFeature>() );
188 if ( fieldName.isEmpty() || ! feat.isValid( ) )
192 return feat.attribute( fieldName ) ;
197 return new GetCurrentFormFieldValue( );
210 GetCurrentParentFormFieldValue( )
216 QString fieldName( values.at( 0 ).toString() );
217 const QgsFeature feat( context->
variable( QStringLiteral(
"current_parent_feature" ) ).value<QgsFeature>() );
218 if ( fieldName.isEmpty() || ! feat.isValid( ) )
222 return feat.attribute( fieldName ) ;
227 return new GetCurrentParentFormFieldValue( );
241 GetProcessingParameterValue(
const QVariantMap ¶ms )
248 return mParams.value( values.at( 0 ).toString() );
253 return new GetProcessingParameterValue( mParams );
258 const QVariantMap mParams;
268 scope->
addFunction( QStringLiteral(
"current_value" ),
new GetCurrentFormFieldValue( ) );
270 scope->
setVariable( QStringLiteral(
"current_feature" ), formFeature,
true );
271 scope->
setVariable( QStringLiteral(
"form_mode" ), formMode,
true );
279 scope->
addFunction( QStringLiteral(
"current_parent_value" ),
new GetCurrentParentFormFieldValue( ) );
280 scope->
setVariable( QStringLiteral(
"current_parent_geometry" ), parentFormFeature.
geometry( ),
true );
281 scope->
setVariable( QStringLiteral(
"current_parent_feature" ), parentFormFeature,
true );
282 scope->
setVariable( QStringLiteral(
"parent_form_mode" ), parentFormMode,
true );
304 vars.insert( name, value );
325 if ( vars.remove( name ) )
337 const QStringList variableNames = layer->
customProperty( QStringLiteral(
"variableNames" ) ).toStringList();
338 const QStringList variableValues = layer->
customProperty( QStringLiteral(
"variableValues" ) ).toStringList();
341 for (
const QString &variableName : variableNames )
343 if ( varIndex >= variableValues.length() )
348 QVariant varValue = variableValues.at( varIndex );
350 scope->
setVariable( variableName, varValue,
true );
359 const QgsVectorLayer *vLayer = qobject_cast< const QgsVectorLayer * >( layer );
374 QList<QgsExpressionContextScope *> scopes;
393 QStringList variableNames = layer->
customProperty( QStringLiteral(
"variableNames" ) ).toStringList();
394 QStringList variableValues = layer->
customProperty( QStringLiteral(
"variableValues" ) ).toStringList();
396 variableNames << name;
397 variableValues << value.toString();
408 QStringList variableNames;
409 QStringList variableValues;
411 QVariantMap::const_iterator it = variables.constBegin();
412 for ( ; it != variables.constEnd(); ++it )
414 variableNames << it.key();
415 variableValues << it.value().toString();
465 QVariantList layersIds;
467 const QList<QgsMapLayer *> layersInMap = mapSettings.
layers();
468 layersIds.reserve( layersInMap.count() );
469 layers.reserve( layersInMap.count() );
472 layersIds << layer->id();
485 scope->
addFunction( QStringLiteral(
"is_layer_visible" ),
new GetLayerVisibility( mapSettings.
layers(), mapSettings.
scale() ) );
504 QVariantList matchList;
508 QVariantMap matchMap;
510 matchMap.insert( QStringLiteral(
"valid" ), match.isValid() );
511 matchMap.insert( QStringLiteral(
"layer" ), QVariant::fromValue<QgsWeakMapLayerPointer>(
QgsWeakMapLayerPointer( match.layer() ) ) );
512 matchMap.insert( QStringLiteral(
"feature_id" ), match.featureId() );
513 matchMap.insert( QStringLiteral(
"vertex_index" ), match.vertexIndex() );
514 matchMap.insert( QStringLiteral(
"distance" ), match.distance() );
516 matchList.append( matchMap );
546 return scope.release();
549 const QStringList variableNames = layout->
customProperty( QStringLiteral(
"variableNames" ) ).toStringList();
550 const QStringList variableValues = layout->
customProperty( QStringLiteral(
"variableValues" ) ).toStringList();
554 for (
const QString &variableName : variableNames )
556 if ( varIndex >= variableValues.length() )
561 QVariant varValue = variableValues.at( varIndex );
563 scope->setVariable( variableName, varValue );
579 QVariantList offsets;
589 scope->addFunction( QStringLiteral(
"item_variables" ),
new GetLayoutItemVariables( layout ) );
590 scope->addFunction( QStringLiteral(
"map_credits" ),
new GetLayoutMapLayerCredits( layout ) );
602 scope->setFeature( atlasFeature );
608 return scope.release();
617 QStringList variableNames = layout->
customProperty( QStringLiteral(
"variableNames" ) ).toStringList();
618 QStringList variableValues = layout->
customProperty( QStringLiteral(
"variableValues" ) ).toStringList();
620 variableNames << name;
621 variableValues << value.toString();
632 QStringList variableNames;
633 QStringList variableValues;
635 QVariantMap::const_iterator it = variables.constBegin();
636 for ( ; it != variables.constEnd(); ++it )
638 variableNames << it.key();
639 variableValues << it.value().toString();
692 const QStringList variableNames = item->
customProperty( QStringLiteral(
"variableNames" ) ).toStringList();
693 const QStringList variableValues = item->
customProperty( QStringLiteral(
"variableValues" ) ).toStringList();
696 for (
const QString &variableName : variableNames )
698 if ( varIndex >= variableValues.length() )
703 QVariant varValue = variableValues.at( varIndex );
738 QStringList variableNames = item->
customProperty( QStringLiteral(
"variableNames" ) ).toStringList();
739 QStringList variableValues = item->
customProperty( QStringLiteral(
"variableValues" ) ).toStringList();
741 variableNames << name;
742 variableValues << value.toString();
753 QStringList variableNames;
754 QStringList variableValues;
756 QVariantMap::const_iterator it = variables.constBegin();
757 for ( ; it != variables.constEnd(); ++it )
759 variableNames << it.key();
760 variableValues << it.value().toString();
774 const QStringList variableNames = frame->
customProperty( QStringLiteral(
"variableNames" ) ).toStringList();
775 const QStringList variableValues = frame->
customProperty( QStringLiteral(
"variableValues" ) ).toStringList();
778 for (
const QString &variableName : variableNames )
780 if ( varIndex >= variableValues.length() )
785 QVariant varValue = variableValues.at( varIndex );
799 QStringList variableNames = frame->
customProperty( QStringLiteral(
"variableNames" ) ).toStringList();
800 QStringList variableValues = frame->
customProperty( QStringLiteral(
"variableValues" ) ).toStringList();
802 variableNames << name;
803 variableValues << value.toString();
814 QStringList variableNames;
815 QStringList variableValues;
817 QVariantMap::const_iterator it = variables.constBegin();
818 for ( ; it != variables.constEnd(); ++it )
820 variableNames << it.key();
821 variableValues << it.value().toString();
842 scope->addFunction( QStringLiteral(
"parameter" ),
new GetProcessingParameterValue( parameters ) );
845 return scope.release();
850 return scope.release();
857 if ( !model->sourceFilePath().isEmpty() )
859 modelPath = model->sourceFilePath();
868 const QString modelFolder = !modelPath.isEmpty() ? QFileInfo( modelPath ).path() : QString();
875 const QVariantMap customVariables = model->variables();
876 for (
auto it = customVariables.constBegin(); it != customVariables.constEnd(); ++it )
881 return modelScope.release();
888 return scope.release();
905 return mUsesGeometry;
911 return mReferencedColumns;
923 QgsExpressionContextUtils::GetLayerVisibility::GetLayerVisibility(
const QList<QgsMapLayer *> &layers,
double scale )
925 , mLayers( _qgis_listRawToQPointer( layers ) )
928 for (
const auto &layer : mLayers )
930 if ( layer->hasScaleBasedVisibility() )
932 mScaleBasedVisibilityDetails[ layer ] = qMakePair( layer->minimumScale(), layer->maximumScale() );
937 QgsExpressionContextUtils::GetLayerVisibility::GetLayerVisibility()
943 if ( mLayers.isEmpty() )
948 bool isVisible =
false;
949 QgsMapLayer *layer = QgsExpressionUtils::getMapLayer( values.at( 0 ), parent );
950 if ( layer && mLayers.contains( layer ) )
953 if ( mScaleBasedVisibilityDetails.contains( layer ) && !
qgsDoubleNear( mScale, 0.0 ) )
955 if ( ( !
qgsDoubleNear( mScaleBasedVisibilityDetails[ layer ].first, 0.0 ) && mScale > mScaleBasedVisibilityDetails[ layer ].first ) ||
956 ( !
qgsDoubleNear( mScaleBasedVisibilityDetails[ layer ].second, 0.0 ) && mScale < mScaleBasedVisibilityDetails[ layer ].second ) )
968 GetLayerVisibility *func =
new GetLayerVisibility();
969 func->mLayers = mLayers;
970 func->mScale = mScale;
971 func->mScaleBasedVisibilityDetails = mScaleBasedVisibilityDetails;
static QString version()
Version string.
static QString releaseName()
Release name.
static int versionInt()
Version number used for comparing versions using the "Check QGIS Version" function.
static void setCustomVariables(const QVariantMap &customVariables)
Custom expression variables for this application.
static QString osName()
Returns a string name of the operating system QGIS is running on.
static QString platform()
Returns the QGIS platform name, e.g., "desktop" or "server".
static QVariantMap customVariables()
Custom expression variables for this application.
static QString locale()
Returns the QGIS locale.
static void setCustomVariable(const QString &name, const QVariant &value)
Set a single custom expression variable.
static QString userFullName()
Returns the user's operating system login account full display name.
static QString userLoginName()
Returns the user's operating system login account name.
QString toProj() const
Returns a Proj string representation of this CRS.
QString ellipsoidAcronym() const
Returns the ellipsoid acronym for the ellipsoid used by the CRS.
QString description() const
Returns the descriptive name of the CRS, e.g., "WGS 84" or "GDA 94 / Vicgrid94".
QString projectionAcronym() const
Returns the projection acronym for the projection used by the CRS.
QString authid() const
Returns the authority identifier for the CRS.
@ WKT_PREFERRED
Preferred format, matching the most recent WKT ISO standard. Currently an alias to WKT2_2019,...
QString toWkt(WktVariant variant=WKT1_GDAL, bool multiline=false, int indentationWidth=4) const
Returns a WKT representation of this CRS.
Single scope for storing variables and functions for use within a QgsExpressionContext.
void setFields(const QgsFields &fields)
Convenience function for setting a fields for the scope.
void setFeature(const QgsFeature &feature)
Convenience function for setting a feature for the scope.
void addFunction(const QString &name, QgsScopedExpressionFunction *function)
Adds a function to the scope.
void addVariable(const QgsExpressionContextScope::StaticVariable &variable)
Adds a variable into the context scope.
void setVariable(const QString &name, const QVariant &value, bool isStatic=false)
Convenience method for setting a variable in the context scope by name name and value.
static QgsExpressionContextScope * layoutItemScope(const QgsLayoutItem *item)
Creates a new scope which contains variables and functions relating to a QgsLayoutItem.
static void setLayoutMultiFrameVariable(QgsLayoutMultiFrame *frame, const QString &name, const QVariant &value)
Sets a layout multi frame context variable, with the given name and value.
static void setLayerVariable(QgsMapLayer *layer, const QString &name, const QVariant &value)
Sets a layer context variable.
static QgsExpressionContextScope * processingModelAlgorithmScope(const QgsProcessingModelAlgorithm *model, const QVariantMap ¶meters, QgsProcessingContext &context)
Creates a new scope which contains variables and functions relating to a processing model algorithm,...
static QgsExpressionContextScope * updateSymbolScope(const QgsSymbol *symbol, QgsExpressionContextScope *symbolScope=nullptr)
Updates a symbol scope related to a QgsSymbol to an expression context.
static void setProjectVariables(QgsProject *project, const QVariantMap &variables)
Sets all project context variables.
static QgsExpressionContextScope * layoutScope(const QgsLayout *layout)
Creates a new scope which contains variables and functions relating to a QgsLayout layout.
static QgsExpressionContext createFeatureBasedContext(const QgsFeature &feature, const QgsFields &fields)
Helper function for creating an expression context which contains just a feature and fields collectio...
static void removeProjectVariable(QgsProject *project, const QString &name)
Remove project context variable.
static void setLayerVariables(QgsMapLayer *layer, const QVariantMap &variables)
Sets all layer context variables.
static void setGlobalVariables(const QVariantMap &variables)
Sets all global context variables.
static void setLayoutItemVariables(QgsLayoutItem *item, const QVariantMap &variables)
Sets all layout item context variables for an item.
static void setLayoutMultiFrameVariables(QgsLayoutMultiFrame *frame, const QVariantMap &variables)
Sets all layout multiframe context variables for an frame.
static QgsExpressionContextScope * processingAlgorithmScope(const QgsProcessingAlgorithm *algorithm, const QVariantMap ¶meters, QgsProcessingContext &context)
Creates a new scope which contains variables and functions relating to a processing algorithm,...
static QgsExpressionContextScope * notificationScope(const QString &message=QString())
Creates a new scope which contains variables and functions relating to provider notifications.
static QgsExpressionContextScope * projectScope(const QgsProject *project)
Creates a new scope which contains variables and functions relating to a QGIS project.
static QgsExpressionContextScope * parentFormScope(const QgsFeature &formFeature=QgsFeature(), const QString &formMode=QString())
Creates a new scope which contains functions and variables from the current parent attribute form/tab...
static void setLayoutVariable(QgsLayout *layout, const QString &name, const QVariant &value)
Sets a layout context variable.
static QgsExpressionContextScope * formScope(const QgsFeature &formFeature=QgsFeature(), const QString &formMode=QString())
Creates a new scope which contains functions and variables from the current attribute form/table form...
static QgsExpressionContextScope * multiFrameScope(const QgsLayoutMultiFrame *frame)
Creates a new scope which contains variables and functions relating to a QgsLayoutMultiFrame.
static void setLayoutItemVariable(QgsLayoutItem *item, const QString &name, const QVariant &value)
Sets a layout item context variable, with the given name and value.
static QgsExpressionContextScope * mapToolCaptureScope(const QList< QgsPointLocator::Match > &matches)
Sets the expression context variables which are available for expressions triggered by a map tool cap...
static QgsExpressionContextScope * atlasScope(const QgsLayoutAtlas *atlas)
Creates a new scope which contains variables and functions relating to a QgsLayoutAtlas.
static void registerContextFunctions()
Registers all known core functions provided by QgsExpressionContextScope objects.
static void setLayoutVariables(QgsLayout *layout, const QVariantMap &variables)
Sets all layout context variables.
static QgsExpressionContextScope * mapSettingsScope(const QgsMapSettings &mapSettings)
Creates a new scope which contains variables and functions relating to a QgsMapSettings object.
static void removeGlobalVariable(const QString &name)
Remove a global context variable.
static void setGlobalVariable(const QString &name, const QVariant &value)
Sets a global context variable.
static QList< QgsExpressionContextScope * > globalProjectLayerScopes(const QgsMapLayer *layer)
Creates a list of three scopes: global, layer's project and layer.
static void setProjectVariable(QgsProject *project, const QString &name, const QVariant &value)
Sets a project context variable.
static QgsExpressionContextScope * layerScope(const QgsMapLayer *layer)
Creates a new scope which contains variables and functions relating to a QgsMapLayer.
static QgsExpressionContextScope * globalScope()
Creates a new scope which contains variables and functions relating to the global QGIS context.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
static const QString EXPR_SYMBOL_COLOR
Inbuilt variable name for symbol color variable.
static const QString EXPR_SYMBOL_ANGLE
Inbuilt variable name for symbol angle variable.
QVariant variable(const QString &name) const
Fetches a matching variable from the context.
A abstract base class for defining QgsExpression functions.
static bool allParamsStatic(const QgsExpressionNodeFunction *node, QgsExpression *parent, const QgsExpressionContext *context)
This will return true if all the params for the provided function node are static within the constrai...
An expression node for expression functions.
Class for parsing and evaluation of expressions (formerly called "search strings").
static bool registerFunction(QgsExpressionFunction *function, bool transferOwnership=false)
Registers a function to the expression engine.
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
bool isValid() const
Returns the validity of this feature.
Container of fields for a vector layer.
A geometry is the spatial representation of a feature.
static QgsGeometry fromRect(const QgsRectangle &rect) SIP_HOLDGIL
Creates a new geometry from a QgsRectangle.
static QgsGeometry fromPointXY(const QgsPointXY &point) SIP_HOLDGIL
Creates a new geometry from a QgsPointXY object.
Class used to render QgsLayout as an atlas, by iterating over the features from an associated vector ...
QString nameForPage(int page) const
Returns the calculated name for a specified atlas page number.
QgsVectorLayer * coverageLayer() const
Returns the coverage layer used for the atlas features.
QgsLayout * layout() override
Returns the layout associated with the iterator.
bool enabled() const
Returns whether the atlas generation is enabled.
QString currentFilename() const
Returns the current feature filename.
int count() const override
Returns the number of features to iterate over.
int currentFeatureNumber() const
Returns the current feature number, where a value of 0 corresponds to the first feature.
Layout graphical items for displaying a map.
Item representing the paper in a layout.
Base class for graphical items within a QgsLayout.
QgsLayoutSize sizeWithUnits() const
Returns the item's current size, including units.
int page() const
Returns the page the item is currently on, with the first page returning 0.
QgsExpressionContext createExpressionContext() const override
This method needs to be reimplemented in all classes which implement this interface and return an exp...
virtual QString uuid() const
Returns the item identification string.
QString id() const
Returns the item's ID name.
Abstract base class for layout items with the ability to distribute the content to several frames (Qg...
QVariant customProperty(const QString &key, const QVariant &defaultValue=QVariant()) const
Read a custom property from the object.
const QgsLayout * layout() const
Returns the layout the object is attached to.
void setCustomProperty(const QString &key, const QVariant &value)
Set a custom property for the object.
QPointF pagePositionToLayoutPosition(int page, const QgsLayoutPoint &position) const
Converts a position on a page to an absolute position in layout coordinates.
int pageCount() const
Returns the number of pages in the collection.
QgsLayoutItemPage * page(int pageNumber)
Returns a specific page (by pageNumber) from the collection.
This class provides a method of storing points, consisting of an x and y coordinate,...
double dpi() const
Returns the dpi for outputting the layout.
QgsFeature feature() const
Returns the current feature for evaluating the layout.
QgsVectorLayer * layer() const
Returns the vector layer associated with the layout's context.
QSizeF toQSizeF() const
Converts the layout size to a QSizeF.
Base class for layouts, which can contain items such as maps, labels, scalebars, etc.
void setCustomProperty(const QString &key, const QVariant &value)
Set a custom property for the layout.
QgsLayoutRenderContext & renderContext()
Returns a reference to the layout's render context, which stores information relating to the current ...
QgsLayoutPageCollection * pageCollection()
Returns a pointer to the layout's page collection, which stores and manages page items in the layout.
QVariant customProperty(const QString &key, const QVariant &defaultValue=QVariant()) const
Read a custom property from the layout.
QgsLayoutReportContext & reportContext()
Returns a reference to the layout's report context, which stores information relating to the current ...
Base class for all map layer types.
Q_INVOKABLE QVariant customProperty(const QString &value, const QVariant &defaultValue=QVariant()) const
Read a custom property from layer.
QgsCoordinateReferenceSystem crs
QString id() const
Returns the layer's unique ID, which is used to access this layer from QgsProject.
Q_INVOKABLE void setCustomProperty(const QString &key, const QVariant &value)
Set a custom property for layer.
The QgsMapSettings class contains configuration for rendering of the map.
double scale() const
Returns the calculated map scale.
QgsUnitTypes::DistanceUnit mapUnits() const
Returns the units of the map's geographical coordinates - used for scale calculation.
QgsRectangle visibleExtent() const
Returns the actual extent derived from requested extent that takes takes output image size into accou...
QList< QgsMapLayer * > layers() const
Returns the list of layers which will be rendered in the map.
double rotation() const
Returns the rotation of the resulting map image, in degrees clockwise.
QgsCoordinateReferenceSystem destinationCrs() const
Returns the destination coordinate reference system for the map render.
A marker symbol type, for rendering Point and MultiPoint geometries.
double angle() const
Returns the marker angle for the whole symbol.
Interface for master layout type objects, such as print layouts and reports.
Abstract base class for processing algorithms.
QString id() const
Returns the unique ID for the algorithm, which is a combination of the algorithm provider's ID and th...
Contains information about the context in which a processing algorithm is executed.
QgsProject * project() const
Returns the project in which the algorithm is being executed.
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
static QgsProject * instance()
Returns the QgsProject singleton instance.
QgsExpressionContextScope * createExpressionContextScope() const override
This method needs to be reimplemented in all classes which implement this interface and return an exp...
QString absoluteFilePath() const
Returns full absolute path to the project file if the project is stored in a file system - derived fr...
QVariantMap customVariables() const
A map of custom project variables.
void setCustomVariables(const QVariantMap &customVariables)
A map of custom project variables.
QgsProjectStorage * projectStorage() const
Returns pointer to project storage implementation that handles read/write of the project file.
double height() const SIP_HOLDGIL
Returns the height of the rectangle.
double width() const SIP_HOLDGIL
Returns the width of the rectangle.
QgsPointXY center() const SIP_HOLDGIL
Returns the center point of the rectangle.
Expression function for use within a QgsExpressionContextScope.
QSet< QString > referencedColumns(const QgsExpressionNodeFunction *node) const override
Returns a set of field names which are required for this function.
bool isStatic(const QgsExpressionNodeFunction *node, QgsExpression *parent, const QgsExpressionContext *context) const override
Will be called during prepare to determine if the function is static.
bool usesGeometry(const QgsExpressionNodeFunction *node) const override
Does this function use a geometry object.
QVariant func(const QVariantList &values, const QgsExpressionContext *context, QgsExpression *parent, const QgsExpressionNodeFunction *node) override=0
Returns result of evaluating the function.
virtual QgsScopedExpressionFunction * clone() const =0
Returns a clone of the function.
Abstract base class for all rendered symbols.
QColor color() const
Returns the symbol's color.
const QgsDateTimeRange & temporalRange() const
Returns the datetime range for the object.
bool isTemporal() const
Returns true if the object's temporal range is enabled, and the object will be filtered when renderin...
static Q_INVOKABLE QString toString(QgsUnitTypes::DistanceUnit unit)
Returns a translated string representing a distance unit.
Represents a vector layer which manages a vector based data sets.
QgsFields fields() const FINAL
Returns the list of fields of this layer.
double ANALYSIS_EXPORT angle(QgsPoint *p1, QgsPoint *p2, QgsPoint *p3, QgsPoint *p4)
Calculates the angle between two segments (in 2 dimension, z-values are ignored)
As part of the API refactoring and improvements which landed in the Processing API was substantially reworked from the x version This was done in order to allow much of the underlying Processing framework to be ported into allowing algorithms to be written in pure substantial changes are required in order to port existing x Processing algorithms for QGIS x The most significant changes are outlined not GeoAlgorithm For algorithms which operate on features one by consider subclassing the QgsProcessingFeatureBasedAlgorithm class This class allows much of the boilerplate code for looping over features from a vector layer to be bypassed and instead requires implementation of a processFeature method Ensure that your algorithm(or algorithm 's parent class) implements the new pure virtual createInstance(self) call
As part of the API refactoring and improvements which landed in the Processing API was substantially reworked from the x version This was done in order to allow much of the underlying Processing framework to be ported into c
bool qgsDoubleNear(double a, double b, double epsilon=4 *std::numeric_limits< double >::epsilon())
Compare two doubles (but allow some difference)
QPointer< QgsMapLayer > QgsWeakMapLayerPointer
Weak pointer for QgsMapLayer.
Single variable definition for use within a QgsExpressionContextScope.