mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-28 00:17:30 -05:00
change function signature to use references on cellValueStacks
This commit is contained in:
parent
a79cea5a25
commit
033dba2b22
@ -319,14 +319,14 @@ std::vector<double> QgsRasterAnalysisUtils::getCellValuesFromBlockStack( const s
|
||||
return cellValues;
|
||||
}
|
||||
|
||||
double QgsRasterAnalysisUtils::meanFromCellValues( std::vector<double> cellValues, int stackSize )
|
||||
double QgsRasterAnalysisUtils::meanFromCellValues( std::vector<double> &cellValues, int stackSize )
|
||||
{
|
||||
double sum = std::accumulate( cellValues.begin(), cellValues.end(), 0.0 );
|
||||
double mean = sum / static_cast<double>( stackSize );
|
||||
return mean;
|
||||
}
|
||||
|
||||
double QgsRasterAnalysisUtils::medianFromCellValues( std::vector<double> cellValues, int stackSize )
|
||||
double QgsRasterAnalysisUtils::medianFromCellValues( std::vector<double> &cellValues, int stackSize )
|
||||
{
|
||||
std::sort( cellValues.begin(), cellValues.end() );
|
||||
bool even = ( stackSize % 2 ) < 1;
|
||||
@ -341,14 +341,14 @@ double QgsRasterAnalysisUtils::medianFromCellValues( std::vector<double> cellVal
|
||||
}
|
||||
|
||||
|
||||
double QgsRasterAnalysisUtils::stddevFromCellValues( std::vector<double> cellValues, int stackSize )
|
||||
double QgsRasterAnalysisUtils::stddevFromCellValues( std::vector<double> &cellValues, int stackSize )
|
||||
{
|
||||
double variance = varianceFromCellValues( cellValues, stackSize );
|
||||
double stddev = std::sqrt( variance );
|
||||
return stddev;
|
||||
}
|
||||
|
||||
double QgsRasterAnalysisUtils::varianceFromCellValues( std::vector<double> cellValues, int stackSize )
|
||||
double QgsRasterAnalysisUtils::varianceFromCellValues( std::vector<double> &cellValues, int stackSize )
|
||||
{
|
||||
double mean = meanFromCellValues( cellValues, stackSize );
|
||||
double accum = 0.0;
|
||||
@ -360,17 +360,17 @@ double QgsRasterAnalysisUtils::varianceFromCellValues( std::vector<double> cellV
|
||||
return variance;
|
||||
}
|
||||
|
||||
double QgsRasterAnalysisUtils::maximumFromCellValues( std::vector<double> cellValues )
|
||||
double QgsRasterAnalysisUtils::maximumFromCellValues( std::vector<double> &cellValues )
|
||||
{
|
||||
return *std::max_element( cellValues.begin(), cellValues.end() );
|
||||
}
|
||||
|
||||
double QgsRasterAnalysisUtils::minimumFromCellValues( std::vector<double> cellValues )
|
||||
double QgsRasterAnalysisUtils::minimumFromCellValues( std::vector<double> &cellValues )
|
||||
{
|
||||
return *std::min_element( cellValues.begin(), cellValues.end() );
|
||||
}
|
||||
|
||||
double QgsRasterAnalysisUtils::majorityFromCellValues( std::vector<double> cellValues, const double noDataValue, int stackSize )
|
||||
double QgsRasterAnalysisUtils::majorityFromCellValues( std::vector<double> &cellValues, const double noDataValue, int stackSize )
|
||||
{
|
||||
if ( stackSize == 1 )
|
||||
{
|
||||
@ -418,7 +418,7 @@ double QgsRasterAnalysisUtils::majorityFromCellValues( std::vector<double> cellV
|
||||
}
|
||||
}
|
||||
|
||||
double QgsRasterAnalysisUtils::minorityFromCellValues( std::vector<double> cellValues, const double noDataValue, int stackSize )
|
||||
double QgsRasterAnalysisUtils::minorityFromCellValues( std::vector<double> &cellValues, const double noDataValue, int stackSize )
|
||||
{
|
||||
if ( stackSize == 1 )
|
||||
{
|
||||
@ -466,20 +466,20 @@ double QgsRasterAnalysisUtils::minorityFromCellValues( std::vector<double> cellV
|
||||
}
|
||||
}
|
||||
|
||||
double QgsRasterAnalysisUtils::rangeFromCellValues( std::vector<double> cellValues )
|
||||
double QgsRasterAnalysisUtils::rangeFromCellValues( std::vector<double> &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<double> cellValues )
|
||||
double QgsRasterAnalysisUtils::varietyFromCellValues( std::vector<double> &cellValues )
|
||||
{
|
||||
std::unordered_set<double> uniqueValues( cellValues.begin(), cellValues.end() );
|
||||
return uniqueValues.size();
|
||||
}
|
||||
|
||||
double QgsRasterAnalysisUtils::nearestRankPercentile( std::vector<double> cellValues, int stackSize, double percentile )
|
||||
double QgsRasterAnalysisUtils::nearestRankPercentile( std::vector<double> &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<double> cellVa
|
||||
int i = 0;
|
||||
if ( percentile > 0 )
|
||||
{
|
||||
i = static_cast<int>( std::ceil( percentile * static_cast<double>( stackSize ) ) - 1 );
|
||||
i = std::ceil( percentile * static_cast<double>( stackSize ) ) - 1;
|
||||
}
|
||||
|
||||
return cellValues[i];
|
||||
}
|
||||
|
||||
double QgsRasterAnalysisUtils::interpolatedPercentileInc( std::vector<double> cellValues, int stackSize, double percentile )
|
||||
double QgsRasterAnalysisUtils::interpolatedPercentileInc( std::vector<double> &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<double> ce
|
||||
}
|
||||
}
|
||||
|
||||
double QgsRasterAnalysisUtils::interpolatedPercentileExc( std::vector<double> cellValues, int stackSize, double percentile, double noDataValue )
|
||||
double QgsRasterAnalysisUtils::interpolatedPercentileExc( std::vector<double> &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<double> ce
|
||||
}
|
||||
}
|
||||
|
||||
double QgsRasterAnalysisUtils::interpolatedPercentRankInc( std::vector<double> cellValues, int stackSize, double value, double noDataValue )
|
||||
double QgsRasterAnalysisUtils::interpolatedPercentRankInc( std::vector<double> &cellValues, int stackSize, double value, double noDataValue )
|
||||
{
|
||||
std::sort( cellValues.begin(), cellValues.end() );
|
||||
|
||||
@ -562,7 +562,7 @@ double QgsRasterAnalysisUtils::interpolatedPercentRankInc( std::vector<double> c
|
||||
}
|
||||
}
|
||||
|
||||
double QgsRasterAnalysisUtils::interpolatedPercentRankExc( std::vector<double> cellValues, int stackSize, double value, double noDataValue )
|
||||
double QgsRasterAnalysisUtils::interpolatedPercentRankExc( std::vector<double> &cellValues, int stackSize, double value, double noDataValue )
|
||||
{
|
||||
std::sort( cellValues.begin(), cellValues.end() );
|
||||
|
||||
|
@ -118,52 +118,52 @@ namespace QgsRasterAnalysisUtils
|
||||
/**
|
||||
* Returns the arithmetic mean from a vector of cell values
|
||||
*/
|
||||
double meanFromCellValues( std::vector<double> cellValues, int stackSize );
|
||||
double meanFromCellValues( std::vector<double> &cellValues, int stackSize );
|
||||
|
||||
/**
|
||||
* Returns the median from a vector of cell values
|
||||
*/
|
||||
double medianFromCellValues( std::vector<double> cellValues, int stackSize );
|
||||
double medianFromCellValues( std::vector<double> &cellValues, int stackSize );
|
||||
|
||||
/**
|
||||
* Returns the standard deviation from a vector of cell values
|
||||
*/
|
||||
double stddevFromCellValues( std::vector<double> cellValues, int stackSize );
|
||||
double stddevFromCellValues( std::vector<double> &cellValues, int stackSize );
|
||||
|
||||
/**
|
||||
* Returns the variance from a vector of cell values
|
||||
*/
|
||||
double varianceFromCellValues( std::vector<double> cellValues, int stackSize );
|
||||
double varianceFromCellValues( std::vector<double> &cellValues, int stackSize );
|
||||
|
||||
/**
|
||||
* Returns the maximum value from a vector of cell values
|
||||
*/
|
||||
double maximumFromCellValues( std::vector<double> cellValues );
|
||||
double maximumFromCellValues( std::vector<double> &cellValues );
|
||||
|
||||
/**
|
||||
* Returns the minimum value from a vector of cell values
|
||||
*/
|
||||
double minimumFromCellValues( std::vector<double> cellValues );
|
||||
double minimumFromCellValues( std::vector<double> &cellValues );
|
||||
|
||||
/**
|
||||
* Returns the majority value from a vector of cell values
|
||||
*/
|
||||
double majorityFromCellValues( std::vector<double> cellValues, const double noDataValue, int stackSize );
|
||||
double majorityFromCellValues( std::vector<double> &cellValues, const double noDataValue, int stackSize );
|
||||
|
||||
/**
|
||||
* Returns the minority value from a vector of cell values
|
||||
*/
|
||||
double minorityFromCellValues( std::vector<double> cellValues, const double noDataValue, int stackSize );
|
||||
double minorityFromCellValues( std::vector<double> &cellValues, const double noDataValue, int stackSize );
|
||||
|
||||
/**
|
||||
* Returns the range from a vector of cell values
|
||||
*/
|
||||
double rangeFromCellValues( std::vector<double> cellValues );
|
||||
double rangeFromCellValues( std::vector<double> &cellValues );
|
||||
|
||||
/**
|
||||
* Returns the variety from a vector of cell values
|
||||
*/
|
||||
double varietyFromCellValues( std::vector<double> cellValues );
|
||||
double varietyFromCellValues( std::vector<double> &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<double> cellValues, int stackSize, double percentile );
|
||||
double nearestRankPercentile( std::vector<double> &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<double> cellValues, int stackSize, double percentile );
|
||||
double interpolatedPercentileInc( std::vector<double> &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<double> cellValues, int stackSize, double percentile, double noDataValue );
|
||||
double interpolatedPercentileExc( std::vector<double> &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<double> cellValues, int stackSize, double value, double noDataValue );
|
||||
double interpolatedPercentRankInc( std::vector<double> &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<double> cellValues, int stackSize, double value, double noDataValue );
|
||||
double interpolatedPercentRankExc( std::vector<double> &cellValues, int stackSize, double value, double noDataValue );
|
||||
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user