QGIS API Documentation 3.99.0-Master (d270888f95f)
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 91 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 127 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 116 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 45 of file qgsclassificationmethod.cpp.

◆ ~QgsClassificationMethod()

QgsClassificationMethod::~QgsClassificationMethod ( )
virtual

Definition at line 52 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 186 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 214 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 262 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 278 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 220 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 187 of file qgsclassificationmethod.h.

◆ copyBase()

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

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

Definition at line 57 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 66 of file qgsclassificationmethod.cpp.

◆ flags()

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

Returns the classification flags.

Since
QGIS 3.26

Definition at line 163 of file qgsclassificationmethod.h.

◆ formatNumber()

QString QgsClassificationMethod::formatNumber ( double value) const
protected

Format the number according to label properties.

Definition at line 162 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 221 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 351 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 356 of file qgsclassificationmethod.cpp.

◆ labelPrecision()

int QgsClassificationMethod::labelPrecision ( ) const
inline

Returns the precision for the formatting of the labels.

Definition at line 225 of file qgsclassificationmethod.h.

◆ labelTrimTrailingZeroes()

bool QgsClassificationMethod::labelTrimTrailingZeroes ( ) const
inline

Returns if the trailing 0 are trimmed in the label.

Definition at line 229 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 318 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 191 of file qgsclassificationmethod.cpp.

◆ parameterDefinitions()

QgsProcessingParameterDefinitions QgsClassificationMethod::parameterDefinitions ( ) const
inline

Returns the list of parameters.

Since
QGIS 3.12

Definition at line 314 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 327 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 36 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 174 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 106 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 223 of file qgsclassificationmethod.h.

◆ setLabelPrecision()

void QgsClassificationMethod::setLabelPrecision ( int labelPrecision)

Defines the precision for the formatting of the labels.

Definition at line 147 of file qgsclassificationmethod.cpp.

◆ setLabelTrimTrailingZeroes()

void QgsClassificationMethod::setLabelTrimTrailingZeroes ( bool trimTrailingZeroes)
inline

Defines if the trailing 0 are trimmed in the label.

Definition at line 231 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 202 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 140 of file qgsclassificationmethod.cpp.

◆ symmetricModeAvailable()

bool QgsClassificationMethod::symmetricModeAvailable ( ) const
inline

Returns if the method supports symmetric calculation.

Definition at line 192 of file qgsclassificationmethod.h.

◆ symmetricModeEnabled()

bool QgsClassificationMethod::symmetricModeEnabled ( ) const
inline

Returns if the symmetric mode is enabled.

Definition at line 197 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 208 of file qgsclassificationmethod.h.

◆ symmetryPoint()

double QgsClassificationMethod::symmetryPoint ( ) const
inline

Returns the symmetry point for symmetric mode.

Definition at line 202 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 180 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 172 of file qgsclassificationmethod.h.

Member Data Documentation

◆ MAX_PRECISION

const int QgsClassificationMethod::MAX_PRECISION = 15
static

Definition at line 329 of file qgsclassificationmethod.h.

◆ MIN_PRECISION

const int QgsClassificationMethod::MIN_PRECISION = -6
static

Definition at line 330 of file qgsclassificationmethod.h.


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