QGIS API Documentation 3.41.0-Master (af5edcb665c)
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#include "qgsfeaturepool.h"
18
19bool QgsGeometrySliverPolygonCheck::checkThreshold( double layerToMapUnits, const QgsAbstractGeometry *geom, double &value ) const
20{
21 const double maxArea = mMaxArea / ( layerToMapUnits * layerToMapUnits );
22 const QgsRectangle bb = geom->boundingBox();
23 const double maxDim = std::max( bb.width(), bb.height() );
24 const double area = geom->area();
25 value = ( maxDim * maxDim ) / area;
26 if ( maxArea > 0. && area > maxArea )
27 {
28 return false;
29 }
30 return value > mThresholdMapUnits; // the sliver threshold is actually a map unit independent number, just abusing QgsGeometryAreaCheck::mThresholdMapUnits to store it
31}
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.
A rectangle specified with double values.