Skip to main content
Solved

Reliable FME workflow to detect polygon geometry issues

  • March 27, 2026
  • 1 reply
  • 97 views

sahan969
Contributor
Forum|alt.badge.img+5

Hi all,
I’m validating polygons (DB tables) and currently using GeometryValidator and SpikeRemover in FME. I’m looking for a short, repeatable workflow that reliably flags:

  • Self‑intersections / bow‑ties
  • Holes outside shell / overlaps / tiny slivers
  • Degenerate parts / zero‑area rings
  • Duplicate vertices/nodes

Questions:

  1. Which transformers & order do you recommend for detect only polygon checks?
  2. Any tips on tolerances (min area/angle) that avoid false positives when paired with SpikeRemover?

If you have a small sample workspace or parameter hints, I’d really appreciate it. Thanks!
Sahan

Best answer by crystalatsafe

Hi ​@sahan969 

I would recommend:

  1. GeometryFilter with "Area" selected and only feed the "Area" output port.
    • This would be a first pass of filtering, allowing you to separate out areas (polygons) from the other geometry types.
  2. For the GeometryValidator, a good first step to identify any issues is to check your settings for issue detection, as you have described AND set Attempt Repair to No.
  3. For the SpikeRemover:
    • If you are only wanting to detect issues, then using the SpikeRemover might not be the best approach as this will alter your data.

Both "tiny slivers" and "spikes" might not be things that the GeometryValidator will flag.

  • If there are sliver areas that are very small you may need to use an AreaCalculator, and then add a Tester to re-route polygons below a set limit area (or a StatisticsCalculator, and then filter out all areas smaller than a given fraction of the median area of a feature in the dataset, for example.) 
  • If you wanted to flag potential issues only, you could pipe the SpikeRemover's 'Removed' output to a PointOnAreaOverlayer and overlay those spike points on the input polygons to get a sense of how many input features are affected by what combination of the SpikeRemover arguments.
  • If you looking at a set of areas that's meant to be a contiguous coverage, but features don't quite line up you could use the AreaGapAndOverlapCleaner.

We have a few tutorials on geometry validation that you may find helpful:

Tutorial: Data Validation and QA with FME

1 reply

crystalatsafe
Safer
Forum|alt.badge.img+30
  • Safer
  • Best Answer
  • April 1, 2026

Hi ​@sahan969 

I would recommend:

  1. GeometryFilter with "Area" selected and only feed the "Area" output port.
    • This would be a first pass of filtering, allowing you to separate out areas (polygons) from the other geometry types.
  2. For the GeometryValidator, a good first step to identify any issues is to check your settings for issue detection, as you have described AND set Attempt Repair to No.
  3. For the SpikeRemover:
    • If you are only wanting to detect issues, then using the SpikeRemover might not be the best approach as this will alter your data.

Both "tiny slivers" and "spikes" might not be things that the GeometryValidator will flag.

  • If there are sliver areas that are very small you may need to use an AreaCalculator, and then add a Tester to re-route polygons below a set limit area (or a StatisticsCalculator, and then filter out all areas smaller than a given fraction of the median area of a feature in the dataset, for example.) 
  • If you wanted to flag potential issues only, you could pipe the SpikeRemover's 'Removed' output to a PointOnAreaOverlayer and overlay those spike points on the input polygons to get a sense of how many input features are affected by what combination of the SpikeRemover arguments.
  • If you looking at a set of areas that's meant to be a contiguous coverage, but features don't quite line up you could use the AreaGapAndOverlapCleaner.

We have a few tutorials on geometry validation that you may find helpful:

Tutorial: Data Validation and QA with FME