PostGIS 3.7.0dev-r@@SVN_REVISION@@
Loading...
Searching...
No Matches

◆ isvalid()

Datum isvalid ( PG_FUNCTION_ARGS  )

Definition at line 1583 of file postgis/lwgeom_geos.c.

1584{
1585 GSERIALIZED *geom1;
1586 LWGEOM *lwgeom;
1587 char result;
1588 GEOSGeom g1;
1589
1590 geom1 = PG_GETARG_GSERIALIZED_P(0);
1591
1592 /* Empty.IsValid() == TRUE */
1593 if ( gserialized_is_empty(geom1) )
1594 PG_RETURN_BOOL(true);
1595
1596 initGEOS(lwpgnotice, lwgeom_geos_error);
1597
1598 lwgeom = lwgeom_from_gserialized(geom1);
1599 if ( ! lwgeom )
1600 {
1601 lwpgerror("unable to deserialize input");
1602 }
1603 g1 = LWGEOM2GEOS(lwgeom, 0);
1604 lwgeom_free(lwgeom);
1605
1606 if ( ! g1 )
1607 {
1608 PG_RETURN_BOOL(false);
1609 }
1610
1611 result = GEOSisValid(g1);
1612 GEOSGeom_destroy(g1);
1613
1614 if (result == 2)
1615 {
1616 elog(ERROR,"GEOS isvalid() threw an error!");
1617 PG_RETURN_NULL(); /*never get here */
1618 }
1619
1620 PG_FREE_IF_COPY(geom1, 0);
1621 PG_RETURN_BOOL(result);
1622}
char result[OUT_DOUBLE_BUFFER_SIZE]
Definition cu_print.c:267
LWGEOM * lwgeom_from_gserialized(const GSERIALIZED *g)
Allocate a new LWGEOM from a GSERIALIZED.
int gserialized_is_empty(const GSERIALIZED *g)
Check if a GSERIALIZED is empty without deserializing first.
GEOSGeometry * LWGEOM2GEOS(const LWGEOM *lwgeom, uint8_t autofix)
void lwgeom_geos_error(const char *fmt,...)
void lwgeom_free(LWGEOM *geom)
Definition lwgeom.c:1246

References gserialized_is_empty(), LWGEOM2GEOS(), lwgeom_free(), lwgeom_from_gserialized(), lwgeom_geos_error(), and result.

Here is the call graph for this function: