Skip to content

Commit f5004ed

Browse files
committedSep 25, 2017
Fix multi line string allowing insertion of non line geometries
1 parent 6d95ba0 commit f5004ed

File tree

5 files changed

+15
-29
lines changed

5 files changed

+15
-29
lines changed
 

‎python/core/geometry/qgsmultilinestring.sip

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,29 +20,25 @@ class QgsMultiLineString: QgsMultiCurve
2020
%End
2121
public:
2222
QgsMultiLineString();
23+
2324
virtual QString geometryType() const;
2425

2526
virtual QgsMultiLineString *clone() const /Factory/;
2627

27-
2828
virtual void clear();
2929

3030
virtual bool fromWkt( const QString &wkt );
3131

32-
3332
virtual QDomElement asGML2( QDomDocument &doc, int precision = 17, const QString &ns = "gml" ) const;
3433

3534
virtual QDomElement asGML3( QDomDocument &doc, int precision = 17, const QString &ns = "gml" ) const;
3635

3736
virtual QString asJSON( int precision = 17 ) const;
3837

39-
4038
virtual bool addGeometry( QgsAbstractGeometry *g /Transfer/ );
4139

42-
%Docstring
43-
Adds a geometry and takes ownership. Returns true in case of success
44-
:rtype: bool
45-
%End
40+
virtual bool insertGeometry( QgsAbstractGeometry *g /Transfer/, int index );
41+
4642

4743
virtual QgsMultiCurve *toCurveType() const /Factory/;
4844

‎python/core/geometry/qgsmultipoint.sip

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,37 +20,29 @@ class QgsMultiPointV2: QgsGeometryCollection
2020
%End
2121
public:
2222
QgsMultiPointV2();
23+
2324
virtual QString geometryType() const;
2425

2526
virtual QgsMultiPointV2 *clone() const /Factory/;
2627

2728
virtual QgsMultiPointV2 *toCurveType() const /Factory/;
2829

29-
3030
virtual bool fromWkt( const QString &wkt );
3131

3232
virtual void clear();
3333

34-
3534
virtual QDomElement asGML2( QDomDocument &doc, int precision = 17, const QString &ns = "gml" ) const;
3635

3736
virtual QDomElement asGML3( QDomDocument &doc, int precision = 17, const QString &ns = "gml" ) const;
3837

3938
virtual QString asJSON( int precision = 17 ) const;
4039

41-
4240
virtual int nCoordinates() const;
4341

44-
4542
virtual bool addGeometry( QgsAbstractGeometry *g /Transfer/ );
4643

47-
%Docstring
48-
Adds a geometry and takes ownership. Returns true in case of success
49-
:rtype: bool
50-
%End
5144
virtual bool insertGeometry( QgsAbstractGeometry *g /Transfer/, int index );
5245

53-
5446
virtual QgsAbstractGeometry *boundary() const /Factory/;
5547

5648

‎src/core/geometry/qgsmultilinestring.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,14 @@ bool QgsMultiLineString::addGeometry( QgsAbstractGeometry *g )
125125
return QgsGeometryCollection::addGeometry( g );
126126
}
127127

128+
bool QgsMultiLineString::insertGeometry( QgsAbstractGeometry *g, int index )
129+
{
130+
if ( !g || QgsWkbTypes::flatType( g->wkbType() ) != QgsWkbTypes::LineString )
131+
return false;
132+
133+
return QgsGeometryCollection::insertGeometry( g, index );
134+
}
135+
128136
QgsMultiCurve *QgsMultiLineString::toCurveType() const
129137
{
130138
QgsMultiCurve *multiCurve = new QgsMultiCurve();

‎src/core/geometry/qgsmultilinestring.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,18 +29,16 @@ class CORE_EXPORT QgsMultiLineString: public QgsMultiCurve
2929
{
3030
public:
3131
QgsMultiLineString();
32+
3233
QString geometryType() const override;
3334
QgsMultiLineString *clone() const override SIP_FACTORY;
34-
3535
void clear() override;
3636
bool fromWkt( const QString &wkt ) override;
37-
3837
QDomElement asGML2( QDomDocument &doc, int precision = 17, const QString &ns = "gml" ) const override;
3938
QDomElement asGML3( QDomDocument &doc, int precision = 17, const QString &ns = "gml" ) const override;
4039
QString asJSON( int precision = 17 ) const override;
41-
42-
//! Adds a geometry and takes ownership. Returns true in case of success
4340
bool addGeometry( QgsAbstractGeometry *g SIP_TRANSFER ) override;
41+
bool insertGeometry( QgsAbstractGeometry *g SIP_TRANSFER, int index ) override;
4442

4543
/** Returns the geometry converted to the more generic curve type QgsMultiCurve
4644
\returns the converted geometry. Caller takes ownership*/

‎src/core/geometry/qgsmultipoint.h

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,26 +29,18 @@ class CORE_EXPORT QgsMultiPointV2: public QgsGeometryCollection
2929
{
3030
public:
3131
QgsMultiPointV2();
32+
3233
QString geometryType() const override;
3334
QgsMultiPointV2 *clone() const override SIP_FACTORY;
3435
QgsMultiPointV2 *toCurveType() const override SIP_FACTORY;
35-
3636
bool fromWkt( const QString &wkt ) override;
3737
void clear() override;
38-
39-
// inherited: int wkbSize() const;
40-
// inherited: unsigned char* asWkb( int& binarySize ) const;
41-
// inherited: QString asWkt( int precision = 17 ) const;
4238
QDomElement asGML2( QDomDocument &doc, int precision = 17, const QString &ns = "gml" ) const override;
4339
QDomElement asGML3( QDomDocument &doc, int precision = 17, const QString &ns = "gml" ) const override;
4440
QString asJSON( int precision = 17 ) const override;
45-
4641
int nCoordinates() const override;
47-
48-
//! Adds a geometry and takes ownership. Returns true in case of success
4942
bool addGeometry( QgsAbstractGeometry *g SIP_TRANSFER ) override;
5043
bool insertGeometry( QgsAbstractGeometry *g SIP_TRANSFER, int index ) override;
51-
5244
QgsAbstractGeometry *boundary() const override SIP_FACTORY;
5345

5446
#ifndef SIP_RUN

0 commit comments

Comments
 (0)
Please sign in to comment.