QGIS API Documentation 3.39.0-Master (3783037d301)
Loading...
Searching...
No Matches
qgsmaptopixelgeometrysimplifier.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsmaptopixelgeometrysimplifier.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 QGSMAPTOPIXELGEOMETRYSIMPLIFIER_H
18#define QGSMAPTOPIXELGEOMETRYSIMPLIFIER_H
19
20#include "qgis_core.h"
21#include "qgis_sip.h"
22#include "qgis.h"
24#include <QPolygonF>
25#include <memory>
26
28class QgsWkbPtr;
29class QgsConstWkbPtr;
30
31
40{
41 public:
42
45
48 {
49 NoFlags = 0,
50 SimplifyGeometry = 1,
51 SimplifyEnvelope = 2,
52 };
53
54 private:
56 static std::unique_ptr<QgsAbstractGeometry> simplifyGeometry( int simplifyFlags, Qgis::VectorSimplificationAlgorithm simplifyAlgorithm, const QgsAbstractGeometry &geometry, double map2pixelTol, bool isaLinearRing );
57
58 protected:
61
64
66 double mTolerance;
67
69 static float calculateLengthSquared2D( double x1, double y1, double x2, double y2 );
70
72 static bool equalSnapToGrid( double x1, double y1, double x2, double y2, double gridOriginX, double gridOriginY, float gridInverseSizeXY );
73
74 public:
76 int simplifyFlags() const { return mSimplifyFlags; }
78 void setSimplifyFlags( int simplifyFlags ) { mSimplifyFlags = simplifyFlags; }
79
81 Qgis::VectorSimplificationAlgorithm simplifyAlgorithm() const { return mSimplifyAlgorithm; }
83 void setSimplifyAlgorithm( Qgis::VectorSimplificationAlgorithm simplifyAlgorithm ) { mSimplifyAlgorithm = simplifyAlgorithm; }
84
85 QgsGeometry simplify( const QgsGeometry &geometry ) const override;
86 QgsAbstractGeometry *simplify( const QgsAbstractGeometry *geometry ) const override SIP_FACTORY;
87
89 void setTolerance( double value ) { mTolerance = value; }
90
91 // MapToPixel simplification helper methods
92 public:
93
95 static bool isGeneralizableByMapBoundingBox( const QgsRectangle &envelope, double map2pixelTol );
96
98 inline bool isGeneralizableByMapBoundingBox( const QgsRectangle &envelope ) const
99 {
100 return isGeneralizableByMapBoundingBox( envelope, mTolerance );
101 }
102};
103
104#endif // QGSMAPTOPIXELGEOMETRYSIMPLIFIER_H
VectorSimplificationAlgorithm
Simplification algorithms for vector features.
Definition qgis.h:2782
@ Distance
The simplification uses the distance between points to remove duplicate points.
Abstract base class for simplify geometries using a specific algorithm.
virtual QgsGeometry simplify(const QgsGeometry &geometry) const =0
Returns a simplified version the specified geometry.
Abstract base class for all geometries.
A const WKB pointer.
Definition qgswkbptr.h:138
A geometry is the spatial representation of a feature.
Implementation of GeometrySimplifier using the "MapToPixel" algorithm.
bool isGeneralizableByMapBoundingBox(const QgsRectangle &envelope) const
Returns whether the envelope can be replaced by its BBOX when is applied the specified map2pixel cont...
double mTolerance
Distance tolerance for the simplification.
int simplifyFlags() const
Gets the simplification hints of the vector layer managed.
void setSimplifyFlags(int simplifyFlags)
Sets the simplification hints of the vector layer managed.
void setTolerance(double value)
Sets the tolerance of the vector layer managed.
void setSimplifyAlgorithm(Qgis::VectorSimplificationAlgorithm simplifyAlgorithm)
Sets the local simplification algorithm of the vector layer managed.
SimplifyFlag
Applicable simplification flags.
int mSimplifyFlags
Current simplification flags.
Qgis::VectorSimplificationAlgorithm simplifyAlgorithm() const
Gets the local simplification algorithm of the vector layer managed.
A rectangle specified with double values.
WKB pointer handler.
Definition qgswkbptr.h:44
#define SIP_FACTORY
Definition qgis_sip.h:76