QGIS API Documentation 3.99.0-Master (26c88405ac0)
Loading...
Searching...
No Matches
QgsClassificationMethod Class Referenceabstract

An abstract class for implementations of classification methods. More...

#include <qgsclassificationmethod.h>

Inheritance diagram for QgsClassificationMethod:

Public Types

enum  ClassPosition { LowerBound , Inner , UpperBound }
 Defines the class position. More...
typedef QFlags< MethodPropertyMethodProperties
enum  MethodProperty { NoFlag = 0 , ValuesNotRequired = 1 << 1 , SymmetricModeAvailable = 1 << 2 , IgnoresClassCount = 1 << 3 }
 Flags for the classification method. More...

Public Member Functions

 QgsClassificationMethod (MethodProperties properties=NoFlag, int codeComplexity=1)
 Creates a classification method.
virtual ~QgsClassificationMethod ()
Q_DECL_DEPRECATED QList< QgsClassificationRangeclasses (const QgsVectorLayer *layer, const QString &expression, int nclasses)
 This will calculate the classes for a given layer to define the classes.
QList< QgsClassificationRangeclasses (const QList< double > &values, int nclasses)
 This will calculate the classes for a list of values.
QList< QgsClassificationRangeclasses (double minimum, double maximum, int nclasses)
 This will calculate the classes for defined bounds without any values.
QList< QgsClassificationRangeclassesV2 (const QgsVectorLayer *layer, const QString &expression, int nclasses, QString &error)
 This will calculate the classes for a given layer to define the classes.
virtual std::unique_ptr< QgsClassificationMethodclone () const =0
 Returns a clone of the method.
int codeComplexity () const
 Code complexity as the exponent in Big O notation.
QgsClassificationMethod::MethodProperties flags () const
 Returns the classification flags.
virtual QIcon icon () const
 The icon of the method.
virtual QString id () const =0
 The id of the method as saved in the project, must be unique in registry.
QString labelFormat () const
 Returns the format of the label for the classes.
QString labelForRange (const QgsRendererRange &range, ClassPosition position=Inner) const
 Returns the label for a range.
virtual QString labelForRange (double lowerValue, double upperValue, ClassPosition position=Inner) const
 Returns the label for a range.
int labelPrecision () const
 Returns the precision for the formatting of the labels.
bool labelTrimTrailingZeroes () const
 Returns if the trailing 0 are trimmed in the label.
virtual QString name () const =0
 The readable and translate name of the method.
const QgsProcessingParameterDefinitionparameterDefinition (const QString &parameterName) const
 Returns the parameter from its name.
QgsProcessingParameterDefinitions parameterDefinitions () const
 Returns the list of parameters.
QVariantMap parameterValues () const
 Returns the values of the processing parameters.
virtual void readXml (const QDomElement &element, const QgsReadWriteContext &context)
 Reads extra information to apply it to the method.
QDomElement save (QDomDocument &doc, const QgsReadWriteContext &context) const
 Saves the method to a DOM element and return it.
void setLabelFormat (const QString &format)
 Defines the format of the labels for the classes, using %1 and %2 for the bounds.
void setLabelPrecision (int labelPrecision)
 Defines the precision for the formatting of the labels.
void setLabelTrimTrailingZeroes (bool trimTrailingZeroes)
 Defines if the trailing 0 are trimmed in the label.
void setParameterValues (const QVariantMap &values)
 Defines the values of the additional parameters.
void setSymmetricMode (bool enabled, double symmetryPoint=0, bool symmetryAstride=false)
 Defines if the symmetric mode is enables and configures its parameters.
bool symmetricModeAvailable () const
 Returns if the method supports symmetric calculation.
bool symmetricModeEnabled () const
 Returns if the symmetric mode is enabled.
bool symmetryAstride () const
 Returns if the symmetric mode is astride if true, it will remove the symmetry point break so that the 2 classes form only one.
double symmetryPoint () const
 Returns the symmetry point for symmetric mode.
virtual bool valuesRequired () const
 Returns if the method requires values to calculate the classes If not, bounds are sufficient.
virtual void writeXml (QDomElement &element, const QgsReadWriteContext &context) const
 Writes extra information about the method.

Static Public Member Functions

static std::unique_ptr< QgsClassificationMethodcreate (const QDomElement &element, const QgsReadWriteContext &context)
 Reads the DOM element and return a new classification method from it.
static void makeBreaksSymmetric (QList< double > &breaks, double symmetryPoint, bool astride)
 Remove the breaks that are above the existing opposite sign classes to keep colors symmetrically balanced around symmetryPoint Does not put a break on the symmetryPoint.
