Dear Darafei, good idea to write a wrapper to ferret out the offending rows. I had to change it a bit because I don't use ST_Union(geometry, geometry) but the aggregate ST_Union(geometry). Since I am not very experienced in writing aggregates, I modified the wrapper that it fits for ST_Union(geometry[]) and used it in my query with ST_Union_Fails(array_agg(geom)).
I have found 3 groups with a total of 923 geometries which returned an error with ST_Union. As soon as I get access to my old userID, I will file the them as a ticket. In the meantime I will try to union the problematic geometries in a loop one at a time with st_makevalid after each loop - maybe that will work as a workaround, now I could reduce the number of geometries dramatically. Thank you very much for your help! Kind regards, Birgit Von: "Darafei \"Komяpa\" Praliaskouski" <[email protected]> An: "PostGIS Users Discussion" <[email protected]> Gesendet: Mittwoch, 19. September 2018 02:46:42 Betreff: Re: [postgis-users] GEOSUnaryUnion: TopologyException: found non-noded intersection BUT geom is valid Hi, This is not supposed to happen. Can you please isolate the offending rows unioning them pairwise and file them as a ticket? Here's a handy helper function that returns True if Union failed: create or replace function st_union_fails (geom1 geometry , geom2 geometry ) returns boolean as $$ begin begin geom1 = ST_Union (Geom1 , geom2) ; return false ; exception when others then return true ; end ; end ; $$ language plpgsql ; вт, 18 сент. 2018 г. в 16:25, Birgit Laggner < [ mailto:[email protected] | [email protected] ] >: Dear discussion group, I am trying to ST_Union several polygons and get a TopologyException (GEOSUnaryUnion: TopologyException: found non-noded intersection between LINESTRING (3.56442e+06 5.42679e+06, 3.56442e+06 5.42679e+06) and LINESTRING (3.56442e+06 5.42679e+06, 3.56442e+06 5.42679e+06) at 3564420.7944701263 5426786.9800475985). I have tested with ST_Valid and all polygons in the datasets are valid. The dataset is pretty large (53.5 Mio. polygons) and will probably get grouped into around 8.7 Mio resulting geometries during ST_Union. If I try to ST_Union the geometries near the point ST_Union mentions in the error message (ST_Buffer with up to 100 metres), everything works fine. I am out of ideas how to find the problematic geometry or at least how to work around the TopologyException. My PostGIS version is: "POSTGIS="2.3.3 r15473" GEOS="3.5.1-CAPI-1.9.1 r4246" SFCGAL="1.2.2" PROJ="Rel. 4.9.2, 08 September 2015" GDAL="GDAL 1.11.3, released 2015/09/16" LIBXML="2.9.3" LIBJSON="0.11.99" TOPOLOGY RASTER" I would be very glad if anyone would come up with ideas how to solve my problem. Thanks a lot in advance! Regards, Birgit _______________________________________________ postgis-users mailing list [ mailto:[email protected] | [email protected] ] [ https://lists.osgeo.org/mailman/listinfo/postgis-users | https://lists.osgeo.org/mailman/listinfo/postgis-users ] -- Darafei Praliaskouski Support me: [ http://patreon.com/komzpa | http://patreon.com/komzpa ] _______________________________________________ postgis-users mailing list [email protected] https://lists.osgeo.org/mailman/listinfo/postgis-users
_______________________________________________ postgis-users mailing list [email protected] https://lists.osgeo.org/mailman/listinfo/postgis-users
