AW: Re: [postgis-users] ST_Unioning invalid multipolygons

Düster Horst Horst.Duester at
Fri Aug 29 00:02:02 PDT 2008

>Another solution which *may* work is to replace the geometry by a
>of size 0 around the geometry in your select statement 

No this is a bad idea. You do not have any control about the result of
your buffer(0). A better way is to clean the polygon geometry with the
cleangeometry() function you can download from:

The function cleans by breaking the self-intersecting parts of your
geometry into multigeometries.

Sometimes postgis throws topology exeptions although your geometry is
valid. In this case geos by itself produces the error. Maybe this is the
result of rounding problems and you don't have any chance to solve the

Best regards


Dr. Horst Düster
GIS-Koordinator, Stv. Amtschef

Kanton Solothurn
Bau- und Justizdepartement
Amt für Geoinformation
SO!GIS Koordination
Rötistrasse 4
CH-4501 Solothurn

Telefon ++41(0)32 627 25 32
Telefax ++41(0)32 627 22 14

mailto:horst.duester at

-----Ursprüngliche Nachricht-----
Von: Michael Michaud [mailto:michael.michaud at]
Gesendet am: Freitag, 29. August 2008 08:24
An: PostGIS Users Discussion
Betreff: Re: [postgis-users] ST_Unioning invalid multipolygons

David Jantzen a écrit :
> Hi again,
> I'm trying to ST_Union multipolygons from the Zillow neighborhood
> When I do this I occasionally see:
> NOTICE:  TopologyException: found non-noded intersection between
> -73.812....
> This appears to be due to invalid geometries, as the following query
> returns over a hundred rows:
> select * from neighborhoods where not ST_IsValid(the_geom)
> Can anyone suggest a workaround here?  The resulting geometry needs to
> be a multipolygon.  Also, what is ST_Is_valid actually testing for?
> documentation isn't very explicity about the definition of validity.
Most of time, invalid polygons are polygons with a self intersecting 
boundaries (as in the number '8') or self-touching boundary (two non 
contiguous points of the boundary are touching each other)
The best solution is to correct those geometries if you can.
Another solution which *may* work is to replace the geometry by a buffer

of size 0 around the geometry in your select statement (using a 0-buffer

is a work-around which generally works with JTS library from which 
postgis functions are derived).

> Thanks,
> David
> _______________________________________________
> postgis-users mailing list
> postgis-users at

postgis-users mailing list
postgis-users at

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the postgis-users mailing list