static QList< double > rangesToBreaks (const QList< QgsClassificationRange > &classes)
 Transforms a list of classes to a list of breaks.

Static Public Attributes

static const int MAX_PRECISION = 15
static const int MIN_PRECISION = -6

Protected Member Functions

void addParameter (QgsProcessingParameterDefinition *definition)
 Add a parameter to the method.
void copyBase (QgsClassificationMethod *c) const
 Copy the parameters (shall be used in clone implementation).
QString formatNumber (double value) const
 Format the number according to label properties.

Detailed Description

An abstract class for implementations of classification methods.

See also
QgsClassificationMethodRegistry
Since
QGIS 3.10

Definition at line 88 of file qgsclassificationmethod.h.

Member Typedef Documentation

◆ MethodProperties

Member Enumeration Documentation

◆ ClassPosition

Defines the class position.

Enumerator
LowerBound 

The class is at the lower bound.

Inner 

The class is not at a bound.

UpperBound 

The class is at the upper bound.

Definition at line 124 of file qgsclassificationmethod.h.

◆ MethodProperty

Flags for the classification method.

Enumerator
NoFlag 

No flag.

ValuesNotRequired 

Deprecated since QGIS 3.12.

SymmetricModeAvailable 

This allows using symmetric classification.

IgnoresClassCount 

The classification method does not compute classes based on a class count.

Since
QGIS 3.26

Definition at line 113 of file qgsclassificationmethod.h.

Constructor & Destructor Documentation

◆ QgsClassificationMethod()

QgsClassificationMethod::QgsClassificationMethod ( MethodProperties properties = NoFlag,
int codeComplexity = 1 )
explicit

Creates a classification method.

Parameters
propertiesThe properties of the implemented method
codeComplexityas the exponent in the big O notation

Definition at line 42 of file qgsclassificationmethod.cpp.

◆ ~QgsClassificationMethod()

QgsClassificationMethod::~QgsClassificationMethod ( )
virtual

Definition at line 49 of file qgsclassificationmethod.cpp.

Member Function Documentation

◆ addParameter()

void QgsClassificationMethod::addParameter ( QgsProcessingParameterDefinition * definition)
protected

Add a parameter to the method.

The paramaeter is a processing parameter which will allow its configuration in the GUI.

Note
Only parameters having their widget implementation in C++ are supported. i.e. pure Python parameters are not supported.
Since
QGIS 3.12

Definition at line 183 of file qgsclassificationmethod.cpp.

◆ classes() [1/3]

QList< QgsClassificationRange > QgsClassificationMethod::classes ( const QgsVectorLayer * layer,
const QString & expression,
int nclasses )

This will calculate the classes for a given layer to define the classes.

Parameters
layerThe vector layer
expressionThe name of the field on which the classes are calculated
nclassesThe number of classes to be returned
Deprecated
QGIS 3.38. Use classesV2() instead.

Definition at line 211 of file qgsclassificationmethod.cpp.

◆ classes() [2/3]

QList< QgsClassificationRange > QgsClassificationMethod::classes ( const QList< double > & values,
int nclasses )

This will calculate the classes for a list of values.

Parameters
valuesThe list of values
nclassesThe number of classes to be returned

Definition at line 259 of file qgsclassificationmethod.cpp.

◆ classes() [3/3]

QList< QgsClassificationRange > QgsClassificationMethod::classes ( double minimum,
double maximum,
int nclasses )

This will calculate the classes for defined bounds without any values.

Warning
If the method implementation requires values, this will return an empty list.
Parameters
minimumThe minimum value for the breaks
maximumThe maximum value for the breaks
nclassesThe number of classes to be returned

Definition at line 275 of file qgsclassificationmethod.cpp.

◆ classesV2()

QList< QgsClassificationRange > QgsClassificationMethod::classesV2 ( const QgsVectorLayer * layer,
const QString & expression,
int nclasses,
QString & error )

This will calculate the classes for a given layer to define the classes.

Parameters
layerThe vector layer
expressionThe name of the field on which the classes are calculated
nclassesThe number of classes to be returned
errorwill be set to error string if an error occurred while generating the classes
Returns
list of generated classes
Since
QGIS 3.38

Definition at line 217 of file qgsclassificationmethod.cpp.

◆ clone()

virtual std::unique_ptr< QgsClassificationMethod > QgsClassificationMethod::clone ( ) const
pure virtual

Returns a clone of the method.

