Create concave hull

From GRASS-Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Q: I have a set of points and would like to compute the concave hull of it (this is not the convex hull as done by v.hull):

A: You can approximate a concave hull through the following steps:

GRASS GIS 6

  • create map of lines connecting all points (I find it easier to do this with v.net.visibility, but v.distance works also)
  • add a table with a column 'cat' and a column 'length double precision' and categories to these lines (v.db.addtable, v.category)
  • upload the length of each line to the table (v.to.db)
  • visually identify a length threshold above which the lines should not be used
  • extract only those lines below that threshold (v.extract where="length<MAXLENGTH)
  • convert the lines to boundaries (v.type)
  • break overlapping lines (v.clean tool=break, there shouldn't be any duplicate lines, but just in case you can also use rmdupl)
  • add centroids with the same category value to the boundaries (v.centroids step=0)
  • dissolve the areas into one (v.dissolve)

GRASS GIS 7

The addon v.concave.hull (v.concave.hull (src)) creates a concave hull using Delaunay triangulation.

The image shows the results: