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

◆ lwgeom_add_bbox_deep()

void lwgeom_add_bbox_deep ( LWGEOM lwgeom,
GBOX gbox 
)
extern

Compute a box for geom and all sub-geometries, if not already computed.

Definition at line 714 of file lwgeom.c.

715{
716 if ( lwgeom_is_empty(lwgeom) ) return;
717
718 FLAGS_SET_BBOX(lwgeom->flags, 1);
719
720 if ( ! ( gbox || lwgeom->bbox ) )
721 {
722 lwgeom->bbox = gbox_new(lwgeom->flags);
723 lwgeom_calculate_gbox(lwgeom, lwgeom->bbox);
724 }
725 else if ( gbox && ! lwgeom->bbox )
726 {
727 lwgeom->bbox = gbox_clone(gbox);
728 }
729
730 if ( lwgeom_is_collection(lwgeom) )
731 {
732 uint32_t i;
733 LWCOLLECTION *lwcol = (LWCOLLECTION*)lwgeom;
734
735 for ( i = 0; i < lwcol->ngeoms; i++ )
736 {
737 lwgeom_add_bbox_deep(lwcol->geoms[i], lwgeom->bbox);
738 }
739 }
740}
GBOX * gbox_new(lwflags_t flags)
Create a new gbox with the dimensionality indicated by the flags.
Definition gbox.c:32
GBOX * gbox_clone(const GBOX *gbox)
Definition gbox.c:45
#define FLAGS_SET_BBOX(flags, value)
Definition liblwgeom.h:174
int lwgeom_is_collection(const LWGEOM *geom)
Determine whether a LWGEOM contains sub-geometries or not This basically just checks that the struct ...
Definition lwgeom.c:1097
int lwgeom_calculate_gbox(const LWGEOM *lwgeom, GBOX *gbox)
Calculate the gbox for this geometry, a cartesian box or geodetic box, depending on how it is flagged...
Definition lwgeom.c:755
void lwgeom_add_bbox_deep(LWGEOM *lwgeom, GBOX *gbox)
Compute a box for geom and all sub-geometries, if not already computed.
Definition lwgeom.c:714
static int lwgeom_is_empty(const LWGEOM *geom)
Return true or false depending on whether a geometry is an "empty" geometry (no vertices members)
Definition lwinline.h:199
uint32_t ngeoms
Definition liblwgeom.h:580
LWGEOM ** geoms
Definition liblwgeom.h:575
GBOX * bbox
Definition liblwgeom.h:458
lwflags_t flags
Definition liblwgeom.h:461

References LWGEOM::bbox, LWGEOM::flags, FLAGS_SET_BBOX, gbox_clone(), gbox_new(), LWCOLLECTION::geoms, lwgeom_add_bbox_deep(), lwgeom_calculate_gbox(), lwgeom_is_collection(), lwgeom_is_empty(), and LWCOLLECTION::ngeoms.

Referenced by geography_distance_knn(), geography_distance_uncached(), and lwgeom_add_bbox_deep().

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