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

◆ gserialized1_get_gbox_p()

int gserialized1_get_gbox_p ( const GSERIALIZED g,
GBOX box 
)

Read the bounding box off a serialization and calculate one if it is not already there.

Read the box from the GSERIALIZED or calculate it if necessary.

Definition at line 529 of file gserialized1.c.

530{
531 /* Try to just read the serialized box. */
532 if ( gserialized1_read_gbox_p(g, box) == LW_SUCCESS )
533 {
534 return LW_SUCCESS;
535 }
536 /* No box? Try to peek into simpler geometries and */
537 /* derive a box without creating an lwgeom */
538 else if ( gserialized1_peek_gbox_p(g, box) == LW_SUCCESS )
539 {
540 return LW_SUCCESS;
541 }
542 /* Damn! Nothing for it but to create an lwgeom... */
543 /* See http://trac.osgeo.org/postgis/ticket/1023 */
544 else
545 {
546 LWGEOM *lwgeom = lwgeom_from_gserialized(g);
547 int ret = lwgeom_calculate_gbox(lwgeom, box);
548 gbox_float_round(box);
549 lwgeom_free(lwgeom);
550 return ret;
551 }
552}
void gbox_float_round(GBOX *gbox)
Round given GBOX to float boundaries.
Definition gbox.c:786
int gserialized1_peek_gbox_p(const GSERIALIZED *g, GBOX *gbox)
static int gserialized1_read_gbox_p(const GSERIALIZED *g, GBOX *gbox)
LWGEOM * lwgeom_from_gserialized(const GSERIALIZED *g)
Allocate a new LWGEOM from a GSERIALIZED.
void lwgeom_free(LWGEOM *geom)
Definition lwgeom.c:1246
#define LW_SUCCESS
Definition liblwgeom.h:97
int lwgeom_calculate_gbox(const LWGEOM *lwgeom, GBOX *gbox)
Calculate bounding box of a geometry, automatically taking into account whether it is cartesian or ge...
Definition lwgeom.c:783

References gbox_float_round(), gserialized1_peek_gbox_p(), gserialized1_read_gbox_p(), LW_SUCCESS, lwgeom_calculate_gbox(), lwgeom_free(), and lwgeom_from_gserialized().

Referenced by gserialized_get_gbox_p().

Here is the call graph for this function:
Here is the caller graph for this function: