Question

A little bit complicated geometric operation

  • 17 April 2018
  • 2 replies
  • 2 views

Badge

Hello community,

 

I have a dense hydrographic network on which I am performing topolical corrections.

 

What I wanna do is :

 

1. Extract start and end node of each line (Done using coordinate extractor + vertex creator)

 

2. Draw a circular buffer on each extracted node (Done using the bufferrer)

 

3. Keep only buffers which intersect with other lines (not done yet)

 

Is it possible to get some help doing this task ?

 

Thank you ver much.

2 replies

Userlevel 4

One possible solution is to use the LineOnAreaOverlayer and specify the area list attribute:

If you look at the area output features, they should contain a list of alle the intersecting line elements and their attributes.

Badge +2

The LineOnAreaOverlayer is great for resolving this spatial query, as David suggests. I use the 'Overlayer' series of trasnformers a lot. I'm just going to add a couple of notes for others that might find this question in a search.

LineOnAreaOverlayer: the one draw back of LineOnAreaOverlayer is that it splits lines at the area boundaries. In this use case, this is OK because it's the areas that are needed as output and not the lines.

Other options to the LineOnAreaOverlayer are:

SpatialFilter: This will filter the area features (Candidate) based on the line features that intersect (Filter). The advantage is you can tune the spatial predicate. For example, you could filter buffers if lines cross the boundary vs. lines that a completely contained in the area.

SpatialRelator: a cousin of SpatialFilter, has the advantage that you can tune the spatial predicate, as SpatialFilter. The areas (Requestor) will interact with the lines (Supplier). SpatialRelator also adds the list of suppliers to the request in a similar way to the LineOnAreaOverlayer.

The documentation for SpatialRelator has a Spatial Transformers Comparison Matrix that compares many of FME's spatial join transformers.

Reply