QGIS API Documentation  3.16.0-Hannover (43b64b13f3)
qgsmultilinestring.h
Go to the documentation of this file.
1 /***************************************************************************
2  qgsmultilinestring.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 QGSMULTILINESTRING_H
17 #define QGSMULTILINESTRING_H
18 
19 #include "qgis_core.h"
20 #include "qgis_sip.h"
21 #include "qgsmulticurve.h"
22 
23 class QgsLineString;
24 
31 class CORE_EXPORT QgsMultiLineString: public QgsMultiCurve
32 {
33  public:
34 
39 
40 
41 #ifndef SIP_RUN
42 
48  QgsLineString *lineStringN( int index );
49 #else
50 
58  SIP_PYOBJECT lineStringN( int index ) SIP_TYPEHINT( QgsLineString );
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->lineStringN( a0 ), sipType_QgsLineString, NULL );
68  }
69  % End
70 #endif
71 
72 #ifndef SIP_RUN
73 
81  const QgsLineString *lineStringN( int index ) const;
82 #endif
83 
84  QString geometryType() const override SIP_HOLDGIL;
85  QgsMultiLineString *clone() const override SIP_FACTORY;
86  void clear() override;
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  QgsMultiCurve *toCurveType() const override SIP_FACTORY;
99 
100 #ifndef SIP_RUN
101 
109  inline const QgsMultiLineString *cast( const QgsAbstractGeometry *geom ) const
110  {
111  if ( geom && QgsWkbTypes::flatType( geom->wkbType() ) == QgsWkbTypes::MultiLineString )
112  return static_cast<const QgsMultiLineString *>( geom );
113  return nullptr;
114  }
115 #endif
116 
118 
119 #ifdef SIP_RUN
120  SIP_PYOBJECT __repr__();
121  % MethodCode
122  QString wkt = sipCpp->asWkt();
123  if ( wkt.length() > 1000 )
124  wkt = wkt.left( 1000 ) + QStringLiteral( "..." );
125  QString str = QStringLiteral( "<QgsMultiLineString: %1>" ).arg( wkt );
126  sipRes = PyUnicode_FromString( str.toUtf8().constData() );
127  % End
128 #endif
129 
130  protected:
131 
132  bool wktOmitChildType() const override;
133 };
134 
135 // clazy:excludeall=qstring-allocations
136 
137 #endif // QGSMULTILINESTRING_H
QgsMultiCurve::addGeometry
bool addGeometry(QgsAbstractGeometry *g) override
Adds a geometry and takes ownership. Returns true in case of success.
Definition: qgsmulticurve.cpp:144
QgsMultiCurve::fromWkt
bool fromWkt(const QString &wkt) override
Sets the geometry from a WKT string.
Definition: qgsmulticurve.cpp:72
QgsMultiCurve::clear
void clear() override
Clears the geometry, ie reset it to a null geometry.
Definition: qgsmulticurve.cpp:61
QgsMultiCurve::asGml2
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.
Definition: qgsmulticurve.cpp:79
QgsWkbTypes::flatType
static Type flatType(Type type) SIP_HOLDGIL
Returns the flat type for a WKB type.
Definition: qgswkbtypes.h:702
QgsMultiLineString
Multi line string geometry collection.
Definition: qgsmultilinestring.h:32
QgsMultiCurve::clone
QgsMultiCurve * clone() const override
Clones the geometry by performing a deep copy.
Definition: qgsmulticurve.cpp:56
QgsLineString
Line string geometry type, with support for z-dimension and m-values.
Definition: qgslinestring.h:44
SIP_TYPEHINT
#define SIP_TYPEHINT(type)
Definition: qgis_sip.h:218
SIP_FACTORY
#define SIP_FACTORY
Definition: qgis_sip.h:76
precision
int precision
Definition: qgswfsgetfeature.cpp:49
QgsWkbTypes::MultiLineString
@ MultiLineString
Definition: qgswkbtypes.h:77
QgsMultiCurve::asJsonObject
json asJsonObject(int precision=17) const override
Returns a json object representation of the geometry.
Definition: qgsmulticurve.cpp:124
SIP_SKIP
#define SIP_SKIP
Definition: qgis_sip.h:126
SIP_HOLDGIL
#define SIP_HOLDGIL
Definition: qgis_sip.h:157
QgsAbstractGeometry::wkbType
QgsWkbTypes::Type wkbType() const SIP_HOLDGIL
Returns the WKB type of the geometry.
Definition: qgsabstractgeometry.h:193
QgsAbstractGeometry::AxisOrder
AxisOrder
Axis order for GML generation.
Definition: qgsabstractgeometry.h:133
QgsMultiCurve
Multi curve geometry collection.
Definition: qgsmulticurve.h:30
QgsMultiCurve::createEmptyWithSameType
QgsMultiCurve * createEmptyWithSameType() const override
Creates a new geometry with the same class and same WKB type as the original and transfers ownership.
Definition: qgsmulticurve.cpp:49
qgis_sip.h
QgsMultiCurve::toCurveType
QgsMultiCurve * toCurveType() const override
Returns the geometry converted to the more generic curve type.
Definition: qgsmulticurve.cpp:67
SIP_TRANSFER
#define SIP_TRANSFER
Definition: qgis_sip.h:36
QgsMultiCurve::geometryType
QString geometryType() const override SIP_HOLDGIL
Returns a unique string representing the geometry type.
Definition: qgsmulticurve.cpp:44
QgsGeometryCollection::wktOmitChildType
virtual bool wktOmitChildType() const
Returns whether child type names are omitted from Wkt representations of the collection.
Definition: qgsgeometrycollection.cpp:981
QgsAbstractGeometry
Abstract base class for all geometries.
Definition: qgsabstractgeometry.h:74
QgsMultiCurve::asGml3
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.
Definition: qgsmulticurve.cpp:102
qgsmulticurve.h
QgsMultiLineString::cast
const QgsMultiLineString * cast(const QgsAbstractGeometry *geom) const
Cast the geom to a QgsMultiLineString.
Definition: qgsmultilinestring.h:109
QgsMultiCurve::insertGeometry
bool insertGeometry(QgsAbstractGeometry *g, int index) override
Inserts a geometry before a specified index and takes ownership.
Definition: qgsmulticurve.cpp:168