Question

How do I make a one-to-many join in FME?

  • 2 February 2023
  • 4 replies
  • 118 views

Badge

I did a spatial join of two AGOL layers, one is a strip map and the other is parcel data with owner info. I merged the two and created a table with the owner information and its respective page number.

 

Some parcels are on more than one page, however, and I'm trying to make a table that includes these records and doesn't just omit them (there should be an individual record for each parcel and every page it shows up on). I've been trying to use the Spatial Relator with Generate List checked, followed by a List Exploder but it is not working. Does anyone know of a better way to do this?

 

Edit: There is no common attribute between the two layers.


4 replies

Userlevel 1
Badge +12

There are a lot of ways to do this in FME and lists are a good option once you get your head around them.

 

But lets use a different method to get what you need. We are going to use a featuremerger.

 

The layer which is the many will be the requestor, while the layer with one is the supplier (e.g. Parcels)

 

And inside the featuremerger, we will match on the appropriate column on each table, however we will copy the attributes and geometry over onto the output by choosing the feature merge type: Attributes and geometry (this utilities the geometry from the supplier and not from the requestor)

 

Cheers,

Todd

 

image

Badge

There are a lot of ways to do this in FME and lists are a good option once you get your head around them.

 

But lets use a different method to get what you need. We are going to use a featuremerger.

 

The layer which is the many will be the requestor, while the layer with one is the supplier (e.g. Parcels)

 

And inside the featuremerger, we will match on the appropriate column on each table, however we will copy the attributes and geometry over onto the output by choosing the feature merge type: Attributes and geometry (this utilities the geometry from the supplier and not from the requestor)

 

Cheers,

Todd

 

image

Hi Todd,

 

Thank you for your help! I forgot to mention there is no common attribute between the two layers so I think a spatial join will be best.

Userlevel 1
Badge +12

Hi Todd,

 

Thank you for your help! I forgot to mention there is no common attribute between the two layers so I think a spatial join will be best.

Well in that case. Spatial realtor is the best option as you noted. Parcels as the requestor.

 

spatial predicate probably intersects

 

tick on generate list under attribute accumulation and select relevant attributes from the supplier.

 

Then out to listexploder and explode on the list value.

 

if that’s not working then make sure your data is in the same coordinate system.

Badge

After the Spatial Relator, FME was reading the empty cells as "<missing>" so the List Exploder wasn't working (it was returning a "MISSING_PARAMETER_LIST" error). To fix this I added the Null Attribute Mapper before the List Exploder and turned the <missing> values into Nulls which did the trick.

Reply