PostGIS  3.1.6dev-r@@SVN_REVISION@@

◆ lwline_make_geos_friendly()

LWGEOM * lwline_make_geos_friendly ( LWLINE line)

Definition at line 290 of file liblwgeom/lwgeom_geos_clean.c.

291 {
292  LWGEOM* ret;
293 
295 
296  if (line->points->npoints == 1) /* 0 is fine, 2 is fine */
297  {
298 #if 1
299  /* Duplicate point */
300  line->points = ptarray_addPoint(line->points,
301  getPoint_internal(line->points, 0),
302  FLAGS_NDIMS(line->points->flags),
303  line->points->npoints);
304  ret = (LWGEOM*)line;
305 #else
306  /* Turn into a point */
307  ret = (LWGEOM*)lwpoint_construct(line->srid, 0, line->points);
308 #endif
309  return ret;
310  }
311  else
312  {
313  return (LWGEOM*)line;
314  /* return lwline_clone(line); */
315  }
316 }
static void ptarray_strip_nan_coords_in_place(POINTARRAY *pa)
POINTARRAY * ptarray_addPoint(const POINTARRAY *pa, uint8_t *p, size_t pdims, uint32_t where)
Add a point in a pointarray.
Definition: ptarray.c:509
#define FLAGS_NDIMS(flags)
Definition: liblwgeom.h:193
LWPOINT * lwpoint_construct(int32_t srid, GBOX *bbox, POINTARRAY *point)
Definition: lwpoint.c:129
static uint8_t * getPoint_internal(const POINTARRAY *pa, uint32_t n)
Definition: lwinline.h:77
POINTARRAY * points
Definition: liblwgeom.h:497
int32_t srid
Definition: liblwgeom.h:498
lwflags_t flags
Definition: liblwgeom.h:445
uint32_t npoints
Definition: liblwgeom.h:441

References POINTARRAY::flags, FLAGS_NDIMS, getPoint_internal(), lwpoint_construct(), POINTARRAY::npoints, LWLINE::points, ptarray_addPoint(), ptarray_strip_nan_coords_in_place(), and LWLINE::srid.

Referenced by lwgeom_make_geos_friendly().

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