QGIS API Documentation  3.20.0-Odense (decaadbb31)
qgsmultisurface.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsmultisurface.h
3  -------------------------------------------------------------------
4 Date : 28 Oct 2014
5 Copyright : (C) 2014 by Marco Hugentobler
6 email : marco.hugentobler at sourcepole dot com
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 
16 #ifndef QGSMULTISURFACE_H
17 #define QGSMULTISURFACE_H
18 
19 #include "qgis_core.h"
20 #include "qgis_sip.h"
21 #include "qgsgeometrycollection.h"
22 
23 
24 class QgsSurface;
25 
32 class CORE_EXPORT QgsMultiSurface: public QgsGeometryCollection
33 {
34  public:
35 
40 
41 #ifndef SIP_RUN
42 
48  QgsSurface *surfaceN( int index );
49 #else
50 
58  SIP_PYOBJECT surfaceN( int index ) SIP_TYPEHINT( QgsSurface );
59  % MethodCode
60  if ( a0 < 0 || a0 >= sipCpp->numGeometries() )
61  {
62  PyErr_SetString( PyExc_IndexError, QByteArray::number( a0 ) );
63  sipIsErr = 1;
64  }
65  else
66  {
67  return sipConvertFromType( sipCpp->surfaceN( a0 ), sipType_QgsSurface, NULL );
68  }
69  % End
70 #endif
71 
72 #ifndef SIP_RUN
73 
81  const QgsSurface *surfaceN( int index ) const;
82 #endif
83 
84  QString geometryType() const override SIP_HOLDGIL;
85  void clear() override;
86  QgsMultiSurface *clone() const override SIP_FACTORY;
87  QgsMultiSurface *toCurveType() const override SIP_FACTORY;
88  bool fromWkt( const QString &wkt ) override;
89  QDomElement asGml2( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
90  QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
91  json asJsonObject( int precision = 17 ) const override SIP_SKIP;
92  bool addGeometry( QgsAbstractGeometry *g SIP_TRANSFER ) override;
93  bool insertGeometry( QgsAbstractGeometry *g SIP_TRANSFER, int index ) override;
94  QgsAbstractGeometry *boundary() const override SIP_FACTORY;
95 
96 #ifndef SIP_RUN
97 
105  inline static const QgsMultiSurface *cast( const QgsAbstractGeometry *geom )
106  {
107  if ( !geom )
108  return nullptr;
109 
110  QgsWkbTypes::Type flatType = QgsWkbTypes::flatType( geom->wkbType() );
111 
112  if ( flatType == QgsWkbTypes::MultiSurface
113  || flatType == QgsWkbTypes::MultiPolygon )
114  return static_cast<const QgsMultiSurface *>( geom );
115  return nullptr;
116  }
117 #endif
118 
120 
121 };
122 
123 // clazy:excludeall=qstring-allocations
124 
125 #endif // QGSMULTISURFACE_H
Abstract base class for all geometries.
AxisOrder
Axis order for GML generation.
QgsWkbTypes::Type wkbType() const SIP_HOLDGIL
Returns the WKB type of the geometry.
Geometry collection.
QgsGeometryCollection * toCurveType() const override
Returns the geometry converted to the more generic curve type.
json asJsonObject(int precision=17) const override
Returns a json object representation of the geometry.
bool fromWkt(const QString &wkt) override
Sets the geometry from a WKT string.
void clear() override
Clears the geometry, ie reset it to a null geometry.
QString geometryType() const override SIP_HOLDGIL
Returns a unique string representing the geometry type.
virtual bool insertGeometry(QgsAbstractGeometry *g, int index)
Inserts a geometry before a specified index and takes ownership.
QgsAbstractGeometry * boundary() const override
Returns the closure of the combinatorial boundary of the geometry (ie the topological boundary of the...
QDomElement asGml2(QDomDocument &doc, int precision=17, const QString &ns="gml", QgsAbstractGeometry::AxisOrder axisOrder=QgsAbstractGeometry::AxisOrder::XY) const override
Returns a GML2 representation of the geometry.
QgsGeometryCollection * clone() const override
Clones the geometry by performing a deep copy.
QgsGeometryCollection * createEmptyWithSameType() const override
Creates a new geometry with the same class and same WKB type as the original and transfers ownership.
virtual bool addGeometry(QgsAbstractGeometry *g)
Adds a geometry and takes ownership. Returns true in case of success.
QDomElement asGml3(QDomDocument &doc, int precision=17, const QString &ns="gml", QgsAbstractGeometry::AxisOrder axisOrder=QgsAbstractGeometry::AxisOrder::XY) const override
Returns a GML3 representation of the geometry.
Multi surface geometry collection.
static const QgsMultiSurface * cast(const QgsAbstractGeometry *geom)
Cast the geom to a QgsMultiSurface.
Surface geometry type.
Definition: qgssurface.h:34
Type
The WKB type describes the number of dimensions a geometry has.
Definition: qgswkbtypes.h:70
static Type flatType(Type type) SIP_HOLDGIL
Returns the flat type for a WKB type.
Definition: qgswkbtypes.h:702
#define SIP_TYPEHINT(type)
Definition: qgis_sip.h:218
#define SIP_SKIP
Definition: qgis_sip.h:126
#define SIP_TRANSFER
Definition: qgis_sip.h:36
#define SIP_HOLDGIL
Definition: qgis_sip.h:157
#define SIP_FACTORY
Definition: qgis_sip.h:76
int precision