QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
qgsgeometryoptions.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsgeometryoptions.cpp
3 -------------------
4 begin : Aug 23, 2018
5 copyright : (C) 2018 by Matthias Kuhn
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 "qgsgeometryoptions.h"
19#include "qgsxmlutils.h"
21#include "qgssettingstree.h"
22
24
26{
27 mGeometryChecks = settingsGeometryValidationDefaultChecks->value().split( ',' ) ;
28}
29
31{
32 return mRemoveDuplicateNodes;
33}
34
36{
37 mRemoveDuplicateNodes = value;
39}
40
42{
43 return mGeometryPrecision;
44}
45
47{
48 mGeometryPrecision = value;
50}
51
53{
54 return mGeometryPrecision != 0.0 || mRemoveDuplicateNodes;
55}
56
58{
59 if ( mGeometryPrecision != 0.0 )
60 geometry = geometry.snappedToGrid( mGeometryPrecision, mGeometryPrecision );
61
62 if ( mRemoveDuplicateNodes )
63 geometry.removeDuplicateNodes( 4 * std::numeric_limits<double>::epsilon(), true );
64}
65
67{
68 return mGeometryChecks;
69}
70
71void QgsGeometryOptions::setGeometryChecks( const QStringList &geometryChecks )
72{
73 mGeometryChecks = geometryChecks;
75}
76
77QVariantMap QgsGeometryOptions::checkConfiguration( const QString &checkId ) const
78{
79 return mCheckConfiguration.value( checkId ).toMap();
80}
81
82void QgsGeometryOptions::setCheckConfiguration( const QString &checkId, const QVariantMap &checkConfiguration )
83{
84 mCheckConfiguration[checkId] = checkConfiguration;
86}
87
88void QgsGeometryOptions::writeXml( QDomNode &node ) const
89{
90 QDomDocument doc = node.ownerDocument();
91 QDomElement geometryOptionsElement = doc.createElement( QStringLiteral( "geometryOptions" ) );
92 node.appendChild( geometryOptionsElement );
93
94 geometryOptionsElement.setAttribute( QStringLiteral( "removeDuplicateNodes" ), mRemoveDuplicateNodes ? 1 : 0 );
95 geometryOptionsElement.setAttribute( QStringLiteral( "geometryPrecision" ), mGeometryPrecision );
96
97 QDomElement activeCheckListElement = QgsXmlUtils::writeVariant( mGeometryChecks, doc );
98 activeCheckListElement.setTagName( QStringLiteral( "activeChecks" ) );
99 geometryOptionsElement.appendChild( activeCheckListElement );
100 QDomElement checkConfigurationElement = QgsXmlUtils::writeVariant( mCheckConfiguration, doc );
101 checkConfigurationElement.setTagName( QStringLiteral( "checkConfiguration" ) );
102 geometryOptionsElement.appendChild( checkConfigurationElement );
103}
104
105void QgsGeometryOptions::readXml( const QDomNode &node )
106{
107 const QDomElement geometryOptionsElement = node.toElement();
108 setGeometryPrecision( geometryOptionsElement.attribute( QStringLiteral( "geometryPrecision" ), QStringLiteral( "0.0" ) ).toDouble() );
109 setRemoveDuplicateNodes( geometryOptionsElement.attribute( QStringLiteral( "removeDuplicateNodes" ), QStringLiteral( "0" ) ).toInt() == 1 );
110
111 const QDomElement activeChecksElem = node.namedItem( QStringLiteral( "activeChecks" ) ).toElement();
112 const QVariant activeChecks = QgsXmlUtils::readVariant( activeChecksElem );
113 setGeometryChecks( activeChecks.toStringList() );
114
115 const QDomElement checkConfigurationElem = node.namedItem( QStringLiteral( "checkConfiguration" ) ).toElement();
116 const QVariant checkConfiguration = QgsXmlUtils::readVariant( checkConfigurationElem );
117 mCheckConfiguration = checkConfiguration.toMap();
118}
bool isActive() const
Determines if at least one fix is enabled.
void removeDuplicateNodesChanged()
Automatically remove duplicate nodes on all geometries which are edited on this layer.
void geometryChecksChanged()
A list of activated geometry checks.
double geometryPrecision() const
The precision in which geometries on this layer should be saved.
bool removeDuplicateNodes() const
Automatically remove duplicate nodes on all geometries which are edited on this layer.
void setGeometryPrecision(double value)
The precision in which geometries on this layer should be saved.
void setRemoveDuplicateNodes(bool value)
Automatically remove duplicate nodes on all geometries which are edited on this layer.
void readXml(const QDomNode &node)
Read the geometry options from node.
QgsGeometryOptions()
Create a new QgsGeometryOptions object.
void setCheckConfiguration(const QString &checkId, const QVariantMap &checkConfiguration)
Set the configuration for the check checkId.
static const QgsSettingsEntryString * settingsGeometryValidationDefaultChecks
Settings entry search path for templates.
QStringList geometryChecks() const
A list of activated geometry checks.
void checkConfigurationChanged()
Access the configuration for the check checkId.
void apply(QgsGeometry &geometry) const
Apply any fixes configured on this class to geometry.
void geometryPrecisionChanged()
The precision in which geometries on this layer should be saved.
void writeXml(QDomNode &node) const
Write the geometry options to the node.
void setGeometryChecks(const QStringList &geometryChecks)
A list of activated geometry checks.
QVariantMap checkConfiguration(const QString &checkId) const
Access the configuration for the check checkId.
A geometry is the spatial representation of a feature.
Definition: qgsgeometry.h:162
QgsGeometry snappedToGrid(double hSpacing, double vSpacing, double dSpacing=0, double mSpacing=0) const
Returns a new geometry with all points or vertices snapped to the closest point of the grid.
bool removeDuplicateNodes(double epsilon=4 *std::numeric_limits< double >::epsilon(), bool useZValues=false)
Removes duplicate nodes from the geometry, wherever removing the nodes does not result in a degenerat...
T value(const QString &dynamicKeyPart=QString()) const
Returns settings value.
A string settings entry.
static QgsSettingsTreeNode * sTreeGeometryValidation
static QDomElement writeVariant(const QVariant &value, QDomDocument &doc)
Write a QVariant to a QDomElement.
static QVariant readVariant(const QDomElement &element)
Read a QVariant from a QDomElement.