Skip to content

Commit

Permalink
Fix Cell Statistics NoData handling
Browse files Browse the repository at this point in the history
Fixes #40092
  • Loading branch information
root676 committed Nov 17, 2020
1 parent a503047 commit 13a43de
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 1 deletion.
7 changes: 6 additions & 1 deletion src/analysis/processing/qgsalgorithmcellstatistics.cpp
Expand Up @@ -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 )
{
Expand Down Expand Up @@ -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 );
Expand Down
11 changes: 11 additions & 0 deletions tests/src/analysis/testqgsprocessingalgs.cpp
Expand Up @@ -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()
Expand Down
Binary file not shown.
10 changes: 10 additions & 0 deletions tests/testdata/raster/statisticsRas4_float64.asc
@@ -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

0 comments on commit 13a43de

Please sign in to comment.