From 60aa37f2d02abc658badac6a19fcaae403290edd Mon Sep 17 00:00:00 2001 From: Paul Ramsey Date: Thu, 30 Nov 2017 19:18:03 +0000 Subject: [PATCH] Allow multi-linestring to be used as blade in line/poly splitting, References #3097 git-svn-id: http://svn.osgeo.org/postgis/trunk@16127 b70326c6-7e19-0410-871a-916f4a2858ee --- liblwgeom/lwgeom_geos_split.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/liblwgeom/lwgeom_geos_split.c b/liblwgeom/lwgeom_geos_split.c index 4e41a6764..1ad4a6e61 100644 --- a/liblwgeom/lwgeom_geos_split.c +++ b/liblwgeom/lwgeom_geos_split.c @@ -34,7 +34,7 @@ static LWGEOM* lwline_split_by_line(const LWLINE* lwgeom_in, const LWGEOM* blade static LWGEOM* lwline_split_by_point(const LWLINE* lwgeom_in, const LWPOINT* blade_in); static LWGEOM* lwline_split_by_mpoint(const LWLINE* lwgeom_in, const LWMPOINT* blade_in); static LWGEOM* lwline_split(const LWLINE* lwgeom_in, const LWGEOM* blade_in); -static LWGEOM* lwpoly_split_by_line(const LWPOLY* lwgeom_in, const LWLINE* blade_in); +static LWGEOM* lwpoly_split_by_line(const LWPOLY* lwgeom_in, const LWGEOM* blade_in); static LWGEOM* lwcollection_split(const LWCOLLECTION* lwcoll_in, const LWGEOM* blade_in); static LWGEOM* lwpoly_split(const LWPOLY* lwpoly_in, const LWGEOM* blade_in); @@ -342,7 +342,7 @@ lwline_split(const LWLINE* lwline_in, const LWGEOM* blade_in) /* Initializes and uses GEOS internally */ static LWGEOM* -lwpoly_split_by_line(const LWPOLY* lwpoly_in, const LWLINE* blade_in) +lwpoly_split_by_line(const LWPOLY* lwpoly_in, const LWGEOM* blade_in) { LWCOLLECTION* out; GEOSGeometry* g1; @@ -378,7 +378,7 @@ lwpoly_split_by_line(const LWPOLY* lwpoly_in, const LWLINE* blade_in) return NULL; } - g2 = LWGEOM2GEOS((LWGEOM*)blade_in, 0); + g2 = LWGEOM2GEOS(blade_in, 0); if ( NULL == g2 ) { GEOSGeom_destroy(g1); @@ -547,8 +547,9 @@ lwpoly_split(const LWPOLY* lwpoly_in, const LWGEOM* blade_in) { switch (blade_in->type) { + case MULTILINETYPE: case LINETYPE: - return lwpoly_split_by_line(lwpoly_in, (LWLINE*)blade_in); + return lwpoly_split_by_line(lwpoly_in, blade_in); default: lwerror("Splitting a Polygon by a %s is unsupported", lwtype_name(blade_in->type)); -- 2.49.0