PostGIS  2.4.9dev-r@@SVN_REVISION@@

◆ ST_GeneratePoints()

Datum ST_GeneratePoints ( PG_FUNCTION_ARGS  )

Definition at line 1047 of file postgis/lwgeom_geos.c.

References gserialized_from_lwgeom(), lwgeom_free(), lwgeom_from_gserialized(), lwgeom_to_points(), PG_FUNCTION_INFO_V1(), and ST_OffsetCurve().

Referenced by buffer().

1048 {
1049  GSERIALIZED *gser_input;
1050  GSERIALIZED *gser_result;
1051  LWGEOM *lwgeom_input;
1052  LWGEOM *lwgeom_result;
1053  int32 npoints;
1054 
1055  gser_input = PG_GETARG_GSERIALIZED_P(0);
1056  npoints = DatumGetInt32(DirectFunctionCall1(numeric_int4, PG_GETARG_DATUM(1)));
1057 
1058  /* Smartasses get nothing back */
1059  if (npoints < 0)
1060  PG_RETURN_NULL();
1061 
1062  /* Types get checked in the code, we'll keep things small out there */
1063  lwgeom_input = lwgeom_from_gserialized(gser_input);
1064  lwgeom_result = (LWGEOM*)lwgeom_to_points(lwgeom_input, npoints);
1065  lwgeom_free(lwgeom_input);
1066  PG_FREE_IF_COPY(gser_input, 0);
1067 
1068  /* Return null as null */
1069  if (!lwgeom_result)
1070  PG_RETURN_NULL();
1071 
1072  /* Serialize and return */
1073  gser_result = gserialized_from_lwgeom(lwgeom_result, 0);
1074  lwgeom_free(lwgeom_result);
1075  PG_RETURN_POINTER(gser_result);
1076 }
unsigned int int32
Definition: shpopen.c:273
LWGEOM * lwgeom_from_gserialized(const GSERIALIZED *g)
Allocate a new LWGEOM from a GSERIALIZED.
void lwgeom_free(LWGEOM *geom)
Definition: lwgeom.c:1099
LWMPOINT * lwgeom_to_points(const LWGEOM *lwgeom, int npoints)
GSERIALIZED * gserialized_from_lwgeom(LWGEOM *geom, size_t *size)
Allocate a new GSERIALIZED from an LWGEOM.
Here is the call graph for this function:
Here is the caller graph for this function: