PostGIS 3.7.0dev-r@@SVN_REVISION@@
Loading...
Searching...
No Matches

◆ ptarray_force_dims()

POINTARRAY * ptarray_force_dims ( const POINTARRAY pa,
int  hasz,
int  hasm,
double  zval,
double  mval 
)

Definition at line 1188 of file ptarray.c.

1189{
1190 /* TODO handle zero-length point arrays */
1191 uint32_t i;
1192 int in_hasz = FLAGS_GET_Z(pa->flags);
1193 int in_hasm = FLAGS_GET_M(pa->flags);
1194 POINT4D pt;
1195 POINTARRAY *pa_out = ptarray_construct_empty(hasz, hasm, pa->npoints);
1196
1197 for( i = 0; i < pa->npoints; i++ )
1198 {
1199 getPoint4d_p(pa, i, &pt);
1200 if( hasz && ! in_hasz )
1201 pt.z = zval;
1202 if( hasm && ! in_hasm )
1203 pt.m = mval;
1204 ptarray_append_point(pa_out, &pt, LW_TRUE);
1205 }
1206
1207 return pa_out;
1208}
#define FLAGS_GET_Z(flags)
Definition liblwgeom.h:165
#define FLAGS_GET_M(flags)
Definition liblwgeom.h:166
int getPoint4d_p(const POINTARRAY *pa, uint32_t n, POINT4D *point)
Definition lwgeom_api.c:125
#define LW_TRUE
Return types for functions with status returns.
Definition liblwgeom.h:93
POINTARRAY * ptarray_construct_empty(char hasz, char hasm, uint32_t maxpoints)
Create a new POINTARRAY with no points.
Definition ptarray.c:59
int ptarray_append_point(POINTARRAY *pa, const POINT4D *pt, int repeated_points)
Append a point to the end of an existing POINTARRAY If allow_duplicate is LW_FALSE,...
Definition ptarray.c:147
double m
Definition liblwgeom.h:414
double z
Definition liblwgeom.h:414
lwflags_t flags
Definition liblwgeom.h:431
uint32_t npoints
Definition liblwgeom.h:427

References POINTARRAY::flags, FLAGS_GET_M, FLAGS_GET_Z, getPoint4d_p(), LW_TRUE, POINT4D::m, POINTARRAY::npoints, ptarray_append_point(), ptarray_construct_empty(), and POINT4D::z.

Referenced by lwline_force_dims(), lwpoint_force_dims(), and lwpoly_force_dims().

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