Bladeren bron

v.buffer: use squared buffers around points when -s flag is set

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@72353 15284696-431f-4ddb-bdfa-cd5b030d7da7
Moritz Lennert 7 jaren geleden
bovenliggende
commit
f868089505
3 gewijzigde bestanden met toevoegingen van 19 en 3 verwijderingen
  1. 12 3
      vector/v.buffer/main.c
  2. 7 0
      vector/v.buffer/v.buffer.html
  3. BIN
      vector/v.buffer/v_buffer_point_s.png

+ 12 - 3
vector/v.buffer/main.c

@@ -669,9 +669,18 @@ int main(int argc, char *argv[])
 	    
 	    Vect_line_prune(Points);
 	    if (ltype & GV_POINTS || Points->n_points == 1) {
-		Vect_point_buffer2(Points->x[0], Points->y[0], da, db, dalpha,
-				   !(straight_flag->answer), unit_tolerance,
-				   &(arr_bc_pts.oPoints));
+		if (straight_flag->answer) {
+			arr_bc_pts.oPoints = Vect_new_line_struct();
+		        Vect_append_point(arr_bc_pts.oPoints, Points->x[0] + da, Points->y[0] + da, 0);
+		        Vect_append_point(arr_bc_pts.oPoints, Points->x[0] + da, Points->y[0] - da, 0);
+		        Vect_append_point(arr_bc_pts.oPoints, Points->x[0] - da, Points->y[0] - da, 0);
+		        Vect_append_point(arr_bc_pts.oPoints, Points->x[0] - da, Points->y[0] + da, 0);
+  		        Vect_append_point(arr_bc_pts.oPoints, arr_bc_pts.oPoints->x[0], arr_bc_pts.oPoints->y[0], arr_bc_pts.oPoints->z[0]);
+		} else {
+			Vect_point_buffer2(Points->x[0], Points->y[0], da, db, dalpha,
+					   !(straight_flag->answer), unit_tolerance,
+					   &(arr_bc_pts.oPoints));
+		}
 
 		Vect_write_line(&Out, GV_BOUNDARY, arr_bc_pts.oPoints, BCats);
 		line_id = Vect_write_line(&Buf, GV_BOUNDARY, arr_bc_pts.oPoints, CCats);

+ 7 - 0
vector/v.buffer/v.buffer.html

@@ -65,6 +65,13 @@ polylines (green color on the figure below):
   <img src="v_buffer_line_c.png">
 </center>
 
+Using <b>-s</b> with a point vector map as input data, square buffers are 
+created instead of round buffers.
+
+<center>
+  <img src="v_buffer_point_s.png">
+</center>
+
 <!-- Only support by GRASS buffer 
 Flag <b>-s</b> also influences corners around polygons (see red color
 on the figure below):

BIN
vector/v.buffer/v_buffer_point_s.png