Create concave hull: Difference between revisions
Jump to navigation
Jump to search
(add v.concave.hull) |
|||
Line 13: | Line 13: | ||
* dissolve the areas into one (v.dissolve) | * dissolve the areas into one (v.dissolve) | ||
The image | Alternatively, the addon {{AddonSrc|vector|v.concave.hull|version=7}} creates a concave hull using delaunay triangulation. | ||
The image shows the results: | |||
[[Image:Concave_hull.jpg|500px]] | [[Image:Concave_hull.jpg|500px]] |
Revision as of 10:38, 22 February 2013
Q: I have a set of points and would like to compute the concave hull of it.
A: You can approximate a concave hull through the following steps:
- 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)
Alternatively, the addon v.concave.hull (src) creates a concave hull using delaunay triangulation.
The image shows the results: