Skip to main content

I have two datasets, one with 'old' parcels and one with 'new' parcels. I need to find out which old parcels turned into new ones and come up with a was - is list.

 

oldnewDesired output:

 

feature OLD parcel XX712 with a list with new parcel attribute(s): 557, 516

feature OLD parcel XX713 with a list with new parcel attribute(s): 584

feature OLD parcel XX713 with a list with new parcel attribute(s): 584

feature OLD parcel XX621 with a list with new parcel attribute(s): 189

 

What I have tried so far using the SpatialRelator with spatial predicates:

 

Contains, Within, Equals

Only works for parcels that stayed the same geometry wise. It is possible that geometry changed, see the example in the screenshots.

 

Intersects

This works but its giving me too much suppliers. When a parcel geometry has stayed the same its giving me a supplier from the parcel next to it because the outer lines are touching.

 

Touches

Giving me only the touching parcel to the side

 

Am I doing something wrong with the settings in the SpatialRelator? Or am I using the wrong transformer? Any ideas to nudge me in the right direction are appriciated.

 

You can try using an AreaOnAreaOverlayer and generate a list of old and new IDs on every output polygon. If the new parcels wouldn't overlap, you could dissolve based on the new IDs.

From your example I see that they do overlap. In this case you can explode the new ID list first (leaving you with two of each polygon where the new IDs overlap: one for each new ID) and then dissolve your features based on new ID.

Hope this helps!

 

Edit: dont forget to filter out the areas where there is no new ID.


You can try using an AreaOnAreaOverlayer and generate a list of old and new IDs on every output polygon. If the new parcels wouldn't overlap, you could dissolve based on the new IDs.

From your example I see that they do overlap. In this case you can explode the new ID list first (leaving you with two of each polygon where the new IDs overlap: one for each new ID) and then dissolve your features based on new ID.

Hope this helps!

 

Edit: dont forget to filter out the areas where there is no new ID.

Hi Joep,

 

Thanks for taking the time! The new parcels dont overlap eachother, my mistake for uploading the wrong screenshot. Im trying to understand your first try, generate a list and dissolve. How do I make FME understand the ID of a new parcel? The ID column is the same for both datasets, or do I need to change it to lets say ID_old and ID_new? And dissolve group by ID_new?


It may help to do a slight inward buffer (with a negative Buffer Distance) before you start comparing the parcels. This will eliminate small overlaps.

 Old_and_New_Parcels


Hi Joep,

 

Thanks for taking the time! The new parcels dont overlap eachother, my mistake for uploading the wrong screenshot. Im trying to understand your first try, generate a list and dissolve. How do I make FME understand the ID of a new parcel? The ID column is the same for both datasets, or do I need to change it to lets say ID_old and ID_new? And dissolve group by ID_new?

If you want the old geometries with a list of new parcels you can rename the ID of new parcels to something like ID_new and for clarity's sake rename old parcel IDs to ID_old

Then use the AreaOnAreaOverlayer and Generate Lists of new IDs on your features. All features of this intersection now have a list attribute with the IDs of all the new parcels that cross these features.

Dissolve the intersection features with Group By set to ID_old to rebuild the old parcel geometries, and make sure to Merge Incoming Attributes, this way the lists you created will append.

Then you can e.g. use the ListConcatenator to get these lists in a comma separated form back into your attributes.


Reply