PostGIS  2.2.7dev-r@@SVN_REVISION@@
LWLINE* lwline_from_lwmpoint ( int  srid,
const LWMPOINT mpoint 
)

Definition at line 261 of file lwline.c.

References LWMPOINT::geoms, getPoint4d_p(), LWDEBUGF, lwgeom_has_m(), lwgeom_has_z(), lwgeom_is_empty(), lwline_construct(), lwline_construct_empty(), LWMPOINT::ngeoms, LWPOINT::point, ptarray_construct(), and ptarray_set_point4d().

Referenced by LWGEOM_line_from_mpoint(), lwmmpoint_to_encoded_polyline(), and test_lwline_from_lwmpoint().

262 {
263  uint32_t i;
264  POINTARRAY *pa = NULL;
265  LWGEOM *lwgeom = (LWGEOM*)mpoint;
266  POINT4D pt;
267 
268  char hasz = lwgeom_has_z(lwgeom);
269  char hasm = lwgeom_has_m(lwgeom);
270  uint32_t npoints = mpoint->ngeoms;
271 
272  if ( lwgeom_is_empty(lwgeom) )
273  {
274  return lwline_construct_empty(srid, hasz, hasm);
275  }
276 
277  pa = ptarray_construct(hasz, hasm, npoints);
278 
279  for (i=0; i < npoints; i++)
280  {
281  getPoint4d_p(mpoint->geoms[i]->point, 0, &pt);
282  ptarray_set_point4d(pa, i, &pt);
283  }
284 
285  LWDEBUGF(3, "lwline_from_lwmpoint: constructed pointarray for %d points", mpoint->ngeoms);
286 
287  return lwline_construct(srid, NULL, pa);
288 }
void ptarray_set_point4d(POINTARRAY *pa, int n, const POINT4D *p4d)
Definition: lwgeom_api.c:536
POINTARRAY * ptarray_construct(char hasz, char hasm, uint32_t npoints)
Construct an empty pointarray, allocating storage and setting the npoints, but not filling in any inf...
Definition: ptarray.c:62
LWLINE * lwline_construct_empty(int srid, char hasz, char hasm)
Definition: lwline.c:51
POINTARRAY * point
Definition: liblwgeom.h:395
int lwgeom_has_z(const LWGEOM *geom)
Return LW_TRUE if geometry has Z ordinates.
Definition: lwgeom.c:836
LWPOINT ** geoms
Definition: liblwgeom.h:454
int lwgeom_is_empty(const LWGEOM *geom)
Return true or false depending on whether a geometry is an "empty" geometry (no vertices members) ...
Definition: lwgeom.c:1297
int ngeoms
Definition: liblwgeom.h:452
#define LWDEBUGF(level, msg,...)
Definition: lwgeom_log.h:55
int lwgeom_has_m(const LWGEOM *geom)
Return LW_TRUE if geometry has M ordinates.
Definition: lwgeom.c:843
int getPoint4d_p(const POINTARRAY *pa, int n, POINT4D *point)
Definition: lwgeom_api.c:231
LWLINE * lwline_construct(int srid, GBOX *bbox, POINTARRAY *points)
Definition: lwline.c:29

Here is the call graph for this function:

Here is the caller graph for this function: