From 033dba2b22b752a9ee82421e834278b52617ba97 Mon Sep 17 00:00:00 2001 From: root676 Date: Wed, 13 Jan 2021 21:53:07 +0100 Subject: [PATCH] change function signature to use references on cellValueStacks --- .../processing/qgsrasteranalysisutils.cpp | 32 +++++++++---------- .../processing/qgsrasteranalysisutils.h | 30 ++++++++--------- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/src/analysis/processing/qgsrasteranalysisutils.cpp b/src/analysis/processing/qgsrasteranalysisutils.cpp index d81b9cbf9e7..e7b39731217 100644 --- a/src/analysis/processing/qgsrasteranalysisutils.cpp +++ b/src/analysis/processing/qgsrasteranalysisutils.cpp @@ -319,14 +319,14 @@ std::vector QgsRasterAnalysisUtils::getCellValuesFromBlockStack( const s return cellValues; } -double QgsRasterAnalysisUtils::meanFromCellValues( std::vector cellValues, int stackSize ) +double QgsRasterAnalysisUtils::meanFromCellValues( std::vector &cellValues, int stackSize ) { double sum = std::accumulate( cellValues.begin(), cellValues.end(), 0.0 ); double mean = sum / static_cast( stackSize ); return mean; } -double QgsRasterAnalysisUtils::medianFromCellValues( std::vector cellValues, int stackSize ) +double QgsRasterAnalysisUtils::medianFromCellValues( std::vector &cellValues, int stackSize ) { std::sort( cellValues.begin(), cellValues.end() ); bool even = ( stackSize % 2 ) < 1; @@ -341,14 +341,14 @@ double QgsRasterAnalysisUtils::medianFromCellValues( std::vector cellVal } -double QgsRasterAnalysisUtils::stddevFromCellValues( std::vector cellValues, int stackSize ) +double QgsRasterAnalysisUtils::stddevFromCellValues( std::vector &cellValues, int stackSize ) { double variance = varianceFromCellValues( cellValues, stackSize ); double stddev = std::sqrt( variance ); return stddev; } -double QgsRasterAnalysisUtils::varianceFromCellValues( std::vector cellValues, int stackSize ) +double QgsRasterAnalysisUtils::varianceFromCellValues( std::vector &cellValues, int stackSize ) { double mean = meanFromCellValues( cellValues, stackSize ); double accum = 0.0; @@ -360,17 +360,17 @@ double QgsRasterAnalysisUtils::varianceFromCellValues( std::vector cellV return variance; } -double QgsRasterAnalysisUtils::maximumFromCellValues( std::vector cellValues ) +double QgsRasterAnalysisUtils::maximumFromCellValues( std::vector &cellValues ) { return *std::max_element( cellValues.begin(), cellValues.end() ); } -double QgsRasterAnalysisUtils::minimumFromCellValues( std::vector cellValues ) +double QgsRasterAnalysisUtils::minimumFromCellValues( std::vector &cellValues ) { return *std::min_element( cellValues.begin(), cellValues.end() ); } -double QgsRasterAnalysisUtils::majorityFromCellValues( std::vector cellValues, const double noDataValue, int stackSize ) +double QgsRasterAnalysisUtils::majorityFromCellValues( std::vector &cellValues, const double noDataValue, int stackSize ) { if ( stackSize == 1 ) { @@ -418,7 +418,7 @@ double QgsRasterAnalysisUtils::majorityFromCellValues( std::vector cellV } } -double QgsRasterAnalysisUtils::minorityFromCellValues( std::vector cellValues, const double noDataValue, int stackSize ) +double QgsRasterAnalysisUtils::minorityFromCellValues( std::vector &cellValues, const double noDataValue, int stackSize ) { if ( stackSize == 1 ) { @@ -466,20 +466,20 @@ double QgsRasterAnalysisUtils::minorityFromCellValues( std::vector cellV } } -double QgsRasterAnalysisUtils::rangeFromCellValues( std::vector cellValues ) +double QgsRasterAnalysisUtils::rangeFromCellValues( std::vector &cellValues ) { double max = *std::max_element( cellValues.begin(), cellValues.end() ); double min = *std::min_element( cellValues.begin(), cellValues.end() ); return max - min; } -double QgsRasterAnalysisUtils::varietyFromCellValues( std::vector cellValues ) +double QgsRasterAnalysisUtils::varietyFromCellValues( std::vector &cellValues ) { std::unordered_set uniqueValues( cellValues.begin(), cellValues.end() ); return uniqueValues.size(); } -double QgsRasterAnalysisUtils::nearestRankPercentile( std::vector cellValues, int stackSize, double percentile ) +double QgsRasterAnalysisUtils::nearestRankPercentile( std::vector &cellValues, int stackSize, double percentile ) { //if percentile equals 0 -> pick the first element of the ordered list std::sort( cellValues.begin(), cellValues.end() ); @@ -487,13 +487,13 @@ double QgsRasterAnalysisUtils::nearestRankPercentile( std::vector cellVa int i = 0; if ( percentile > 0 ) { - i = static_cast( std::ceil( percentile * static_cast( stackSize ) ) - 1 ); + i = std::ceil( percentile * static_cast( stackSize ) ) - 1; } return cellValues[i]; } -double QgsRasterAnalysisUtils::interpolatedPercentileInc( std::vector cellValues, int stackSize, double percentile ) +double QgsRasterAnalysisUtils::interpolatedPercentileInc( std::vector &cellValues, int stackSize, double percentile ) { std::sort( cellValues.begin(), cellValues.end() ); double x = ( percentile * ( stackSize - 1 ) ); @@ -515,7 +515,7 @@ double QgsRasterAnalysisUtils::interpolatedPercentileInc( std::vector ce } } -double QgsRasterAnalysisUtils::interpolatedPercentileExc( std::vector cellValues, int stackSize, double percentile, double noDataValue ) +double QgsRasterAnalysisUtils::interpolatedPercentileExc( std::vector &cellValues, int stackSize, double percentile, double noDataValue ) { std::sort( cellValues.begin(), cellValues.end() ); double x = ( percentile * ( stackSize + 1 ) ); @@ -535,7 +535,7 @@ double QgsRasterAnalysisUtils::interpolatedPercentileExc( std::vector ce } } -double QgsRasterAnalysisUtils::interpolatedPercentRankInc( std::vector cellValues, int stackSize, double value, double noDataValue ) +double QgsRasterAnalysisUtils::interpolatedPercentRankInc( std::vector &cellValues, int stackSize, double value, double noDataValue ) { std::sort( cellValues.begin(), cellValues.end() ); @@ -562,7 +562,7 @@ double QgsRasterAnalysisUtils::interpolatedPercentRankInc( std::vector c } } -double QgsRasterAnalysisUtils::interpolatedPercentRankExc( std::vector cellValues, int stackSize, double value, double noDataValue ) +double QgsRasterAnalysisUtils::interpolatedPercentRankExc( std::vector &cellValues, int stackSize, double value, double noDataValue ) { std::sort( cellValues.begin(), cellValues.end() ); diff --git a/src/analysis/processing/qgsrasteranalysisutils.h b/src/analysis/processing/qgsrasteranalysisutils.h index 13915c69db0..17fa83abc2f 100644 --- a/src/analysis/processing/qgsrasteranalysisutils.h +++ b/src/analysis/processing/qgsrasteranalysisutils.h @@ -118,52 +118,52 @@ namespace QgsRasterAnalysisUtils /** * Returns the arithmetic mean from a vector of cell values */ - double meanFromCellValues( std::vector cellValues, int stackSize ); + double meanFromCellValues( std::vector &cellValues, int stackSize ); /** * Returns the median from a vector of cell values */ - double medianFromCellValues( std::vector cellValues, int stackSize ); + double medianFromCellValues( std::vector &cellValues, int stackSize ); /** * Returns the standard deviation from a vector of cell values */ - double stddevFromCellValues( std::vector cellValues, int stackSize ); + double stddevFromCellValues( std::vector &cellValues, int stackSize ); /** * Returns the variance from a vector of cell values */ - double varianceFromCellValues( std::vector cellValues, int stackSize ); + double varianceFromCellValues( std::vector &cellValues, int stackSize ); /** * Returns the maximum value from a vector of cell values */ - double maximumFromCellValues( std::vector cellValues ); + double maximumFromCellValues( std::vector &cellValues ); /** * Returns the minimum value from a vector of cell values */ - double minimumFromCellValues( std::vector cellValues ); + double minimumFromCellValues( std::vector &cellValues ); /** * Returns the majority value from a vector of cell values */ - double majorityFromCellValues( std::vector cellValues, const double noDataValue, int stackSize ); + double majorityFromCellValues( std::vector &cellValues, const double noDataValue, int stackSize ); /** * Returns the minority value from a vector of cell values */ - double minorityFromCellValues( std::vector cellValues, const double noDataValue, int stackSize ); + double minorityFromCellValues( std::vector &cellValues, const double noDataValue, int stackSize ); /** * Returns the range from a vector of cell values */ - double rangeFromCellValues( std::vector cellValues ); + double rangeFromCellValues( std::vector &cellValues ); /** * Returns the variety from a vector of cell values */ - double varietyFromCellValues( std::vector cellValues ); + double varietyFromCellValues( std::vector &cellValues ); enum CellValuePercentileMethods { @@ -176,21 +176,21 @@ namespace QgsRasterAnalysisUtils * Returns the nearest rank percentile from a vector of cellValues, * percentile parameter ranges between 0 and 1 */ - double nearestRankPercentile( std::vector cellValues, int stackSize, double percentile ); + double nearestRankPercentile( std::vector &cellValues, int stackSize, double percentile ); /** * Returns the linearly interpolated percentile inclusive from a vector of cellValues, * percentile parameter ranges between 0 and 1 inclusive * see LibreOffice Calc's or Microsoft Excel's PERCENTILE.INC() function */ - double interpolatedPercentileInc( std::vector cellValues, int stackSize, double percentile ); + double interpolatedPercentileInc( std::vector &cellValues, int stackSize, double percentile ); /** * Returns the linearly interpolated percentile inclusive from a vector of cellValues, * percentile parameter ranges between 0 and 1 exclusive * see LibreOffice Calc's or Microsoft Excel's PERCENTILE.EXC() function */ - double interpolatedPercentileExc( std::vector cellValues, int stackSize, double percentile, double noDataValue ); + double interpolatedPercentileExc( std::vector &cellValues, int stackSize, double percentile, double noDataValue ); enum CellValuePercentRankMethods { @@ -203,14 +203,14 @@ namespace QgsRasterAnalysisUtils * values outside the cellValue distribution (greater or smaller) will return noData * see LibreOffice Calc's or Microsoft Excel's PERCENTRANK.INC() function */ - double interpolatedPercentRankInc( std::vector cellValues, int stackSize, double value, double noDataValue ); + double interpolatedPercentRankInc( std::vector &cellValues, int stackSize, double value, double noDataValue ); /** * Returns the linearly interpolated percentrank exclusive of a value from a vector of cellValues, * values outside the cellValue distribution (greater or smaller) will return noData * see LibreOffice Calc's or Microsoft Excel's PERCENTRANK.EXC() function */ - double interpolatedPercentRankExc( std::vector cellValues, int stackSize, double value, double noDataValue ); + double interpolatedPercentRankExc( std::vector &cellValues, int stackSize, double value, double noDataValue ); }