Skip to main content

Hi there,

I have 2 parcel datasets, a master copy and a weekly update copy that I need to process into the master copy. Each parcel only appears once in each dataset and has a unique parcel ID so matching is fairly easy. I’ve used a change detector to flag any parcels with geometry updates, but now I need to identify the type of change that has taken place. This could involve parcels being split, merged or just the boundary being updated. What is the best way to do this? 

The logic in my head is this so far:

Split parcels - Either, mutliple new parcels being inserted within the boundary of one that has been deleted OR Parcel boundaries shrinking and new parcels being added within boundary of original

Merged parcels - New parcel being inserted that takes the place of multiple deleted parcels OR Parcel boundaries growing to cover extent of deleted parcels

Hi ​@ryanwillshear this is a great question and there’s likely multiple ways to solve this with FME. The ChangeDetector only shows that it has changed by not why, but we can still use that to our advantage especially if you know the data will always be polygons. You could take the data from the original dataset and the updated output port of the ChangeDetector to perform some tests. 

  • You could use the Tester to test for an expression such as If A(Area) = 50% of A(Area) to see if they are split parcels
  • You could use the SpatialRelator and the different ‘spatial predicates to test’ could be your different types of change

Let us know if this helps or gives you some ideas!


My first thought for splits and/or merges would be a spatial realtor between the Inserted and Deleted port, Parcels that have been split will have multiple inserted parcel relationships to 1 deleted parcel, and Merged will have the opposite.
Boundary changes could be detected through comparing vertices, or geometry string values. extract the values and compare. Or differences in area, perimeter etc. 

An AreaOnAreAOverlayer could give those parts of the polygon that are not shared with both so you can identify the where the polygon changed, if that is a requirement