Example #1
0
OGRLinearRing* OGRCompoundCurve::CastToLinearRing( OGRCompoundCurve* poCC )
{
    for( int i = 0; i < poCC->oCC.nCurveCount; i++ )
    {
        poCC->oCC.papoCurves[i] =
            OGRCurve::CastToLineString(poCC->oCC.papoCurves[i]);
        if( poCC->oCC.papoCurves[i] == NULL )
        {
            delete poCC;
            return NULL;
        }
    }

    if( poCC->oCC.nCurveCount == 1 )
    {
        OGRLinearRing* poLR =
            OGRCurve::CastToLinearRing( poCC->oCC.papoCurves[0] );
        if( poLR != NULL )
        {
            poLR->assignSpatialReference(poCC->getSpatialReference());
        }
        poCC->oCC.papoCurves[0] = NULL;
        delete poCC;
        return poLR;
    }

    OGRLinearRing* poLR =
        (OGRLinearRing *) poCC->CurveToLineInternal(0, NULL, TRUE);
    delete poCC;
    return poLR;
}
Example #2
0
OGRGeometry *OGRLinearRing::clone() const

{
    OGRLinearRing *poNewLinearRing = new OGRLinearRing();
    poNewLinearRing->assignSpatialReference( getSpatialReference() );

    poNewLinearRing->setPoints( nPointCount, paoPoints, padfZ, padfM );
    poNewLinearRing->flags = flags;

    return poNewLinearRing;
}