QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
qgsgeometrysimplifier.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsgeometrysimplifier.h
3 ---------------------
4 begin : December 2013
5 copyright : (C) 2013 by Alvaro Huarte
6 email : http://wiki.osgeo.org/wiki/Alvaro_Huarte
7
8 ***************************************************************************
9 * *
10 * This program is free software; you can redistribute it and/or modify *
11 * it under the terms of the GNU General Public License as published by *
12 * the Free Software Foundation; either version 2 of the License, or *
13 * (at your option) any later version. *
14 * *
15 ***************************************************************************/
16
17#ifndef QGSGEOMETRYSIMPLIFIER_H
18#define QGSGEOMETRYSIMPLIFIER_H
19
20#include <QVector>
21#include <QPointF>
22
23class QgsGeometry;
24class QgsRectangle;
26
27#include "qgis_core.h"
28#include "qgis_sip.h"
29
35{
36 public:
37 virtual ~QgsAbstractGeometrySimplifier() = default;
38
40 virtual QgsGeometry simplify( const QgsGeometry &geometry ) const = 0;
41
51 virtual QgsAbstractGeometry *simplify( const QgsAbstractGeometry *geometry ) const = 0 SIP_FACTORY;
52
53 // MapToPixel simplification helper methods
54 public:
56 static bool isGeneralizableByDeviceBoundingBox( const QgsRectangle &envelope, float mapToPixelTol = 1.0f );
58 static bool isGeneralizableByDeviceBoundingBox( const QVector<QPointF> &points, float mapToPixelTol = 1.0f );
59};
60
61/***************************************************************************/
62
71{
72 public:
73
78 QgsTopologyPreservingSimplifier( double tolerance );
79
80 QgsGeometry simplify( const QgsGeometry &geometry ) const override;
81 QgsAbstractGeometry *simplify( const QgsAbstractGeometry *geometry ) const override SIP_FACTORY;
82
83 protected:
85 double mTolerance;
86
87};
88
89#endif // QGSGEOMETRYSIMPLIFIER_H
Abstract base class for simplify geometries using a specific algorithm.
virtual ~QgsAbstractGeometrySimplifier()=default
virtual QgsAbstractGeometry * simplify(const QgsAbstractGeometry *geometry) const =0
Returns a simplified version the specified geometry.
virtual QgsGeometry simplify(const QgsGeometry &geometry) const =0
Returns a simplified version the specified geometry.
Abstract base class for all geometries.
A geometry is the spatial representation of a feature.
Definition: qgsgeometry.h:162
A rectangle specified with double values.
Definition: qgsrectangle.h:42
Implementation of GeometrySimplifier using the Douglas-Peucker algorithm.
double mTolerance
Distance tolerance for the simplification.
#define SIP_FACTORY
Definition: qgis_sip.h:76