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

◆ ST_RemoveRepeatedPoints()

Datum ST_RemoveRepeatedPoints ( PG_FUNCTION_ARGS  )

Definition at line 2987 of file lwgeom_functions_basic.c.

2988{
2989 GSERIALIZED *g_in = PG_GETARG_GSERIALIZED_P_COPY(0);
2990 uint32_t type = gserialized_get_type(g_in);
2991 GSERIALIZED *g_out;
2992 LWGEOM *lwgeom_in = NULL;
2993 double tolerance = 0.0;
2994 int modified = LW_FALSE;
2995
2996 /* Don't even start to think about points */
2997 if (type == POINTTYPE)
2998 PG_RETURN_POINTER(g_in);
2999
3000 if (PG_NARGS() > 1 && !PG_ARGISNULL(1))
3001 tolerance = PG_GETARG_FLOAT8(1);
3002
3003 lwgeom_in = lwgeom_from_gserialized(g_in);
3004 modified = lwgeom_remove_repeated_points_in_place(lwgeom_in, tolerance);
3005 if (!modified)
3006 {
3007 /* Since there were no changes, we can return the input to avoid the serialization */
3008 PG_RETURN_POINTER(g_in);
3009 }
3010
3011 g_out = geometry_serialize(lwgeom_in);
3012
3013 pfree(g_in);
3014 PG_RETURN_POINTER(g_out);
3015}
LWGEOM * lwgeom_from_gserialized(const GSERIALIZED *g)
Allocate a new LWGEOM from a GSERIALIZED.
uint32_t gserialized_get_type(const GSERIALIZED *g)
Extract the geometry type from the serialized form (it hides in the anonymous data area,...
#define LW_FALSE
Definition liblwgeom.h:94
int lwgeom_remove_repeated_points_in_place(LWGEOM *in, double tolerance)
Definition lwgeom.c:1667
#define POINTTYPE
LWTYPE numbers, used internally by PostGIS.
Definition liblwgeom.h:102

References gserialized_get_type(), LW_FALSE, lwgeom_from_gserialized(), lwgeom_remove_repeated_points_in_place(), and POINTTYPE.

Here is the call graph for this function: