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

◆ LWGEOM_makeline()

Datum LWGEOM_makeline ( PG_FUNCTION_ARGS  )

Definition at line 1487 of file lwgeom_functions_basic.c.

1488{
1489 GSERIALIZED *pglwg1, *pglwg2;
1490 GSERIALIZED *result = NULL;
1491 LWGEOM *lwgeoms[2];
1492 LWLINE *outline;
1493
1494 POSTGIS_DEBUG(2, "LWGEOM_makeline called.");
1495
1496 /* Get input datum */
1497 pglwg1 = PG_GETARG_GSERIALIZED_P(0);
1498 pglwg2 = PG_GETARG_GSERIALIZED_P(1);
1499
1500 if ((gserialized_get_type(pglwg1) != POINTTYPE && gserialized_get_type(pglwg1) != LINETYPE) ||
1502 {
1503 elog(ERROR, "Input geometries must be points or lines");
1504 PG_RETURN_NULL();
1505 }
1506
1507 gserialized_error_if_srid_mismatch(pglwg1, pglwg2, __func__);
1508
1509 lwgeoms[0] = lwgeom_from_gserialized(pglwg1);
1510 lwgeoms[1] = lwgeom_from_gserialized(pglwg2);
1511
1512 outline = lwline_from_lwgeom_array(lwgeoms[0]->srid, 2, lwgeoms);
1513
1514 result = geometry_serialize((LWGEOM *)outline);
1515
1516 PG_FREE_IF_COPY(pglwg1, 0);
1517 PG_FREE_IF_COPY(pglwg2, 1);
1518 lwgeom_free(lwgeoms[0]);
1519 lwgeom_free(lwgeoms[1]);
1520
1521 PG_RETURN_POINTER(result);
1522}
void gserialized_error_if_srid_mismatch(const GSERIALIZED *g1, const GSERIALIZED *g2, const char *funcname)
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,...
Definition gserialized.c:89
LWLINE * lwline_from_lwgeom_array(int32_t srid, uint32_t ngeoms, LWGEOM **geoms)
Definition lwline.c:151
void lwgeom_free(LWGEOM *geom)
Definition lwgeom.c:1138
#define LINETYPE
Definition liblwgeom.h:117
#define POINTTYPE
LWTYPE numbers, used internally by PostGIS.
Definition liblwgeom.h:116
GSERIALIZED * geometry_serialize(LWGEOM *lwgeom)

References geometry_serialize(), gserialized_error_if_srid_mismatch(), gserialized_get_type(), LINETYPE, lwgeom_free(), lwgeom_from_gserialized(), lwline_from_lwgeom_array(), and POINTTYPE.

Here is the call graph for this function: