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

◆ lwcollection_calculate_gbox_geodetic()

static int lwcollection_calculate_gbox_geodetic ( const LWCOLLECTION coll,
GBOX gbox 
)
static

Definition at line 2841 of file lwgeodetic.c.

2842{
2843 GBOX subbox = {0};
2844 uint32_t i;
2845 int result = LW_FAILURE;
2846 int first = LW_TRUE;
2847 assert(coll);
2848 if ( coll->ngeoms == 0 )
2849 return LW_FAILURE;
2850
2851 subbox.flags = gbox->flags;
2852
2853 for ( i = 0; i < coll->ngeoms; i++ )
2854 {
2855 if ( lwgeom_calculate_gbox_geodetic((LWGEOM*)(coll->geoms[i]), &subbox) == LW_SUCCESS )
2856 {
2857 /* Keep a copy of the sub-bounding box for later */
2858 if ( coll->geoms[i]->bbox )
2859 lwfree(coll->geoms[i]->bbox);
2860 coll->geoms[i]->bbox = gbox_copy(&subbox);
2861 if ( first )
2862 {
2863 gbox_duplicate(&subbox, gbox);
2864 first = LW_FALSE;
2865 }
2866 else
2867 {
2868 gbox_merge(&subbox, gbox);
2869 }
2871 }
2872 }
2873 return result;
2874}
char result[OUT_DOUBLE_BUFFER_SIZE]
Definition cu_print.c:267
int gbox_merge(const GBOX *new_box, GBOX *merge_box)
Update the merged GBOX to be large enough to include itself and the new box.
Definition gbox.c:257
void gbox_duplicate(const GBOX *original, GBOX *duplicate)
Copy the values of original GBOX into duplicate.
Definition gbox.c:445
GBOX * gbox_copy(const GBOX *box)
Return a copy of the GBOX, based on dimensionality of flags.
Definition gbox.c:438
#define LW_FALSE
Definition liblwgeom.h:94
#define LW_FAILURE
Definition liblwgeom.h:96
#define LW_SUCCESS
Definition liblwgeom.h:97
void lwfree(void *mem)
Definition lwutil.c:248
#define LW_TRUE
Return types for functions with status returns.
Definition liblwgeom.h:93
int lwgeom_calculate_gbox_geodetic(const LWGEOM *geom, GBOX *gbox)
Calculate the geodetic bounding box for an LWGEOM.
lwflags_t flags
Definition liblwgeom.h:353
uint32_t ngeoms
Definition liblwgeom.h:580
LWGEOM ** geoms
Definition liblwgeom.h:575
GBOX * bbox
Definition liblwgeom.h:458

References LWGEOM::bbox, GBOX::flags, gbox_copy(), gbox_duplicate(), gbox_merge(), LWCOLLECTION::geoms, LW_FAILURE, LW_FALSE, LW_SUCCESS, LW_TRUE, lwfree(), lwgeom_calculate_gbox_geodetic(), LWCOLLECTION::ngeoms, and result.

Referenced by lwgeom_calculate_gbox_geodetic().

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