-
-
Notifications
You must be signed in to change notification settings - Fork 3k
/
qgsrastercalculator.h
108 lines (89 loc) · 4.48 KB
/
qgsrastercalculator.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
/***************************************************************************
qgsrastercalculator.h - description
---------------------
begin : September 28th, 2010
copyright : (C) 2010 by Marco Hugentobler
email : marco dot hugentobler at sourcepole dot ch
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef QGSRASTERCALCULATOR_H
#define QGSRASTERCALCULATOR_H
#include "qgsfield.h"
#include "qgsrectangle.h"
#include "qgscoordinatereferencesystem.h"
#include <QString>
#include <QVector>
#include "gdal.h"
class QgsRasterLayer;
class QProgressDialog;
struct ANALYSIS_EXPORT QgsRasterCalculatorEntry
{
QString ref; //name
QgsRasterLayer* raster; //pointer to rasterlayer
int bandNumber; //raster band number
};
/** Raster calculator class*/
class ANALYSIS_EXPORT QgsRasterCalculator
{
public:
/** QgsRasterCalculator constructor.
* @param formulaString formula for raster calculation
* @param outputFile output file path
* @param outputFormat output file format
* @param outputExtent output extent. CRS for output is taken from first entry in rasterEntries.
* @param nOutputColumns number of columns in output raster
* @param nOutputRows number of rows in output raster
* @param rasterEntries list of referenced raster layers
*/
QgsRasterCalculator( const QString& formulaString, const QString& outputFile, const QString& outputFormat,
const QgsRectangle& outputExtent, int nOutputColumns, int nOutputRows, const QVector<QgsRasterCalculatorEntry>& rasterEntries );
/** QgsRasterCalculator constructor.
* @param formulaString formula for raster calculation
* @param outputFile output file path
* @param outputFormat output file format
* @param outputExtent output extent, CRS is specified by outputCrs parameter
* @param outputCrs destination CRS for output raster
* @param nOutputColumns number of columns in output raster
* @param nOutputRows number of rows in output raster
* @param rasterEntries list of referenced raster layers
* @note added in QGIS 2.10
*/
QgsRasterCalculator( const QString& formulaString, const QString& outputFile, const QString& outputFormat,
const QgsRectangle& outputExtent, const QgsCoordinateReferenceSystem& outputCrs, int nOutputColumns, int nOutputRows, const QVector<QgsRasterCalculatorEntry>& rasterEntries );
/** Starts the calculation and writes new raster
@param p progress bar (or 0 if called from non-gui code)
@return 0 in case of success*/
int processCalculation( QProgressDialog* p = nullptr );
private:
//default constructor forbidden. We need formula, output file, output format and output raster resolution obligatory
QgsRasterCalculator();
/** Opens the output driver and tests if it supports the creation of a new dataset
@return nullptr on error and the driver handle on success*/
GDALDriverH openOutputDriver();
/** Opens the output file and sets the same geotransform and CRS as the input data
@return the output dataset or nullptr in case of error*/
GDALDatasetH openOutputFile( GDALDriverH outputDriver );
/** Sets gdal 6 parameters array from mOutputRectangle, mNumOutputColumns, mNumOutputRows
@param transform double[6] array that receives the GDAL parameters*/
void outputGeoTransform( double* transform ) const;
QString mFormulaString;
QString mOutputFile;
QString mOutputFormat;
/** Output raster extent*/
QgsRectangle mOutputRectangle;
QgsCoordinateReferenceSystem mOutputCrs;
/** Number of output columns*/
int mNumOutputColumns;
/** Number of output rows*/
int mNumOutputRows;
/***/
QVector<QgsRasterCalculatorEntry> mRasterEntries;
};
#endif // QGSRASTERCALCULATOR_H