I am doing a buffer analysis around some roads. The buffer is 1000 meters and is dissolved. This gives me a buffer which covers the roads as well as the distance outwards. It looks like this:

enter image description here

Instead of having a full buffer also covering the area in between the roads I would like to have a 1000 buffer outside the roads.

I was thinking I could do a buffer along the outer line of the buffer of 1000 meter and then do an AreaonAreaOverlayer where I select the polygons which overlap. Could work - but if there is an other way using FME I would be thrilled.


First thought is to use the AreaBuilder on the roads network (assuming it's a properly closed network) and then use the result of that (a set of area features) as the clip boundary in a Clipper transformer.

  • The road network is on Spitsbergen. The roads follow valleys and is as such not closed - ie they might follow a valley around a mountain like a big U. I have provided an answer and if one removes the land input it could work as a custom transformer. – ragnvald Oct 18 '15 at 9:24

There is a way to do this relatively simple by using AreaOnAreaOverlayer in combination with GeometryCoercer. Three layers are made/used:

  1. A buffer around the buffer outline. The outline is created using the Geometry coercer.
  2. The original buffer is kept
  3. Land area

All layers are tagged.

The AreaOnAreaOverlayer was used to combine the layers. Thereafter the results are subject to filtering. Only objects being the result of all three layers overlapping are part of the resulting buffer. The result is dissolved and then we have our inner buffer.

The solution works ok, although there were some minor discrepancies The method did not handle minor donuts very well. Also to avoid "outward" buffers towards the sea some steps would have to be done.

This is the project in FME:

enter image description here

This is what the buffer looks like:

enter image description here

The issue with self-intersecting has also found a solution involving DonutHoleExtractor. An extra clipper makes sure that the buffering only is done on on-shore lines.

enter image description here

The result from the calculation looks this way:

enter image description here


So, if I understand correctly, you want to have a buffer that does not include the area inside the roads. As your road network is fairly irregular, this will need some artistic license, I believe.

I suggest you have a look at the HullAccumulator: set your Hull Type to Concave. This will create a polygon of area representing the roads. You can subtract that polygon from your buffer using the DonutBuilder transformer. Or, you could try using the AreaOnAreaOverlayer and filtering on number of overlaps.

There are probably other ways to accomplish this, but this seems the most straight forward.

  • Do not think this will work as the roads cover a rather big area and are not only clustered as in this image. – ragnvald Oct 16 '15 at 18:45
  • Neither are there any attributes for the HullAccumulator to group by. – ragnvald Oct 18 '15 at 9:21

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.