Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Fix multipolygon allowing insertion of non polygon geometries
  • Loading branch information
nyalldawson committed Sep 26, 2017
1 parent 6c328d5 commit 9518c90
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 14 deletions.
9 changes: 2 additions & 7 deletions python/core/geometry/qgsmultipolygon.sip
Expand Up @@ -26,23 +26,18 @@ class QgsMultiPolygonV2: QgsMultiSurface

virtual QgsMultiPolygonV2 *clone() const /Factory/;


virtual bool fromWkt( const QString &wkt );


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

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

virtual QString asJSON( int precision = 17 ) const;


virtual bool addGeometry( QgsAbstractGeometry *g /Transfer/ );

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


virtual QgsMultiSurface *toCurveType() const /Factory/;

Expand Down
11 changes: 11 additions & 0 deletions src/core/geometry/qgsmultipolygon.cpp
Expand Up @@ -148,6 +148,17 @@ bool QgsMultiPolygonV2::addGeometry( QgsAbstractGeometry *g )
return QgsGeometryCollection::addGeometry( g );
}

bool QgsMultiPolygonV2::insertGeometry( QgsAbstractGeometry *g, int index )
{
if ( !g || !qgsgeometry_cast< QgsPolygonV2 * >( g ) )
{
delete g;
return false;
}

return QgsMultiSurface::insertGeometry( g, index );
}

QgsMultiSurface *QgsMultiPolygonV2::toCurveType() const
{
QgsMultiSurface *multiSurface = new QgsMultiSurface();
Expand Down
8 changes: 1 addition & 7 deletions src/core/geometry/qgsmultipolygon.h
Expand Up @@ -32,18 +32,12 @@ class CORE_EXPORT QgsMultiPolygonV2: public QgsMultiSurface
QString geometryType() const override;
void clear() override;
QgsMultiPolygonV2 *clone() const override SIP_FACTORY;

bool fromWkt( const QString &wkt ) override;

// inherited: int wkbSize() const;
// inherited: unsigned char* asWkb( int& binarySize ) const;
// inherited: QString asWkt( int precision = 17 ) const;
QDomElement asGML2( QDomDocument &doc, int precision = 17, const QString &ns = "gml" ) const override;
QDomElement asGML3( QDomDocument &doc, int precision = 17, const QString &ns = "gml" ) const override;
QString asJSON( int precision = 17 ) const override;

//! Adds a geometry and takes ownership. Returns true in case of success
bool addGeometry( QgsAbstractGeometry *g SIP_TRANSFER ) override;
bool insertGeometry( QgsAbstractGeometry *g SIP_TRANSFER, int index ) override;

/** Returns the geometry converted to the more generic curve type QgsMultiSurface
\returns the converted geometry. Caller takes ownership*/
Expand Down

0 comments on commit 9518c90

Please sign in to comment.