QGIS API Documentation 4.1.0-Master (60fea48833c)
Loading...
Searching...
No Matches
qgsrasterattributetable.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsrasterattributetable.h - QgsRasterAttributeTable
3
4 ---------------------
5 begin : 3.12.2021
6 copyright : (C) 2021 by Alessandro Pasotti
7 email : elpaso at itopen dot it
8 ***************************************************************************
9 * *
10 * This program is free software; you can redistribute it and/or modify *
11 * it under the terms of the GNU General Public License as published by *
12 * the Free Software Foundation; either version 2 of the License, or *
13 * (at your option) any later version. *
14 * *
15 ***************************************************************************/
16#ifndef QGSRASTERATTRIBUTETABLE_H
17#define QGSRASTERATTRIBUTETABLE_H
18
19#include "qgis.h"
20#include "qgis_core.h"
21#include "qgis_sip.h"
22#include "qgscolorrampimpl.h"
23#include "qgsfeature.h"
24#include "qgsfields.h"
25
26#include <QCoreApplication>
27#include <QLinearGradient>
28#include <QObject>
29
30class QgsRasterLayer;
33
43class CORE_EXPORT QgsRasterAttributeTable
44{
45 Q_DECLARE_TR_FUNCTIONS( QgsRasterAttributeTable )
46
47 public:
53 class CORE_EXPORT UsageInformation
54 {
55 public:
57 QString description;
58
60 bool unique = false;
61
63 bool required = false;
64
66 bool isColor = false;
67
69 bool isRamp = false;
70
72 bool supported = false;
73
75 bool maybeClass = false;
76
78 QList<QMetaType::Type> allowedTypes;
79 };
80
86 class CORE_EXPORT Field
87 {
88 public:
92 Field( const QString &name, const Qgis::RasterAttributeTableFieldUsage &usage, const QMetaType::Type type )
93 : name( name )
94 , usage( usage )
95 , type( type )
96 {}
97
102 Q_DECL_DEPRECATED Field( const QString &name, const Qgis::RasterAttributeTableFieldUsage &usage, const QVariant::Type type ) SIP_DEPRECATED
104 {}
105
109 bool isColor() const;
110
114 bool isRamp() const;
115
116 QString name;
118 QMetaType::Type type;
119 };
120
126 class CORE_EXPORT MinMaxClass
127 {
128 public:
129 QString name;
130
132 QVector< double > minMaxValues;
133 QColor color;
134 };
135
140
149 bool hasColor() const;
150
160 bool setColor( const int row, const QColor &color );
161
169 bool hasRamp() const;
170
179 bool setRamp( const int row, const QColor &colorMin, const QColor &colorMax );
180
184 QList<Qgis::RasterAttributeTableFieldUsage> usages() const SIP_SKIP;
185
187
191 QList<int> intUsages() const SIP_PYNAME( usages );
192
194
203 QColor color( int row ) const;
204
213 QgsGradientColorRamp ramp( int row ) const;
214
219 QList<QgsRasterAttributeTable::Field> fields() const;
220
225 QgsFields qgisFields() const;
226
231
235 bool isDirty() const;
236
240 void setDirty( bool isDirty );
241
245 bool isValid( QString *errorMessage SIP_OUT = nullptr ) const;
246
251 bool insertField( int position, const QgsRasterAttributeTable::Field &field, QString *errorMessage SIP_OUT = nullptr );
252
256 bool insertField( int position, const QString &name, const Qgis::RasterAttributeTableFieldUsage usage, const QMetaType::Type type, QString *errorMessage SIP_OUT = nullptr );
257
262 Q_DECL_DEPRECATED bool insertField( int position, const QString &name, const Qgis::RasterAttributeTableFieldUsage usage, const QVariant::Type type, QString *errorMessage SIP_OUT = nullptr )
264
268 bool insertColor( int position, QString *errorMessage SIP_OUT = nullptr );
269
274 bool setFieldUsage( int fieldIndex, const Qgis::RasterAttributeTableFieldUsage usage );
275
279 bool insertRamp( int position, QString *errorMessage SIP_OUT = nullptr );
280
284 bool appendField( const QString &name, const Qgis::RasterAttributeTableFieldUsage usage, const QMetaType::Type type, QString *errorMessage SIP_OUT = nullptr );
285
289 bool appendField( const QString &name, const Qgis::RasterAttributeTableFieldUsage usage, const QVariant::Type type, QString *errorMessage SIP_OUT = nullptr );
290
294 bool appendField( const QgsRasterAttributeTable::Field &field, QString *errorMessage SIP_OUT = nullptr );
295
299 bool removeField( const QString &name, QString *errorMessage SIP_OUT = nullptr );
300
305 bool insertRow( int position, const QVariantList &rowData, QString *errorMessage SIP_OUT = nullptr );
306
311 bool removeRow( int position = 0, QString *errorMessage SIP_OUT = nullptr );
312
316 bool appendRow( const QVariantList &data, QString *errorMessage SIP_OUT = nullptr );
317
322 bool writeToFile( const QString &path, QString *errorMessage SIP_OUT = nullptr );
323
327 bool readFromFile( const QString &path, QString *errorMessage SIP_OUT = nullptr );
328
332 const QList<QList<QVariant>> data() const;
333
340 const QgsRasterAttributeTable::Field fieldByName( const QString name, bool *ok SIP_OUT = nullptr ) const;
341
345 const QList<QgsRasterAttributeTable::Field> fieldsByUsage( const Qgis::RasterAttributeTableFieldUsage fieldUsage ) const;
346
351 bool setValue( const int row, const int column, const QVariant &value );
352
356 QVariant value( const int row, const int column ) const;
357
361 double minimumValue() const;
362
366 double maximumValue() const;
367
372 QVariantList row( const double matchValue ) const;
373
379 QList<QgsRasterAttributeTable::MinMaxClass> minMaxClasses( const int classificationColumn = -1 ) const;
380
385 QgsGradientColorRamp colorRamp( QStringList &labels SIP_OUT, const int labelColumn = -1 ) const;
386
397 QgsRasterRenderer *createRenderer( QgsRasterDataProvider *provider, const int bandNumber, const int classificationColumn = -1 ) SIP_FACTORY;
398
406 QList<QList<QVariant>> orderedRows() const;
407
411 static Qgis::RasterAttributeTableFieldUsage guessFieldUsage( const QString &name, const QMetaType::Type type );
412
416 static Qgis::RasterAttributeTableFieldUsage guessFieldUsage( const QString &name, const QVariant::Type type );
417
424 QString filePath() const;
425
430 static QString usageName( const Qgis::RasterAttributeTableFieldUsage fieldusage );
431
435 static QList<Qgis::RasterAttributeTableFieldUsage> valueAndColorFieldUsages();
436
443 static QgsRasterAttributeTable *createFromRaster( QgsRasterLayer *rasterLayer, int *bandNumber SIP_OUT = nullptr ) SIP_FACTORY;
444
449 static QHash<Qgis::RasterAttributeTableFieldUsage, QgsRasterAttributeTable::UsageInformation> usageInformation() SIP_SKIP;
450
452
457 static QHash<int, QgsRasterAttributeTable::UsageInformation> usageInformationInt() SIP_PYNAME( usageInformation );
458
459 static QHash<Qgis::RasterAttributeTableFieldUsage, QgsRasterAttributeTable::UsageInformation> sUsageInformation SIP_SKIP;
460
462
463 private:
464 Qgis::RasterAttributeTableType mType = Qgis::RasterAttributeTableType::Thematic;
465 QList<Field> mFields;
466 QList<QVariantList> mData;
467 bool mIsDirty = false;
468 QString mFilePath;
469
470 // Set type from fields.
471 void setType();
472};
473
474#endif // QGSRASTERATTRIBUTETABLE_H
Provides global constants and enumerations for use throughout the application.
Definition qgis.h:62
RasterAttributeTableType
The RasterAttributeTableType enum represents the type of RAT.
Definition qgis.h:1695
RasterAttributeTableFieldUsage
The RasterAttributeTableFieldUsage enum represents the usage of a Raster Attribute Table field.
Definition qgis.h:1666
Container of fields for a vector layer.
Definition qgsfields.h:46
Gradient color ramp, which smoothly interpolates between two colors and also supports optional extra ...
The Field class represents a Raster Attribute Table field, including its name, usage and type.
Q_DECL_DEPRECATED Field(const QString &name, const Qgis::RasterAttributeTableFieldUsage &usage, const QVariant::Type type)
Creates a new Field with name, type and usage.
Qgis::RasterAttributeTableFieldUsage usage
Field(const QString &name, const Qgis::RasterAttributeTableFieldUsage &usage, const QMetaType::Type type)
Creates a new Field with name, type and usage.
The Field class represents a Raster Attribute Table classification entry for a thematic Raster Attrib...
QVector< double > minMaxValues
List of values for the class.
The UsageInformation class represents information about a field usage.
bool isRamp
Usage is part of a ramp component.
bool maybeClass
May be suitable for classification.
QList< QMetaType::Type > allowedTypes
Usage allowed types.
bool isColor
Usage is part of a color component.
Represents a Raster Attribute Table (RAT).
const QgsRasterAttributeTable::Field fieldByName(const QString name, bool *ok=nullptr) const
Returns a field by name or a default constructed field with empty name if the field is not found.
bool isDirty() const
Returns true if the Raster Attribute Table was modified from its last reading from the storage.
bool setColor(const int row, const QColor &color)
Sets the color for the row at rowIndex to color.
QList< QgsRasterAttributeTable::MinMaxClass > minMaxClasses(const int classificationColumn=-1) const
Returns the classes for a thematic Raster Attribute Table, classified by classificationColumn,...
QgsGradientColorRamp ramp(int row) const
Returns the gradient color ramp of the rat row or a default constructed gradient if row does not exis...
QgsRasterRenderer * createRenderer(QgsRasterDataProvider *provider, const int bandNumber, const int classificationColumn=-1)
Creates and returns a (possibly nullptr) raster renderer for the specified provider and bandNumber an...
bool readFromFile(const QString &path, QString *errorMessage=nullptr)
Reads the Raster Attribute Table from a DBF file specified by path, optionally reporting any error in...
QgsGradientColorRamp colorRamp(QStringList &labels, const int labelColumn=-1) const
Returns the color ramp for an athematic Raster Attribute Table setting the labels in labels,...
bool appendField(const QString &name, const Qgis::RasterAttributeTableFieldUsage usage, const QMetaType::Type type, QString *errorMessage=nullptr)
Creates a new field from name, usage and type and appends it to the fields, optionally reporting any ...
bool insertField(int position, const QgsRasterAttributeTable::Field &field, QString *errorMessage=nullptr)
Inserts a new field at position, optionally reporting any error in errorMessage, returns true on succ...
bool hasColor() const
Returns true if the Raster Attribute Table has color RGBA information.
bool setValue(const int row, const int column, const QVariant &value)
Sets the value for row and column.
static QList< Qgis::RasterAttributeTableFieldUsage > valueAndColorFieldUsages()
Returns the list of field usages for colors and values.
QList< QgsRasterAttributeTable::Field > fields() const
Returns the Raster Attribute Table fields.
static QgsRasterAttributeTable * createFromRaster(QgsRasterLayer *rasterLayer, int *bandNumber=nullptr)
Creates a new Raster Attribute Table from a raster layer, the renderer must be Paletted or SingleBand...
bool removeRow(int position=0, QString *errorMessage=nullptr)
Removes the row in the Raster Attribute Table at position, optionally reporting any error in errorMes...
bool appendRow(const QVariantList &data, QString *errorMessage=nullptr)
Appends a row of data to the RAT, optionally reporting any error in errorMessage, returns true on suc...
static QHash< Qgis::RasterAttributeTableFieldUsage, QgsRasterAttributeTable::UsageInformation > usageInformation()
Returns information about supported Raster Attribute Table usages.
Qgis::RasterAttributeTableType type() const
Returns the Raster Attribute Table type.
QList< Qgis::RasterAttributeTableFieldUsage > usages() const
Returns the list of field usages.
QVariantList row(const double matchValue) const
Returns a row of data for the given matchValue or and empty row if there is not match.
bool insertRow(int position, const QVariantList &rowData, QString *errorMessage=nullptr)
Inserts a row of rowData in the Raster Attribute Table at position, optionally reporting any error in...
bool writeToFile(const QString &path, QString *errorMessage=nullptr)
Writes the Raster Attribute Table to a DBF file specified by path, optionally reporting any error in ...
double minimumValue() const
Returns the minimum value of the MinMax (thematic) or Min (athematic) column, returns NaN on errors.
double maximumValue() const
Returns the maximum value of the MinMax (thematic) or Max (athematic) column, returns NaN on errors.
const QList< QgsRasterAttributeTable::Field > fieldsByUsage(const Qgis::RasterAttributeTableFieldUsage fieldUsage) const
Returns the list of fields matching fieldUsage.
void setDirty(bool isDirty)
Sets the Raster Attribute Table dirty state to isDirty;.
bool insertColor(int position, QString *errorMessage=nullptr)
Create RGBA fields and inserts them at position, optionally reporting any error in errorMessage,...
bool isValid(QString *errorMessage=nullptr) const
Returns true if the Raster Attribute Table is valid, optionally reporting validity checks results in ...
const QList< QList< QVariant > > data() const
Returns the Raster Attribute Table rows.
bool setRamp(const int row, const QColor &colorMin, const QColor &colorMax)
Sets the color ramp for the row at rowIndex to colorMin and colorMax.
PRIVATE QColor color(int row) const
Returns the color of the rat row or an invalid color if row does not exist or if there is no color de...
QList< QList< QVariant > > orderedRows() const
Returns the data rows ordered by the value column(s) in ascending order, if the attribute table type ...
static QString usageName(const Qgis::RasterAttributeTableFieldUsage fieldusage)
Returns the translated human readable name of fieldUsage.
bool hasRamp() const
Returns true if the Raster Attribute Table has ramp RGBA information.
QgsFeatureList qgisFeatures() const
Returns the Raster Attribute Table rows as a list of QgsFeature.
bool setFieldUsage(int fieldIndex, const Qgis::RasterAttributeTableFieldUsage usage)
Change the usage of the field at index fieldIndex to usage with checks for allowed types.
QString filePath() const
Returns the (possibly empty) path of the file-based RAT, the path is set when a RAT is read or writte...
bool insertRamp(int position, QString *errorMessage=nullptr)
Create RGBA minimum and maximum fields and inserts them at position, optionally reporting any error i...
QVariant value(const int row, const int column) const
Returns the value for row and column.
QgsFields qgisFields() const
Returns the Raster Attribute Table fields as QgsFields.
static Qgis::RasterAttributeTableFieldUsage guessFieldUsage(const QString &name, const QMetaType::Type type)
Try to determine the field usage from its name and type.
bool removeField(const QString &name, QString *errorMessage=nullptr)
Removes the field with name, optionally reporting any error in errorMessage, returns true on success.
Base class for raster data providers.
Represents a raster layer.
Raster renderer pipe that applies colors to a raster.
static QMetaType::Type variantTypeToMetaType(QVariant::Type variantType)
Converts a QVariant::Type to a QMetaType::Type.
#define SIP_DEPRECATED
Definition qgis_sip.h:113
#define SIP_SKIP
Definition qgis_sip.h:133
#define SIP_PYNAME(name)
Definition qgis_sip.h:88
#define SIP_OUT
Definition qgis_sip.h:57
#define SIP_FACTORY
Definition qgis_sip.h:83
QList< QgsFeature > QgsFeatureList