QGIS API Documentation 3.99.0-Master (26c88405ac0)
Loading...
Searching...
No Matches
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 <gdal.h>
22
23#include "qgis_analysis.h"
26#include "qgsogrutils.h"
27#include "qgsrastercalcnode.h"
28#include "qgsrectangle.h"
29
30#include <QString>
31#include <QVector>
32
33class QgsRasterLayer;
34class QgsFeedback;
35
41class ANALYSIS_EXPORT QgsRasterCalculatorEntry
42{
43 public:
44
55 static QVector<QgsRasterCalculatorEntry> rasterEntries();
56
60 QString ref;
61
66
70 int bandNumber = 1;
71};
72
77class ANALYSIS_EXPORT QgsRasterCalculator
78{
79 public:
82 {
83 Success = 0,
84 CreateOutputError = 1,
85 InputLayerError = 2,
86 Canceled = 3,
87 ParserError = 4,
88 MemoryError = 5,
89 BandError = 6,
90 CalculationError = 7,
91 };
92
93
107 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 );
108
121 QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, int nOutputColumns, int nOutputRows, const QVector<QgsRasterCalculatorEntry> &rasterEntries, const QgsCoordinateTransformContext &transformContext );
122
135 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;
136
148 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;
149
158 Result processCalculation( QgsFeedback *feedback = nullptr );
159
164 QString lastError() const;
165
172 void setCreationOptions( const QStringList &options ) { mCreationOptions = options; }
173
180 QStringList creationOptions() const { return mCreationOptions; }
181
188 void setNoDataValue( double noDataValue ) { mNoDataValue = noDataValue; }
189
196 double noDataValue() const { return mNoDataValue; }
197
198 private:
199 //default constructor forbidden. We need formula, output file, output format and output raster resolution obligatory
200 QgsRasterCalculator() = delete;
201
206 GDALDriverH openOutputDriver();
207
212 gdal::dataset_unique_ptr openOutputFile( GDALDriverH outputDriver );
213
218 void outputGeoTransform( double *transform ) const;
219
221 Result processCalculationGPU( std::unique_ptr<QgsRasterCalcNode> calcNode, QgsFeedback *feedback = nullptr );
222
223 QString mFormulaString;
224 QString mOutputFile;
225 QString mOutputFormat;
226
228 QgsRectangle mOutputRectangle;
230
232 int mNumOutputColumns = 0;
234 int mNumOutputRows = 0;
235
236 QString mLastError;
237 QStringList mCreationOptions;
238 double mNoDataValue = -FLT_MAX;
239
240 /***/
241 QVector<QgsRasterCalculatorEntry> mRasterEntries;
242
243 QgsCoordinateTransformContext mTransformContext;
244};
245
246#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.
QgsRasterLayer * raster
Raster layer associated with entry.
static QVector< QgsRasterCalculatorEntry > rasterEntries()
Creates a list of raster entries from the current project.
int bandNumber
Band number for entry.
QString ref
Name of entry.
Performs raster layer calculations.
QStringList creationOptions() 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.
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)
QgsRasterCalculator constructor.
double noDataValue() const
Returns no data value used for output file.
Result
Result of the calculation.
void setCreationOptions(const QStringList &options)
Sets a list of data source creation options to use when creating the output raster file.
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:114
#define SIP_MONKEYPATCH_SCOPEENUM_UNNEST(OUTSIDE_CLASS, FORMERNAME)
Definition qgis_sip.h:268