return 2 * FLAGS_GET_Z(lwgeom->flags) + FLAGS_GET_M(lwgeom->flags);
}
-bool
-pglwgeom_has_bbox(const GSERIALIZED *lwgeom)
-{
- return FLAGS_GET_BBOX(lwgeom->flags);
-}
-
-bool
-pglwgeom_has_z(const GSERIALIZED *lwgeom)
-{
- return FLAGS_GET_Z(lwgeom->flags);
-}
-
-bool
-pglwgeom_has_m(const GSERIALIZED *lwgeom)
-{
- return FLAGS_GET_M(lwgeom->flags);
-}
-
GSERIALIZED* pglwgeom_drop_bbox(GSERIALIZED *geom)
{
return gserialized_drop_gidx(geom);
extern GSERIALIZED* pglwgeom_drop_bbox(GSERIALIZED *geom);
extern size_t pglwgeom_size(const GSERIALIZED *geom);
extern int pglwgeom_ndims(const GSERIALIZED *geom);
-extern bool pglwgeom_has_bbox(const GSERIALIZED *lwgeom);
-extern bool pglwgeom_has_z(const GSERIALIZED *lwgeom);
-extern bool pglwgeom_has_m(const GSERIALIZED *lwgeom);
extern int pglwgeom_is_empty(const GSERIALIZED *geom);
/*
* Get the 2d bounding box of the given geometry, in FLOAT4 format.
LWGEOM *lwg_in, *lwg_out;
/* already 3d */
- if ( pglwgeom_ndims(pg_geom_in) == 3 && pglwgeom_has_z(pg_geom_in) )
+ if ( pglwgeom_ndims(pg_geom_in) == 3 && gserialized_has_z(pg_geom_in) )
PG_RETURN_POINTER(pg_geom_in);
lwg_in = lwgeom_from_gserialized(pg_geom_in);
LWGEOM *lwg_in, *lwg_out;
/* already 3d */
- if ( pglwgeom_ndims(pg_geom_in) == 3 && pglwgeom_has_m(pg_geom_in) )
+ if ( pglwgeom_ndims(pg_geom_in) == 3 && gserialized_has_m(pg_geom_in) )
PG_RETURN_POINTER(pg_geom_in);
lwg_in = lwgeom_from_gserialized(pg_geom_in);
* automatic bbox addition FOR_COMPLEX_GEOMS.
*/
if ( gserialized_get_type(geom) == COLLECTIONTYPE &&
- pglwgeom_has_bbox(geom) )
+ gserialized_has_bbox(geom) )
{
PG_RETURN_POINTER(geom);
}
** automatic bbox addition FOR_COMPLEX_GEOMS.
*/
if ( lwtype_is_collection(gserialized_get_type(geom)) &&
- pglwgeom_has_bbox(geom) )
+ gserialized_has_bbox(geom) )
{
PG_RETURN_POINTER(geom);
}
int ret = 0;
in = (GSERIALIZED *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
- if ( pglwgeom_has_z(in) ) ret += 2;
- if ( pglwgeom_has_m(in) ) ret += 1;
+ if ( gserialized_has_z(in) ) ret += 2;
+ if ( gserialized_has_m(in) ) ret += 1;
PG_FREE_IF_COPY(in, 0);
PG_RETURN_INT16(ret);
}
Datum LWGEOM_hasz(PG_FUNCTION_ARGS)
{
GSERIALIZED *in = (GSERIALIZED *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
- PG_RETURN_BOOL(pglwgeom_has_z(in));
+ PG_RETURN_BOOL(gserialized_has_z(in));
}
PG_FUNCTION_INFO_V1(LWGEOM_hasm);
Datum LWGEOM_hasm(PG_FUNCTION_ARGS)
{
GSERIALIZED *in = (GSERIALIZED *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
- PG_RETURN_BOOL(pglwgeom_has_m(in));
+ PG_RETURN_BOOL(gserialized_has_m(in));
}
Datum LWGEOM_hasBBOX(PG_FUNCTION_ARGS)
{
GSERIALIZED *in = (GSERIALIZED *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
- char res = pglwgeom_has_bbox(in);
+ char res = gserialized_has_bbox(in);
PG_FREE_IF_COPY(in, 0);
PG_RETURN_BOOL(res);
}
double start_measure = PG_GETARG_FLOAT8(1);
double end_measure = PG_GETARG_FLOAT8(2);
LWGEOM *lwin, *lwout;
- int hasz = pglwgeom_has_z(gin);
- int hasm = pglwgeom_has_m(gin);
+ int hasz = gserialized_has_z(gin);
+ int hasm = gserialized_has_m(gin);
int type;
if ( end_measure < start_measure )
{
srid = gserialized_get_srid(pggeom);
gotsrid = 1;
- if ( pglwgeom_has_z(pggeom) ) is3d = 1;
+ if ( gserialized_has_z(pggeom) ) is3d = 1;
}
else
{
POSTGIS_DEBUGF(3, "geom %d @ %p", i, geom);
/* Check is3d flag */
- if ( pglwgeom_has_z(geom) ) is3d = 1;
+ if ( gserialized_has_z(geom) ) is3d = 1;
/* Check SRID homogeneity and initialize geos result */
if ( ! geos_result )
if ( pglwgeom_is_empty(geom1) )
PG_RETURN_POINTER(geom1);
- is3d = ( pglwgeom_has_z(geom1) );
+ is3d = ( gserialized_has_z(geom1) );
srid = gserialized_get_srid(geom1);
GEOSSetSRID(g3, srid);
- result = GEOS2POSTGIS(g3, pglwgeom_has_z(geom1));
+ result = GEOS2POSTGIS(g3, gserialized_has_z(geom1));
if (result == NULL)
{
GEOSSetSRID(g3, srid);
- lwout = GEOS2LWGEOM(g3, pglwgeom_has_z(geom1));
+ lwout = GEOS2LWGEOM(g3, gserialized_has_z(geom1));
if (lwout == NULL)
{
GEOSSetSRID(g3, gserialized_get_srid(geom1));
- result = GEOS2POSTGIS(g3, pglwgeom_has_z(geom1));
+ result = GEOS2POSTGIS(g3, gserialized_has_z(geom1));
if (result == NULL)
{
GEOSSetSRID(g3, gserialized_get_srid(geom1));
- result = GEOS2POSTGIS(g3, pglwgeom_has_z(geom1));
+ result = GEOS2POSTGIS(g3, gserialized_has_z(geom1));
if (result == NULL)
{
GEOSSetSRID(g3, gserialized_get_srid(geom1));
- result = GEOS2POSTGIS(g3, pglwgeom_has_z(geom1));
+ result = GEOS2POSTGIS(g3, gserialized_has_z(geom1));
if (result == NULL)
{
GEOSSetSRID(g3, gserialized_get_srid(geom1));
- result = GEOS2POSTGIS(g3, pglwgeom_has_z(geom1));
+ result = GEOS2POSTGIS(g3, gserialized_has_z(geom1));
if (result == NULL)
{
GEOSSetSRID(geosresult, gserialized_get_srid(geom));
- result = GEOS2POSTGIS(geosresult, pglwgeom_has_z(geom));
+ result = GEOS2POSTGIS(geosresult, gserialized_has_z(geom));
if (result == NULL)
{
geosgeom = (GEOSGeometry *)POSTGIS2GEOS(geom);
if ( ! geosgeom ) PG_RETURN_NULL();
- lwgeom_result = GEOS2POSTGIS(geosgeom, pglwgeom_has_z(geom));
+ lwgeom_result = GEOS2POSTGIS(geosgeom, gserialized_has_z(geom));
GEOSGeom_destroy(geosgeom);
GEOSSetSRID(g3, gserialized_get_srid(geom1));
- result = GEOS2POSTGIS(g3, pglwgeom_has_z(geom1));
+ result = GEOS2POSTGIS(g3, gserialized_has_z(geom1));
if (result == NULL)
{
** If not, pull the full toasted data out, and call the standard box
** retrieval function, which will calculate the box from scratch.
*/
- if ( pglwgeom_has_bbox(query) )
+ if ( gserialized_has_bbox(query) )
{
pglwgeom_getbox2d_p(query, &box);
}
GSERIALIZED *geom = (GSERIALIZED *)PG_DETOAST_DATUM(PG_GETARG_DATUM(0));
/* No box? we're done already! */
- if ( ! pglwgeom_has_bbox(geom) )
+ if ( ! gserialized_has_bbox(geom) )
PG_RETURN_POINTER(geom);
PG_RETURN_POINTER(pglwgeom_drop_bbox(geom));
else
strcpy(result,"UNKNOWN");
- if ( pglwgeom_has_m(lwgeom) && ! pglwgeom_has_z(lwgeom) )
+ if ( gserialized_has_m(lwgeom) && ! gserialized_has_z(lwgeom) )
strcat(result, "M");
size = strlen(result) + VARHDRSZ ;
PG_RETURN_NULL();
/* no Z in input */
- if ( ! pglwgeom_has_z(geom) ) PG_RETURN_NULL();
+ if ( ! gserialized_has_z(geom) ) PG_RETURN_NULL();
getPoint3dz_p(point->point, 0, &p);
geom = (GSERIALIZED *)DatumGetPointer(DirectFunctionCall1(
LWGEOMFromWKB, PG_GETARG_DATUM(0)));
- if ( gserialized_get_srid(geom) != SRID_UNKNOWN || pglwgeom_has_z(geom) != 0 )
+ if ( gserialized_get_srid(geom) != SRID_UNKNOWN || gserialized_has_z(geom) != 0 )
{
elog(WARNING, "OGC WKB expected, EWKB provided - use GeometryFromEWKB() for this");
}