QGIS API Documentation 3.39.0-Master (47f7b3a4989)
Loading...
Searching...
No Matches
qgsmultipolygon.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsmultipolygon.h
3 -------------------------------------------------------------------
4Date : 28 Oct 2014
5Copyright : (C) 2014 by Marco Hugentobler
6email : 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
23class QgsPolygon;
24
30class CORE_EXPORT QgsMultiPolygon: public QgsMultiSurface
31{
32 public:
33
38
46 QgsMultiPolygon( const QList< QgsPolygon > &polygons ) SIP_HOLDGIL;
47
55 QgsMultiPolygon( const QList< QgsPolygon * > &polygons SIP_TRANSFER ) SIP_HOLDGIL;
56
57#ifndef SIP_RUN
58
64 QgsPolygon *polygonN( int index );
65#else
66
74 SIP_PYOBJECT polygonN( int index ) SIP_TYPEHINT( QgsPolygon );
75 % MethodCode
76 if ( a0 < 0 || a0 >= sipCpp->numGeometries() )
77 {
78 PyErr_SetString( PyExc_IndexError, QByteArray::number( a0 ) );
79 sipIsErr = 1;
80 }
81 else
82 {
83 return sipConvertFromType( sipCpp->polygonN( a0 ), sipType_QgsPolygon, NULL );
84 }
85 % End
86#endif
87
88#ifndef SIP_RUN
89
97 const QgsPolygon *polygonN( int index ) const;
98#endif
99
100 QString geometryType() const override SIP_HOLDGIL;
101 void clear() override;
102 QgsMultiPolygon *clone() const override SIP_FACTORY;
103 bool fromWkt( const QString &wkt ) override;
104 QDomElement asGml2( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
105 QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
106 json asJsonObject( int precision = 17 ) const override SIP_SKIP;
107 bool addGeometry( QgsAbstractGeometry *g SIP_TRANSFER ) override;
108 bool addGeometries( const QVector< QgsAbstractGeometry * > &geometries SIP_TRANSFER ) final;
109 bool insertGeometry( QgsAbstractGeometry *g SIP_TRANSFER, int index ) override;
110 QgsMultiPolygon *simplifyByDistance( double tolerance ) const override SIP_FACTORY;
111
116 QgsMultiSurface *toCurveType() const override SIP_FACTORY;
117
118 QgsAbstractGeometry *boundary() const override SIP_FACTORY;
119#ifndef SIP_RUN
120
127 inline static const QgsMultiPolygon *cast( const QgsAbstractGeometry *geom )
128 {
130 return static_cast<const QgsMultiPolygon *>( geom );
131 return nullptr;
132 }
133#endif
134
136
137#ifdef SIP_RUN
138 SIP_PYOBJECT __repr__();
139 % MethodCode
140 QString wkt = sipCpp->asWkt();
141 if ( wkt.length() > 1000 )
142 wkt = wkt.left( 1000 ) + QStringLiteral( "..." );
143 QString str = QStringLiteral( "<QgsMultiPolygon: %1>" ).arg( wkt );
144 sipRes = PyUnicode_FromString( str.toUtf8().constData() );
145 % End
146#endif
147
148 protected:
149
150 bool wktOmitChildType() const override;
151};
152
153// clazy:excludeall=qstring-allocations
154
155#endif // QGSMULTIPOLYGON_H
@ MultiPolygon
MultiPolygon.
Abstract base class for all geometries.
AxisOrder
Axis order for GML generation.
@ XY
X comes before Y (or lon before lat)
Qgis::WkbType wkbType() const
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.
QgsMultiSurface * simplifyByDistance(double tolerance) const override
Simplifies the geometry by applying the Douglas Peucker simplification by distance algorithm.
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.
QString geometryType() const override
Returns a unique string representing the geometry type.
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.
bool addGeometries(const QVector< QgsAbstractGeometry * > &geometries) override
Adds a list of geometries to the collection, transferring ownership to the collection.
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.
Polygon geometry type.
Definition qgspolygon.h:33
static Qgis::WkbType flatType(Qgis::WkbType type)
Returns the flat type for a WKB type.
#define str(x)
Definition qgis.cpp:38
#define SIP_TYPEHINT(type)
Definition qgis_sip.h:232
#define SIP_SKIP
Definition qgis_sip.h:126
#define SIP_TRANSFER
Definition qgis_sip.h:36
#define SIP_HOLDGIL
Definition qgis_sip.h:171
#define SIP_FACTORY
Definition qgis_sip.h:76
int precision