2656{
2658 LWLINE *lwline1, *lwline2;
2659 LWGEOM *lwgeom1, *lwgeom2;
2660 double distance_forward, distance_backward;
2661
2662 geom1 = PG_GETARG_GSERIALIZED_P(0);
2663 distance_forward = PG_GETARG_FLOAT8(1);
2664 distance_backward = PG_GETARG_FLOAT8(2);
2665
2668 if (!lwline1)
2669 lwpgerror("Argument must be LINESTRING geometry");
2670
2672 PG_RETURN_NULL();
2673
2675 PG_RETURN_POINTER(geom1);
2676
2677 lwline2 =
lwline_extend(lwline1, distance_forward, distance_backward);
2679 geom2 = geometry_serialize(lwgeom2);
2680
2681 PG_RETURN_POINTER(geom2);
2682}
LWGEOM * lwgeom_from_gserialized(const GSERIALIZED *g)
Allocate a new LWGEOM from a GSERIALIZED.
LWLINE * lwline_extend(const LWLINE *line, double distance_forward, double distance_backward)
Extend the ends of a line.
LWGEOM * lwline_as_lwgeom(const LWLINE *obj)
LWLINE * lwgeom_as_lwline(const LWGEOM *lwgeom)
double lwline_length_2d(const LWLINE *line)
int lwline_is_empty(const LWLINE *line)