I can confirm having had lots of issues like that, in particular when doing reprojections or other operations where vertices can shift a tiny amount.
Often, the solution was to separate the donut hulls and the holes (DonutHoleExtractor) and pass them through the AnchoredSnapper with a tiny tolerance before rebuilding the donuts (DonutBuilder).
If the donut features don't already have a unique id, you can use the Counter to create one before the DonutHoleExtractor, that way you can use it as a Group By on the AnchoredSnapper and the DonutBuilder to avoid interference in case you have partially overlapping donuts.
From FME2018.0 there is a Tolerance parameter available in transformers like the Clipper. It can be set to 'Automatic' or to 'None'. The 'Automatic' was especially developed to solve this kind of issues. Maybe that will help you solve your issues.
From FME2018.0 there is a Tolerance parameter available in transformers like the Clipper. It can be set to 'Automatic' or to 'None'. The 'Automatic' was especially developed to solve this kind of issues. Maybe that will help you solve your issues.
@lars_de_vries, thanks for the update, but 2018, is not on our radar at this moment, but will give a try in our test environment
We have just migrated to FME Server 2017.1.2 and desktop, and with 400+ work benches running on FME Server in production, it will be a while before we look at 2018, maybe around 2018.1
As we found going to 2017.1.2, quite a lot of issue migrating from 2014 and 2016. Autocad scripts did not work at all, Quite a lot of ESRI Geodatabase scripts failed/issues, due to not supported with 10.5.1, and not compatible with older sde connection strings
We would like to solve with 2017.1.2, i think the looking at anchor snapper / with donuthole extractor looks like a solution
It got it to work more less, with using a combination, of GeometryCoercer, AreaBuilder, Triangulator, Dissolver, but it does not come clean for some polygons on the edge
Hi @rudy_v, could the AnchoredSnapper (Snapping Type: Segment Snapping) help you?
Send the exterior polygon to the Anchor port, send the interior polygons to the Candidate port, set "Segment Snapping" to the Snapping Type parameter, and set an appropriate tolerance to the Snapping Tolerance parameter.
Then, with a Clipper, clip the exterior polygon by the interior polygons output from the Snapped port and the Untouched port of the AnchoredSnapper.