[postgis-users] GEOSSymDifference error in st_changeedgegeom

Sandro Santilli strk at keybit.net
Tue Jan 15 08:48:32 PST 2013


On Tue, Jan 15, 2013 at 04:42:24PM +0100, Paolo Crosato wrote:
> Hi,
> 
> while working on simplifying my topology, I got an error in
> st_changeedgegeom near line 180, at this point:
> 
>   range := ST_SymDifference(range, tmp2);

[...]

> ERROR: GEOSSymDifference: TopologyException: found non-noded
> intersection between LINESTRING (-1.14793 47.7749, -1.14793 47.7749)
> and LINESTRING (-1.14793 47.7749, -1.14793 47.7749) at
> -1.1479299999999952 47.774900000000002

Thank you for the report. I filed a ticket for GEOS about this:

> If I dump the geometries in EWKT instead of EWKB, the error won't show:

[...]

> Could this be related to some rounding error in floating point
> computations? Is there a way to workaround the issue, or should I
> just skip the edge and log it, instead of stopping the procedure
> (I'll do this anyway for now, since this could happen on just some
> edges on millions).

It is related to robustness errors, since both inputs are valid.
I think you should just skip and log for now, and get back
to it later.

Improving GEOS robustness is on my TODO list but it isn't easy to
find the time for it. 

--strk;


More information about the postgis-users mailing list