21 #include <grass/gis.h>
22 #include <grass/Vect.h>
39 int type,
struct ilist *list)
42 struct Plus_head *plus;
44 static struct ilist *LocList =
NULL;
46 G_debug(3,
"Vect_select_lines_by_box()");
47 G_debug(3,
" Box(N,S,E,W,T,B): %e, %e, %e, %e, %e, %e", Box->N, Box->S,
48 Box->E, Box->W, Box->T, Box->B);
51 if (!(plus->Spidx_built)) {
52 G_debug(3,
"Building spatial index.");
61 G_debug(3,
" %d lines selected (all types)", nlines);
64 for (i = 0; i < nlines; i++) {
65 line = LocList->value[i];
66 if (plus->Line[line] ==
NULL)
68 Line = plus->Line[line];
69 if (!(Line->type & type))
74 G_debug(3,
" %d lines of requested type", list->n_values);
76 return list->n_values;
97 G_debug(3,
"Vect_select_areas_by_box()");
98 G_debug(3,
"Box(N,S,E,W,T,B): %e, %e, %e, %e, %e, %e", Box->N, Box->S,
99 Box->E, Box->W, Box->T, Box->B);
101 if (!(Map->plus.Spidx_built)) {
102 G_debug(3,
"Building spatial index.");
107 G_debug(3,
" %d areas selected", list->n_values);
108 for (i = 0; i < list->n_values; i++) {
109 G_debug(3,
" area = %d pointer to area structure = %lx",
111 (
unsigned long)Map->plus.Area[list->value[i]]);
114 return list->n_values;
134 G_debug(3,
"Vect_select_isles_by_box()");
135 G_debug(3,
"Box(N,S,E,W,T,B): %e, %e, %e, %e, %e, %e", Box->N, Box->S,
136 Box->E, Box->W, Box->T, Box->B);
138 if (!(Map->plus.Spidx_built)) {
139 G_debug(3,
"Building spatial index.");
144 G_debug(3,
" %d isles selected", list->n_values);
146 return list->n_values;
162 struct Plus_head *plus;
164 G_debug(3,
"Vect_select_nodes_by_box()");
165 G_debug(3,
"Box(N,S,E,W,T,B): %e, %e, %e, %e, %e, %e", Box->N, Box->S,
166 Box->E, Box->W, Box->T, Box->B);
170 if (!(plus->Spidx_built)) {
171 G_debug(3,
"Building spatial index.");
178 G_debug(3,
" %d nodes selected", list->n_values);
180 return list->n_values;
199 int nisles,
struct line_pnts **Isles,
int type,
204 static struct line_pnts *LPoints =
NULL;
205 static struct ilist *LocList =
NULL;
208 G_debug(3,
"Vect_select_lines_by_polygon() nisles = %d", nisles);
218 box.T = PORT_DOUBLE_MAX;
219 box.B = -PORT_DOUBLE_MAX;
221 G_debug(3,
" %d lines selected by box", LocList->n_values);
224 for (i = 0; i < LocList->n_values; i++) {
225 int j, line, intersect = 0;
227 line = LocList->value[i];
232 for (j = 0; j < LPoints->n_points; j++) {
236 for (k = 0; k < nisles; k++) {
262 for (j = 0; j < nisles; j++) {
273 G_debug(4,
" %d lines selected by polygon", List->n_values);
275 return List->n_values;
297 int nisles,
struct line_pnts **Isles,
301 static struct ilist *BoundList =
NULL;
304 G_debug(3,
"Vect_select_areas_by_polygon() nisles = %d", nisles);
315 for (i = 0; i < BoundList->n_values; i++) {
316 int line, left, right;
318 line = BoundList->value[i];
321 G_debug(4,
"boundary = %d left = %d right = %d", line, left, right);
328 G_debug(4,
" left island -> area = %d", area);
336 else if (right < 0) {
338 G_debug(4,
" right island -> area = %d", area);
350 G_debug(3,
" %d areas selected by polygon", List->n_values);
352 return List->n_values;