[GRASS-SVN] r69558 - grass/branches/releasebranch_7_0/lib/vector/vedit

svn_grass at osgeo.org svn_grass at osgeo.org
Fri Sep 23 05:58:01 PDT 2016


Author: mmetz
Date: 2016-09-23 05:58:01 -0700 (Fri, 23 Sep 2016)
New Revision: 69558

Modified:
   grass/branches/releasebranch_7_0/lib/vector/vedit/merge.c
Log:
v.edit tool=merge: skip zero length lines; a single point is not a polygon (backport trunk r69556)

Modified: grass/branches/releasebranch_7_0/lib/vector/vedit/merge.c
===================================================================
--- grass/branches/releasebranch_7_0/lib/vector/vedit/merge.c	2016-09-23 12:57:41 UTC (rev 69557)
+++ grass/branches/releasebranch_7_0/lib/vector/vedit/merge.c	2016-09-23 12:58:01 UTC (rev 69558)
@@ -64,6 +64,8 @@
 	return 0;
     }
 
+    G_debug(1, "Vedit_merge_lines(): merging %d lines", List->n_values);
+
     Points1 = Vect_new_line_struct();
     Cats1 = Vect_new_cats_struct();
     Points2 = Vect_new_line_struct();
@@ -86,6 +88,14 @@
 	if (!(type1 & GV_LINES))
 	    continue;
 
+	/* remove duplicate points */
+	Vect_line_prune(Points1);
+
+	if (Points1->n_points == 1) {
+	    G_debug(3, "Vedit_merge_lines(): skipping zero length line");
+	    continue;
+	}
+
 	Vect_reset_line(Points);
 
 	for (i = 0; i < Points1->n_points; i += Points1->n_points - 1) {
@@ -110,8 +120,9 @@
 	     * merge lines only if two lines found in the region
 	     * i.e. the current line and an adjacent line
 	     */
-	    if (1 < Vect_select_lines_by_polygon(Map, Points2, 0, NULL,
-						 GV_LINES, List_in_box)) {
+	    if (0 < Vect_find_line_list(Map, Points1->x[i], Points1->y[i],
+	                                Points1->z[i], GV_LINES, 0, 0,
+					NULL, List_in_box)) {
 		do_merge = 1;
 		line2 = -1;
 		for (j = 0; do_merge && j < List->n_values; j++) {



More information about the grass-commit mailing list