QGIS API Documentation  3.20.0-Odense (decaadbb31)
qgsninecellfilter.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsninecellfilter.h - description
3  -------------------
4  begin : August 6th, 2009
5  copyright : (C) 2009 by Marco Hugentobler
6  email : marco dot hugentobler at karto dot baug dot ethz 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 QGSNINECELLFILTER_H
19 #define QGSNINECELLFILTER_H
20 
21 #include <QString>
22 #include "gdal.h"
23 #include "qgis_analysis.h"
24 #include "qgsogrutils.h"
25 
26 class QgsFeedback;
27 
36 class ANALYSIS_EXPORT QgsNineCellFilter
37 {
38  public:
40  QgsNineCellFilter( const QString &inputFile, const QString &outputFile, const QString &outputFormat );
41  virtual ~QgsNineCellFilter() = default;
42 
48  int processRaster( QgsFeedback *feedback = nullptr );
49 
50  double cellSizeX() const { return mCellSizeX; }
51  void setCellSizeX( double size ) { mCellSizeX = size; }
52  double cellSizeY() const { return mCellSizeY; }
53  void setCellSizeY( double size ) { mCellSizeY = size; }
54 
55  double zFactor() const { return mZFactor; }
56  void setZFactor( double factor ) { mZFactor = factor; }
57 
58  double inputNodataValue() const { return mInputNodataValue; }
59  void setInputNodataValue( double value ) { mInputNodataValue = value; }
60  double outputNodataValue() const { return mOutputNodataValue; }
61  void setOutputNodataValue( double value ) { mOutputNodataValue = value; }
62 
81  virtual float processNineCellWindow( float *x11, float *x21, float *x31,
82  float *x12, float *x22, float *x32,
83  float *x13, float *x23, float *x33 ) = 0;
84 
85  private:
86  //default constructor forbidden. We need input file, output file and format obligatory
87  QgsNineCellFilter() = delete;
88 
90  gdal::dataset_unique_ptr openInputFile( int &nCellsX, int &nCellsY );
91 
96  GDALDriverH openOutputDriver();
97 
102  gdal::dataset_unique_ptr openOutputFile( GDALDatasetH inputDataset, GDALDriverH outputDriver );
103 
109  int processRasterCPU( QgsFeedback *feedback = nullptr );
110 
111 #ifdef HAVE_OPENCL
112 
119  int processRasterGPU( const QString &source, QgsFeedback *feedback = nullptr );
120 
126  virtual void addExtraRasterParams( std::vector<float> &params )
127  {
128  Q_UNUSED( params )
129  }
130 
131  virtual const QString openClProgramBaseName() const
132  {
133  return QString();
134  }
135 
136 #endif
137 
138  protected:
139 
140  QString mInputFile;
141  QString mOutputFile;
142  QString mOutputFormat;
143 
144  double mCellSizeX = -1.0;
145  double mCellSizeY = -1.0;
147  float mInputNodataValue = -1.0;
149  float mOutputNodataValue = -1.0;
151  double mZFactor = 1.0;
152 };
153 
154 #endif // QGSNINECELLFILTER_H
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Definition: qgsfeedback.h:45
Base class for raster analysis methods that work with a 3x3 cell filter and calculate the value of ea...
virtual float processNineCellWindow(float *x11, float *x21, float *x31, float *x12, float *x22, float *x32, float *x13, float *x23, float *x33)=0
Calculates output value from nine input values.
double cellSizeX() const
virtual ~QgsNineCellFilter()=default
void setCellSizeX(double size)
void setOutputNodataValue(double value)
void setInputNodataValue(double value)
void setZFactor(double factor)
void setCellSizeY(double size)
double inputNodataValue() const
double cellSizeY() const
double zFactor() const
double outputNodataValue() const
std::unique_ptr< std::remove_pointer< GDALDatasetH >::type, GDALDatasetCloser > dataset_unique_ptr
Scoped GDAL dataset.
Definition: qgsogrutils.h:136
void * GDALDatasetH