PostGIS  3.1.6dev-r@@SVN_REVISION@@

◆ LWGEOM_line_from_mpoint()

Datum LWGEOM_line_from_mpoint ( PG_FUNCTION_ARGS  )

Definition at line 1349 of file lwgeom_functions_basic.c.

1350 {
1351  GSERIALIZED *ingeom, *result;
1352  LWLINE *lwline;
1353  LWMPOINT *mpoint;
1354 
1355  POSTGIS_DEBUG(2, "LWGEOM_line_from_mpoint called");
1356 
1357  /* Get input GSERIALIZED and deserialize it */
1358  ingeom = PG_GETARG_GSERIALIZED_P(0);
1359 
1360  if (gserialized_get_type(ingeom) != MULTIPOINTTYPE)
1361  {
1362  elog(ERROR, "makeline: input must be a multipoint");
1363  PG_RETURN_NULL(); /* input is not a multipoint */
1364  }
1365 
1366  mpoint = lwgeom_as_lwmpoint(lwgeom_from_gserialized(ingeom));
1367  lwline = lwline_from_lwmpoint(mpoint->srid, mpoint);
1368  if (!lwline)
1369  {
1370  PG_FREE_IF_COPY(ingeom, 0);
1371  elog(ERROR, "makeline: lwline_from_lwmpoint returned NULL");
1372  PG_RETURN_NULL();
1373  }
1374 
1375  result = geometry_serialize(lwline_as_lwgeom(lwline));
1376 
1377  PG_FREE_IF_COPY(ingeom, 0);
1378  lwline_free(lwline);
1379 
1380  PG_RETURN_POINTER(result);
1381 }
char result[OUT_DOUBLE_BUFFER_SIZE]
Definition: cu_print.c:267
LWGEOM * lwgeom_from_gserialized(const GSERIALIZED *g)
Allocate a new LWGEOM from a GSERIALIZED.
Definition: gserialized.c:239
uint32_t gserialized_get_type(const GSERIALIZED *g)
Extract the geometry type from the serialized form (it hides in the anonymous data area,...
Definition: gserialized.c:89
LWGEOM * lwline_as_lwgeom(const LWLINE *obj)
Definition: lwgeom.c:322
LWMPOINT * lwgeom_as_lwmpoint(const LWGEOM *lwgeom)
Definition: lwgeom.c:225
#define MULTIPOINTTYPE
Definition: liblwgeom.h:119
LWLINE * lwline_from_lwmpoint(int32_t srid, const LWMPOINT *mpoint)
Definition: lwline.c:275
void lwline_free(LWLINE *line)
Definition: lwline.c:67
int32_t srid
Definition: liblwgeom.h:548

References gserialized_get_type(), lwgeom_as_lwmpoint(), lwgeom_from_gserialized(), lwline_as_lwgeom(), lwline_free(), lwline_from_lwmpoint(), MULTIPOINTTYPE, result, and LWMPOINT::srid.

Here is the call graph for this function: