OGRErr OGRCurvePolygon::addRing( OGRCurve * poNewRing ) { OGRCurve* poNewRingCloned = (OGRCurve* )poNewRing->clone(); OGRErr eErr = addRingDirectly(poNewRingCloned); if( eErr != OGRERR_NONE ) delete poNewRingCloned; return eErr; }
OGRGeometry * GeometryFromRing(const std::list<Point> & ring) { auto ogrRing = new OGRLinearRing(); auto ogrPolygon = new OGRPolygon(); std::for_each(std::begin(ring), std::end(ring), [&](Point it){ogrRing->addPoint(it->getX(), it->getY()); }); ogrPolygon->addRingDirectly(ogrRing); return ogrPolygon; }
polygon_type polygon_finish(size_t /* num_points */) { auto polygon = std::unique_ptr<OGRPolygon>{new OGRPolygon{}}; polygon->addRingDirectly(m_ring.release()); return polygon; }