QGIS API Documentation 4.0.0-Norrköping (1ddcee3d0e4)
Loading...
Searching...
No Matches
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
23#include <QString>
24
25using namespace Qt::StringLiterals;
26
32class CORE_EXPORT QgsMultiCurve : public QgsGeometryCollection
33{
34 public:
36
37
38#ifndef SIP_RUN
39
45 QgsCurve *curveN( int index );
46#else
47 // clang-format off
48
56 SIP_PYOBJECT curveN( int index ) SIP_TYPEHINT( QgsCurve );
57 % MethodCode
58 if ( a0 < 0 || a0 >= sipCpp->numGeometries() )
59 {
60 PyErr_SetString( PyExc_IndexError, QByteArray::number( a0 ) );
61 sipIsErr = 1;
62 }
63 else
64 {
65 return sipConvertFromType( sipCpp->curveN( a0 ), sipType_QgsCurve, NULL );
66 }
67 % End
68// clang-format on
69#endif
70
71#ifndef SIP_RUN
72
80 const QgsCurve *curveN( int index ) const;
81#endif
82
83 // clang-format off
84 QString geometryType() const override SIP_HOLDGIL;
85 // clang-format on
86 QgsMultiCurve *clone() const override SIP_FACTORY;
87 void clear() override;
88 QgsMultiCurve *toCurveType() const override SIP_FACTORY;
89 bool fromWkt( const QString &wkt ) override;
90 QDomElement asGml2( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
91 QDomElement asGml3( QDomDocument &doc, int precision = 17, const QString &ns = "gml", QgsAbstractGeometry::AxisOrder axisOrder = QgsAbstractGeometry::AxisOrder::XY ) const override;
92 json asJsonObject( int precision = 17 ) const override SIP_SKIP;
94 bool addGeometries( const QVector< QgsAbstractGeometry * > &geometries SIP_TRANSFER ) override;
95 bool insertGeometry( QgsAbstractGeometry *g SIP_TRANSFER, int index ) override;
96 QgsMultiCurve *simplifyByDistance( double tolerance ) const override SIP_FACTORY;
97
102
103 QgsAbstractGeometry *boundary() const override SIP_FACTORY;
104
105#ifndef SIP_RUN
106
115 inline static const QgsMultiCurve *cast( const QgsAbstractGeometry *geom ) // cppcheck-suppress duplInheritedMember
116 {
117 if ( !geom )
118 return nullptr;
119
120 const Qgis::WkbType flatType = QgsWkbTypes::flatType( geom->wkbType() );
121 if ( flatType == Qgis::WkbType::MultiCurve
122 || flatType == Qgis::WkbType::MultiLineString )
123 return static_cast<const QgsMultiCurve *>( geom );
124 return nullptr;
125 }
126
135 inline static QgsMultiCurve *cast( QgsAbstractGeometry *geom ) // cppcheck-suppress duplInheritedMember
136 {
137 if ( !geom )
138 return nullptr;
139
140 const Qgis::WkbType flatType = QgsWkbTypes::flatType( geom->wkbType() );
141 if ( flatType == Qgis::WkbType::MultiCurve
142 || flatType == Qgis::WkbType::MultiLineString )
143 return static_cast<QgsMultiCurve *>( geom );
144 return nullptr;
145 }
146#endif
147
149
150#ifdef SIP_RUN
151// clang-format off
152 SIP_PYOBJECT __repr__();
153 % MethodCode
154 QString wkt = sipCpp->asWkt();
155 if ( wkt.length() > 1000 )
156 wkt = wkt.left( 1000 ) + u"..."_s;
157 QString str = u"<QgsMultiCurve: %1>"_s.arg( wkt );
158 sipRes = PyUnicode_FromString( str.toUtf8().constData() );
159 % End
160// clang-format on
161#endif
162
163};
164
165// clazy:excludeall=qstring-allocations
166
167#endif // QGSMULTICURVE_H
WkbType
The WKB type describes the number of dimensions a geometry has.
Definition qgis.h:294
@ MultiLineString
MultiLineString.
Definition qgis.h:301
@ MultiCurve
MultiCurve.
Definition qgis.h:307
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.
QgsAbstractGeometry()=default
Abstract base class for curved geometry type.
Definition qgscurve.h:36
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
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.
QgsGeometryCollection * simplifyByDistance(double tolerance) const override
Simplifies the geometry by applying the Douglas Peucker simplification by distance algorithm.
QgsGeometryCollection()
Constructor for an empty geometry collection.
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.
virtual bool addGeometries(const QVector< QgsAbstractGeometry * > &geometries)
Adds a list of geometries to the collection, transferring ownership to the collection.
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.
QgsMultiCurve * reversed() const
Returns a copy of the multi curve, where each component curve has had its line direction reversed.
static QgsMultiCurve * cast(QgsAbstractGeometry *geom)
Cast the geom to a QgsMultiCurve.
static const QgsMultiCurve * cast(const QgsAbstractGeometry *geom)
Cast the geom to a QgsMultiCurve.
QgsCurve * curveN(int index)
Returns the curve with the specified index.
static Qgis::WkbType flatType(Qgis::WkbType type)
Returns the flat type for a WKB type.
#define SIP_TYPEHINT(type)
Definition qgis_sip.h:239
#define SIP_SKIP
Definition qgis_sip.h:133
#define SIP_TRANSFER
Definition qgis_sip.h:35
#define SIP_HOLDGIL
Definition qgis_sip.h:178
#define SIP_FACTORY
Definition qgis_sip.h:83