Skip to main content
Solved

Hi everyone. Could someone help me to understand why I cannot get this bufferer clipper routine to work.


I have a grid with 16 polygons. I have an orthophoto and a contour dataset that covers the extent of the 16 polygons. I want to buffer each polygon by a set amount and clip to the extent of the buffered polygons to create an overlap. When I use the the bufferer and clipper transformer for imagery using the fanout expression to create 16 individual named folders it works fine but when I run the same unchanged routine on a contour shapefile it doesn't buffer to extent of the buffered polygons correctly. I've attached screenshots of the result using the shapefile. I've tried changing random settings but cannot achieve the expected result. Thanks in advance. Aaron

The blue lines are my grid polygons. The darker shades are the overlaps of the surrounding polygons.

You can see from this the routine seems to be using some of the surrounding polygons as a clipper and clipping contours from the left and top of the grid polygon. This does not happen when using the same routine on the orthophoto, it works fine and clips correctly.

The end result.

Best answer by mark2atsafe

That's correct. Vector and raster features are clipped in different ways. For vector, a feature can only be "inside" a single clip boundary. If it falls inside two then it becomes assigned to one or the other, not both.

But yes, there are ways to fix it. Besides a LineOnLineOverlayer, you could try a SpatialRelator. Do the same list creation, explode the List (ListExploder), and then use the Clipper with a group by set (in short, you create one set of features per grid square).

View original
Did this help you find an answer to your question?

7 replies

redgeographics
Celebrity
Forum|alt.badge.img+48

Could you also post your workspace? I think what's happening is that the clippers are processed one after the other and the clippees are passed along (if that makes sense). So the contour lines on the left side are missing because they have been clipped by a previous clipper feature and are no longer considered.

An alternative might be LineOnAreaOverlayer, creating a list, exploding that so you have duplicates where the buffers overlap and then fanout.


redgeographics wrote:

Could you also post your workspace? I think what's happening is that the clippers are processed one after the other and the clippees are passed along (if that makes sense). So the contour lines on the left side are missing because they have been clipped by a previous clipper feature and are no longer considered.

An alternative might be LineOnAreaOverlayer, creating a list, exploding that so you have duplicates where the buffers overlap and then fanout.

Thanks for you reply. I am unable to post the workspace at the moment. What is throwing me is how can it output a set of images exactly buffered on all sides but not a set of shapefiles.


redgeographics
Celebrity
Forum|alt.badge.img+48
aaronmccullough wrote:

Thanks for you reply. I am unable to post the workspace at the moment. What is throwing me is how can it output a set of images exactly buffered on all sides but not a set of shapefiles.

It has to do with the way FME handles rasters (each raster is a single object according to FME). Not very helpful, I know, but it's rather complex to explain.


mark2atsafe
Safer
Forum|alt.badge.img+43
  • Safer
  • Best Answer
  • June 27, 2019

That's correct. Vector and raster features are clipped in different ways. For vector, a feature can only be "inside" a single clip boundary. If it falls inside two then it becomes assigned to one or the other, not both.

But yes, there are ways to fix it. Besides a LineOnLineOverlayer, you could try a SpatialRelator. Do the same list creation, explode the List (ListExploder), and then use the Clipper with a group by set (in short, you create one set of features per grid square).


mark2atsafe wrote:

That's correct. Vector and raster features are clipped in different ways. For vector, a feature can only be "inside" a single clip boundary. If it falls inside two then it becomes assigned to one or the other, not both.

But yes, there are ways to fix it. Besides a LineOnLineOverlayer, you could try a SpatialRelator. Do the same list creation, explode the List (ListExploder), and then use the Clipper with a group by set (in short, you create one set of features per grid square).

Thanks for the reply. Yes, running it through the clipper without the bufferer transformer clips and outputs the data to each grid polygon correctly. Workable but having both datasets the same would be ideal. I'll try all suggestions. Much appreciated..


mark2atsafe wrote:

That's correct. Vector and raster features are clipped in different ways. For vector, a feature can only be "inside" a single clip boundary. If it falls inside two then it becomes assigned to one or the other, not both.

But yes, there are ways to fix it. Besides a LineOnLineOverlayer, you could try a SpatialRelator. Do the same list creation, explode the List (ListExploder), and then use the Clipper with a group by set (in short, you create one set of features per grid square).

I used the spatialRelator instead of lineOnLineOverlayer and followed the suggestions. The workspace is now clipping correctly to the full extent of the buffered area. I don't fully understand in detail what is happening but with some minor trial and error I'm happy it now works. Thanks for your help.


redgeographics wrote:

Could you also post your workspace? I think what's happening is that the clippers are processed one after the other and the clippees are passed along (if that makes sense). So the contour lines on the left side are missing because they have been clipped by a previous clipper feature and are no longer considered.

An alternative might be LineOnAreaOverlayer, creating a list, exploding that so you have duplicates where the buffers overlap and then fanout.

I used the spatialRelator instead of lineOnLineOverlayer and followed the suggestions. The workspace is now clipping correctly to the full extent of the buffered area. I don't fully understand in detail what is happening but with some minor trial and error I'm happy it now works. Thanks for your help.


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings