QGIS API Documentation  3.17.0-Master (a84647cf30)
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 
19 bool QgsGeometrySliverPolygonCheck::checkThreshold( double layerToMapUnits, const QgsAbstractGeometry *geom, double &value ) const
20 {
21  double maxArea = mMaxArea / ( layerToMapUnits * layerToMapUnits );
22  QgsRectangle bb = geom->boundingBox();
23  double maxDim = std::max( bb.width(), bb.height() );
24  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 }
A rectangle specified with double values.
Definition: qgsrectangle.h:41
virtual QgsRectangle boundingBox() const =0
Returns the minimal bounding box for the geometry.
double height() const SIP_HOLDGIL
Returns the height of the rectangle.
Definition: qgsrectangle.h:209
double width() const SIP_HOLDGIL
Returns the width of the rectangle.
Definition: qgsrectangle.h:202
virtual double area() const
Returns the planar, 2-dimensional area of the geometry.
Abstract base class for all geometries.