Adds a polygon to the topology.
The boundary of the given polygon will snap to existing nodes or edges within given tolerance. Existing edges or faces may be split by the boundary of the polygon.
5817 const GEOSPreparedGeometry *ppoly;
5818 GEOSGeometry *polyg;
5822 LWDEBUGF(1,
"Working tolerance:%.15g", tol);
5825 for ( i=0; i<poly->
nrings; ++i )
5838 lwerror(
"Error adding ring %d of polygon", i);
5853 if ( nfacesinbox == -1 )
5870 ppoly = GEOSPrepare(polyg);
5872 for ( j=0; j<nfacesinbox; ++j )
5876 GEOSGeometry *fgg, *sp;
5884 GEOSPreparedGeom_destroy(ppoly);
5885 GEOSGeom_destroy(polyg);
5896 GEOSPreparedGeom_destroy(ppoly);
5897 GEOSGeom_destroy(polyg);
5902 sp = GEOSPointOnSurface(fgg);
5903 GEOSGeom_destroy(fgg);
5906 GEOSPreparedGeom_destroy(ppoly);
5907 GEOSGeom_destroy(polyg);
5912 covers = GEOSPreparedCovers( ppoly, sp );
5913 GEOSGeom_destroy(sp);
5916 GEOSPreparedGeom_destroy(ppoly);
5917 GEOSGeom_destroy(polyg);
5930 GEOSPreparedGeom_destroy(ppoly);
5931 GEOSGeom_destroy(polyg);
void gbox_expand(GBOX *g, double d)
Move the box minimums down and the maximums up by the distance provided.
char lwgeom_geos_errmsg[LWGEOM_GEOS_ERRMSG_MAXSIZE]
GEOSGeometry * LWGEOM2GEOS(const LWGEOM *lwgeom, uint8_t autofix)
void lwgeom_free(LWGEOM *geom)
LWGEOM * lwpoly_as_lwgeom(const LWPOLY *obj)
const GBOX * lwgeom_get_bbox(const LWGEOM *lwgeom)
Get a non-empty geometry bounding box, computing and caching it if not already there.
void * lwalloc(size_t size)
LWLINE * lwline_construct(int srid, GBOX *bbox, POINTARRAY *points)
void lwline_free(LWLINE *line)
POINTARRAY * ptarray_clone(const POINTARRAY *ptarray)
Clone a POINTARRAY object.
LWT_INT64 LWT_ELEMID
Identifier of topology element.
#define LWDEBUGF(level, msg,...)
void lwerror(const char *fmt,...)
Write a notice out to the error handler.
const char * lwt_be_lastErrorMessage(const LWT_BE_IFACE *be)
LWGEOM * lwt_GetFaceGeometry(LWT_TOPOLOGY *topo, LWT_ELEMID faceid)
Return the geometry of a face.
LWT_ELEMID * lwt_AddLine(LWT_TOPOLOGY *topo, LWLINE *line, double tol, int *nedges)
Adds a linestring to the topology.
static void _lwt_release_faces(LWT_ISO_FACE *faces, int num_faces)
#define _LWT_MINTOLERANCE(topo, geom)
static LWT_ISO_FACE * lwt_be_getFaceWithinBox2D(const LWT_TOPOLOGY *topo, const GBOX *box, int *numelems, int fields, int limit)
Datum covers(PG_FUNCTION_ARGS)
const LWT_BE_IFACE * be_iface