QGIS API Documentation 4.1.0-Master (60fea48833c)
Loading...
Searching...
No Matches
qgssurface.h
Go to the documentation of this file.
1/***************************************************************************
2 qgssurface.h
3 --------------
4 begin : September 2014
5 copyright : (C) 2014 by Marco Hugentobler
6 email : marco at sourcepole dot ch
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#ifndef QGSSURFACE_H
19#define QGSSURFACE_H
20
21#include "qgis_core.h"
22#include "qgis_sip.h"
23#include "qgsabstractgeometry.h"
24#include "qgsbox3d.h"
25
26class QgsPolygon;
27
33class CORE_EXPORT QgsSurface : public QgsAbstractGeometry
34{
35 public:
36 QgsBox3D boundingBox3D() const override
37 {
38 if ( mBoundingBox.isNull() )
39 {
41 }
42 return mBoundingBox;
43 }
44
45 bool isValid( QString &error SIP_OUT, Qgis::GeometryValidityFlags flags = Qgis::GeometryValidityFlags() ) const override;
46
47
48#ifndef SIP_RUN
49
58 inline static const QgsSurface *cast( const QgsAbstractGeometry *geom )
59 {
60 if ( !geom )
61 return nullptr;
62
63 const Qgis::WkbType flatType = QgsWkbTypes::flatType( geom->wkbType() );
64 if ( flatType == Qgis::WkbType::CurvePolygon
65 || flatType == Qgis::WkbType::Polygon
66 || flatType == Qgis::WkbType::Triangle
68 || flatType == Qgis::WkbType::TIN )
69 return static_cast<const QgsSurface *>( geom );
70 return nullptr;
71 }
72
81 inline static QgsSurface *cast( QgsAbstractGeometry *geom )
82 {
83 if ( !geom )
84 return nullptr;
85
86 const Qgis::WkbType flatType = QgsWkbTypes::flatType( geom->wkbType() );
87 if ( flatType == Qgis::WkbType::CurvePolygon
88 || flatType == Qgis::WkbType::Polygon
89 || flatType == Qgis::WkbType::Triangle
91 || flatType == Qgis::WkbType::TIN )
92 return static_cast<QgsSurface *>( geom );
93 return nullptr;
94 }
95#endif
96 protected:
97 void clearCache() const override;
98
100 mutable bool mHasCachedValidity = false;
101 mutable QString mValidityFailureReason;
102};
103
104#endif // QGSSURFACE_H
QFlags< GeometryValidityFlag > GeometryValidityFlags
Geometry validity flags.
Definition qgis.h:2155
WkbType
The WKB type describes the number of dimensions a geometry has.
Definition qgis.h:294
@ TIN
TIN.
Definition qgis.h:310
@ Polygon
Polygon.
Definition qgis.h:298
@ Triangle
Triangle.
Definition qgis.h:299
@ CurvePolygon
CurvePolygon.
Definition qgis.h:306
@ PolyhedralSurface
PolyhedralSurface.
Definition qgis.h:309
virtual QgsBox3D calculateBoundingBox3D() const
Calculates the minimal 3D bounding box for the geometry.
virtual bool isValid(QString &error, Qgis::GeometryValidityFlags flags=Qgis::GeometryValidityFlags()) const =0
Checks validity of the geometry, and returns true if the geometry is valid.
virtual void clearCache() const
Clears any cached parameters associated with the geometry, e.g., bounding boxes.
Qgis::WkbType wkbType() const
Returns the WKB type of the geometry.
QgsAbstractGeometry()=default
A 3-dimensional box composed of x, y, z coordinates.
Definition qgsbox3d.h:45
Polygon geometry type.
Definition qgspolygon.h:37
Surface geometry type.
Definition qgssurface.h:34
QgsBox3D mBoundingBox
Definition qgssurface.h:99
static QgsSurface * cast(QgsAbstractGeometry *geom)
Cast the geom to a QgsSurface.
Definition qgssurface.h:81
QgsBox3D boundingBox3D() const override
Returns the 3D bounding box for the geometry.
Definition qgssurface.h:36
static const QgsSurface * cast(const QgsAbstractGeometry *geom)
Cast the geom to a QgsSurface.
Definition qgssurface.h:58
QString mValidityFailureReason
Definition qgssurface.h:101
bool mHasCachedValidity
Definition qgssurface.h:100
static Qgis::WkbType flatType(Qgis::WkbType type)
Returns the flat type for a WKB type.
#define SIP_OUT
Definition qgis_sip.h:57