QGIS API Documentation
3.26.3-Buenos Aires (65e4edfdad)
src
analysis
raster
qgstotalcurvaturefilter.cpp
Go to the documentation of this file.
1
/***************************************************************************
2
qgstotalcurvaturefilter.h - description
3
-------------------
4
begin : August 21th, 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
#include "
qgstotalcurvaturefilter.h
"
19
20
QgsTotalCurvatureFilter::QgsTotalCurvatureFilter
(
const
QString &inputFile,
const
QString &outputFile,
const
QString &outputFormat )
21
:
QgsNineCellFilter
( inputFile, outputFile, outputFormat )
22
{
23
24
}
25
26
float
QgsTotalCurvatureFilter::processNineCellWindow
(
float
*x11,
float
*x21,
float
*x31,
float
*x12,
27
float
*x22,
float
*x32,
float
*x13,
float
*x23,
float
*x33 )
28
{
29
//return nodata if one value is the nodata value
30
if
( *x11 ==
mInputNodataValue
|| *x21 ==
mInputNodataValue
|| *x31 ==
mInputNodataValue
|| *x12 ==
mInputNodataValue
31
|| *x22 ==
mInputNodataValue
|| *x32 ==
mInputNodataValue
|| *x13 ==
mInputNodataValue
|| *x23 ==
mInputNodataValue
32
|| *x33 ==
mInputNodataValue
)
33
{
34
return
mOutputNodataValue
;
35
}
36
37
const
double
cellSizeAvg = (
mCellSizeX
+
mCellSizeY
) / 2.0;
38
const
double
dxx = ( *x32 - 2 * *x22 + *x12 ) / (
mCellSizeX
*
mCellSizeX
);
39
const
double
dxy = ( -*x11 + *x31 + *x13 - *x33 ) / ( 4 * cellSizeAvg * cellSizeAvg );
40
const
double
dyy = ( *x21 - 2 * *x22 + *x23 ) / (
mCellSizeY
*
mCellSizeY
);
41
42
return
dxx * dxx + 2 * dxy * dxy + dyy * dyy;
43
}
QgsNineCellFilter
Base class for raster analysis methods that work with a 3x3 cell filter and calculate the value of ea...
Definition:
qgsninecellfilter.h:37
QgsNineCellFilter::mCellSizeX
double mCellSizeX
Definition:
qgsninecellfilter.h:145
QgsTotalCurvatureFilter::processNineCellWindow
float processNineCellWindow(float *x11, float *x21, float *x31, float *x12, float *x22, float *x32, float *x13, float *x23, float *x33) override
Calculates output value from nine input values.
Definition:
qgstotalcurvaturefilter.cpp:26
QgsTotalCurvatureFilter::QgsTotalCurvatureFilter
QgsTotalCurvatureFilter(const QString &inputFile, const QString &outputFile, const QString &outputFormat)
Definition:
qgstotalcurvaturefilter.cpp:20
QgsNineCellFilter::mOutputNodataValue
float mOutputNodataValue
The nodata value of the output layer.
Definition:
qgsninecellfilter.h:150
QgsNineCellFilter::mInputNodataValue
float mInputNodataValue
The nodata value of the input layer.
Definition:
qgsninecellfilter.h:148
qgstotalcurvaturefilter.h
QgsNineCellFilter::mCellSizeY
double mCellSizeY
Definition:
qgsninecellfilter.h:146
Generated on Sun Sep 11 2022 00:03:17 for QGIS API Documentation by
1.8.17