51 connect( mUserDefinedRadioButton, &QRadioButton::toggled,
this, &QgsRasterMinMaxWidget::mUserDefinedRadioButton_toggled );
52 connect( mMinMaxRadioButton, &QRadioButton::toggled,
this, &QgsRasterMinMaxWidget::mMinMaxRadioButton_toggled );
53 connect( mStdDevRadioButton, &QRadioButton::toggled,
this, &QgsRasterMinMaxWidget::mStdDevRadioButton_toggled );
54 connect( mCumulativeCutRadioButton, &QRadioButton::toggled,
this, &QgsRasterMinMaxWidget::mCumulativeCutRadioButton_toggled );
55 connect( mStatisticsExtentCombo,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsRasterMinMaxWidget::mStatisticsExtentCombo_currentIndexChanged );
56 connect( mCumulativeCutLowerDoubleSpinBox,
static_cast<void ( QDoubleSpinBox::* )(
double )
>( &QDoubleSpinBox::valueChanged ),
this, &QgsRasterMinMaxWidget::mCumulativeCutLowerDoubleSpinBox_valueChanged );
57 connect( mCumulativeCutUpperDoubleSpinBox,
static_cast<void ( QDoubleSpinBox::* )(
double )
>( &QDoubleSpinBox::valueChanged ),
this, &QgsRasterMinMaxWidget::mCumulativeCutUpperDoubleSpinBox_valueChanged );
58 connect( mStdDevSpinBox,
static_cast<void ( QDoubleSpinBox::* )(
double )
>( &QDoubleSpinBox::valueChanged ),
this, &QgsRasterMinMaxWidget::mStdDevSpinBox_valueChanged );
59 connect( cboAccuracy,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsRasterMinMaxWidget::cboAccuracy_currentIndexChanged );
120 mUserDefinedRadioButton->setChecked(
true );
124 mMinMaxRadioButton->setChecked(
true );
128 mStdDevRadioButton->setChecked(
true );
132 mCumulativeCutRadioButton->setChecked(
true );
136 mStatisticsExtentCombo->setCurrentIndex( mStatisticsExtentCombo->findData( QVariant::fromValue(
minMaxOrigin.extent() ) ) );
138 mCumulativeCutLowerDoubleSpinBox->setValue( 100.0 *
minMaxOrigin.cumulativeCutLower() );
139 mCumulativeCutUpperDoubleSpinBox->setValue( 100.0 *
minMaxOrigin.cumulativeCutUpper() );
140 mStdDevSpinBox->setValue(
minMaxOrigin.stdDevFactor() );
142 cboAccuracy->setCurrentIndex( cboAccuracy->findData( QVariant::fromValue(
minMaxOrigin.statAccuracy() ) ) );
175 if ( !mLayer->dataProvider() )
182 if ( mLastRectangleValid && mLastRectangle == myExtent && mLastMinMaxOrigin == newMinMaxOrigin && !mBandsChanged )
188 mLastRectangleValid =
true;
189 mLastRectangle = myExtent;
190 mLastMinMaxOrigin = newMinMaxOrigin;
191 mBandsChanged =
false;
193 for (
const int myBand : std::as_const( mBands ) )
196 if ( myBand < 1 || myBand > mLayer->dataProvider()->bandCount() )
200 double myMin = std::numeric_limits<double>::quiet_NaN();
201 double myMax = std::numeric_limits<double>::quiet_NaN();
203 bool updateMinMax =
false;
204 if ( mCumulativeCutRadioButton->isChecked() )
207 const double myLower = mCumulativeCutLowerDoubleSpinBox->value() / 100.0;
208 const double myUpper = mCumulativeCutUpperDoubleSpinBox->value() / 100.0;
209 mLayer->dataProvider()->cumulativeCut( myBand, myLower, myUpper, myMin, myMax, myExtent, mySampleSize );
211 else if ( mMinMaxRadioButton->isChecked() )
219 else if ( mStdDevRadioButton->isChecked() )
223 const double myStdDev = mStdDevSpinBox->value();
224 myMin = myRasterBandStats.
mean - ( myStdDev * myRasterBandStats.
stdDev );
225 myMax = myRasterBandStats.
mean + ( myStdDev * myRasterBandStats.
stdDev );
229 emit
load( myBand, myMin, myMax );