- #4501, Allow postgis_tiger_geocoder to be installable by non-super users (Regina Obe)
- #4503, Speed up the calculation of cartesian bbox (Raúl Marín)
- #4504, shp2pgsql -D not working with schema qualified tables
+ - #4507, Use GEOSMakeValid and GEOSBuildArea for GEOS 3.8+ (Dan Baston)
PostGIS 3.0.0alpha4
2019/08/10
}
/* ------------ BuildArea stuff ---------------------------------------------------------------------{ */
-
+#if POSTGIS_GEOS_VERSION < 38
typedef struct Face_t
{
const GEOSGeometry* geom;
return shp;
}
+#endif
LWGEOM*
lwgeom_buildarea(const LWGEOM* geom)
if (!(g1 = LWGEOM2GEOS(geom, AUTOFIX))) GEOS_FAIL();
+#if POSTGIS_GEOS_VERSION < 38
g3 = LWGEOM_GEOS_buildArea(g1);
+#else
+ g3 = GEOSBuildArea(g1);
+#endif
if (!g3) GEOS_FREE_AND_FAIL(g1);
GEOSSetSRID(g3, srid);
LWGEOM* GEOS2LWGEOM(const GEOSGeometry* geom, uint8_t want3d);
GEOSGeometry* LWGEOM2GEOS(const LWGEOM* g, uint8_t autofix);
GEOSGeometry* GBOX2GEOS(const GBOX* g);
+#if POSTGIS_GEOS_VERSION < 38
GEOSGeometry* LWGEOM_GEOS_buildArea(const GEOSGeometry* geom_in);
GEOSGeometry* LWGEOM_GEOS_makeValid(const GEOSGeometry*);
+#endif
GEOSGeometry* make_geos_point(double x, double y);
GEOSGeometry* make_geos_segment(double x1, double y1, double x2, double y2);
/* #define PARANOIA_LEVEL 2 */
#undef LWGEOM_PROFILE_MAKEVALID
+#if POSTGIS_GEOS_VERSION < 38
/*
* Return Nth vertex in GEOSGeometry as a POINT.
* May return NULL if the geometry has NO vertex.
return GEOSGeom_createPoint(seq_out);
}
+#endif
LWGEOM* lwcollection_make_geos_friendly(LWCOLLECTION* g);
LWGEOM* lwline_make_geos_friendly(LWLINE* line);
return (LWGEOM*)ret;
}
+#if POSTGIS_GEOS_VERSION < 38
+
/*
* Fully node given linework
*/
return gout;
}
+#endif
/* Exported. Uses GEOS internally */
LWGEOM*
lwgeom_out = lwgeom_in;
}
+#if POSTGIS_GEOS_VERSION < 38
geosout = LWGEOM_GEOS_makeValid(geosgeom);
+#else
+ geosout = GEOSMakeValid(geosgeom);
+#endif
GEOSGeom_destroy(geosgeom);
if (!geosout) return NULL;
while (!valid && iterations < max_iterations)
{
+#if POSTGIS_GEOS_VERSION < 38
GEOSGeometry *geo_valid = LWGEOM_GEOS_makeValid(geo);
+#else
+ GEOSGeometry *geo_valid = GEOSMakeValid(geo);
+#endif
+
GEOSGeom_destroy(geo);
if (!geo_valid)
return NULL;