PostGIS  3.4.0dev-r@@SVN_REVISION@@
All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Macros Pages

◆ LWGEOM_makeline()

Datum LWGEOM_makeline ( PG_FUNCTION_ARGS  )

Definition at line 1550 of file lwgeom_functions_basic.c.

1551 {
1552  GSERIALIZED *pglwg1, *pglwg2;
1553  GSERIALIZED *result = NULL;
1554  LWGEOM *lwgeoms[2];
1555  LWLINE *outline;
1556 
1557  POSTGIS_DEBUG(2, "LWGEOM_makeline called.");
1558 
1559  /* Get input datum */
1560  pglwg1 = PG_GETARG_GSERIALIZED_P(0);
1561  pglwg2 = PG_GETARG_GSERIALIZED_P(1);
1562 
1563  if ((gserialized_get_type(pglwg1) != POINTTYPE && gserialized_get_type(pglwg1) != LINETYPE) ||
1564  (gserialized_get_type(pglwg2) != POINTTYPE && gserialized_get_type(pglwg2) != LINETYPE))
1565  {
1566  elog(ERROR, "Input geometries must be points or lines");
1567  PG_RETURN_NULL();
1568  }
1569 
1570  gserialized_error_if_srid_mismatch(pglwg1, pglwg2, __func__);
1571 
1572  lwgeoms[0] = lwgeom_from_gserialized(pglwg1);
1573  lwgeoms[1] = lwgeom_from_gserialized(pglwg2);
1574 
1575  outline = lwline_from_lwgeom_array(lwgeoms[0]->srid, 2, lwgeoms);
1576 
1577  result = geometry_serialize((LWGEOM *)outline);
1578 
1579  PG_FREE_IF_COPY(pglwg1, 0);
1580  PG_FREE_IF_COPY(pglwg2, 1);
1581  lwgeom_free(lwgeoms[0]);
1582  lwgeom_free(lwgeoms[1]);
1583 
1584  PG_RETURN_POINTER(result);
1585 }
char result[OUT_DOUBLE_BUFFER_SIZE]
Definition: cu_print.c:262
void gserialized_error_if_srid_mismatch(const GSERIALIZED *g1, const GSERIALIZED *g2, const char *funcname)
Definition: gserialized.c:403
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
void lwgeom_free(LWGEOM *geom)
Definition: lwgeom.c:1155
#define LINETYPE
Definition: liblwgeom.h:103
#define POINTTYPE
LWTYPE numbers, used internally by PostGIS.
Definition: liblwgeom.h:102
LWLINE * lwline_from_lwgeom_array(int32_t srid, uint32_t ngeoms, LWGEOM **geoms)
Definition: lwline.c:151

References gserialized_error_if_srid_mismatch(), gserialized_get_type(), LINETYPE, lwgeom_free(), lwgeom_from_gserialized(), lwline_from_lwgeom_array(), genraster::outline, POINTTYPE, and result.

Here is the call graph for this function: