23 QString QgsFilterAlgorithm::name()
 const 
   25   return QStringLiteral( 
"filter" );
 
   28 QString QgsFilterAlgorithm::displayName()
 const 
   30   return QObject::tr( 
"Feature filter" );
 
   33 QStringList QgsFilterAlgorithm::tags()
 const 
   35   return QObject::tr( 
"filter,proxy,redirect,route" ).split( 
',' );
 
   38 QString QgsFilterAlgorithm::group()
 const 
   40   return QObject::tr( 
"Modeler tools" );
 
   43 QString QgsFilterAlgorithm::groupId()
 const 
   45   return QStringLiteral( 
"modelertools" );
 
   48 QgsProcessingAlgorithm::Flags QgsFilterAlgorithm::flags()
 const 
   50   return FlagHideFromToolbox;
 
   53 QString QgsFilterAlgorithm::shortHelpString()
 const 
   55   return QObject::tr( 
"This algorithm filters features from the input layer and redirects them to one or several outputs." );
 
   58 QgsFilterAlgorithm *QgsFilterAlgorithm::createInstance()
 const 
   60   return new QgsFilterAlgorithm();
 
   63 QgsFilterAlgorithm::~QgsFilterAlgorithm()
 
   65   qDeleteAll( mOutputs );
 
   68 void QgsFilterAlgorithm::initAlgorithm( 
const QVariantMap &configuration )
 
   72   const QVariantList outputs = configuration.value( QStringLiteral( 
"outputs" ) ).toList();
 
   73   for ( 
const QVariant &output : outputs )
 
   75     const QVariantMap outputDef = output.toMap();
 
   76     const QString name = QStringLiteral( 
"OUTPUT_%1" ).arg( outputDef.value( QStringLiteral( 
"name" ) ).toString() );
 
   78     QgsProcessingParameterDefinition::Flags flags = QgsProcessingParameterDefinition::Flags();
 
   80     if ( outputDef.value( QStringLiteral( 
"isModelOutput" ) ).toBool() )
 
   83     addParameter( outputParam );
 
   84     mOutputs.append( 
new Output( name, outputDef.value( QStringLiteral( 
"expression" ) ).toString() ) );
 
   91   std::unique_ptr< QgsProcessingFeatureSource > source( parameterAsSource( parameters, QStringLiteral( 
"INPUT" ), context ) );
 
   95   QgsExpressionContext expressionContext = createExpressionContext( parameters, context, source.get() );
 
   96   for ( Output *output : std::as_const( mOutputs ) )
 
   98     output->sink.reset( parameterAsSink( parameters, output->name, context, output->destinationIdentifier, source->fields(), source->wkbType(), source->sourceCrs() ) );
 
  101     output->expression.prepare( &expressionContext );
 
  104   long count = source->featureCount();
 
  109   double step = count > 0 ? 100.0 / count : 1;
 
  121     for ( Output *output : std::as_const( mOutputs ) )
 
  123       if ( output->expression.evaluate( &expressionContext ).toBool() )
 
  134   for ( 
const Output *output : std::as_const( mOutputs ) )
 
  136     outputs.insert( output->name, output->destinationIdentifier );
 
  138   qDeleteAll( mOutputs );
 
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
void setFeature(const QgsFeature &feature)
Convenience function for setting a feature for the context.
Wrapper for iterator of features from vector data provider or vector layer.
bool nextFeature(QgsFeature &f)
This class wraps a request for features to a vector layer (or directly its vector data provider).
@ FastInsert
Use faster inserts, at the cost of updating the passed features to reflect changes made at the provid...
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
bool isCanceled() const SIP_HOLDGIL
Tells whether the operation has been canceled already.
void setProgress(double progress)
Sets the current progress for the feedback object.
Contains information about the context in which a processing algorithm is executed.
Custom exception class for processing related exceptions.
@ FlagSkipGeometryValidityChecks
Invalid geometry checks should always be skipped. This flag can be useful for algorithms which always...
Base class for providing feedback from a processing algorithm.
@ FlagIsModelOutput
Destination parameter is final output. The parameter name will be used.
@ FlagHidden
Parameter is hidden and should not be shown to users.
void setFlags(Flags flags)
Sets the flags associated with the parameter.
A feature sink output for processing algorithms.
An input feature source (such as vector layers) parameter for processing algorithms.