Implementation can take advantage of copyBase method which copies the parameters of the base class

Implemented in QgsClassificationCustom, QgsClassificationEqualInterval, QgsClassificationFixedInterval, QgsClassificationJenks, QgsClassificationLogarithmic, QgsClassificationPrettyBreaks, QgsClassificationQuantile, and QgsClassificationStandardDeviation.

◆ codeComplexity()

int QgsClassificationMethod::codeComplexity ( ) const
inline

Code complexity as the exponent in Big O notation.

Definition at line 184 of file qgsclassificationmethod.h.

◆ copyBase()

void QgsClassificationMethod::copyBase ( QgsClassificationMethod * c) const
protected

Copy the parameters (shall be used in clone implementation).

Definition at line 54 of file qgsclassificationmethod.cpp.

◆ create()

std::unique_ptr< QgsClassificationMethod > QgsClassificationMethod::create ( const QDomElement & element,
const QgsReadWriteContext & context )
static

Reads the DOM element and return a new classification method from it.

Parameters
elementthe DOM element
contextthe read/write context

Definition at line 63 of file qgsclassificationmethod.cpp.

◆ flags()

QgsClassificationMethod::MethodProperties QgsClassificationMethod::flags ( ) const
inline

Returns the classification flags.

Since
QGIS 3.26

Definition at line 160 of file qgsclassificationmethod.h.

◆ formatNumber()

QString QgsClassificationMethod::formatNumber ( double value) const
protected

Format the number according to label properties.

Definition at line 159 of file qgsclassificationmethod.cpp.

◆ icon()

virtual QIcon QgsClassificationMethod::icon ( ) const
inlinevirtual

◆ id()

virtual QString QgsClassificationMethod::id ( ) const
pure virtual

◆ labelFormat()

QString QgsClassificationMethod::labelFormat ( ) const
inline

Returns the format of the label for the classes.

Definition at line 218 of file qgsclassificationmethod.h.

◆ labelForRange() [1/2]

QString QgsClassificationMethod::labelForRange ( const QgsRendererRange & range,
QgsClassificationMethod::ClassPosition position = Inner ) const

Returns the label for a range.

Definition at line 348 of file qgsclassificationmethod.cpp.

◆ labelForRange() [2/2]

QString QgsClassificationMethod::labelForRange ( double lowerValue,
double upperValue,
ClassPosition position = Inner ) const
virtual

Returns the label for a range.

Reimplemented in QgsClassificationLogarithmic, and QgsClassificationStandardDeviation.

Definition at line 353 of file qgsclassificationmethod.cpp.

◆ labelPrecision()

int QgsClassificationMethod::labelPrecision ( ) const
inline

Returns the precision for the formatting of the labels.

Definition at line 222 of file qgsclassificationmethod.h.

◆ labelTrimTrailingZeroes()

bool QgsClassificationMethod::labelTrimTrailingZeroes ( ) const
inline

Returns if the trailing 0 are trimmed in the label.

Definition at line 226 of file qgsclassificationmethod.h.

◆ makeBreaksSymmetric()

void QgsClassificationMethod::makeBreaksSymmetric ( QList< double > & breaks,
double symmetryPoint,
bool astride )
static

Remove the breaks that are above the existing opposite sign classes to keep colors symmetrically balanced around symmetryPoint Does not put a break on the symmetryPoint.

This is done before.

Parameters
breaksThe breaks of an already-done classification
symmetryPointThe point around which we want a symmetry
astrideA bool indicating if the symmetry is made astride the symmetryPoint or not ( [-1,1] vs. [-1,0][0,1] )

Definition at line 315 of file qgsclassificationmethod.cpp.

◆ name()

virtual QString QgsClassificationMethod::name ( ) const
pure virtual

◆ parameterDefinition()

const QgsProcessingParameterDefinition * QgsClassificationMethod::parameterDefinition ( const QString & parameterName) const

Returns the parameter from its name.

Since
QGIS 3.12

Definition at line 188 of file qgsclassificationmethod.cpp.

◆ parameterDefinitions()

QgsProcessingParameterDefinitions QgsClassificationMethod::parameterDefinitions ( ) const
inline

Returns the list of parameters.

Since
QGIS 3.12

Definition at line 311 of file qgsclassificationmethod.h.

◆ parameterValues()

QVariantMap QgsClassificationMethod::parameterValues ( ) const
inline

Returns the values of the processing parameters.

One could use QgsProcessingParameters::parameterAsXxxx to retrieve the actual value of a parameter.

Since
QGIS 3.12

