1767 geom1 = PG_GETARG_GSERIALIZED_P(0);
1768 geom2 = PG_GETARG_GSERIALIZED_P(1);
1775 PG_RETURN_BOOL(
false);
1785 PG_RETURN_BOOL(
false);
1795 if (!g)
HANDLE_GEOS_ERROR(
"First argument geometry could not be converted to GEOS");
1796 result = GEOSPreparedContainsProperly( prep_cache->
prepared_geom, g);
1797 GEOSGeom_destroy(g);
1805 if (!g1)
HANDLE_GEOS_ERROR(
"First argument geometry could not be converted to GEOS");
1809 GEOSGeom_destroy(g1);
1812 result = GEOSRelatePattern( g1, g2,
"T**FF*FF*" );
1813 GEOSGeom_destroy(g1);
1814 GEOSGeom_destroy(g2);
1819 PG_FREE_IF_COPY(geom1, 0);
1820 PG_FREE_IF_COPY(geom2, 1);
1822 PG_RETURN_BOOL(result);
int gbox_contains_2d(const GBOX *g1, const GBOX *g2)
Return LW_TRUE if the first GBOX contains the second on the 2d plane, LW_FALSE otherwise.
int32_t gserialized_get_srid(const GSERIALIZED *s)
Extract the SRID from the serialized form (it is packed into three bytes so this is a handy function)...
int gserialized_is_empty(const GSERIALIZED *g)
Check if a GSERIALIZED is empty without deserializing first.
int gserialized_get_gbox_p(const GSERIALIZED *g, GBOX *box)
Read the bounding box off a serialization and calculate one if it is not already there.
void lwgeom_geos_error(const char *fmt,...)
void error_if_srid_mismatch(int srid1, int srid2)
PrepGeomCache * GetPrepGeomCache(FunctionCallInfo fcinfo, GSERIALIZED *g1, GSERIALIZED *g2)
Given a couple potential geometries and a function call context, return a prepared structure for one ...
#define HANDLE_GEOS_ERROR(label)
void errorIfGeometryCollection(GSERIALIZED *g1, GSERIALIZED *g2)
Throws an ereport ERROR if either geometry is a COLLECTIONTYPE.
GEOSGeometry * POSTGIS2GEOS(GSERIALIZED *pglwgeom)
const GEOSPreparedGeometry * prepared_geom