// Construct an empty pointarray
extern POINTARRAY *ptarray_construct(char hasz, char hasm, unsigned int npoints);
-extern POINTARRAY *ptarray_construct2d(uint32 npoints, POINT2D const* const* pts);
+extern POINTARRAY *ptarray_construct2d(uint32 npoints, const POINT2D *pts);
extern int32 lwgeom_nrings_recursive(char *serialized);
extern void dump_lwexploded(LWGEOM_EXPLODED *exploded);
typedef struct POINTARRAY_T *POINTARRAY;
// Constructs a POINTARRAY copying given 2d points
-POINTARRAY ptarray_construct2d(unsigned int npoints, POINT2D ** pts);
+POINTARRAY ptarray_construct2d(unsigned int npoints, const POINT2D *pts);
/*****************************************************************
* LWGEOM
// Construction
extern LWGEOM lwpoint_construct(int SRID, char wantbbox, POINTARRAY pa);
+extern LWGEOM lwline_construct(int SRID, char wantbbox, POINTARRAY pa);
// Spatial functions
extern void lwgeom_reverse(LWGEOM lwgeom);
POINTARRAY *pa;
TYPE_SETZM(dims, hasz?1:0, hasm?1:0);
- size = TYPE_NDIMS(dims)*npoints;
+ size = TYPE_NDIMS(dims)*npoints*sizeof(double);
ptlist = (char *)lwalloc(size);
pa = lwalloc(sizeof(POINTARRAY));
pa->dims = dims;
}
POINTARRAY *
-ptarray_construct2d(uint32 npoints, POINT2D const* const* pts)
+ptarray_construct2d(uint32 npoints, const POINT2D *pts)
{
POINTARRAY *pa = ptarray_construct(0, 0, npoints);
uint32 i;
for (i=0; i<npoints; i++)
{
POINT2D *pap = (POINT2D *)getPoint(pa, i);
- pap->x = pts[i]->x;
- pap->y = pts[i]->y;
+ pap->x = pts[i].x;
+ pap->y = pts[i].y;
}
return pa;
int main()
{
- POINT2D *pts2d[10];
- POINT3DM *pts3dm[10];
- POINT3DZ *pts3dz[10];
- POINT4D *pts4d[10];
+ POINT2D pts2d[10];
unsigned int npoints;
POINTARRAY pa;
LWGEOM point, line, poly;
// Construct a point2d
- pts2d[0] = lwalloc(sizeof(POINT2D));
- pts2d[0]->x = 10;
- pts2d[0]->y = 20;
+ pts2d[0].x = 10;
+ pts2d[0].y = 10;
+ pts2d[1].x = 10;
+ pts2d[1].y = 20;
+ pts2d[2].x = 20;
+ pts2d[2].y = 20;
+ pts2d[3].x = 20;
+ pts2d[3].y = 10;
+ pts2d[4].x = 10;
+ pts2d[4].y = 10;
- // Construct a pointarray2d
+ // Construct a single-point pointarray2d
pa = ptarray_construct2d(1, pts2d);
// Construct a point LWGEOM
// Print WKT
printf("WKT: %s\n", lwgeom_to_wkt(point));
+ // Construct a 5-points pointarray2d
+ pa = ptarray_construct2d(5, pts2d);
+
+ // Construct a line LWGEOM
+ line = lwline_construct(-1, 0, pa);
+
+ // Print WKT
+ printf("WKT: %s\n", lwgeom_to_wkt(line));
+
return 1;
}