Hi all,

recently I found problem when breaking lines using `v.clean`.

I have a patched map that contains boundaries and centroids.

$ v.info x3 -t
nodes=8219
points=0
lines=0
boundaries=11807
centroids=4876
areas=4875
islands=1222
primitives=16683
map3d=0

When I try to break lines on intersections `v.clean` fails because it
tries to read nodes from centroids (which obviously fails).

$ v.clean in=x3 out=x4 tool=break --o
...
Tool: Break lines at intersections
0..ERROR: Nodes not available for line 11725

Defining `type` explicitly helps

$ v.clean in=x3 out=x4 tool=break --o type=boundary

In the attachment you can find a patch which seems to fix this issue.
I am just not sure about possible side-efects.

Martin

-- 
Martin Landa <landa.martin gmail.com> * http://geo.fsv.cvut.cz/~landa
Index: lib/vector/Vlib/break_lines.c
===================================================================
--- lib/vector/Vlib/break_lines.c       (revision 58335)
+++ lib/vector/Vlib/break_lines.c       (working copy)
@@ -245,7 +245,7 @@
        }
 
        atype = Vect_read_line(Map, APoints, ACats, aline);
-       if (!(atype & type))
+       if (atype & GV_POINTS || !(atype & type))
            continue;
 
        Vect_line_prune(APoints);
@@ -281,7 +281,7 @@
                    touch2_s, touch2_e, touch2_w);
        }
 
-       Vect_select_lines_by_box(Map, &ABox, type, List);
+       Vect_select_lines_by_box(Map, &ABox, type &= ~GV_POINTS, List);
        G_debug(3, "  %d lines selected by box", List->n_values);
 
        for (j = -1; j < List->n_values; j++) {
_______________________________________________
grass-dev mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/grass-dev

Reply via email to