36  , mLastRectangleValid( false )
 
   37  , mBandsChanged( false )
 
   45  connect( mUserDefinedRadioButton, &QRadioButton::toggled, 
this, &QgsRasterMinMaxWidget::mUserDefinedRadioButton_toggled );
 
   46  connect( mMinMaxRadioButton, &QRadioButton::toggled, 
this, &QgsRasterMinMaxWidget::mMinMaxRadioButton_toggled );
 
   47  connect( mStdDevRadioButton, &QRadioButton::toggled, 
this, &QgsRasterMinMaxWidget::mStdDevRadioButton_toggled );
 
   48  connect( mCumulativeCutRadioButton, &QRadioButton::toggled, 
this, &QgsRasterMinMaxWidget::mCumulativeCutRadioButton_toggled );
 
   49  connect( mStatisticsExtentCombo, 
static_cast<void ( QComboBox::* )( 
int )
>( &QComboBox::currentIndexChanged ), 
this, &QgsRasterMinMaxWidget::mStatisticsExtentCombo_currentIndexChanged );
 
   50  connect( mCumulativeCutLowerDoubleSpinBox, 
static_cast < void ( QDoubleSpinBox::* )( 
double ) 
> ( &QDoubleSpinBox::valueChanged ), 
this, &QgsRasterMinMaxWidget::mCumulativeCutLowerDoubleSpinBox_valueChanged );
 
   51  connect( mCumulativeCutUpperDoubleSpinBox, 
static_cast < void ( QDoubleSpinBox::* )( 
double ) 
> ( &QDoubleSpinBox::valueChanged ), 
this, &QgsRasterMinMaxWidget::mCumulativeCutUpperDoubleSpinBox_valueChanged );
 
   52  connect( mStdDevSpinBox, 
static_cast < void ( QDoubleSpinBox::* )( 
double ) 
> ( &QDoubleSpinBox::valueChanged ), 
this, &QgsRasterMinMaxWidget::mStdDevSpinBox_valueChanged );
 
   53  connect( cboAccuracy, 
static_cast<void ( QComboBox::* )( 
int )
>( &QComboBox::currentIndexChanged ), 
this, &QgsRasterMinMaxWidget::cboAccuracy_currentIndexChanged );
 
   71  mBandsChanged = bands != mBands;
 
   77  const int nExtentIdx = mStatisticsExtentCombo->currentIndex();
 
   81  if ( mLayer && mCanvas )
 
   91  mUserDefinedRadioButton->setChecked( 
true );
 
   95void QgsRasterMinMaxWidget::mUserDefinedRadioButton_toggled( 
bool toggled )
 
   97  mStatisticsExtentCombo->setEnabled( !toggled );
 
   98  cboAccuracy->setEnabled( !toggled );
 
  107      mUserDefinedRadioButton->setChecked( 
true );
 
  111      mMinMaxRadioButton->setChecked( 
true );
 
  115      mStdDevRadioButton->setChecked( 
true );
 
  119      mCumulativeCutRadioButton->setChecked( 
true );
 
  149  if ( mMinMaxRadioButton->isChecked() )
 
  151  else if ( mStdDevRadioButton->isChecked() )
 
  153  else if ( mCumulativeCutRadioButton->isChecked() )
 
  158  switch ( mStatisticsExtentCombo->currentIndex() )
 
  172  if ( cboAccuracy->currentIndex() == 0 )
 
  178    mCumulativeCutLowerDoubleSpinBox->value() / 100.0 );
 
  180    mCumulativeCutUpperDoubleSpinBox->value() / 100.0 );
 
  196  if ( mLastRectangleValid && mLastRectangle == myExtent &&
 
  197       mLastMinMaxOrigin == newMinMaxOrigin &&
 
  200    QgsDebugMsgLevel( QStringLiteral( 
"Does not need to redo statistics computations" ), 2 );
 
  204  mLastRectangleValid = 
true;
 
  205  mLastRectangle = myExtent;
 
  206  mLastMinMaxOrigin = newMinMaxOrigin;
 
  207  mBandsChanged = 
false;
 
  209  for ( 
const int myBand : std::as_const( mBands ) )
 
  216    double myMin = std::numeric_limits<double>::quiet_NaN();
 
  217    double myMax = std::numeric_limits<double>::quiet_NaN();
 
  219    bool updateMinMax = 
false;
 
  220    if ( mCumulativeCutRadioButton->isChecked() )
 
  223      const double myLower = mCumulativeCutLowerDoubleSpinBox->value() / 100.0;
 
  224      const double myUpper = mCumulativeCutUpperDoubleSpinBox->value() / 100.0;
 
  227    else if ( mMinMaxRadioButton->isChecked() )
 
  235    else if ( mStdDevRadioButton->isChecked() )
 
  239      const double myStdDev = mStdDevSpinBox->value();
 
  240      myMin = myRasterBandStats.
mean - ( myStdDev * myRasterBandStats.
stdDev );
 
  241      myMax = myRasterBandStats.
mean + ( myStdDev * myRasterBandStats.
stdDev );
 
  245      emit 
load( myBand, myMin, myMax );
 
@ MaximumValue
Reset value to maximum()
 
Map canvas is a class for displaying all GIS data types on a canvas.
 
const QgsMapSettings & mapSettings() const
Gets access to properties used for map rendering.
 
QgsRectangle extent() const
Returns the current zoom extent of the map canvas.
 
QgsRectangle outputExtentToLayerExtent(const QgsMapLayer *layer, QgsRectangle extent) const
transform bounding box from output CRS to layer's CRS
 
The RasterBandStats struct is a container for statistics about a single raster band.
 
double mean
The mean cell value for the band. NO_DATA values are excluded.
 
double stdDev
The standard deviation of the cell values.
 
double minimumValue
The minimum cell value in the raster band.
 
double maximumValue
The maximum cell value in the raster band.
 
virtual void cumulativeCut(int bandNo, double lowerCount, double upperCount, double &lowerValue, double &upperValue, const QgsRectangle &extent=QgsRectangle(), int sampleSize=0)
Find values for cumulative pixel count cut.
 
virtual int bandCount() const =0
Gets number of bands.
 
virtual QgsRasterBandStats bandStatistics(int bandNo, int stats=QgsRasterBandStats::All, const QgsRectangle &extent=QgsRectangle(), int sampleSize=0, QgsRasterBlockFeedback *feedback=nullptr)
Returns the band statistics.
 
Represents a raster layer.
 
QgsRasterDataProvider * dataProvider() override
Returns the source data provider.
 
This class describes the origin of min/max values.
 
void setExtent(QgsRasterMinMaxOrigin::Extent extent)
Sets the extent.
 
QgsRasterMinMaxOrigin::StatAccuracy statAccuracy() const
Returns the raster statistic accuracy.
 
double cumulativeCutLower() const
Returns the lower bound of cumulative cut method (between 0 and 1).
 
@ Estimated
Approximated statistics.
 
QgsRasterMinMaxOrigin::Limits limits() const
Returns the raster limits.
 
double stdDevFactor() const
Returns the factor f so that the min/max range is [ mean - f * stddev , mean + f * stddev ].
 
void setLimits(QgsRasterMinMaxOrigin::Limits limits)
Sets the limits.
 
void setStatAccuracy(QgsRasterMinMaxOrigin::StatAccuracy accuracy)
Sets the statistics accuracy.
 
@ UpdatedCanvas
Constantly updated extent of the canvas is used to compute statistics.
 
@ CurrentCanvas
Current extent of the canvas (at the time of computation) is used to compute statistics.
 
@ WholeRaster
Whole raster is used to compute statistics.
 
void setCumulativeCutUpper(double val)
Sets the upper bound of cumulative cut method (between 0 and 1).
 
void setStdDevFactor(double val)
Sets the factor f so that the min/max range is [ mean - f * stddev , mean + f * stddev ].
 
double cumulativeCutUpper() const
Returns the upper bound of cumulative cut method (between 0 and 1).
 
void setCumulativeCutLower(double val)
Sets the lower bound of cumulative cut method (between 0 and 1).
 
@ StdDev
Range is [ mean - stdDevFactor() * stddev, mean + stdDevFactor() * stddev ].
 
@ MinMax
Real min-max values.
 
@ CumulativeCut
Range is [ min + cumulativeCutLower() * (max - min), min + cumulativeCutUpper() * (max - min) ].
 
QgsRasterMinMaxOrigin::Extent extent() const
Returns the raster extent.
 
A rectangle specified with double values.
 
#define QgsDebugMsgLevel(str, level)