0

I need to thin a point vector later based on the distances amongst points. So I have a threshold and wish to omit all records but one that is below a distance D representing a distance between points. Say D points are tree locations D is the canopy radius and I want to select/extract/remove all trees within the canopy of another tree.

I have tried 2 approaches unsuccessfully:

  1. Distance matrix (QGIS) and I can select points below D but can only remove all or none, but I need to have a single remaining one.

  2. Buffering the points with D and applying the Select Within Plugin to select polygons with their centroid within other polygons returns a selection of all polygon because centroids fall inside the other polygons.

How do I remove all records but the first that are closer than D?

enter image description here

Philipp R
  • 248
  • 3
  • 14
  • Your question is not clear. Do you really want to have only one single point remaining? What does D relate to, the distances between point neighbors? – bugmenot123 Dec 07 '18 at 09:35
  • If it does not have to be GRASS-oriented, there is SAGA algorithm which does exactly what you have described. – Kazuhito Dec 07 '18 at 13:41
  • You may want to take a look at v.decimate (https://grass.osgeo.org/grass76/manuals/v.decimate.html) which decimates a point cloud, perhaps useful here as well. – markusN Dec 14 '18 at 21:06

2 Answers2

1

The function Point thinning of SAGA plugin for QGIS does this based on a distance threshold as desired. A similar question explains this here

Philipp R
  • 248
  • 3
  • 14
0

In the top toolbar: Vector > Shape Tools > Geodesic Geometry Simplification > Geodesic point decimate. You can then specify the input layer, specify the minimum distance between points, and save the output layer in specified directory.

Vector > Shape Tools > Geodesic Geometry Simplification > Geodesic point decimate

Kadir Şahbaz
  • 76,800
  • 56
  • 247
  • 389
TMK
  • 51
  • 6