Skip to content

Commit

Permalink
fix cell statistics median method and add tests
Browse files Browse the repository at this point in the history
  • Loading branch information
github-actions[bot] authored and nyalldawson committed Nov 7, 2020
1 parent 25d3b95 commit dcc26ee
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 5 deletions.
10 changes: 5 additions & 5 deletions src/analysis/processing/qgsrasteranalysisutils.cpp
Expand Up @@ -329,14 +329,14 @@ double QgsRasterAnalysisUtils::meanFromCellValues( std::vector<double> cellValue
double QgsRasterAnalysisUtils::medianFromCellValues( std::vector<double> cellValues, int stackSize )
{
std::sort( cellValues.begin(), cellValues.end() );
int medianElementIdx = stackSize / 2;
if ( stackSize % 2 == 0 )
bool even = ( stackSize % 2 ) < 1;
if ( even )
{
return ( cellValues[medianElementIdx] + cellValues[medianElementIdx + 1] ) / 2.0;
return ( cellValues[stackSize / 2 - 1] + cellValues[stackSize / 2] ) / 2.0;
}
else
else //odd
{
return cellValues[medianElementIdx];
return cellValues[( stackSize + 1 ) / 2 - 1];
}
}

Expand Down
11 changes: 11 additions & 0 deletions tests/src/analysis/testqgsprocessingalgs.cpp
Expand Up @@ -2298,6 +2298,17 @@ void TestQgsProcessingAlgs::cellStatistics_data()
<< QStringLiteral( "/cellstatistics_variance_result_float32.tif" )
<< Qgis::Float32;

/*
* Testcase 17: median with even number of layers
*/
QTest::newRow( "testcase_17" )
<< QStringList( {"/raster/statisticsRas1_float64.asc", "/raster/statisticsRas1_float64.asc", "/raster/statisticsRas2_float64.asc", "/raster/statisticsRas3_float64.asc"} )
<< QStringLiteral( "/raster/statisticsRas1_float64.asc" )
<< 3
<< false
<< QStringLiteral( "/cellstatistics_median_result_fourLayers.tif" )
<< Qgis::Float64;

}

void TestQgsProcessingAlgs::cellStatistics()
Expand Down
Binary file not shown.

0 comments on commit dcc26ee

Please sign in to comment.