75 lwerror(
"lwgeom_collect_endpoints: invalid type %s",
109 gepu = GEOSUnaryUnion(gepall);
111 GEOSGeom_destroy(gepall);
115 GEOSGeom_destroy(gepall);
118 GEOSGeom_destroy(gepu);
120 lwerror(
"Error during GEOS2LWGEOM");
132 GEOSGeometry *g1, *gn, *gm;
138 lwerror(
"Noding geometries of dimension != 1 is unsupported");
151 GEOSGeom_destroy(g1);
152 lwerror(
"Error extracting unique endpoints from input");
157 GEOSGeom_destroy(g1);
164 gm = GEOSLineMerge(gn);
165 GEOSGeom_destroy(gn);
173 GEOSGeom_destroy(gm);
176 lwerror(
"Error during GEOS2LWGEOM");
194 for (pn=0; pn<np; ++pn) {
199 for (ln=0; ln<nl; ++ln) {
char lwgeom_geos_errmsg[LWGEOM_GEOS_ERRMSG_MAXSIZE]
GEOSGeometry * LWGEOM2GEOS(const LWGEOM *lwgeom, uint8_t autofix)
LWGEOM * GEOS2LWGEOM(const GEOSGeometry *geom, uint8_t want3d)
void lwgeom_geos_error(const char *fmt,...)
void lwmpoint_free(LWMPOINT *mpt)
LWCOLLECTION * lwcollection_construct_empty(uint8_t type, int srid, char hasz, char hasm)
void lwgeom_free(LWGEOM *geom)
LWGEOM * lwcollection_getsubgeom(LWCOLLECTION *col, int gnum)
#define FLAGS_GET_Z(flags)
Macros for manipulating the 'flags' byte.
LWMPOINT * lwmpoint_add_lwpoint(LWMPOINT *mobj, const LWPOINT *obj)
int lwgeom_dimension(const LWGEOM *geom)
For an LWGEOM, returns 0 for points, 1 for lines, 2 for polygons, 3 for volume, and the max dimension...
int lwgeom_is_collection(const LWGEOM *lwgeom)
Determine whether a LWGEOM can contain sub-geometries or not.
const char * lwtype_name(uint8_t type)
Return the type name string associated with a type number (e.g.
#define FLAGS_GET_M(flags)
void lwcollection_free(LWCOLLECTION *col)
LWMPOINT * lwmpoint_construct_empty(int srid, char hasz, char hasm)
LWCOLLECTION * lwgeom_as_lwcollection(const LWGEOM *lwgeom)
#define SRID_UNKNOWN
Unknown SRID value.
void lwgeom_set_srid(LWGEOM *geom, int srid)
Set the SRID on an LWGEOM For collections, only the parent gets an SRID, all the children get SRID_UN...
LWPOINT * lwline_get_lwpoint(const LWLINE *line, uint32_t where)
Returns freshly allocated LWPOINT that corresponds to the index where.
int lwline_split_by_point_to(const LWLINE *ln, const LWPOINT *pt, LWMLINE *to)
Split a line by a point and push components to the provided multiline.
LWCOLLECTION * lwcollection_clone_deep(const LWCOLLECTION *lwgeom)
Deep clone LWCOLLECTION object.
void lwcollection_reserve(LWCOLLECTION *col, uint32_t ngeoms)
Ensure the collection can hold at least up to ngeoms geometries.
static LWGEOM * lwgeom_extract_unique_endpoints(const LWGEOM *lwg)
static LWMPOINT * lwgeom_extract_endpoints(const LWGEOM *lwg)
static const LWGEOM * lwgeom_subgeom(const LWGEOM *g, int n)
LWGEOM * lwgeom_node(const LWGEOM *lwgeom_in)
static int lwgeom_ngeoms(const LWGEOM *n)
static void lwgeom_collect_endpoints(const LWGEOM *lwg, LWMPOINT *col)
void lwerror(const char *fmt,...)
Write a notice out to the error handler.