34 , mLastRectangleValid( false )
35 , mBandsChanged( false )
50 connect( mUserDefinedRadioButton, &QRadioButton::toggled,
this, &QgsRasterMinMaxWidget::mUserDefinedRadioButton_toggled );
51 connect( mMinMaxRadioButton, &QRadioButton::toggled,
this, &QgsRasterMinMaxWidget::mMinMaxRadioButton_toggled );
52 connect( mStdDevRadioButton, &QRadioButton::toggled,
this, &QgsRasterMinMaxWidget::mStdDevRadioButton_toggled );
53 connect( mCumulativeCutRadioButton, &QRadioButton::toggled,
this, &QgsRasterMinMaxWidget::mCumulativeCutRadioButton_toggled );
54 connect( mStatisticsExtentCombo,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsRasterMinMaxWidget::mStatisticsExtentCombo_currentIndexChanged );
55 connect( mCumulativeCutLowerDoubleSpinBox,
static_cast<void ( QDoubleSpinBox::* )(
double )
>( &QDoubleSpinBox::valueChanged ),
this, &QgsRasterMinMaxWidget::mCumulativeCutLowerDoubleSpinBox_valueChanged );
56 connect( mCumulativeCutUpperDoubleSpinBox,
static_cast<void ( QDoubleSpinBox::* )(
double )
>( &QDoubleSpinBox::valueChanged ),
this, &QgsRasterMinMaxWidget::mCumulativeCutUpperDoubleSpinBox_valueChanged );
57 connect( mStdDevSpinBox,
static_cast<void ( QDoubleSpinBox::* )(
double )
>( &QDoubleSpinBox::valueChanged ),
this, &QgsRasterMinMaxWidget::mStdDevSpinBox_valueChanged );
58 connect( cboAccuracy,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsRasterMinMaxWidget::cboAccuracy_currentIndexChanged );
119 mUserDefinedRadioButton->setChecked(
true );
123 mMinMaxRadioButton->setChecked(
true );
127 mStdDevRadioButton->setChecked(
true );
131 mCumulativeCutRadioButton->setChecked(
true );
135 mStatisticsExtentCombo->setCurrentIndex( mStatisticsExtentCombo->findData( QVariant::fromValue(
minMaxOrigin.extent() ) ) );
137 mCumulativeCutLowerDoubleSpinBox->setValue( 100.0 *
minMaxOrigin.cumulativeCutLower() );
138 mCumulativeCutUpperDoubleSpinBox->setValue( 100.0 *
minMaxOrigin.cumulativeCutUpper() );
139 mStdDevSpinBox->setValue(
minMaxOrigin.stdDevFactor() );
141 cboAccuracy->setCurrentIndex( cboAccuracy->findData( QVariant::fromValue(
minMaxOrigin.statAccuracy() ) ) );
174 if ( !mLayer->dataProvider() )
181 if ( mLastRectangleValid && mLastRectangle == myExtent && mLastMinMaxOrigin == newMinMaxOrigin && !mBandsChanged )
183 QgsDebugMsgLevel( QStringLiteral(
"Does not need to redo statistics computations" ), 2 );
187 mLastRectangleValid =
true;
188 mLastRectangle = myExtent;
189 mLastMinMaxOrigin = newMinMaxOrigin;
190 mBandsChanged =
false;
192 for (
const int myBand : std::as_const( mBands ) )
195 if ( myBand < 1 || myBand > mLayer->dataProvider()->bandCount() )
199 double myMin = std::numeric_limits<double>::quiet_NaN();
200 double myMax = std::numeric_limits<double>::quiet_NaN();
202 bool updateMinMax =
false;
203 if ( mCumulativeCutRadioButton->isChecked() )
206 const double myLower = mCumulativeCutLowerDoubleSpinBox->value() / 100.0;
207 const double myUpper = mCumulativeCutUpperDoubleSpinBox->value() / 100.0;
208 mLayer->dataProvider()->cumulativeCut( myBand, myLower, myUpper, myMin, myMax, myExtent, mySampleSize );
210 else if ( mMinMaxRadioButton->isChecked() )
218 else if ( mStdDevRadioButton->isChecked() )
222 const double myStdDev = mStdDevSpinBox->value();
223 myMin = myRasterBandStats.
mean - ( myStdDev * myRasterBandStats.
stdDev );
224 myMax = myRasterBandStats.
mean + ( myStdDev * myRasterBandStats.
stdDev );
228 emit
load( myBand, myMin, myMax );