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

  • 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 7 '18 at 9:35
  • If it does not have to be GRASS-oriented, there is SAGA algorithm which does exactly what you have described. – Kazuhito Dec 7 '18 at 13:41
  • You may want to take a look at v.decimate (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

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

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.