Explorar el Código

sync Vect_point_in_area() to the other Vect_point_in_*() functions: update v.select

git-svn-id: https://svn.osgeo.org/grass/grass/trunk@47018 15284696-431f-4ddb-bdfa-cd5b030d7da7
Markus Metz hace 14 años
padre
commit
7c564869bc
Se han modificado 3 ficheros con 9 adiciones y 9 borrados
  1. 6 6
      vector/v.select/main.c
  2. 2 2
      vector/v.select/overlap.c
  3. 1 1
      vector/v.select/proto.h

+ 6 - 6
vector/v.select/main.c

@@ -111,7 +111,7 @@ int main(int argc, char *argv[])
     ACats = Vect_new_cats_struct();
     BCats = Vect_new_cats_struct();
     List = Vect_new_boxlist(0);
-    TmpList = Vect_new_boxlist(0);
+    TmpList = Vect_new_boxlist(1);
     BoundList = Vect_new_list();
     LList = Vect_new_list();
 
@@ -247,7 +247,7 @@ int main(int argc, char *argv[])
 #endif
 		    }
 		    else {
-			if (line_overlap_area(&(In[0]), aline, &(In[1]), barea)) {
+			if (line_overlap_area(&(In[0]), aline, &(In[1]), barea, List->box[i])) {
 			    ALines[aline] = 1;
 			    break;
 			}
@@ -318,7 +318,7 @@ int main(int argc, char *argv[])
 #endif
 		    }
 		    else {
-			if (line_overlap_area(&(In[1]), bline, &(In[0]), aarea)) {
+			if (line_overlap_area(&(In[1]), bline, &(In[0]), aarea, abox)) {
 			    add_aarea(&(In[0]), aarea, ALines);
 			    continue;
 			}
@@ -387,15 +387,15 @@ int main(int argc, char *argv[])
 #endif
 			}
 			else {
-			    if (Vect_point_in_area(&(In[0]), aarea,
-						   BPoints->x[0], BPoints->y[0])) {
+			    if (Vect_point_in_area(BPoints->x[0], BPoints->y[0], &(In[0]),
+			                           aarea, abox)) {
 				found = 1;
 				break;
 			    }
 			    
 			    /* Check intersectin of lines from List with area B */
 			    if (line_overlap_area(&(In[0]), aline,
-						  &(In[1]), barea)) {
+						  &(In[1]), barea, List->box[j])) {
 				found = 1;
 				break;
 			    }

+ 2 - 2
vector/v.select/overlap.c

@@ -39,7 +39,7 @@ void add_aarea(struct Map_info *In, int aarea, int *ALines)
 /* Returns 1 if line1 from Map1 overlaps area2 from Map2,
  *         0 otherwise */
 int line_overlap_area(struct Map_info *LMap, int line, struct Map_info *AMap,
-		      int area)
+		      int area, struct bound_box box)
 {
     int i, nisles, isle;
     static struct line_pnts *LPoints = NULL;
@@ -57,7 +57,7 @@ int line_overlap_area(struct Map_info *LMap, int line, struct Map_info *AMap,
 
     /* Try if any of line vertices is within area */
     for (i = 0; i < LPoints->n_points; i++) {
-	if (Vect_point_in_area(AMap, area, LPoints->x[i], LPoints->y[i])) {
+	if (Vect_point_in_area(LPoints->x[i], LPoints->y[i], AMap, area, box)) {
 	    G_debug(4, "  -> line vertex inside area");
 	    return 1;
 	}

+ 1 - 1
vector/v.select/proto.h

@@ -33,6 +33,6 @@ int area_relate_geos(struct Map_info *, const GEOSGeometry *,
 
 /* overlap.c */
 void add_aarea(struct Map_info *, int, int *);
-int line_overlap_area(struct Map_info *, int, struct Map_info *, int);
+int line_overlap_area(struct Map_info *, int, struct Map_info *, int, struct bound_box);
 
 #endif /* PROTO_H */