Skip to content

Commit

Permalink
Use standard method to get layers in raster band stat function
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Dec 13, 2022
1 parent 2f251b9 commit 03683a8
Showing 1 changed file with 3 additions and 14 deletions.
17 changes: 3 additions & 14 deletions src/core/expression/qgsexpressionfunction.cpp
Expand Up @@ -6174,20 +6174,9 @@ static QVariant fcnDecodeUri( const QVariantList &values, const QgsExpressionCon
}
}

static QVariant fcnGetRasterBandStat( const QVariantList &values, const QgsExpressionContext *, QgsExpression *parent, const QgsExpressionNodeFunction * )
static QVariant fcnGetRasterBandStat( const QVariantList &values, const QgsExpressionContext *context, QgsExpression *parent, const QgsExpressionNodeFunction * )
{
QString layerIdOrName = QgsExpressionUtils::getStringValue( values.at( 0 ), parent );

//try to find a matching layer by name
QgsMapLayer *layer = QgsProject::instance()->mapLayer( layerIdOrName ); //search by id first
if ( !layer )
{
QList<QgsMapLayer *> layersByName = QgsProject::instance()->mapLayersByName( layerIdOrName );
if ( !layersByName.isEmpty() )
{
layer = layersByName.at( 0 );
}
}
QgsMapLayer *layer = QgsExpressionUtils::getMapLayer( values.at( 0 ), context, parent );

if ( !layer )
return QVariant();
Expand All @@ -6199,7 +6188,7 @@ static QVariant fcnGetRasterBandStat( const QVariantList &values, const QgsExpre
int band = QgsExpressionUtils::getNativeIntValue( values.at( 1 ), parent );
if ( band < 1 || band > rl->bandCount() )
{
parent->setEvalErrorString( QObject::tr( "Invalid band number %1 for layer %2" ).arg( band ).arg( layerIdOrName ) );
parent->setEvalErrorString( QObject::tr( "Invalid band number %1 for layer" ).arg( band ) );
return QVariant();
}

Expand Down

0 comments on commit 03683a8

Please sign in to comment.