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 _______________________________________________ grass-user mailing list grass-user@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/grass-user