QGIS API Documentation 4.1.0-Master (5bf3c20f3c9)
Loading...
Searching...
No Matches
qgsgeometryisvalidcheck.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgssinglegeometrycheck.cpp
3 --------------------------------------
4Date : 7.9.2018
5Copyright : (C) 2018 by Matthias Kuhn
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
21
22#include <QString>
23
24using namespace Qt::StringLiterals;
25
27 : QgsSingleGeometryCheck( context, configuration )
28{}
29
30QList<Qgis::GeometryType> QgsGeometryIsValidCheck::compatibleGeometryTypes() const
31{
32 return factoryCompatibleGeometryTypes();
33}
34
35QList<QgsSingleGeometryCheckError *> QgsGeometryIsValidCheck::processGeometry( const QgsGeometry &geometry ) const
36{
37 QVector<QgsGeometry::Error> errors;
38
42
43 QgsGeometryValidator validator( geometry, &errors, method );
44
45 QObject::connect( &validator, &QgsGeometryValidator::errorFound, &validator, [&errors]( const QgsGeometry::Error &error ) { errors.append( error ); } );
46
47 // We are already on a thread here normally, no reason to start yet another one. Run synchronously.
48 validator.run();
49
50 QList<QgsSingleGeometryCheckError *> result;
51 for ( const auto &error : std::as_const( errors ) )
52 {
53 QgsGeometry errorGeometry;
54 if ( error.hasWhere() )
55 errorGeometry = QgsGeometry( std::make_unique<QgsPoint>( error.where() ) );
56
57 result << new QgsGeometryIsValidCheckError( this, geometry, errorGeometry, error.what() );
58 }
59 return result;
60}
61
63{
64 return QStringList();
65}
66
67QList<Qgis::GeometryType> QgsGeometryIsValidCheck::factoryCompatibleGeometryTypes()
68{
70}
71
72bool QgsGeometryIsValidCheck::factoryIsCompatible( QgsVectorLayer *layer ) SIP_SKIP
73{
74 return factoryCompatibleGeometryTypes().contains( layer->geometryType() );
75}
76
77QString QgsGeometryIsValidCheck::factoryDescription()
78{
79 return tr( "Is Valid" );
80}
81
82QString QgsGeometryIsValidCheck::factoryId()
83{
84 return u"QgsIsValidCheck"_s;
85}
86
87QgsGeometryCheck::Flags QgsGeometryIsValidCheck::factoryFlags()
88{
90}
91
92QgsGeometryCheck::CheckType QgsGeometryIsValidCheck::factoryCheckType()
93{
95}
97
100 , mDescription( errorDescription )
101{}
102
104{
105 return mDescription;
106}
GeometryValidationEngine
Available engines for validating geometries.
Definition qgis.h:2164
@ QgisInternal
Use internal QgsGeometryValidator method.
Definition qgis.h:2165
@ Geos
Use GEOS validation methods.
Definition qgis.h:2166
@ Line
Lines.
Definition qgis.h:381
@ Polygon
Polygons.
Definition qgis.h:382
Base configuration for geometry checks.
QFlags< Flag > Flags
@ AvailableInValidation
This geometry check should be available in layer validation on the vector layer properties.
CheckType
The type of a check.
@ FeatureNodeCheck
The check controls individual nodes.
const QgsGeometryCheckContext * context() const
Returns the context.
An error for a QgsGeometryIsValid check.
QgsGeometryIsValidCheckError(const QgsSingleGeometryCheck *check, const QgsGeometry &geometry, const QgsGeometry &errorLocation, const QString &errorDescription)
Creates a new is valid check error.
QString description() const override
A human readable description of this error.
Q_DECL_DEPRECATED QStringList resolutionMethods() const override
Returns a list of descriptions for available resolutions for errors.
QgsGeometryIsValidCheck(const QgsGeometryCheckContext *context, const QVariantMap &configuration)
Creates a new is valid check with the provided context.
QList< QgsSingleGeometryCheckError * > processGeometry(const QgsGeometry &geometry) const override
Check the geometry for errors.
QList< Qgis::GeometryType > compatibleGeometryTypes() const override
A list of geometry types for which this check can be performed.
Validates geometries using the QGIS geometry validation model.
void errorFound(const QgsGeometry::Error &error)
Sent when an error has been found during the validation process.
A geometry error.
bool hasWhere() const
true if the location available from
QgsPointXY where() const
The coordinates at which the error is located and should be visualized.
QString what() const
A human readable error message containing details about the error.
A geometry is the spatial representation of a feature.
static const QgsSettingsEntryInteger * settingsDigitizingValidateGeometries
Settings entry digitizing validate geometries.
QgsGeometry errorLocation() const
The exact location of the error.
QgsSingleGeometryCheckError(const QgsSingleGeometryCheck *check, const QgsGeometry &geometry, const QgsGeometry &errorLocation, const QgsVertexId &vertexId=QgsVertexId())
Creates a new single geometry check error.
const QgsSingleGeometryCheck * check() const
The check that created this error.
Base class for geometry checks for a single geometry without any context of the layer or other layers...
QgsSingleGeometryCheck(const QgsGeometryCheckContext *context, const QVariantMap &configuration)
Creates a new single geometry check.
Represents a vector layer which manages a vector based dataset.
#define SIP_SKIP
Definition qgis_sip.h:133