97{
98 PATH *path;
103 uint32_t i;
105 size_t size;
106
107 POSTGIS_DEBUG(2, "geometry_to_path called");
108
109 if ( PG_ARGISNULL(0) )
110 PG_RETURN_NULL();
111
112 geom = PG_GETARG_GSERIALIZED_P(0);
113
115 elog(ERROR, "geometry_to_path only accepts LineStrings");
116
119 PG_RETURN_NULL();
121
123 size = offsetof(PATH, p[0]) +
sizeof(path->p[0]) * pa->
npoints;
124 path = (PATH*)palloc(size);
125 SET_VARSIZE(path, size);
127 path->closed = 0;
128 path->dummy = 0;
129
130 for ( i = 0; i < pa->
npoints; i++ )
131 {
133 (path->p[i]).x = pt->
x;
134 (path->p[i]).y = pt->
y;
135 }
136
138 PG_FREE_IF_COPY(geom,0);
139
140 PG_RETURN_PATH_P(path);
141}
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,...
void lwgeom_free(LWGEOM *geom)
LWLINE * lwgeom_as_lwline(const LWGEOM *lwgeom)
static int lwgeom_is_empty(const LWGEOM *geom)
Return true or false depending on whether a geometry is an "empty" geometry (no vertices members)
static const POINT2D * getPoint2d_cp(const POINTARRAY *pa, uint32_t n)
Returns a POINT2D pointer into the POINTARRAY serialized_ptlist, suitable for reading from.