QGIS API Documentation 3.99.0-Master (2fe06baccd8)
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:
54 static QVector<QgsRasterCalculatorEntry> rasterEntries();
55
59 QString ref;
60
65
69 int bandNumber = 1;
70};
71
76class ANALYSIS_EXPORT QgsRasterCalculator
77{
78 public:
81 {
82 Success = 0,
83 CreateOutputError = 1,
84 InputLayerError = 2,
85 Canceled = 3,
86 ParserError = 4,
87 MemoryError = 5,
88 BandError = 6,
89 CalculationError = 7,
90 };
91
92
106 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 );
107
120 QgsRasterCalculator( const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, int nOutputColumns, int nOutputRows, const QVector<QgsRasterCalculatorEntry> &rasterEntries, const QgsCoordinateTransformContext &transformContext );
121
134 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;
135
147 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;
148
157 Result processCalculation( QgsFeedback *feedback = nullptr );
158
163 QString lastError() const;
164
171 void setCreationOptions( const QStringList &options ) { mCreationOptions = options; }
172
179 QStringList creationOptions() const { return mCreationOptions; }
180
187 void setNoDataValue( double noDataValue ) { mNoDataValue = noDataValue; }
188
195 double noDataValue() const { return mNoDataValue; }
196
197 private:
198 //default constructor forbidden. We need formula, output file, output format and output raster resolution obligatory
199 QgsRasterCalculator() = delete;
200
205 GDALDriverH openOutputDriver();
206
211 gdal::dataset_unique_ptr openOutputFile( GDALDriverH outputDriver );
212
217 void outputGeoTransform( double *transform ) const;
218
220 Result processCalculationGPU( std::unique_ptr<QgsRasterCalcNode> calcNode, QgsFeedback *feedback = nullptr );
221
222 QString mFormulaString;
223 QString mOutputFile;
224 QString mOutputFormat;
225
227 QgsRectangle mOutputRectangle;
229
231 int mNumOutputColumns = 0;
233 int mNumOutputRows = 0;
234
235 QString mLastError;
236 QStringList mCreationOptions;
237 double mNoDataValue = -FLT_MAX;
238
239 /***/
240 QVector<QgsRasterCalculatorEntry> mRasterEntries;
241
242 QgsCoordinateTransformContext mTransformContext;
243};
244
245#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