Definition at line 324 of file qgsclassificationmethod.h.

◆ rangesToBreaks()

QList< double > QgsClassificationMethod::rangesToBreaks ( const QList< QgsClassificationRange > & classes)
static

Transforms a list of classes to a list of breaks.

Definition at line 33 of file qgsclassificationmethod.cpp.

◆ readXml()

virtual void QgsClassificationMethod::readXml ( const QDomElement & element,
const QgsReadWriteContext & context )
inlinevirtual

Reads extra information to apply it to the method.

Reimplemented in QgsClassificationStandardDeviation.

Definition at line 171 of file qgsclassificationmethod.h.

◆ save()

QDomElement QgsClassificationMethod::save ( QDomDocument & doc,
const QgsReadWriteContext & context ) const

Saves the method to a DOM element and return it.

Parameters
docthe DOM document
contextthe read/write context

Definition at line 103 of file qgsclassificationmethod.cpp.

◆ setLabelFormat()

void QgsClassificationMethod::setLabelFormat ( const QString & format)
inline

Defines the format of the labels for the classes, using %1 and %2 for the bounds.

Definition at line 220 of file qgsclassificationmethod.h.

◆ setLabelPrecision()

void QgsClassificationMethod::setLabelPrecision ( int labelPrecision)

Defines the precision for the formatting of the labels.

Definition at line 144 of file qgsclassificationmethod.cpp.

◆ setLabelTrimTrailingZeroes()

void QgsClassificationMethod::setLabelTrimTrailingZeroes ( bool trimTrailingZeroes)
inline

Defines if the trailing 0 are trimmed in the label.

Definition at line 228 of file qgsclassificationmethod.h.

◆ setParameterValues()

void QgsClassificationMethod::setParameterValues ( const QVariantMap & values)

Defines the values of the additional parameters.

Since
QGIS 3.12

Definition at line 199 of file qgsclassificationmethod.cpp.

◆ setSymmetricMode()

void QgsClassificationMethod::setSymmetricMode ( bool enabled,
double symmetryPoint = 0,
bool symmetryAstride = false )

Defines if the symmetric mode is enables and configures its parameters.

If the symmetric mode is not available in the current implementation, calling this method has no effect.

Parameters
enabledif the symmetric mode is enabled
symmetryPointthe value of the symmetry point
symmetryAstrideif true, it will remove the symmetry point break so that the 2 classes form only one

Definition at line 137 of file qgsclassificationmethod.cpp.

◆ symmetricModeAvailable()

bool QgsClassificationMethod::symmetricModeAvailable ( ) const
inline

Returns if the method supports symmetric calculation.

Definition at line 189 of file qgsclassificationmethod.h.

◆ symmetricModeEnabled()

bool QgsClassificationMethod::symmetricModeEnabled ( ) const
inline

Returns if the symmetric mode is enabled.

Definition at line 194 of file qgsclassificationmethod.h.

◆ symmetryAstride()

bool QgsClassificationMethod::symmetryAstride ( ) const
inline

Returns if the symmetric mode is astride if true, it will remove the symmetry point break so that the 2 classes form only one.

Definition at line 205 of file qgsclassificationmethod.h.

◆ symmetryPoint()

double QgsClassificationMethod::symmetryPoint ( ) const
inline

Returns the symmetry point for symmetric mode.

Definition at line 199 of file qgsclassificationmethod.h.

◆ valuesRequired()

virtual bool QgsClassificationMethod::valuesRequired ( ) const
inlinevirtual

Returns if the method requires values to calculate the classes If not, bounds are sufficient.

Reimplemented in QgsClassificationCustom, QgsClassificationEqualInterval, QgsClassificationFixedInterval, QgsClassificationLogarithmic, and QgsClassificationPrettyBreaks.

Definition at line 177 of file qgsclassificationmethod.h.

◆ writeXml()

virtual void QgsClassificationMethod::writeXml ( QDomElement & element,
const QgsReadWriteContext & context ) const
inlinevirtual

Writes extra information about the method.

Reimplemented in QgsClassificationStandardDeviation.

Definition at line 169 of file qgsclassificationmethod.h.

Member Data Documentation

◆ MAX_PRECISION

const int QgsClassificationMethod::MAX_PRECISION = 15
static

Definition at line 326 of file qgsclassificationmethod.h.

◆ MIN_PRECISION

const int QgsClassificationMethod::MIN_PRECISION = -6
static

Definition at line 327 of file qgsclassificationmethod.h.


The documentation for this class was generated from the following files: