PostGIS  2.5.7dev-r@@SVN_REVISION@@

◆ lwline_get_lwpoint()

LWPOINT* lwline_get_lwpoint ( const LWLINE line,
uint32_t  where 

Returns freshly allocated LWPOINT that corresponds to the index where.

Returns NULL if the geometry is empty or the index invalid.

Definition at line 318 of file lwline.c.

319 {
320  POINT4D pt;
321  LWPOINT *lwpoint;
322  POINTARRAY *pa;
324  if ( lwline_is_empty(line) || where >= line->points->npoints )
325  return NULL;
328  pt = getPoint4d(line->points, where);
329  ptarray_append_point(pa, &pt, LW_TRUE);
330  lwpoint = lwpoint_construct(line->srid, NULL, pa);
331  return lwpoint;
332 }
POINT4D getPoint4d(const POINTARRAY *pa, uint32_t n)
Definition: lwgeom_api.c:106
#define FLAGS_GET_Z(flags)
Macros for manipulating the 'flags' byte.
Definition: liblwgeom.h:140
LWPOINT * lwpoint_construct(int srid, GBOX *bbox, POINTARRAY *point)
Definition: lwpoint.c:129
POINTARRAY * ptarray_construct_empty(char hasz, char hasm, uint32_t maxpoints)
Create a new POINTARRAY with no points.
Definition: ptarray.c:70
#define FLAGS_GET_M(flags)
Definition: liblwgeom.h:141
int ptarray_append_point(POINTARRAY *pa, const POINT4D *pt, int allow_duplicates)
Append a point to the end of an existing POINTARRAY If allow_duplicate is LW_FALSE,...
Definition: ptarray.c:156
#define LW_TRUE
Return types for functions with status returns.
Definition: liblwgeom.h:76
int lwline_is_empty(const LWLINE *line)
Definition: lwline.c:511
uint8_t flags
Definition: liblwgeom.h:422
Definition: liblwgeom.h:425
int32_t srid
Definition: liblwgeom.h:424
uint32_t npoints
Definition: liblwgeom.h:374

References LWLINE::flags, FLAGS_GET_M, FLAGS_GET_Z, getPoint4d(), LW_TRUE, lwline_is_empty(), lwpoint_construct(), POINTARRAY::npoints, LWLINE::points, ptarray_append_point(), ptarray_construct_empty(), and LWLINE::srid.

Referenced by _lwt_AddLineEdge(), gserialized_distance_nd(), lwcompound_get_endpoint(), lwcompound_get_lwpoint(), lwgeom_collect_endpoints(), LWGEOM_dumppoints(), LWGEOM_endpoint_linestring(), LWGEOM_pointn_linestring(), LWGEOM_startpoint_linestring(), and lwline_covers_lwline().

Here is the call graph for this function:
Here is the caller graph for this function: