Question

SpatialFilter : How to get it to behave as ArcGIS Spatial Join Option:JOIN_ONE_TO_MANY

  • 20 April 2018
  • 4 replies
  • 6 views

Badge

Hi,

I think I am missing something here but I cannot seem to get this to work as I expect. I have some objects sitting on a tile index as the example below.

What I am trying to get is the combination of tiles and objects. In this case five things should get passed out but using the SpatialFilter Transformer only four do.

It seems that once a candidate has been picked by a filter it cannot be used by another filter. I suspect there must be some way to get around this

I want the job to run much as ArcGIS spatial join would with the one-to-many option enabled. Attached is the workspace and some test data. This is part of a much larger workflow where you have arbitrary number of objects and I want to find out what tiles does each object intersect. If tiles are not used by more than one object it works ok but this case does not so well

Regards.


4 replies

Userlevel 2
Badge +16

Another option is using the AreaonAreaOverlayer.

Set attribute accumulation to merge all attributes and add a name for the list.

Then use the ListExploder to get the required output.

Hope this helps.

Userlevel 2
Badge +17

Another option is using the AreaonAreaOverlayer.

Set attribute accumulation to merge all attributes and add a name for the list.

Then use the ListExploder to get the required output.

Hope this helps.

Agree, but if you need to preserve original geometries, consider using the SpatialRelator instead of the AreaOnAreaOverlayer.

 

 

Badge

Another option is using the AreaonAreaOverlayer.

Set attribute accumulation to merge all attributes and add a name for the list.

Then use the ListExploder to get the required output.

Hope this helps.

Hi @erik_jan, , I've had a look at the AreaOnAreaOverlayer and that is not quite the right tool for the job. A it to some extent does not care or distinguish between the source of the overlaid areas, in some respects it is similar to ArcGIS Union Operator. For example Area polygons can overlap but for the use case I am working on I do not care about that. I only care about getting the set of tiles that intersect a given Area for all my areas. I'll look into @takashi suggestion of SpatialRelator
Badge

The way to get the desired result is to use SpatialRelator and a ListExploder as suggested by @takashi instead of the SpatialFilter used in the OP. A sample workflow is attached.

fme-spatialfilter-query-ver3-esrishape2none.fmw

Reply