QGIS API Documentation  3.21.0-Master (56b4176581)
qgsmultipolygon.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsmultipolygon.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 QGSMULTIPOLYGON_H
17 #define QGSMULTIPOLYGON_H
18 
19 #include "qgis_core.h"
20 #include "qgis_sip.h"
21 #include "qgsmultisurface.h"
22 
23 class QgsPolygon;
24 
31 class CORE_EXPORT QgsMultiPolygon: public QgsMultiSurface
32 {
33  public:
34 
39 
40 
41 #ifndef SIP_RUN
42 
48  QgsPolygon *polygonN( int index );
49 #else
50 
58  SIP_PYOBJECT polygonN( int index ) SIP_TYPEHINT( QgsPolygon );
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->polygonN( a0 ), sipType_QgsPolygon, NULL );
68  }
69  % End
70 #endif
71 
72 #ifndef SIP_RUN
73 
81  const QgsPolygon *polygonN( int index ) const;
82 #endif
83 
84  QString geometryType() const override SIP_HOLDGIL;
85  void clear() override;
86  QgsMultiPolygon *clone() const override SIP_FACTORY;
87  bool fromWkt( const QString &wkt ) override;
88  QDomElement asGml2( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
89  QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
90  json asJsonObject( int precision = 17 ) const override SIP_SKIP;
91  bool addGeometry( QgsAbstractGeometry *g SIP_TRANSFER ) override;
92  bool insertGeometry( QgsAbstractGeometry *g SIP_TRANSFER, int index ) override;
93 
98  QgsMultiSurface *toCurveType() const override SIP_FACTORY;
99 
100  QgsAbstractGeometry *boundary() const override SIP_FACTORY;
101 #ifndef SIP_RUN
102 
110  inline static const QgsMultiPolygon *cast( const QgsAbstractGeometry *geom )
111  {
112  if ( geom && QgsWkbTypes::flatType( geom->wkbType() ) == QgsWkbTypes::MultiPolygon )
113  return static_cast<const QgsMultiPolygon *>( geom );
114  return nullptr;
115  }
116 #endif
117 
119 
120 #ifdef SIP_RUN
121  SIP_PYOBJECT __repr__();
122  % MethodCode
123  QString wkt = sipCpp->asWkt();
124  if ( wkt.length() > 1000 )
125  wkt = wkt.left( 1000 ) + QStringLiteral( "..." );
126  QString str = QStringLiteral( "<QgsMultiPolygon: %1>" ).arg( wkt );
127  sipRes = PyUnicode_FromString( str.toUtf8().constData() );
128  % End
129 #endif
130 
131  protected:
132 
133  bool wktOmitChildType() const override;
134 };
135 
136 // clazy:excludeall=qstring-allocations
137 
138 #endif // QGSMULTIPOLYGON_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.
virtual bool wktOmitChildType() const
Returns whether child type names are omitted from Wkt representations of the collection.
Multi polygon geometry collection.
static const QgsMultiPolygon * cast(const QgsAbstractGeometry *geom)
Cast the geom to a QgsMultiPolygonV2.
Multi surface geometry collection.
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.
bool addGeometry(QgsAbstractGeometry *g) override
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.
bool fromWkt(const QString &wkt) override
Sets the geometry from a WKT string.
QgsMultiSurface * clone() const override
Clones the geometry by performing a deep copy.
json asJsonObject(int precision=17) const override
Returns a json object representation of the geometry.
QgsMultiSurface * createEmptyWithSameType() const override
Creates a new geometry with the same class and same WKB type as the original and transfers ownership.
QgsAbstractGeometry * boundary() const override
Returns the closure of the combinatorial boundary of the geometry (ie the topological boundary of the...
QgsMultiSurface * toCurveType() const override
Returns the geometry converted to the more generic curve type.
bool insertGeometry(QgsAbstractGeometry *g, int index) override
Inserts a geometry before a specified index and takes ownership.
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.
Polygon geometry type.
Definition: qgspolygon.h:34
static Type flatType(Type type) SIP_HOLDGIL
Returns the flat type for a WKB type.
Definition: qgswkbtypes.h:702
#define str(x)
Definition: qgis.cpp:37
#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