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

◆ create_linestring()

static SHPObject * create_linestring ( SHPDUMPERSTATE state,
LWLINE lwlinestring 
)
static

Definition at line 348 of file pgsql2shp-core.c.

349{
350 SHPObject *obj;
351 POINT4D p4d;
352 uint32_t i;
353
354 double *xpts, *ypts, *zpts, *mpts;
355
356 /* Allocate storage for points */
357 xpts = malloc(sizeof(double) * lwlinestring->points->npoints);
358 ypts = malloc(sizeof(double) * lwlinestring->points->npoints);
359 zpts = malloc(sizeof(double) * lwlinestring->points->npoints);
360 mpts = malloc(sizeof(double) * lwlinestring->points->npoints);
361
362 /* Grab the points: note getPoint4d will correctly handle
363 the case where the POINTs don't contain Z or M coordinates */
364 for (i = 0; i < lwlinestring->points->npoints; i++)
365 {
366 p4d = getPoint4d(lwlinestring->points, i);
367
368 xpts[i] = p4d.x;
369 ypts[i] = p4d.y;
370 zpts[i] = p4d.z;
371 mpts[i] = p4d.m;
372
373 LWDEBUGF(4, "Linestring - Point: %g %g %g %g", i, xpts[i], ypts[i], zpts[i], mpts[i]);
374 }
375
376 obj = SHPCreateObject(state->outshptype, -1, 0, NULL, NULL, lwlinestring->points->npoints, xpts, ypts, zpts, mpts);
377
378 free(xpts);
379 free(ypts);
380 free(zpts);
381 free(mpts);
382
383 return obj;
384}
POINT4D getPoint4d(const POINTARRAY *pa, uint32_t n)
Definition lwgeom_api.c:108
#define LWDEBUGF(level, msg,...)
Definition lwgeom_log.h:88
void * malloc(YYSIZE_T)
void free(void *)
SHPObject SHPAPI_CALL1 * SHPCreateObject(int nSHPType, int nShapeId, int nParts, const int *panPartStart, const int *panPartType, int nVertices, const double *padfX, const double *padfY, const double *padfZ, const double *padfM);SHPObject SHPAPI_CALL1(*) SHPCreateSimpleObject(int nSHPType, int nVertices, const double *padfX, const double *padfY, const double *padfZ
POINTARRAY * points
Definition liblwgeom.h:469
double m
Definition liblwgeom.h:400
double x
Definition liblwgeom.h:400
double z
Definition liblwgeom.h:400
double y
Definition liblwgeom.h:400
uint32_t npoints
Definition liblwgeom.h:413

References free(), getPoint4d(), LWDEBUGF, POINT4D::m, malloc(), POINTARRAY::npoints, shp_dumper_state::outshptype, LWLINE::points, SHPCreateObject(), POINT4D::x, POINT4D::y, and POINT4D::z.

Referenced by ShpLoaderGenerateShapeRow().

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