I'm trying to compare and see what the differences are between polygons from two different datasets, they have matching unique IDs. What I want to end up with are features where the two polygons don't match.

What I have tried so far using FME;

Feed both datasets into a AreaOnAreaOverlayer, use a Tester to seperate the polygons that are the same to polygons that differ from each other. However, in some cases there are more than one polygons on top of each other.

I want FME to only check polygons that have the same ID, for some reason I can't find a way to do this. What is happening now is that FME is checking any polygons on top of each other regardless of ID. I was using this method with two shapefiles that I created myself for testing and that was working fine but with the 'real' data it's not.

How can I get FME to only use check polygons with matching IDs?

Sort of like a loop where the two polygons with the same ID are compared and FME moves on to the next 'set' of polygons.

1 Answer 1


I think there are a few ways to do this, but since you have two different datasets, the ChangeDetector transformer should do what you need.

enter image description here

The ID attribute is chosen under Update Detection Key Attribute. Then you can choose whether to compare based on other attributes, geometry, or both. There is more information about this technique on the FME Community knowledge base.

Other change detection methods include the Matcher transformer. The Matcher is best when you have a single dataset containing possible matches. Since you have two separate datasets, the ChangeDetector is probably better.

Alternatively, the CRCCalculator can be used to create a unique key for each geometry. Then you can compare keys rather than geometry, which is rather quicker. It would depend on how many features you are processing and the complexity of the geometry.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.