QGIS/python/core/qgsgeometrysimplifier.sip

46 lines
1.8 KiB
Plaintext
Raw Normal View History

/** Abstract base class for simplify geometries using a specific algorithm */
class QgsAbstractGeometrySimplifier
{
%TypeHeaderCode
#include "qgsgeometrysimplifier.h"
%End
public:
virtual ~QgsAbstractGeometrySimplifier();
2014-01-27 09:22:24 +01:00
//! Returns a simplified version the specified geometry
virtual QgsGeometry* simplify( QgsGeometry* geometry ) const = 0;
2014-01-27 09:22:24 +01:00
//! Simplifies the specified geometry
virtual bool simplifyGeometry( QgsGeometry* geometry ) const = 0;
// MapToPixel simplification helper methods
public:
2014-01-27 09:22:24 +01:00
//! Returns whether the device-envelope can be replaced by its BBOX when is applied the specified tolerance
static bool isGeneralizableByDeviceBoundingBox( const QgsRectangle& envelope, float mapToPixelTol = 1.0f );
2014-01-27 09:22:24 +01:00
//! Returns whether the device-geometry can be replaced by its BBOX when is applied the specified tolerance
static bool isGeneralizableByDeviceBoundingBox( const QVector<QPointF>& points, float mapToPixelTol = 1.0f );
};
2014-01-27 09:22:24 +01:00
/***************************************************************************/
/**
* Implementation of GeometrySimplifier using the Douglas-Peucker algorithm
*
* Simplifies a geometry, ensuring that the result is a valid geometry having the same dimension and number of components as the input.
* The simplification uses a maximum distance difference algorithm similar to the one used in the Douglas-Peucker algorithm.
*/
class QgsTopologyPreservingSimplifier : QgsAbstractGeometrySimplifier
{
%TypeHeaderCode
#include "qgsgeometrysimplifier.h"
%End
public:
QgsTopologyPreservingSimplifier( double tolerance );
virtual ~QgsTopologyPreservingSimplifier();
//! Returns a simplified version the specified geometry
virtual QgsGeometry* simplify( QgsGeometry* geometry ) const;
//! Simplifies the specified geometry
virtual bool simplifyGeometry( QgsGeometry* geometry ) const;
};