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

◆ create_multipoint()

static SHPObject * create_multipoint ( SHPDUMPERSTATE state,
LWMPOINT lwmultipoint 
)
static

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

139{
140 SHPObject *obj;
141 POINT4D p4d;
142 uint32_t i;
143
144 double *xpts, *ypts, *zpts, *mpts;
145
146 /* Allocate storage for points */
147 xpts = malloc(sizeof(double) * lwmultipoint->ngeoms);
148 ypts = malloc(sizeof(double) * lwmultipoint->ngeoms);
149 zpts = malloc(sizeof(double) * lwmultipoint->ngeoms);
150 mpts = malloc(sizeof(double) * lwmultipoint->ngeoms);
151
152 /* Grab the points: note getPoint4d will correctly handle
153 the case where the POINTs don't contain Z or M coordinates */
154 for (i = 0; i < lwmultipoint->ngeoms; i++)
155 {
156 p4d = getPoint4d(lwmultipoint->geoms[i]->point, 0);
157
158 xpts[i] = p4d.x;
159 ypts[i] = p4d.y;
160 zpts[i] = p4d.z;
161 mpts[i] = p4d.m;
162
163 LWDEBUGF(4, "MultiPoint %d - Point: %g %g %g %g", i, xpts[i], ypts[i], zpts[i], mpts[i]);
164 }
165
166 obj = SHPCreateObject(state->outshptype, -1, 0, NULL, NULL, lwmultipoint->ngeoms, xpts, ypts, zpts, mpts);
167
168 free(xpts);
169 free(ypts);
170 free(zpts);
171 free(mpts);
172
173 return obj;
174}
POINT4D getPoint4d(const POINTARRAY *pa, uint32_t n)
Definition lwgeom_api.c:107
#define LWDEBUGF(level, msg,...)
Definition lwgeom_log.h:106
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
uint32_t ngeoms
Definition liblwgeom.h:538
LWPOINT ** geoms
Definition liblwgeom.h:533
POINTARRAY * point
Definition liblwgeom.h:471
double m
Definition liblwgeom.h:414
double x
Definition liblwgeom.h:414
double z
Definition liblwgeom.h:414
double y
Definition liblwgeom.h:414

References free(), LWMPOINT::geoms, getPoint4d(), LWDEBUGF, POINT4D::m, malloc(), LWMPOINT::ngeoms, shp_dumper_state::outshptype, LWPOINT::point, 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: