[postgis-tickets] [PostGIS] #5402: Add disable catch topology exceptions flag
PostGIS
trac at osgeo.org
Thu Jun 15 13:16:31 PDT 2023
#5402: Add disable catch topology exceptions flag
--------------------------------+---------------------------
Reporter: Lars Aksel Opsahl | Owner: pramsey
Type: enhancement | Status: new
Priority: medium | Milestone: PostGIS 3.3.4
Component: postgis | Version: 3.3.x
Resolution: | Keywords:
--------------------------------+---------------------------
Comment (by pramsey):
It's worth reading the old HeuristicOverlay class just to get a feel for
how many permutations of geometry modification are in play.
https://github.com/libgeos/geos/blob/3.11/src/geom/HeuristicOverlay.cpp
If your policy is "no changes of inputs!" then you'll be chasing a lot of
rabbits that in GEOS 3.9 are caught by one or other of the Heuristic
policies at a relatively small tolerance.
In GEOS 3.10 and onwards almost all geometry is process through a
different set of fall-backs, which you can read here:
https://github.com/libgeos/geos/blob/main/src/operation/overlayng/OverlayNGRobust.cpp#L84
The exception, as this fun issue has shown are "mixed dimension
collections". Because OverlayNG doesn't support those, they ended up back
in the old HeuristicOverlay, which includes the precision reducer that
resulted in your blocky result. So note: the code which made that blocky
result is *not* the OverlayNG, it's the old stuff.
With 3.12 we have added handling for mixed dimension collections and all
the old HeuristicOverlay code has been stripped away.
The thing to note about both the OverlayNG process and the
HeuristicOverlay process is that it's a continuum. If you throw up a
critical error the first time you hit an exception in the overlay process,
you'll have a very large number of errors to look at. This is why Sandro
built (and build (and added (and addded))) to the HeuristicOverlay in the
first place, playing whack-a-mole which all the different inputs that
defeated the naive overlay.
--
Ticket URL: <https://trac.osgeo.org/postgis/ticket/5402#comment:4>
PostGIS <http://trac.osgeo.org/postgis/>
The PostGIS Trac is used for bug, enhancement & task tracking, a user and developer wiki, and a view into the subversion code repository of PostGIS project.
More information about the postgis-tickets
mailing list