QGIS API Documentation 3.99.0-Master (26c88405ac0)
Loading...
Searching...
No Matches
qgssurface.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgscurvepolygon.cpp
3 ---------------------
4 begin : August 2017
5 copyright : (C) 2017 by Martí Angelats i Ribera
6 email : marti dot angelats at psig dot cat
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#include "qgssurface.h"
19
20#include <memory>
21
22#include "qgsgeos.h"
23#include "qgspoint.h"
24#include "qgspolygon.h"
25
26bool QgsSurface::isValid( QString &error, Qgis::GeometryValidityFlags flags ) const
27{
28 if ( flags == 0 && mHasCachedValidity )
29 {
30 // use cached validity results
32 return error.isEmpty();
33 }
34
35 const QgsGeos geos( this, 0, Qgis::GeosCreationFlags() );
36 const bool res = geos.isValid( &error, flags & Qgis::GeometryValidityFlag::AllowSelfTouchingHoles, nullptr );
37 if ( flags == 0 )
38 {
39 mValidityFailureReason = !res ? error : QString();
40 mHasCachedValidity = true;
41 }
42 return res;
43}
44
@ AllowSelfTouchingHoles
Indicates that self-touching holes are permitted. OGC validity states that self-touching holes are NO...
Definition qgis.h:2072
QFlags< GeometryValidityFlag > GeometryValidityFlags
Geometry validity flags.
Definition qgis.h:2075
QFlags< GeosCreationFlag > GeosCreationFlags
Geos geometry creation behavior flags.
Definition qgis.h:2158
virtual void clearCache() const
Clears any cached parameters associated with the geometry, e.g., bounding boxes.
A 3-dimensional box composed of x, y, z coordinates.
Definition qgsbox3d.h:42
Does vector analysis using the GEOS library and handles import, export, and exception handling.
Definition qgsgeos.h:141
QgsBox3D mBoundingBox
Definition qgssurface.h:101
void clearCache() const override
Clears any cached parameters associated with the geometry, e.g., bounding boxes.
QString mValidityFailureReason
Definition qgssurface.h:103
bool mHasCachedValidity
Definition qgssurface.h:102
bool isValid(QString &error, Qgis::GeometryValidityFlags flags=Qgis::GeometryValidityFlags()) const override
Checks validity of the geometry, and returns true if the geometry is valid.
Contains geos related utilities and functions.
Definition qgsgeos.h:77