QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
qgskde.h
Go to the documentation of this file.
1/***************************************************************************
2 qgskde.h
3 --------
4 Date : October 2016
5 Copyright : (C) 2016 by Nyall Dawson
6 Email : nyall dot dawson at gmail dot com
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
16#ifndef QGSKDE_H
17#define QGSKDE_H
18
19#include "qgsrectangle.h"
20#include "qgsogrutils.h"
21#include <QString>
22
23// GDAL includes
24#include <gdal.h>
25#include <cpl_string.h>
26#include <cpl_conv.h>
27#include "qgis_analysis.h"
28
30class QgsFeature;
31
32
38class ANALYSIS_EXPORT QgsKernelDensityEstimation
39{
40 public:
41
44 {
45 KernelQuartic = 0,
50 };
51
54 {
55 OutputRaw = 0,
57 };
58
60 enum Result
61 {
67 };
68
71 {
73 QgsFeatureSource *source = nullptr;
74
76 double radius;
77
79 QString radiusField;
80
82 QString weightField;
83
85 double pixelSize;
86
89
91 double decayRatio;
92
95 };
96
101 QgsKernelDensityEstimation( const Parameters &parameters, const QString &outputFile, const QString &outputFormat );
102
107
112 Result run();
113
120 Result prepare();
121
127 Result addFeature( const QgsFeature &feature );
128
134 Result finalise();
135
136 private:
137
139 double calculateKernelValue( double distance, double bandwidth, KernelShape shape, OutputValues outputType ) const;
141 double uniformKernel( double distance, double bandwidth, OutputValues outputType ) const;
143 double quarticKernel( double distance, double bandwidth, OutputValues outputType ) const;
145 double triweightKernel( double distance, double bandwidth, OutputValues outputType ) const;
147 double epanechnikovKernel( double distance, double bandwidth, OutputValues outputType ) const;
149 double triangularKernel( double distance, double bandwidth, OutputValues outputType ) const;
150
151 QgsRectangle calculateBounds() const;
152
153 QgsFeatureSource *mSource = nullptr;
154
155 QString mOutputFile;
156 QString mOutputFormat;
157
158 int mRadiusField;
159 int mWeightField;
160 double mRadius;
161 double mPixelSize;
162 QgsRectangle mBounds;
163
164 KernelShape mShape;
165 double mDecay;
166 OutputValues mOutputValues;
167
168 int mBufferSize;
169
170 gdal::dataset_unique_ptr mDatasetH;
171 GDALRasterBandH mRasterBandH;
172
174 bool createEmptyLayer( GDALDriverH driver, const QgsRectangle &bounds, int rows, int columns ) const;
175 int radiusSizeInPixels( double radius ) const;
176
177#ifdef SIP_RUN
179#endif
180};
181
182
183#endif // QGSKDE_H
An interface for objects which provide features via a getFeatures method.
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Definition: qgsfeature.h:56
Performs Kernel Density Estimation ("heatmap") calculations on a vector layer.
Definition: qgskde.h:39
QgsKernelDensityEstimation(const QgsKernelDensityEstimation &other)=delete
QgsKernelDensityEstimation cannot be copied.
Result
Result of operation.
Definition: qgskde.h:61
@ DriverError
Could not open the driver for the specified format.
Definition: qgskde.h:63
@ FileCreationError
Error creating output file.
Definition: qgskde.h:65
@ RasterIoError
Error writing to raster.
Definition: qgskde.h:66
@ Success
Operation completed successfully.
Definition: qgskde.h:62
@ InvalidParameters
Input parameters were not valid.
Definition: qgskde.h:64
QgsKernelDensityEstimation & operator=(const QgsKernelDensityEstimation &other)=delete
QgsKernelDensityEstimation cannot be copied.
OutputValues
Output values type.
Definition: qgskde.h:54
@ OutputScaled
Output mathematically correct scaled values.
Definition: qgskde.h:56
KernelShape
Kernel shape type.
Definition: qgskde.h:44
@ KernelTriweight
Triweight kernel.
Definition: qgskde.h:48
@ KernelUniform
Uniform (flat) kernel.
Definition: qgskde.h:47
@ KernelEpanechnikov
Epanechnikov kernel.
Definition: qgskde.h:49
@ KernelTriangular
Triangular kernel.
Definition: qgskde.h:46
A rectangle specified with double values.
Definition: qgsrectangle.h:42
std::unique_ptr< std::remove_pointer< GDALDatasetH >::type, GDALDatasetCloser > dataset_unique_ptr
Scoped GDAL dataset.
Definition: qgsogrutils.h:157
QgsKernelDensityEstimation::OutputValues outputValues
Type of output value.
Definition: qgskde.h:94
QString radiusField
Field for radius, or empty if using a fixed radius.
Definition: qgskde.h:79
double radius
Fixed radius, in map units.
Definition: qgskde.h:76
double decayRatio
Decay ratio (Triangular kernels only)
Definition: qgskde.h:91
QgsKernelDensityEstimation::KernelShape shape
Kernel shape.
Definition: qgskde.h:88
QString weightField
Field name for weighting field, or empty if not using weights.
Definition: qgskde.h:82
double pixelSize
Size of pixel in output file.
Definition: qgskde.h:85