QGIS API Documentation 3.32.0-Lima (311a8cb8a6)
qgsmulticurve.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsmulticurve.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 QGSMULTICURVE_H
17#define QGSMULTICURVE_H
18
19#include "qgis_core.h"
20#include "qgis_sip.h"
22
29class CORE_EXPORT QgsMultiCurve: public QgsGeometryCollection
30{
31 public:
33
34
35#ifndef SIP_RUN
36
42 QgsCurve *curveN( int index );
43#else
44
52 SIP_PYOBJECT curveN( int index ) SIP_TYPEHINT( QgsCurve );
53 % MethodCode
54 if ( a0 < 0 || a0 >= sipCpp->numGeometries() )
55 {
56 PyErr_SetString( PyExc_IndexError, QByteArray::number( a0 ) );
57 sipIsErr = 1;
58 }
59 else
60 {
61 return sipConvertFromType( sipCpp->curveN( a0 ), sipType_QgsCurve, NULL );
62 }
63 % End
64#endif
65
66#ifndef SIP_RUN
67
75 const QgsCurve *curveN( int index ) const;
76#endif
77
78 QString geometryType() const override SIP_HOLDGIL;
79 QgsMultiCurve *clone() const override SIP_FACTORY;
80 void clear() override;
81 QgsMultiCurve *toCurveType() const override SIP_FACTORY;
82 bool fromWkt( const QString &wkt ) override;
83 QDomElement asGml2( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
84 QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
85 json asJsonObject( int precision = 17 ) const override SIP_SKIP;
87 bool insertGeometry( QgsAbstractGeometry *g SIP_TRANSFER, int index ) override;
88
93 QgsMultiCurve *reversed() const SIP_FACTORY;
94
96
97#ifndef SIP_RUN
98
106 inline static const QgsMultiCurve *cast( const QgsAbstractGeometry *geom )
107 {
108 if ( !geom )
109 return nullptr;
110
111 const Qgis::WkbType flatType = QgsWkbTypes::flatType( geom->wkbType() );
112 if ( flatType == Qgis::WkbType::MultiCurve
113 || flatType == Qgis::WkbType::MultiLineString )
114 return static_cast<const QgsMultiCurve *>( geom );
115 return nullptr;
116 }
117#endif
118
120
121#ifdef SIP_RUN
122 SIP_PYOBJECT __repr__();
123 % MethodCode
124 QString wkt = sipCpp->asWkt();
125 if ( wkt.length() > 1000 )
126 wkt = wkt.left( 1000 ) + QStringLiteral( "..." );
127 QString str = QStringLiteral( "<QgsMultiCurve: %1>" ).arg( wkt );
128 sipRes = PyUnicode_FromString( str.toUtf8().constData() );
129 % End
130#endif
131
132};
133
134// clazy:excludeall=qstring-allocations
135
136#endif // QGSMULTICURVE_H
WkbType
The WKB type describes the number of dimensions a geometry has.
Definition: qgis.h:154
@ MultiLineString
MultiLineString.
@ MultiCurve
MultiCurve.
Abstract base class for all geometries.
AxisOrder
Axis order for GML generation.
Qgis::WkbType wkbType() const SIP_HOLDGIL
Returns the WKB type of the geometry.
Abstract base class for curved geometry type.
Definition: qgscurve.h:36
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 curve geometry collection.
Definition: qgsmulticurve.h:30
static const QgsMultiCurve * cast(const QgsAbstractGeometry *geom)
Cast the geom to a QgsMultiCurve.
static Qgis::WkbType flatType(Qgis::WkbType type) SIP_HOLDGIL
Returns the flat type for a WKB type.
Definition: qgswkbtypes.h:629
#define str(x)
Definition: qgis.cpp:38
#define SIP_TYPEHINT(type)
Definition: qgis_sip.h:227
#define SIP_SKIP
Definition: qgis_sip.h:126
#define SIP_TRANSFER
Definition: qgis_sip.h:36
#define SIP_HOLDGIL
Definition: qgis_sip.h:166
#define SIP_FACTORY
Definition: qgis_sip.h:76
int precision