QGIS API Documentation  3.23.0-Master (4fd2f04bd0)
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 *
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  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 =0
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.
Definition: qgsrectangle.h:42
double height() const SIP_HOLDGIL
Returns the height of the rectangle.
Definition: qgsrectangle.h:230
double width() const SIP_HOLDGIL
Returns the width of the rectangle.
Definition: qgsrectangle.h:223