Fix Cell Statistics NoData handling

Fixes #40092
This commit is contained in:
Clemens Raffler 2020-11-17 22:10:49 +01:00 committed by GitHub
parent a50304789e
commit 13a43de935
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 27 additions and 1 deletions

View File

@ -277,7 +277,7 @@ QVariantMap QgsCellStatisticsAlgorithm::processAlgorithm( const QVariantMap &par
outputBlock->setValue( row, col, mNoDataValue );
}
}
else if ( !noDataInStack || mIgnoreNoData )
else if ( !noDataInStack || ( mIgnoreNoData && cellValueStackSize > 0 ) )
{
switch ( method )
{
@ -320,6 +320,11 @@ QVariantMap QgsCellStatisticsAlgorithm::processAlgorithm( const QVariantMap &par
}
outputBlock->setValue( row, col, result );
}
else
{
//result is NoData if cellValueStack contains no valid values, eg. all cellValues are NoData
outputBlock->setValue( row, col, mNoDataValue );
}
}
}
provider->writeBlock( outputBlock.get(), 1, iterLeft, iterTop );

View File

@ -2360,6 +2360,17 @@ void TestQgsProcessingAlgs::cellStatistics_data()
<< QStringLiteral( "/cellstatistics_median_result_fourLayers_float32.tif" )
<< Qgis::Float32;
/*
* Testcase 19: sum with raster cell stacks containing only nodata
*/
QTest::newRow( "testcase_19" )
<< QStringList( {"/raster/statisticsRas1_float64.asc", "/raster/statisticsRas1_float64.asc"} )
<< QStringLiteral( "/raster/statisticsRas3_int32.tif" )
<< 0
<< true
<< QStringLiteral( "/cellstatistics_sum_result_ignoreNoData.tif" )
<< Qgis::Float64;
}
void TestQgsProcessingAlgs::cellStatistics()

View File

@ -0,0 +1,10 @@
ncols 4
nrows 4
xllcorner 0
yllcorner 0
cellsize 1
nodata_value -9999.0
1.0 1.0 0.0 0.0
-9999.0 1.0 2.0 2.0
4.0 0.0 0.0 2.0
4.0 0.0 1.0 1.0