269{
270 int ngeoms = 0;
273 bool first = true;
274 int empty_type = 0;
276 ListCell *cell;
277
278 if (list_length(list) == 0)
279 return NULL;
280
282 foreach (cell, list)
283 {
286
288 assert(gser);
290
292 {
293 geoms[ngeoms++] = geom;
294 if (first)
295 {
298 first = false;
299 }
300 }
301 else
302 {
304 if (type > empty_type)
308 }
309 }
310
311 if (ngeoms > 0)
312 {
313
314
315
321 }
322
323
324
325
326
327 return (empty_type > 0)
329 : NULL;
330}
char result[OUT_DOUBLE_BUFFER_SIZE]
LWGEOM * lwgeom_from_gserialized(const GSERIALIZED *g)
Allocate a new LWGEOM from a GSERIALIZED.
LWCOLLECTION * lwcollection_construct(uint8_t type, int32_t srid, GBOX *bbox, uint32_t ngeoms, LWGEOM **geoms)
int32_t lwgeom_get_srid(const LWGEOM *geom)
Return SRID number.
int lwgeom_has_z(const LWGEOM *geom)
Return LW_TRUE if geometry has Z ordinates.
void * lwalloc(size_t size)
void lwcollection_free(LWCOLLECTION *col)
LWGEOM * lwgeom_construct_empty(uint8_t type, int32_t srid, char hasz, char hasm)
LWGEOM * lwgeom_unaryunion_prec(const LWGEOM *geom1, double gridSize)
#define SRID_UNKNOWN
Unknown SRID value.
LWGEOM * lwcollection_as_lwgeom(const LWCOLLECTION *obj)
static uint32_t lwgeom_get_type(const LWGEOM *geom)
Return LWTYPE number.
static int lwgeom_is_empty(const LWGEOM *geom)
Return true or false depending on whether a geometry is an "empty" geometry (no vertices members)