Question

Clipping and selecting buffer zones by crossing polygons

  • 20 November 2015
  • 7 replies
  • 8 views

Badge +7
Hi,

 

 

I have a set of polygon buffers that I need to clip where a road reserve polygon crosses the buffer. I then need to drop the parts (if any) of the buffer polygon that lie beyond the road. That is, working from the buffer centre, only keep buffer polygons that do not have a road reserve between them and buffer centre.

 

 

So far I can produce the separate buffer polygons using AreaOnAreaOverlayers and Tester transformers, drop the part relating to the road reserve but I can't seem to determine which polygons lie 'beyond' the road polygons.

 

 

Some assistance in solving this would be gratefully appreciated.

 

 


7 replies

Userlevel 2
Badge +17
Hi,

 

 

I think the Clipper transformer is more suitable to do that. Send the road polygons to the Clipper port, send the buffer polygons to the Clippee port.

 

 

Takashi
Badge +7
Hi,

 

 

I think the Clipper transformer is more suitable to do that. Send the road polygons to the Clipper port, send the buffer polygons to the Clippee port.

 

 

Takashi

Thank you for that. The clipper does the same job here as the AreaOnAreaOverlayer, so this saves me a transformer. Let me explain the rest of the problem a bit better with a simplified diagram. In reality there could be many roads and remnant buffer polygons.

A: is the original buffer with the road sample overlaid.

B: After clipping - the buffer is now two separate polygons. This is as far as I have got.

C: The desired result. The removal of any remnant polygons that cannot be reached from the buffer centre without crossing a road.

It is the last step I'm having difficulty with.

Thanks for your help.

Tom

Userlevel 2
Badge +17

Thank you for that. The clipper does the same job here as the AreaOnAreaOverlayer, so this saves me a transformer. Let me explain the rest of the problem a bit better with a simplified diagram. In reality there could be many roads and remnant buffer polygons.

A: is the original buffer with the road sample overlaid.

B: After clipping - the buffer is now two separate polygons. This is as far as I have got.

C: The desired result. The removal of any remnant polygons that cannot be reached from the buffer centre without crossing a road.

It is the last step I'm having difficulty with.

Thanks for your help.

Tom

The solution may be different depending on how you define the "buffer centre".

If the "buffer center" means the "center of the bounding box containing the original buffer polygon" (it's the center that will be created by the CenterPointReplacer transformer), you can filter the resulting polygon by checking if it contains the "center" or not using the SpatialFilter. However, looks like the requirement is not so simple. Could you clarify the definition of the "buffer centre"?

Userlevel 2
Badge +17

Thank you for that. The clipper does the same job here as the AreaOnAreaOverlayer, so this saves me a transformer. Let me explain the rest of the problem a bit better with a simplified diagram. In reality there could be many roads and remnant buffer polygons.

A: is the original buffer with the road sample overlaid.

B: After clipping - the buffer is now two separate polygons. This is as far as I have got.

C: The desired result. The removal of any remnant polygons that cannot be reached from the buffer centre without crossing a road.

It is the last step I'm having difficulty with.

Thanks for your help.

Tom

In addition, it should also be clarified what the required result is if the "buffer center" was inside a road polygon.

Badge +7

Buffer centre is the centre of the original buffer, i.e. using the CenterPointReplacer. This cannot occur in a road polygon as the centre point actually represents a playground - not something that should be on a road!

I think that using the CenterPointReplacer and SpatialFilter should do the job - will try it when I get back to my computer.

[Update: this works, thanks! Although the clipper behaviour was not quite what was required. Reimplementing the AoAOverlayer and Tester solved that. Just got to remove overlaps between different buffers now! But I already have a process for this.]

Many thanks

Tom

Badge +7

In addition, it should also be clarified what the required result is if the "buffer center" was inside a road polygon.

Buffer centre is the centre of the original buffer, i.e. using the CenterPointReplacer. This cannot occur in a road polygon as the centre point actually represents a playground - not something that should be on a road!

I think that using the CenterPointReplacer and SpatialFilter should do the job - will try it when I get back to my computer.

[Update: this works, thanks! Although the clipper behaviour was not quite what was required. Reimplementing the AoAOverlayer and Tester solved that. Just got to remove overlaps between different buffers now! But I already have a process for this.]

Many thanks

Tom

Badge +3
you can do that with AoA of course.

 

The trick is to identify the overlapping areas.

 

 

You can for insance expose the fme_feature_type on the readers and set a list_name in the AoA.

 

Then you can query the list using a tester to see if it contains a road object.

 

 

If the input of the AoA is from some transformer rather than a reader, you can name the transformer to some logical name (for ease of use) and put a exposer after it to expose the fme_feature_type (you can't choose it in the exposer in that case but have to manualy type in "fme_feature_type")

 

Then query the list attribute.

 

Reply