QGIS API Documentation  3.21.0-Master (5b68dc587e)
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 
23 class QgsGeometry;
24 class 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:124
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