PostGIS  2.5.0beta2dev-r@@SVN_REVISION@@

◆ ptarray_force_dims()

POINTARRAY* ptarray_force_dims ( const POINTARRAY pa,
int  hasz,
int  hasm 
)

Definition at line 1030 of file ptarray.c.

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().

1031 {
1032  /* TODO handle zero-length point arrays */
1033  uint32_t i;
1034  int in_hasz = FLAGS_GET_Z(pa->flags);
1035  int in_hasm = FLAGS_GET_M(pa->flags);
1036  POINT4D pt;
1037  POINTARRAY *pa_out = ptarray_construct_empty(hasz, hasm, pa->npoints);
1038 
1039  for( i = 0; i < pa->npoints; i++ )
1040  {
1041  getPoint4d_p(pa, i, &pt);
1042  if( hasz && ! in_hasz )
1043  pt.z = 0.0;
1044  if( hasm && ! in_hasm )
1045  pt.m = 0.0;
1046  ptarray_append_point(pa_out, &pt, LW_TRUE);
1047  }
1048 
1049  return pa_out;
1050 }
double m
Definition: liblwgeom.h:354
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, then a duplicate point will not be added.
Definition: ptarray.c:156
unsigned int uint32_t
Definition: uthash.h:78
uint8_t flags
Definition: liblwgeom.h:371
#define LW_TRUE
Return types for functions with status returns.
Definition: liblwgeom.h:75
#define FLAGS_GET_Z(flags)
Macros for manipulating the &#39;flags&#39; byte.
Definition: liblwgeom.h:139
double z
Definition: liblwgeom.h:354
int getPoint4d_p(const POINTARRAY *pa, uint32_t n, POINT4D *point)
Definition: lwgeom_api.c:113
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:140
uint32_t npoints
Definition: liblwgeom.h:373
Here is the call graph for this function:
Here is the caller graph for this function: