QgsAbstractGeometryV2* QgsGeometryImport::fromPolygon( const QgsPolygon& polygon ) { QgsPolygonV2* poly = new QgsPolygonV2(); QList<QgsCurveV2*> holes; for ( int i = 0; i < polygon.size(); ++i ) { QgsLineStringV2* l = linestringFromPolyline( polygon.at( i ) ); l->close(); if ( i == 0 ) { poly->setExteriorRing( l ); } else { holes.push_back( l ); } } poly->setInteriorRings( holes ); return poly; }
std::unique_ptr<QgsPolygonV2> QgsGeometryFactory::fromPolygon( const QgsPolygon &polygon ) { std::unique_ptr< QgsPolygonV2 > poly( new QgsPolygonV2() ); QList<QgsCurve *> holes; for ( int i = 0; i < polygon.size(); ++i ) { std::unique_ptr< QgsLineString > l = linestringFromPolyline( polygon.at( i ) ); l->close(); if ( i == 0 ) { poly->setExteriorRing( l.release() ); } else { holes.push_back( l.release() ); } } poly->setInteriorRings( holes ); return poly; }
std::unique_ptr<QgsPolygon> QgsGeometryFactory::fromPolygonXY( const QgsPolygonXY &polygon ) { std::unique_ptr< QgsPolygon > poly = qgis::make_unique< QgsPolygon >(); QVector<QgsCurve *> holes; holes.reserve( polygon.size() ); for ( int i = 0; i < polygon.size(); ++i ) { std::unique_ptr< QgsLineString > l = linestringFromPolyline( polygon.at( i ) ); l->close(); if ( i == 0 ) { poly->setExteriorRing( l.release() ); } else { holes.push_back( l.release() ); } } poly->setInteriorRings( holes ); return poly; }
QgsAbstractGeometryV2* QgsGeometryImport::fromPolyline( const QgsPolyline& polyline ) { return linestringFromPolyline( polyline ); }
std::unique_ptr<QgsAbstractGeometry> QgsGeometryFactory::fromPolyline( const QgsPolyline &polyline ) { return linestringFromPolyline( polyline ); }