4

I want to draw all areas that are far enough away from any single point of a layer, in this case they are Openstreetmap building=yes tags and I want to calculate the areas that are completely clear of buildings.

I don't know a QGIS plugin that specifically does this and I haven't found the sequence of algorithms suitable to have this result, in the image below the red points are my starting layer and the blue areas that I drew by hand are the ones I want to obtain, that is, islands that must be found in areas that do not contain points and all must have a minimum distance from any other points enter image description here

Vince
  • 20,017
  • 15
  • 45
  • 64
stefcud
  • 396
  • 3
  • 15

3 Answers3

5

You can convert the points to a raster and use Proximity to create an output where each pixel value is the distance to closest point:

  1. Create an extent polygon to limit the analysis area. The entire polygon extent will be converted to a raster so make it as small as possible or the raster will be huge.

  2. Rasterize the points, my area is large so I use 200 m pixel size (each house will become a pixel of 200*200 size with the value 1), choose a size as large as you can accept to limit the raster size. enter image description here

  3. Proximity: enter image description here

  4. Contour polygons. Then you can select/extract by attributes the polygons with certain distance. I use a contour interval of 1000 m.

My proximity raster have values of ~0-8000 m. So the most remote location (the whitest) is 8000 m from any point.

enter image description here

BERA
  • 72,339
  • 13
  • 72
  • 161
3
  1. Create an extent polygon of your area of interest, e.g. via extract extent
  2. Buffer the points by a distance you wish
  3. Run difference and cut out the buffer from your area of interest
MrXsquared
  • 34,292
  • 21
  • 67
  • 117
3

Use this expression with Geometry Generator (see also here how to use it):

case
when $id = minimum( $id)
then 
difference(
    bounds(collect($geometry)), 
    buffer(collect($geometry), 120)  -- change buffer distance here
)
end

Blue polygon created with the expression above: enter image description here

Babel
  • 71,072
  • 14
  • 78
  • 208