@@ -50,6 +50,16 @@ void QgsReclassifyAlgorithmBase::initAlgorithm( const QVariantMap &configuration
50
50
QObject::tr ( " Output no data value" ), QgsProcessingParameterNumber::Double, -9999 );
51
51
noDataValueParam->setFlags ( QgsProcessingParameterDefinition::FlagAdvanced );
52
52
addParameter ( noDataValueParam.release () );
53
+
54
+ std::unique_ptr< QgsProcessingParameterEnum > boundsHandling = qgis::make_unique< QgsProcessingParameterEnum >( QStringLiteral ( " RANGE_BOUNDARIES" ),
55
+ QObject::tr ( " Range boundaries" ), QStringList () << QObject::tr ( " min < value <= max" )
56
+ << QObject::tr ( " min <= value < max" )
57
+ << QObject::tr ( " min <= value <= max" )
58
+ << QObject::tr ( " min < value < max" ),
59
+ false , 0 );
60
+ boundsHandling->setFlags ( QgsProcessingParameterDefinition::FlagAdvanced );
61
+ addParameter ( boundsHandling.release () );
62
+
53
63
addParameter ( new QgsProcessingParameterRasterDestination ( QStringLiteral ( " OUTPUT" ), QObject::tr ( " Reclassified raster" ) ) );
54
64
}
55
65
@@ -71,6 +81,27 @@ bool QgsReclassifyAlgorithmBase::prepareAlgorithm( const QVariantMap ¶meters
71
81
72
82
mNoDataValue = parameterAsDouble ( parameters, QStringLiteral ( " NO_DATA" ), context );
73
83
84
+
85
+ int boundsType = parameterAsEnum ( parameters, QStringLiteral ( " RANGE_BOUNDARIES" ), context );
86
+ switch ( boundsType )
87
+ {
88
+ case 0 :
89
+ mBoundsType = QgsReclassifyUtils::RasterClass::IncludeMax;
90
+ break ;
91
+
92
+ case 1 :
93
+ mBoundsType = QgsReclassifyUtils::RasterClass::IncludeMin;
94
+ break ;
95
+
96
+ case 2 :
97
+ mBoundsType = QgsReclassifyUtils::RasterClass::IncludeMinAndMax;
98
+ break ;
99
+
100
+ case 3 :
101
+ mBoundsType = QgsReclassifyUtils::RasterClass::Exclusive;
102
+ break ;
103
+ }
104
+
74
105
return _prepareAlgorithm ( parameters, context, feedback );
75
106
}
76
107
@@ -167,7 +198,7 @@ bool QgsReclassifyByLayerAlgorithm::_prepareAlgorithm( const QVariantMap ¶me
167
198
return true ;
168
199
}
169
200
170
- QVector<QgsReclassifyUtils::RasterClass> QgsReclassifyByLayerAlgorithm::createClasses ( const QVariantMap &, QgsProcessingContext &, QgsProcessingFeedback * )
201
+ QVector<QgsReclassifyUtils::RasterClass> QgsReclassifyByLayerAlgorithm::createClasses ( QgsRasterRange::BoundsType boundsType, const QVariantMap &, QgsProcessingContext &, QgsProcessingFeedback * )
171
202
{
172
203
QVector< QgsReclassifyUtils::RasterClass > classes;
173
204
QgsFeature f;
@@ -184,7 +215,7 @@ QVector<QgsReclassifyUtils::RasterClass> QgsReclassifyByLayerAlgorithm::createCl
184
215
if ( !ok )
185
216
throw QgsProcessingException ( QObject::tr ( " Invalid output value: %1" ).arg ( f.attribute ( mValueFieldIdx ).toString () ) );
186
217
187
- classes << QgsReclassifyUtils::RasterClass ( minValue, maxValue, QgsRasterRange::IncludeMax , value );
218
+ classes << QgsReclassifyUtils::RasterClass ( minValue, maxValue, boundsType , value );
188
219
}
189
220
return classes;
190
221
}
@@ -233,7 +264,7 @@ bool QgsReclassifyByTableAlgorithm::_prepareAlgorithm( const QVariantMap &, QgsP
233
264
return true ;
234
265
}
235
266
236
- QVector<QgsReclassifyUtils::RasterClass> QgsReclassifyByTableAlgorithm::createClasses ( const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback * )
267
+ QVector<QgsReclassifyUtils::RasterClass> QgsReclassifyByTableAlgorithm::createClasses ( QgsReclassifyUtils::RasterClass::BoundsType boundsType, const QVariantMap ¶meters, QgsProcessingContext &context, QgsProcessingFeedback * )
237
268
{
238
269
const QVariantList table = parameterAsMatrix ( parameters, QStringLiteral ( " TABLE" ), context );
239
270
int rows = table.count () / 3 ;
@@ -251,7 +282,7 @@ QVector<QgsReclassifyUtils::RasterClass> QgsReclassifyByTableAlgorithm::createCl
251
282
if ( !ok )
252
283
throw QgsProcessingException ( QObject::tr ( " Invalid output value: %1" ).arg ( table.at ( row * 3 + 2 ).toString () ) );
253
284
254
- classes << QgsReclassifyUtils::RasterClass ( minValue, maxValue, QgsRasterRange::IncludeMax , value );
285
+ classes << QgsReclassifyUtils::RasterClass ( minValue, maxValue, boundsType , value );
255
286
}
256
287
return classes;
257
288
}
0 commit comments