QGIS API Documentation 3.99.0-Master (2fe06baccd8)
Loading...
Searching...
No Matches
qgsgeometrysliverpolygoncheck.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsgeometryareacheck.cpp
3 ---------------------
4 begin : September 2015
5 copyright : (C) 2014 by Sandro Mani / Sourcepole AG
6 email : smani at sourcepole dot ch
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
17
18#include "qgsfeaturepool.h"
19
20bool QgsGeometrySliverPolygonCheck::checkThreshold( double layerToMapUnits, const QgsAbstractGeometry *geom, double &value ) const
21{
22 const double maxArea = mMaxArea / ( layerToMapUnits * layerToMapUnits );
23 const QgsRectangle bb = geom->boundingBox();
24 const double maxDim = std::max( bb.width(), bb.height() );
25 const double area = geom->area();
26 value = ( maxDim * maxDim ) / area;
27 if ( maxArea > 0. && area > maxArea )
28 {
29 return false;
30 }
31 return value > mThresholdMapUnits; // the sliver threshold is actually a map unit independent number, just abusing QgsGeometryAreaCheck::mThresholdMapUnits to store it
32}
Abstract base class for all geometries.
virtual QgsRectangle boundingBox() const
Returns the minimal bounding box for the geometry.
virtual double area() const
Returns the planar, 2-dimensional area of the geometry.