[GIS] point thinning/point selection based on distance threshold in QGIS/GRASS

grassqgissaga

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

Best Answer

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