mirror of
https://github.com/qgis/QGIS.git
synced 2025-03-12 00:02:25 -04:00
add model variables in expressionContext scope to be mapped in case used in symbolic formulas
This commit is contained in:
parent
2810c92f01
commit
0acb766412
@ -273,6 +273,7 @@ QVariantMap QgsProcessingModelAlgorithm::processAlgorithm( const QVariantMap &pa
|
||||
QgsExpressionContext expContext = baseContext;
|
||||
expContext << QgsExpressionContextUtils::processingAlgorithmScope( child.algorithm(), parameters, context )
|
||||
<< createExpressionContextScopeForChildAlgorithm( childId, context, parameters, childResults );
|
||||
context.setExpressionContext( expContext );
|
||||
|
||||
QVariantMap childParams = parametersForChildAlgorithm( child, parameters, childResults, expContext );
|
||||
if ( feedback )
|
||||
@ -530,6 +531,9 @@ QMap<QString, QgsProcessingModelAlgorithm::VariableDefinition> QgsProcessingMode
|
||||
if ( !layer )
|
||||
layer = QgsProcessingUtils::mapLayerFromString( value.toString(), context );
|
||||
|
||||
// TODO: should I tag variable name with type? e.g. %1_maplayer
|
||||
variables.insert( safeName( QStringLiteral( "%1" ).arg( name ) ), VariableDefinition( value, source, description ) );
|
||||
|
||||
variables.insert( safeName( QStringLiteral( "%1_minx" ).arg( name ) ), VariableDefinition( layer ? layer->extent().xMinimum() : QVariant(), source, QObject::tr( "Minimum X of %1" ).arg( description ) ) );
|
||||
variables.insert( safeName( QStringLiteral( "%1_miny" ).arg( name ) ), VariableDefinition( layer ? layer->extent().yMinimum() : QVariant(), source, QObject::tr( "Minimum Y of %1" ).arg( description ) ) );
|
||||
variables.insert( safeName( QStringLiteral( "%1_maxx" ).arg( name ) ), VariableDefinition( layer ? layer->extent().xMaximum() : QVariant(), source, QObject::tr( "Maximum X of %1" ).arg( description ) ) );
|
||||
@ -595,6 +599,9 @@ QMap<QString, QgsProcessingModelAlgorithm::VariableDefinition> QgsProcessingMode
|
||||
featureSource = vl;
|
||||
}
|
||||
|
||||
// TODO: should I tag variable name with type? e.g. %1_feature
|
||||
variables.insert( safeName( QStringLiteral( "%1" ).arg( name ) ), VariableDefinition( value, source, description ) );
|
||||
|
||||
variables.insert( safeName( QStringLiteral( "%1_minx" ).arg( name ) ), VariableDefinition( featureSource ? featureSource->sourceExtent().xMinimum() : QVariant(), source, QObject::tr( "Minimum X of %1" ).arg( description ) ) );
|
||||
variables.insert( safeName( QStringLiteral( "%1_miny" ).arg( name ) ), VariableDefinition( featureSource ? featureSource->sourceExtent().yMinimum() : QVariant(), source, QObject::tr( "Minimum Y of %1" ).arg( description ) ) );
|
||||
variables.insert( safeName( QStringLiteral( "%1_maxx" ).arg( name ) ), VariableDefinition( featureSource ? featureSource->sourceExtent().xMaximum() : QVariant(), source, QObject::tr( "Maximum X of %1" ).arg( description ) ) );
|
||||
@ -606,7 +613,7 @@ QMap<QString, QgsProcessingModelAlgorithm::VariableDefinition> QgsProcessingMode
|
||||
|
||||
QgsExpressionContextScope *QgsProcessingModelAlgorithm::createExpressionContextScopeForChildAlgorithm( const QString &childId, QgsProcessingContext &context, const QVariantMap &modelParameters, const QVariantMap &results ) const
|
||||
{
|
||||
std::unique_ptr< QgsExpressionContextScope > scope( new QgsExpressionContextScope() );
|
||||
std::unique_ptr< QgsExpressionContextScope > scope( new QgsExpressionContextScope( QStringLiteral( "algorithm_inputs" ) ) );
|
||||
QMap< QString, QgsProcessingModelAlgorithm::VariableDefinition> variables = variablesForChildAlgorithm( childId, context, modelParameters, results );
|
||||
QMap< QString, QgsProcessingModelAlgorithm::VariableDefinition>::const_iterator varIt = variables.constBegin();
|
||||
for ( ; varIt != variables.constEnd(); ++varIt )
|
||||
|
Loading…
x
Reference in New Issue
Block a user