PostGIS  2.1.10dev-r@@SVN_REVISION@@
POINTARRAY* ptarray_merge ( POINTARRAY pa1,
POINTARRAY pa2 
)

Merge two given POINTARRAY and returns a pointer on the new aggregate one.

Warning: this function free the two inputs POINTARRAY

Returns
POINTARRAY is newly allocated

Definition at line 588 of file ptarray.c.

References POINTARRAY::flags, FLAGS_GET_M, FLAGS_GET_Z, FLAGS_GET_ZM, getPoint_internal(), lwerror(), lwfree(), POINTARRAY::npoints, ptarray_construct(), and ptarray_point_size().

Referenced by parse_gml_data().

589 {
590  POINTARRAY *pa;
591  size_t ptsize = ptarray_point_size(pa1);
592 
593  if (FLAGS_GET_ZM(pa1->flags) != FLAGS_GET_ZM(pa2->flags))
594  lwerror("ptarray_cat: Mixed dimension");
595 
596  pa = ptarray_construct( FLAGS_GET_Z(pa1->flags),
597  FLAGS_GET_M(pa1->flags),
598  pa1->npoints + pa2->npoints);
599 
600  memcpy( getPoint_internal(pa, 0),
601  getPoint_internal(pa1, 0),
602  ptsize*(pa1->npoints));
603 
604  memcpy( getPoint_internal(pa, pa1->npoints),
605  getPoint_internal(pa2, 0),
606  ptsize*(pa2->npoints));
607 
608  lwfree(pa1);
609  lwfree(pa2);
610 
611  return pa;
612 }
int ptarray_point_size(const POINTARRAY *pa)
Definition: ptarray.c:41
void lwfree(void *mem)
Definition: lwutil.c:190
int npoints
Definition: liblwgeom.h:327
#define FLAGS_GET_ZM(flags)
Definition: liblwgeom.h:119
void lwerror(const char *fmt,...)
Write a notice out to the error handler.
Definition: lwutil.c:67
uint8_t flags
Definition: liblwgeom.h:325
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:49
#define FLAGS_GET_Z(flags)
Macros for manipulating the 'flags' byte.
Definition: liblwgeom.h:106
#define FLAGS_GET_M(flags)
Definition: liblwgeom.h:107
uint8_t * getPoint_internal(const POINTARRAY *pa, int n)
Definition: ptarray.c:1645

Here is the call graph for this function:

Here is the caller graph for this function: