]> granicus.if.org Git - postgis/commitdiff
Fix TopologyException in Raster Instersection
authorDarafei Praliaskouski <me@komzpa.net>
Sun, 22 Jul 2018 12:22:27 +0000 (12:22 +0000)
committerDarafei Praliaskouski <me@komzpa.net>
Sun, 22 Jul 2018 12:22:27 +0000 (12:22 +0000)
Raster _st_intersects was doing ST_Collect of polygons building each pixel,
which led to invalid geometry and TopologyException.

Thanks Vinícius A.B. Schmidt for reporting and testing solutions.

Closes #4132

git-svn-id: http://svn.osgeo.org/postgis/trunk@16660 b70326c6-7e19-0410-871a-916f4a2858ee

NEWS
raster/rt_pg/rtpostgis.sql.in

diff --git a/NEWS b/NEWS
index 2e66607cd8bf468fb5651cc624e3dab06c3eaa07..f0ed68f9bcc73ead6f635561e7d37fe56c42d212 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,8 @@ New since PostGIS 2.5.0beta1
   - #4115, Fix a bug that created MVTs with incorrect property values under
     parallel plans (Raúl Marín).
   - #4120, ST_AsMVTGeom: Clip using tile coordinates (Raúl Marín).
+  - #4132, ST_Intersection on Raster now works without throwing TopologyException
+    (Vinícius A.B. Schmidt, Darafei Praliaskouski)
 
   See PostGIS 2.5.0 section for full details
 
index 0189289300cf5e7afa5e9f116d1f96743348fb70..40b71c0ac6cd73f5d0c12e29fd0741f205b53475 100644 (file)
@@ -6434,7 +6434,7 @@ CREATE OR REPLACE FUNCTION _st_intersects(geom geometry, rast raster, nband inte
                        RETURN TRUE;
                END IF;
 
-               SELECT @extschema@.ST_Collect(t.geom) INTO _geom FROM @extschema@.ST_PixelAsPolygons(rast, nband) AS t;
+               SELECT @extschema@.ST_Buffer(@extschema@.ST_Collect(t.geom), 0) INTO _geom FROM @extschema@.ST_PixelAsPolygons(rast, nband) AS t;
                RETURN @extschema@.ST_Intersects(geom, _geom);
        END;
        $$ LANGUAGE 'plpgsql' IMMUTABLE _PARALLEL