void multipolygon_inner_ring_finish() { try { m_rings.emplace_back(m_geos_factory->createLinearRing(m_coordinate_sequence.release())); } catch (const geos::util::GEOSException& e) { THROW(osmium::geos_geometry_error(e.what())); } }
void HiJitCube::computePoly() { // Compute sample and line coordinates in the focal plane int samp0,sampN; if (originst) { samp0=jdata.fpSamp0 + jdata.sampOffset; sampN=samp0 + npSamps[jdata.cpmmNumber] - 1; } else { samp0=jdata.fpSamp0 + jdata.sampOffset; sampN=samp0 + Samples() - 1; } int line0(jdata.fpLine0 + jdata.lineOffset), lineN(line0 + Lines() - 1); // Allocate a new coordinate sequence and define it geos::geom::CoordinateSequence *pts = new geos::geom::CoordinateArraySequence(); pts->add(geos::geom::Coordinate(samp0, lineN)); pts->add(geos::geom::Coordinate(sampN, lineN)); pts->add(geos::geom::Coordinate(sampN, line0)); pts->add(geos::geom::Coordinate(samp0, line0)); pts->add(geos::geom::Coordinate(samp0, lineN)); // Make this reentrant and delete previous one if it exists and get the // new one delete fpGeom; fpGeom = geosFactory.createPolygon(geosFactory.createLinearRing(pts), 0); return; }