QGIS API Documentation 3.43.0-Master (c67cf405802)
qgsrastercalculator.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsrastercalculator.h - description
3 ---------------------
4 begin : September 28th, 2010
5 copyright : (C) 2010 by Marco Hugentobler
6 email : marco dot hugentobler at sourcepole dot ch
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#ifndef QGSRASTERCALCULATOR_H
19#define QGSRASTERCALCULATOR_H
20
21#include "qgsrectangle.h"
24#include <QString>
25#include <QVector>
26#include "gdal.h"
27#include "qgis_analysis.h"
28#include "qgsogrutils.h"
29#include "qgsrastercalcnode.h"
30
31class QgsRasterLayer;
32class QgsFeedback;
33
39class ANALYSIS_EXPORT QgsRasterCalculatorEntry
40{
41 public:
52 static QVector<QgsRasterCalculatorEntry> rasterEntries();
53
57 QString ref;
58
62 QgsRasterLayer *raster = nullptr;
63
67 int bandNumber = 1;
68};
69
74class ANALYSIS_EXPORT QgsRasterCalculator
75{
76 public:
78 enum Result
79 {
80 Success = 0,
81 CreateOutputError = 1,
82 InputLayerError = 2,
83 Canceled = 3,
84 ParserError = 4,
85 MemoryError = 5,
86 BandError = 6,
87 CalculationError = 7,
88 };
89
90
104 QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, const QgsCoordinateReferenceSystem &outputCrs, int nOutputColumns, int nOutputRows, const QVector<QgsRasterCalculatorEntry> &rasterEntries, const QgsCoordinateTransformContext &transformContext );
105
118 QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, int nOutputColumns, int nOutputRows, const QVector<QgsRasterCalculatorEntry> &rasterEntries, const QgsCoordinateTransformContext &transformContext );
119
132 Q_DECL_DEPRECATED QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, const QgsCoordinateReferenceSystem &outputCrs, int nOutputColumns, int nOutputRows, const QVector<QgsRasterCalculatorEntry> &rasterEntries ) SIP_DEPRECATED;
133
145 Q_DECL_DEPRECATED QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, int nOutputColumns, int nOutputRows, const QVector<QgsRasterCalculatorEntry> &rasterEntries ) SIP_DEPRECATED;
146
155 Result processCalculation( QgsFeedback *feedback = nullptr );
156
161 QString lastError() const;
162
169 void setCreateOptions( const QStringList &list ) { mCreateOptions = list; }
170
177 QStringList createOptions() const { return mCreateOptions; }
178
185 void setNoDataValue( double noDataValue ) { mNoDataValue = noDataValue; }
186
193 double noDataValue() const { return mNoDataValue; }
194
195 private:
196 //default constructor forbidden. We need formula, output file, output format and output raster resolution obligatory
197 QgsRasterCalculator() = delete;
198
203 GDALDriverH openOutputDriver();
204
209 gdal::dataset_unique_ptr openOutputFile( GDALDriverH outputDriver );
210
215 void outputGeoTransform( double *transform ) const;
216
218 Result processCalculationGPU( std::unique_ptr<QgsRasterCalcNode> calcNode, QgsFeedback *feedback = nullptr );
219
220 QString mFormulaString;
221 QString mOutputFile;
222 QString mOutputFormat;
223
225 QgsRectangle mOutputRectangle;
227
229 int mNumOutputColumns = 0;
231 int mNumOutputRows = 0;
232
233 QString mLastError;
234 QStringList mCreateOptions;
235 double mNoDataValue = -FLT_MAX;
236
237 /***/
238 QVector<QgsRasterCalculatorEntry> mRasterEntries;
239
240 QgsCoordinateTransformContext mTransformContext;
241};
242
243#endif // QGSRASTERCALCULATOR_H
Represents a coordinate reference system (CRS).
Contains information about the context in which a coordinate transform is executed.
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Definition qgsfeedback.h:44
Represents an individual raster layer/band number entry within a raster calculation.
QString ref
Name of entry.
Performs raster layer calculations.
QStringList createOptions() const
Returns the list of data source creation options which will be used when creating the output raster f...
void setNoDataValue(double noDataValue)
Set no data value for output file.
void setCreateOptions(const QStringList &list)
Sets a list of data source creation options to use when creating the output raster file.
double noDataValue() const
Returns no data value used for output file.
Result
Result of the calculation.
Represents a raster layer.
A rectangle specified with double values.
std::unique_ptr< std::remove_pointer< GDALDatasetH >::type, GDALDatasetCloser > dataset_unique_ptr
Scoped GDAL dataset.
#define SIP_DEPRECATED
Definition qgis_sip.h:106
const QgsCoordinateReferenceSystem & outputCrs