[geos-devel] Progress on #837 - TopologyException in UnaryUnion

Sandro Santilli strk at kbt.io
Wed Apr 17 08:17:23 PDT 2019

On Wed, Apr 17, 2019 at 08:01:43AM -0700, Martin Davis wrote:

> (Kudos to you for finding the failing test case.  Was that just by chance,
> or would you be able to give the new potential fix a good workout?)

I think it was reported by a user of PostGIS Topology, where unions is
used heavily. I probably just reduced the testcase. No time to stress
new implementation out (but build PostGIS Topology, it's so easy to
get exceptions ! :)

> But... I think there is a slim possibility that:
> (a) The envelope does not change
> (b) The union moves a line segment slightly (due to snapping or simply by
> having a new node introduced)
> (c) There is a geometry which lies just outside the overlap extent which is
> close enough to the changed segment that it is now intersected

By "is now intersected" in (c) you mean it is moved by
snapping/precision-reducing heuristics in further unioning ?
If that's the case, can't we check envelope intersection again
afterwards ?

> It might be possible to come up with a synthetic test case to demonstrate
> this (perhaps using a fixed precision mode, which tends to highlight these
> kinds of issues).

It'd be great to try hard to break it :)

> One further test would be to compare all the line segments of the union
> which lie outside the overlap extent.  If they have not changed then there
> should be no risk of an intersection with the other outside polygons.  I
> think this should be significantly faster than doing the full union.  I'l
> try working that up and see what the impact is.

Thank you, it's great to see you full speed on GEOS !


More information about the geos-devel mailing list