예제 #1
0
QgsAbstractGeometryV2* QgsGeometryImport::fromMultiPolygon( const QgsMultiPolygon& multipoly )
{
  QgsMultiPolygonV2* mp = new QgsMultiPolygonV2();
  for ( int i = 0; i < multipoly.size(); ++i )
  {
    mp->addGeometry( fromPolygon( multipoly.at( i ) ) );
  }
  return mp;
}
예제 #2
0
void TestQgsGeometryUtils::testExtractLinestrings()
{
    QgsLineString* outerRing1 = new QgsLineString();
    outerRing1->setPoints( QList<QgsPointV2>() << QgsPointV2( 1, 1 ) << QgsPointV2( 1, 2 ) << QgsPointV2( 2, 2 ) << QgsPointV2( 2, 1 ) << QgsPointV2( 1, 1 ) );
    QgsPolygonV2* polygon1 = new QgsPolygonV2();
    polygon1->setExteriorRing( outerRing1 );

    QgsLineString* outerRing2 = new QgsLineString();
    outerRing2->setPoints( QList<QgsPointV2>() << QgsPointV2( 10, 10 ) << QgsPointV2( 10, 20 ) << QgsPointV2( 20, 20 ) << QgsPointV2( 20, 10 ) << QgsPointV2( 10, 10 ) );
    QgsPolygonV2* polygon2 = new QgsPolygonV2();
    polygon2->setExteriorRing( outerRing2 );

    QgsLineString* innerRing2 = new QgsLineString();
    innerRing2->setPoints( QList<QgsPointV2>() << QgsPointV2( 14, 14 ) << QgsPointV2( 14, 16 ) << QgsPointV2( 16, 16 ) << QgsPointV2( 16, 14 ) << QgsPointV2( 14, 14 ) );
    polygon2->setInteriorRings( QList<QgsCurve*>() << innerRing2 );

    QgsMultiPolygonV2 mpg;
    mpg.addGeometry( polygon1 );
    mpg.addGeometry( polygon2 );

    QList<QgsLineString*> linestrings = QgsGeometryUtils::extractLineStrings( &mpg );
    QCOMPARE( linestrings.count(), 3 );
    qDeleteAll( linestrings );
}