QGIS API Documentation  3.14.0-Pi (9f7028fd23)
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  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 }
QgsRectangle
Definition: qgsrectangle.h:41
qgsfeaturepool.h
QgsAbstractGeometry::area
virtual double area() const
Returns the planar, 2-dimensional area of the geometry.
Definition: qgsabstractgeometry.cpp:142
QgsAbstractGeometry
Abstract base class for all geometries.
Definition: qgsabstractgeometry.h:71
QgsAbstractGeometry::boundingBox
virtual QgsRectangle boundingBox() const =0
Returns the minimal bounding box for the geometry.
QgsRectangle::height
double height() const
Returns the height of the rectangle.
Definition: qgsrectangle.h:209
QgsRectangle::width
double width() const
Returns the width of the rectangle.
Definition: qgsrectangle.h:202
qgsgeometrysliverpolygoncheck.h