[GRASS-user] Criteria for v.clean tool=rmdangle

Markus GRASS markus.metz.giswork at googlemail.com
Wed Jun 17 11:13:21 EDT 2009


Dwight Needels wrote:
> On Jun 16, 2009, at 3:41 AM, Markus GRASS wrote:
>
>> Dwight Needels wrote:
>>>
>>> When the rmdangle tool runs into a pair of dangles at the end of a
>>> line where each is shorter than threshold (a "Y"), it removes one but
>>> leaves the other. This makes sense, because after the first one is
>>> removed the second one is no longer a dangle (it is now the terminal
>>> line segment).
>> "Line segment" is confusing because it refers to a part of a line, e.g.
>> a part of line C or A. Line E may have only one segment, line C is
>> composed of several segments.
>
> Agreed; but I keep using the term unconsciously to distinguish that
> portion of a line that falls between a pair of nodes. The term "line"
> is ambiguous because it is also used to refer to an entire polyline.
> For example,the Vector Introduction says "Note that all lines and
> boundaries can be polylines (with nodes in between)" 
Which is confusing, and I guess comes from some previous GRASS version.
Maybe what is rather meant is that all lines and boundaries can consist
of multiple segments and any number of vertices. The shapefile-like
polyline is not as such supported in GRASS vectors, with the exception
of boundaries that make up an area, but these "polylines" are stored
internally in topology for each area.
> rather than something like:
>
> "line: a directed sequence of connected vertices with exactly two
> endpoints called nodes", and
> "polyline: a non-branching series of connected lines or boundaries
> with a shared node at each connection"
Polyline is not a GRASS vector object available to users, these are only
point,line,boundary,centroid,area,kernel,face.
>
> For this discussion I will try to restrict myself to the above
> definitions, so that the term "line" will never refer to a polyline.
> This seems to be consistent with your usage. Would it be useful to
> make this distinction explicit on the Vector Introduction page?
Definitively!
>
> Line E is not removed, because the sum of the line lengths from
> terminus to the closest branch point/terminus is greater than the
> threshold (despite the length of Line E being below the threshold).
Maybe start with a lower threshold first, e.g. 5 ft to remove D and E
first, then increase the threshold for any other, longer dangles you
would like to remove

>
>
> It may be worth having a note called "What is a dangle?", but
> regardless it would be good to have a statement that says something
> like...
>
> "The rmdangle tool processes dangles sequentially by internal Id,
> which may result in short lines with high Id values remaining after
> lines with lower Id values have been deleted from the nearest branch
> point."
>
> Does any of this look incorrect? Can the processing by internal Id be
> confirmed?
According to the source code, the rmdangle tool processes nodes by
internal id, not lines. As soon as it finds a node with only one line
connected, it looks at the length and the other end node. If only one
other line is connected at that other end node, the length of that one
is added. That continues until a node is found with more than two lines
of the desired type connecting to it. If the accumulated length is
smaller than threshold or threshold is < 0, all lines from the start
node up to that node are removed.

I have updated the manual in grass-6.4.svn, please have a look at it [1]
and give feedback if it is now better explained what the different tools
do. You can safe a local copy of the html file for nicer display. I did
not modify the tooltip description in the GUI, that's long enough already.

[1]
https://trac.osgeo.org/grass/browser/grass/branches/releasebranch_6_4/vector/v.clean/description.html

Markus M



More information about the grass-user mailing list