QGIS API Documentation 4.1.0-Master (5bf3c20f3c9)
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 OpenCLKernelBuildError = 8
91 };
92
93
108 const QString &formulaString,
109 const QString &outputFile,
110 const QString &outputFormat,
111 const QgsRectangle &outputExtent,
112 const QgsCoordinateReferenceSystem &outputCrs,
113 int nOutputColumns,
114 int nOutputRows,
115 const QVector<QgsRasterCalculatorEntry> &rasterEntries,
116 const QgsCoordinateTransformContext &transformContext
117 );
118
132 const QString &formulaString,
133 const QString &outputFile,
134 const QString &outputFormat,
135 const QgsRectangle &outputExtent,
136 int nOutputColumns,
137 int nOutputRows,
138 const QVector<QgsRasterCalculatorEntry> &rasterEntries,
139 const QgsCoordinateTransformContext &transformContext
140 );
141
154 Q_DECL_DEPRECATED QgsRasterCalculator(
155 const QString &formulaString,
156 const QString &outputFile,
157 const QString &outputFormat,
158 const QgsRectangle &outputExtent,
159 const QgsCoordinateReferenceSystem &outputCrs,
160 int nOutputColumns,
161 int nOutputRows,
162 const QVector<QgsRasterCalculatorEntry> &rasterEntries
164
176 Q_DECL_DEPRECATED QgsRasterCalculator(
177 const QString &formulaString, const QString &outputFile, const QString &outputFormat, const QgsRectangle &outputExtent, int nOutputColumns, int nOutputRows, const QVector<QgsRasterCalculatorEntry> &rasterEntries
179
188 Result processCalculation( QgsFeedback *feedback = nullptr );
189
194 QString lastError() const;
195
202 void setCreationOptions( const QStringList &options ) { mCreationOptions = options; }
203
210 QStringList creationOptions() const { return mCreationOptions; }
211
218 void setNoDataValue( double noDataValue ) { mNoDataValue = noDataValue; }
219
226 double noDataValue() const { return mNoDataValue; }
227
228 private:
229 //default constructor forbidden. We need formula, output file, output format and output raster resolution obligatory
230 QgsRasterCalculator() = delete;
231
236 GDALDriverH openOutputDriver();
237
242 gdal::dataset_unique_ptr openOutputFile( GDALDriverH outputDriver );
243
248 void outputGeoTransform( double *transform ) const;
249
251 Result processCalculationGPU( std::unique_ptr<QgsRasterCalcNode> calcNode, QgsFeedback *feedback = nullptr );
252
253 QString mFormulaString;
254 QString mOutputFile;
255 QString mOutputFormat;
256
258 QgsRectangle mOutputRectangle;
260
262 int mNumOutputColumns = 0;
264 int mNumOutputRows = 0;
265
266 QString mLastError;
267 QStringList mCreationOptions;
268 double mNoDataValue = -FLT_MAX;
269
270 /***/
271 QVector<QgsRasterCalculatorEntry> mRasterEntries;
272
273 QgsCoordinateTransformContext mTransformContext;
274};
275
276#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:113
#define SIP_MONKEYPATCH_SCOPEENUM_UNNEST(OUTSIDE_CLASS, FORMERNAME)
Definition qgis_sip.h:267