6

I have to have a layer (shapefile) with a polygon that has a 100-m buffer zone around each polygon of my original file. With the QGIS Buffer (fixed distance) tool, I get polygons that include the original polygon. But I only want the outside for each polygon.
If the buffer for polygon A intersects the buffer for polygon B, I don't want to lose that part of the "outside" buffer (so I can't use the différenciation symétrique tool (sorry, I'm on a French version of software and I don't know it's equivalent in English). Alternative would be a smart intersection that is polygon-to-polygon based on an ID to get rid of the inner part.

My original datafile is the green and the buffers are underneath in blue.

enter image description here

Just the buffer layer that I tried in blue.

enter image description here

3
  • If you wish to also ask about R then please do that in a separate question.
    – PolyGeo
    Commented Jan 30, 2018 at 22:50
  • If it is not possible in QGIS but a user has a suggestion in another program (i.e. R), I would appreciate that. I don't see why I have to pose a separate question. I have seen users answer that something is not possible in the program that the original poster asked but suggested other programs. I find that useful in Q&As.
    – kl-higgins
    Commented Jan 31, 2018 at 0:31
  • If you are interested in answers for R, then please ask the same question asking just about R, so that you can include precisely what you have tried and where you are stuck using R. It is always fine for answerers to offer alternatives (although they sometimes get downvoted) but you should always ask questions focused on one particular software. We are very upfront about the need to ask one question per question and mention it at the beginning of our Tour.
    – PolyGeo
    Commented Jan 31, 2018 at 0:54

3 Answers 3

10

Let me suggest an approach by a Virtual Layer.

SELECT st_difference(st_buffer(Your_layer.geometry, 100), Your_layer.geometry)
FROM Your_layer

enter image description here

Please save this Virtual Layer as another vector file, such as ESRI Shapefile, before you proceed to next steps.

2
  • sorry, your suggestion may well work but I am not advanced enough to understand the code or Virtual Layer
    – kl-higgins
    Commented Jan 31, 2018 at 14:50
  • @user3386170 Please, do not worry too much. The answer works for you is the best solution. Needless to say, Joshua's answer has covered various angles to work with this subject. My suggestion was just one of options.
    – Kazuhito
    Commented Jan 31, 2018 at 15:02
8

If you acquire the Multi Ring Buffer plugin, it will enable you to create "doughnut" buffers which exclude the original area being buffered.

If, for some reason, you'd like to do it yourself:

Use the 'Split vector layer' tool, found under 'QGIS geoalgorithms>Vector general tools' in the toolbox, or under 'Vector>Data Management Tools' in the main toolbar.

Once you've got individual layers for each polygon ID, create your 100m buffer and then run the 'Symmetrical Difference' tool. The result will by the buffer of polygon A, minus the original area, and unaffected by any other polygon/buffer.

I would strongly advise using Graphical Modeler to create a single tool to handle the buffer/difference process. Doing so would enable you to batch process your polygon layers once they are split, saving you lots of clicks and potential human error.

1

Geometry By Expression:

single_sided_buffer(geometry:=boundary( force_rhr( $geometry)), distance:=30)

Force right hand rule

Forces a geometry to respect the Right-Hand-Rule, in which the area that is bounded by a polygon is to the right of the boundary. In particular, the exterior ring is oriented in a clockwise direction and the interior rings in a counter-clockwise direction

Which ensures that a positive distance in single sided buffer is always outwards:

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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