GRASS GIS 8 Programmer's Manual  8.4.0dev(2024)-9aacb948ba
defs/vector.h
Go to the documentation of this file.
1 #ifndef GRASS_VECTORDEFS_H
2 #define GRASS_VECTORDEFS_H
3 
4 /*
5  * "Public" functions, for use in modules
6  */
7 /* Points (line) */
8 struct line_pnts *Vect_new_line_struct(void);
9 int Vect_append_point(struct line_pnts *, double, double, double);
10 int Vect_append_points(struct line_pnts *, const struct line_pnts *, int);
11 int Vect_line_insert_point(struct line_pnts *, int, double, double, double);
12 int Vect_line_delete_point(struct line_pnts *, int);
13 int Vect_line_get_point(const struct line_pnts *, int, double *, double *,
14  double *);
15 int Vect_get_num_line_points(const struct line_pnts *);
16 int Vect_line_prune(struct line_pnts *);
17 int Vect_line_prune_thresh(struct line_pnts *, double);
18 void Vect_line_reverse(struct line_pnts *);
19 int Vect_copy_xyz_to_pnts(struct line_pnts *, const double *, const double *,
20  const double *, int);
21 int Vect_copy_pnts_to_xyz(const struct line_pnts *, double *, double *,
22  double *, int *);
23 void Vect_reset_line(struct line_pnts *);
24 void Vect_destroy_line_struct(struct line_pnts *);
25 int Vect_point_on_line(const struct line_pnts *, double, double *, double *,
26  double *, double *, double *);
27 int Vect_line_segment(const struct line_pnts *, double, double,
28  struct line_pnts *);
29 double Vect_line_length(const struct line_pnts *);
30 double Vect_line_geodesic_length(const struct line_pnts *);
31 int Vect_line_distance(const struct line_pnts *, double, double, double, int,
32  double *, double *, double *, double *, double *,
33  double *);
34 int Vect_line_geodesic_distance(const struct line_pnts *, double, double,
35  double, int, double *, double *, double *,
36  double *, double *, double *);
37 void Vect_line_box(const struct line_pnts *, struct bound_box *);
38 void Vect_line_parallel(struct line_pnts *, double, double, int,
39  struct line_pnts *);
40 void Vect_line_parallel2(struct line_pnts *, double, double, double, int, int,
41  double, struct line_pnts *);
42 void Vect_line_buffer(const struct line_pnts *, double, double,
43  struct line_pnts *);
44 void Vect_line_buffer2(const struct line_pnts *, double, double, double, int,
45  int, double, struct line_pnts **, struct line_pnts ***,
46  int *);
47 void Vect_area_buffer2(struct Map_info *, int, double, double, double, int, int,
48  double, struct line_pnts **, struct line_pnts ***,
49  int *);
50 void Vect_point_buffer2(double, double, double, double, double, int, double,
51  struct line_pnts **);
52 
53 /* Categories */
54 struct line_cats *Vect_new_cats_struct(void);
55 int Vect_cat_set(struct line_cats *, int, int);
56 int Vect_cat_get(const struct line_cats *, int, int *);
57 int Vect_cat_del(struct line_cats *, int);
58 int Vect_field_cat_del(struct line_cats *, int, int);
59 int Vect_field_cat_get(const struct line_cats *, int, struct ilist *);
60 int Vect_cat_in_array(int, const int *, int);
61 int Vect_reset_cats(struct line_cats *);
62 void Vect_destroy_cats_struct(struct line_cats *);
63 int Vect_get_area_cats(struct Map_info *, int, struct line_cats *);
64 int Vect_get_area_cat(struct Map_info *, int, int);
65 int Vect_get_line_cat(struct Map_info *, int, int);
66 struct cat_list *Vect_cats_set_constraint(struct Map_info *, int, char *,
67  char *);
68 int Vect_cats_in_constraint(struct line_cats *, int, struct cat_list *);
69 
70 /* List of categories */
71 struct cat_list *Vect_new_cat_list(void);
72 int Vect_str_to_cat_list(const char *, struct cat_list *);
73 int Vect_array_to_cat_list(const int *, int, struct cat_list *);
74 int Vect_cat_list_to_array(const struct cat_list *, int **, int *);
75 int Vect_cat_in_cat_list(int, const struct cat_list *);
76 void Vect_destroy_cat_list(struct cat_list *);
77 
78 /* Vector array */
79 struct varray *Vect_new_varray(int);
80 int Vect_set_varray_from_cat_string(struct Map_info *, int, const char *, int,
81  int, struct varray *);
82 int Vect_set_varray_from_cat_list(struct Map_info *, int, struct cat_list *,
83  int, int, struct varray *);
84 int Vect_set_varray_from_db(struct Map_info *, int, const char *, int, int,
85  struct varray *);
86 
87 /* DB connection - field info */
88 struct dblinks *Vect_new_dblinks_struct(void);
89 void Vect_reset_dblinks(struct dblinks *);
90 int Vect_add_dblink(struct dblinks *, int, const char *, const char *,
91  const char *, const char *, const char *);
92 int Vect_check_dblink(const struct dblinks *, int, const char *);
93 int Vect_map_add_dblink(struct Map_info *, int, const char *, const char *,
94  const char *, const char *, const char *);
95 int Vect_map_del_dblink(struct Map_info *, int);
96 void Vect_copy_map_dblinks(struct Map_info *, struct Map_info *, int);
97 int Vect_map_check_dblink(struct Map_info *, int, const char *);
98 int Vect_read_dblinks(struct Map_info *);
99 int Vect_write_dblinks(struct Map_info *);
100 struct field_info *Vect_default_field_info(struct Map_info *, int, const char *,
101  int);
102 struct field_info *Vect_get_dblink(struct Map_info *, int);
103 struct field_info *Vect_get_field(struct Map_info *, int);
104 struct field_info *Vect_get_field_by_name(struct Map_info *, const char *);
105 struct field_info *Vect_get_field2(struct Map_info *, const char *);
106 int Vect_get_field_number(struct Map_info *, const char *);
107 void Vect_set_db_updated(struct Map_info *);
108 const char *Vect_get_column_names(struct Map_info *, int);
109 const char *Vect_get_column_types(struct Map_info *, int);
110 const char *Vect_get_column_names_types(struct Map_info *, int);
111 
112 /* List of FID (feature ID) (integers) */
113 struct ilist *Vect_new_list(void);
114 int Vect_list_append(struct ilist *, int);
115 int Vect_list_append_list(struct ilist *, const struct ilist *);
116 int Vect_list_delete(struct ilist *, int);
117 int Vect_list_delete_list(struct ilist *, const struct ilist *);
118 int Vect_val_in_list(const struct ilist *, int);
119 int Vect_reset_list(struct ilist *);
120 void Vect_destroy_list(struct ilist *);
121 
122 /* List of bounding boxes with ids */
123 struct boxlist *Vect_new_boxlist(int);
124 int Vect_boxlist_append(struct boxlist *, int, const struct bound_box *);
125 int Vect_boxlist_append_boxlist(struct boxlist *, const struct boxlist *);
126 int Vect_boxlist_delete(struct boxlist *, int);
127 int Vect_boxlist_delete_boxlist(struct boxlist *, const struct boxlist *);
128 int Vect_val_in_boxlist(const struct boxlist *, int);
129 int Vect_reset_boxlist(struct boxlist *);
130 void Vect_destroy_boxlist(struct boxlist *);
131 
132 /* Bounding box (MBR) */
133 int Vect_point_in_box(double, double, double, const struct bound_box *);
134 int Vect_point_in_box_2d(double, double, const struct bound_box *);
135 int Vect_box_overlap(const struct bound_box *, const struct bound_box *);
136 int Vect_box_copy(struct bound_box *, const struct bound_box *);
137 int Vect_box_extend(struct bound_box *, const struct bound_box *);
138 int Vect_box_clip(double *, double *, double *, double *,
139  const struct bound_box *);
140 int Vect_region_box(const struct Cell_head *, struct bound_box *);
141 
142 /* Category index */
143 int Vect_cidx_get_num_fields(struct Map_info *);
144 int Vect_cidx_get_field_number(struct Map_info *, int);
145 int Vect_cidx_get_field_index(struct Map_info *, int);
147 int Vect_cidx_get_num_cats_by_index(struct Map_info *, int);
148 int Vect_cidx_get_num_types_by_index(struct Map_info *, int);
149 int Vect_cidx_get_type_count_by_index(struct Map_info *, int, int, int *,
150  int *);
151 int Vect_cidx_get_type_count(struct Map_info *, int, int);
152 int Vect_cidx_get_cat_by_index(struct Map_info *, int, int, int *, int *,
153  int *);
154 int Vect_cidx_get_unique_cats_by_index(struct Map_info *, int, struct ilist *);
155 int Vect_cidx_find_next(struct Map_info *, int, int, int, int, int *, int *);
156 void Vect_cidx_find_all(struct Map_info *, int, int, int, struct ilist *);
157 int Vect_cidx_dump(struct Map_info *, FILE *);
158 int Vect_cidx_save(struct Map_info *);
159 int Vect_cidx_open(struct Map_info *, int);
160 
161 /* Create/destroy Map_info */
162 struct Map_info *Vect_new_map_struct(void);
163 void Vect_destroy_map_struct(struct Map_info *);
164 
165 /* Set/get map header info */
166 int Vect_read_header(struct Map_info *);
167 int Vect_write_header(struct Map_info *);
168 const char *Vect_get_name(struct Map_info *);
169 const char *Vect_get_mapset(struct Map_info *);
170 const char *Vect_get_full_name(struct Map_info *);
171 const char *Vect_get_finfo_dsn_name(struct Map_info *);
172 char *Vect_get_finfo_layer_name(struct Map_info *);
173 const char *Vect_get_finfo_format_info(struct Map_info *);
174 const char *Vect_get_finfo_geometry_type(struct Map_info *);
175 const struct Format_info *Vect_get_finfo(struct Map_info *);
176 int Vect_get_finfo_topology_info(struct Map_info *, char **, char **, int *);
177 int Vect_is_3d(struct Map_info *);
178 int Vect_set_organization(struct Map_info *, const char *);
179 const char *Vect_get_organization(struct Map_info *);
180 int Vect_set_date(struct Map_info *, const char *);
181 const char *Vect_get_date(struct Map_info *);
182 int Vect_set_person(struct Map_info *, const char *);
183 const char *Vect_get_person(struct Map_info *);
184 int Vect_set_map_name(struct Map_info *, const char *);
185 const char *Vect_get_map_name(struct Map_info *);
186 int Vect_set_map_date(struct Map_info *, const char *);
187 const char *Vect_get_map_date(struct Map_info *);
188 int Vect_set_comment(struct Map_info *, const char *);
189 const char *Vect_get_comment(struct Map_info *);
190 int Vect_set_scale(struct Map_info *, int);
191 int Vect_get_scale(struct Map_info *);
192 int Vect_set_zone(struct Map_info *, int);
193 int Vect_get_zone(struct Map_info *);
194 int Vect_get_proj(struct Map_info *);
195 int Vect_set_proj(struct Map_info *, int);
196 const char *Vect_get_proj_name(struct Map_info *);
197 int Vect_set_thresh(struct Map_info *, double);
198 double Vect_get_thresh(struct Map_info *);
199 int Vect_get_constraint_box(struct Map_info *, struct bound_box *);
200 
201 /* Get map information */
202 int Vect_level(struct Map_info *);
203 
204 /* Get map level 1 information */
205 int Vect_get_map_box1(struct Map_info *, struct bound_box *);
206 
207 /* Get map level 2 information */
208 int Vect_get_line_type(struct Map_info *, int);
218 int Vect_get_line_box(struct Map_info *, int, struct bound_box *);
219 int Vect_get_area_box(struct Map_info *, int, struct bound_box *);
220 int Vect_get_isle_box(struct Map_info *, int, struct bound_box *);
221 int Vect_get_map_box(struct Map_info *, struct bound_box *);
222 int V__map_overlap(struct Map_info *, double, double, double, double);
223 void Vect_set_release_support(struct Map_info *);
225 
226 /* Open/close/rewind/set_constraints for map */
227 int Vect_check_input_output_name(const char *, const char *, int);
228 int Vect_legal_filename(const char *);
229 int Vect_set_open_level(int);
230 int Vect_open_old(struct Map_info *, const char *, const char *);
231 int Vect_open_tmp_old(struct Map_info *, const char *, const char *);
232 int Vect_open_old2(struct Map_info *, const char *, const char *, const char *);
233 int Vect_open_old_head(struct Map_info *, const char *, const char *);
234 int Vect_open_old_head2(struct Map_info *, const char *, const char *,
235  const char *);
236 int Vect_open_new(struct Map_info *, const char *, int);
237 int Vect_open_tmp_new(struct Map_info *, const char *, int);
238 int Vect_open_update(struct Map_info *, const char *, const char *);
239 int Vect_open_tmp_update(struct Map_info *, const char *, const char *);
240 int Vect_open_update2(struct Map_info *, const char *, const char *,
241  const char *);
242 int Vect_open_update_head(struct Map_info *, const char *, const char *);
243 int Vect_copy_head_data(struct Map_info *, struct Map_info *);
244 int Vect_build(struct Map_info *);
245 int Vect_topo_check(struct Map_info *, struct Map_info *);
246 int Vect_get_built(struct Map_info *);
247 int Vect_build_partial(struct Map_info *, int);
248 int Vect_set_constraint_region(struct Map_info *, double, double, double,
249  double, double, double);
250 int Vect_set_constraint_type(struct Map_info *, int);
251 int Vect_set_constraint_field(struct Map_info *, int);
252 void Vect_remove_constraints(struct Map_info *);
253 int Vect_rewind(struct Map_info *);
254 int Vect_close(struct Map_info *);
255 void Vect_set_error_handler_io(struct Map_info *, struct Map_info *);
256 
257 /* Read/write lines, nodes, areas */
258 /* Level 1 and 2 */
259 int Vect_get_next_line_id(struct Map_info *);
260 int Vect_read_next_line(struct Map_info *, struct line_pnts *,
261  struct line_cats *);
262 off_t Vect_write_line(struct Map_info *, int, const struct line_pnts *,
263  const struct line_cats *);
264 off_t Vect_rewrite_line(struct Map_info *, off_t, int, const struct line_pnts *,
265  const struct line_cats *);
266 int Vect_delete_line(struct Map_info *, off_t);
267 int Vect_restore_line(struct Map_info *, off_t, off_t);
268 
269 int Vect_get_num_dblinks(struct Map_info *);
270 
271 /* Level 2 only */
272 int Vect_read_line(struct Map_info *, struct line_pnts *, struct line_cats *,
273  int);
274 
275 int Vect_line_alive(struct Map_info *, int);
276 int Vect_node_alive(struct Map_info *, int);
277 int Vect_area_alive(struct Map_info *, int);
278 int Vect_isle_alive(struct Map_info *, int);
279 int Vect_get_line_nodes(struct Map_info *, int, int *, int *);
280 int Vect_get_line_areas(struct Map_info *, int, int *, int *);
281 off_t Vect_get_line_offset(struct Map_info *, int);
282 
283 int Vect_get_node_coor(struct Map_info *, int, double *, double *, double *);
284 int Vect_get_node_n_lines(struct Map_info *, int);
285 int Vect_get_node_line(struct Map_info *, int, int);
286 float Vect_get_node_line_angle(struct Map_info *, int, int);
287 
288 int Vect_get_area_points(struct Map_info *, int, struct line_pnts *);
289 int Vect_get_area_centroid(struct Map_info *, int);
290 int Vect_get_area_num_isles(struct Map_info *, int);
291 int Vect_get_area_isle(struct Map_info *, int, int);
292 double Vect_get_area_perimeter(struct Map_info *, int);
293 double Vect_get_area_area(struct Map_info *, int);
294 int Vect_get_area_boundaries(struct Map_info *, int, struct ilist *);
295 
296 int Vect_get_isle_points(struct Map_info *, int, struct line_pnts *);
297 int Vect_get_isle_area(struct Map_info *, int);
298 int Vect_get_isle_boundaries(struct Map_info *, int, struct ilist *);
299 
300 int Vect_get_centroid_area(struct Map_info *, int);
301 
302 /* Level 2 update only */
304 int Vect_get_updated_line(struct Map_info *, int);
305 off_t Vect_get_updated_line_offset(struct Map_info *, int);
307 int Vect_get_updated_node(struct Map_info *, int);
308 void Vect_set_updated(struct Map_info *, int);
309 void Vect_reset_updated(struct Map_info *);
310 
311 /* History */
312 int Vect_hist_command(struct Map_info *);
313 int Vect_hist_write(struct Map_info *, const char *);
314 int Vect_hist_copy(struct Map_info *, struct Map_info *);
315 void Vect_hist_rewind(struct Map_info *);
316 char *Vect_hist_read(char *, int, struct Map_info *);
317 
318 /* Selecting features */
319 int Vect_select_lines_by_box(struct Map_info *, const struct bound_box *, int,
320  struct boxlist *);
321 int Vect_select_areas_by_box(struct Map_info *, const struct bound_box *,
322  struct boxlist *);
323 int Vect_select_isles_by_box(struct Map_info *, const struct bound_box *,
324  struct boxlist *);
325 int Vect_select_nodes_by_box(struct Map_info *, const struct bound_box *,
326  struct ilist *);
327 int Vect_find_node(struct Map_info *, double, double, double, double, int);
328 int Vect_find_line(struct Map_info *, double, double, double, int, double, int,
329  int);
330 int Vect_find_line_list(struct Map_info *, double, double, double, int, double,
331  int, const struct ilist *, struct ilist *);
332 int Vect_find_area(struct Map_info *, double, double);
333 int Vect_find_island(struct Map_info *, double, double);
334 int Vect_select_lines_by_polygon(struct Map_info *, struct line_pnts *, int,
335  struct line_pnts **, int, struct ilist *);
336 int Vect_select_areas_by_polygon(struct Map_info *, struct line_pnts *, int,
337  struct line_pnts **, struct ilist *);
338 
339 /* Analysis */
340 int Vect_tin_get_z(struct Map_info *, double, double, double *, double *,
341  double *);
342 
343 /* int Vect_point_in_islands (struct Map_info *, int, double, double); */
344 int Vect_find_poly_centroid(const struct line_pnts *, double *, double *);
345 int Vect__intersect_line_with_poly(const struct line_pnts *, double,
346  struct line_pnts *);
347 int Vect_get_point_in_area(struct Map_info *, int, double *, double *);
348 int Vect_get_point_in_poly(const struct line_pnts *, double *, double *);
349 int Vect_get_point_in_poly_isl(const struct line_pnts *,
350  const struct line_pnts **, int, double *,
351  double *);
352 int Vect_point_in_area(double, double, struct Map_info *, int,
353  struct bound_box *);
354 int Vect_point_in_area_outer_ring(double, double, struct Map_info *, int,
355  struct bound_box *);
356 int Vect_point_in_island(double, double, struct Map_info *, int,
357  struct bound_box *);
358 int Vect_point_in_poly(double, double, const struct line_pnts *);
359 
360 /* Cleaning */
361 void Vect_break_lines(struct Map_info *, int, struct Map_info *);
362 int Vect_break_lines_list(struct Map_info *, struct ilist *, struct ilist *,
363  int, struct Map_info *);
364 int Vect_check_line_breaks(struct Map_info *, int, struct Map_info *);
365 int Vect_check_line_breaks_list(struct Map_info *, struct ilist *,
366  struct ilist *, int, struct Map_info *);
367 int Vect_merge_lines(struct Map_info *, int, int *, struct Map_info *);
368 void Vect_break_polygons(struct Map_info *, int, struct Map_info *);
369 void Vect_remove_duplicates(struct Map_info *, int, struct Map_info *);
370 int Vect_line_check_duplicate(const struct line_pnts *,
371  const struct line_pnts *, int);
372 void Vect_snap_lines(struct Map_info *, int, double, struct Map_info *);
373 void Vect_snap_lines_list(struct Map_info *, const struct ilist *, double,
374  struct Map_info *);
375 int Vect_snap_line(struct Map_info *, struct ilist *, struct line_pnts *,
376  double, int, int *, int *);
377 void Vect_remove_dangles(struct Map_info *, int, double, struct Map_info *);
378 void Vect_chtype_dangles(struct Map_info *, double, struct Map_info *);
379 void Vect_select_dangles(struct Map_info *, int, double, struct ilist *);
380 void Vect_remove_bridges(struct Map_info *, struct Map_info *, int *, int *);
381 void Vect_chtype_bridges(struct Map_info *, struct Map_info *, int *, int *);
382 int Vect_remove_small_areas(struct Map_info *, double, struct Map_info *,
383  double *);
384 int Vect_clean_small_angles_at_nodes(struct Map_info *, int, struct Map_info *);
385 
386 /* Overlay */
387 int Vect_overlay_str_to_operator(const char *);
388 int Vect_overlay(struct Map_info *, int, struct ilist *, struct ilist *,
389  struct Map_info *, int, struct ilist *, struct ilist *, int,
390  struct Map_info *);
391 int Vect_overlay_and(struct Map_info *, int, struct ilist *, struct ilist *,
392  struct Map_info *, int, struct ilist *, struct ilist *,
393  struct Map_info *);
394 
395 /* Graph */
396 void Vect_graph_init(dglGraph_s *, int);
398 void Vect_graph_add_edge(dglGraph_s *, int, int, double, int);
399 void Vect_graph_set_node_costs(dglGraph_s *, int, double);
400 int Vect_graph_shortest_path(dglGraph_s *, int, int, struct ilist *, double *);
401 
402 /* Network (graph) */
403 int Vect_net_build_graph(struct Map_info *, int, int, int, const char *,
404  const char *, const char *, int, int);
405 int Vect_net_ttb_build_graph(struct Map_info *, int, int, int, int, int,
406  const char *, const char *, const char *, int,
407  int);
408 int Vect_net_shortest_path(struct Map_info *, int, int, struct ilist *,
409  double *);
410 int Vect_net_ttb_shortest_path(struct Map_info *, int, int, int, int, int,
411  struct ilist *, double *);
413 int Vect_net_get_line_cost(struct Map_info *, int, int, double *);
414 int Vect_net_get_node_cost(struct Map_info *, int, double *);
415 int Vect_net_nearest_nodes(struct Map_info *, double, double, double, int,
416  double, int *, int *, int *, double *, double *,
417  struct line_pnts *, struct line_pnts *, double *);
418 int Vect_net_shortest_path_coor(struct Map_info *, double, double, double,
419  double, double, double, double, double,
420  double *, struct line_pnts *, struct ilist *,
421  struct ilist *, struct line_pnts *,
422  struct line_pnts *, double *, double *);
423 int Vect_net_ttb_shortest_path_coor(struct Map_info *, double, double, double,
424  double, double, double, double, double, int,
425  double *, struct line_pnts *,
426  struct ilist *, struct ilist *,
427  struct line_pnts *, struct line_pnts *,
428  double *, double *);
429 
430 /* Miscellaneous */
431 int Vect_topo_dump(struct Map_info *, FILE *);
432 double Vect_points_distance(double, double, double, double, double, double,
433  int);
434 int Vect_option_to_types(const struct Option *);
435 int Vect_copy_map_lines(struct Map_info *, struct Map_info *);
436 int Vect_copy_map_lines_field(struct Map_info *, int, struct Map_info *);
437 int Vect_copy(const char *, const char *, const char *);
438 int Vect_rename(const char *, const char *);
439 int Vect_copy_table(struct Map_info *, struct Map_info *, int, int,
440  const char *, int);
441 int Vect_copy_table_by_cat_list(struct Map_info *, struct Map_info *, int, int,
442  const char *, int, const struct cat_list *);
443 int Vect_copy_table_by_cats(struct Map_info *, struct Map_info *, int, int,
444  const char *, int, int *, int);
445 int Vect_copy_tables(struct Map_info *, struct Map_info *, int);
446 int Vect_delete(const char *);
447 int Vect_segment_intersection(double, double, double, double, double, double,
448  double, double, double, double, double, double,
449  double *, double *, double *, double *, double *,
450  double *, int);
452  struct bound_box *, struct bound_box *,
453  struct line_pnts ***, struct line_pnts ***, int *,
454  int *, int);
455 int Vect_line_intersection2(struct line_pnts *, struct line_pnts *,
456  struct bound_box *, struct bound_box *,
457  struct line_pnts ***, struct line_pnts ***, int *,
458  int *, int);
459 int Vect_line_check_intersection(struct line_pnts *, struct line_pnts *, int);
460 int Vect_line_check_intersection2(struct line_pnts *, struct line_pnts *, int);
461 int Vect_line_get_intersections(struct line_pnts *, struct line_pnts *,
462  struct line_pnts *, int);
463 int Vect_line_get_intersections2(struct line_pnts *, struct line_pnts *,
464  struct line_pnts *, int);
465 char *Vect_subst_var(const char *, struct Map_info *);
466 
467 /* Custom spatial index */
468 void Vect_spatial_index_init(struct spatial_index *, int);
470 void Vect_spatial_index_add_item(struct spatial_index *, int,
471  const struct bound_box *);
472 void Vect_spatial_index_del_item(struct spatial_index *, int,
473  const struct bound_box *);
474 int Vect_spatial_index_select(const struct spatial_index *,
475  const struct bound_box *, struct ilist *);
476 
477 /* GRASS ASCII vector format */
478 int Vect_read_ascii(FILE *, struct Map_info *);
479 int Vect_read_ascii_head(FILE *, struct Map_info *);
480 int Vect_write_ascii(FILE *, FILE *, struct Map_info *, int, int, int, char *,
481  int, int, int, const struct cat_list *, const char *,
482  const char **, int);
483 void Vect_write_ascii_head(FILE *, struct Map_info *);
484 
485 /* Simple Features */
486 SF_FeatureType Vect_sfa_get_line_type(const struct line_pnts *, int, int);
488 int Vect_sfa_check_line_type(const struct line_pnts *, int, SF_FeatureType,
489  int);
490 int Vect_sfa_line_dimension(int);
491 char *Vect_sfa_line_geometry_type(const struct line_pnts *, int);
492 int Vect_sfa_line_astext(const struct line_pnts *, int, int, int, FILE *);
493 int Vect_sfa_is_line_simple(const struct line_pnts *, int, int);
494 int Vect_sfa_is_line_closed(const struct line_pnts *, int, int);
495 int Vect_sfa_get_num_features(struct Map_info *);
496 
497 /*
498  * Internal functions, MUST NOT be used in modules
499  */
500 int Vect_print_header(struct Map_info *);
501 void Vect__init_head(struct Map_info *);
502 
503 /* Open/close/rewind map */
504 int Vect_coor_info(struct Map_info *, struct Coor_info *);
505 const char *Vect_maptype_info(struct Map_info *);
506 int Vect_maptype(struct Map_info *);
507 int Vect_open_topo(struct Map_info *, int);
508 int Vect_save_topo(struct Map_info *);
509 int Vect_open_sidx(struct Map_info *, int);
510 int Vect_save_sidx(struct Map_info *);
511 int Vect_sidx_dump(struct Map_info *, FILE *);
512 int Vect_build_sidx_from_topo(struct Map_info *);
513 int Vect_build_sidx(struct Map_info *);
514 int Vect_open_fidx(struct Map_info *, struct Format_info_offset *);
515 int Vect_save_fidx(struct Map_info *, struct Format_info_offset *);
516 int Vect_fidx_dump(struct Map_info *, FILE *);
517 int Vect_save_frmt(struct Map_info *);
518 
519 int Vect__write_head(struct Map_info *);
520 int Vect__read_head(struct Map_info *);
521 int V1_open_old_nat(struct Map_info *, int);
522 int V1_open_old_ogr(struct Map_info *, int);
523 int V1_open_old_pg(struct Map_info *, int);
524 int V2_open_old_ogr(struct Map_info *);
525 int V2_open_old_pg(struct Map_info *);
526 int V1_open_new_nat(struct Map_info *, const char *, int);
527 int V1_open_new_ogr(struct Map_info *, const char *, int);
528 int V1_open_new_pg(struct Map_info *, const char *, int);
529 int V1_rewind_nat(struct Map_info *);
530 int V1_rewind_ogr(struct Map_info *);
531 int V1_rewind_pg(struct Map_info *);
532 int V2_rewind_nat(struct Map_info *);
533 int V2_rewind_ogr(struct Map_info *);
534 int V2_rewind_pg(struct Map_info *);
535 int V1_close_nat(struct Map_info *);
536 int V1_close_ogr(struct Map_info *);
537 int V1_close_pg(struct Map_info *);
538 int V2_close_ogr(struct Map_info *);
539 int V2_close_pg(struct Map_info *);
540 
541 /* Read/write lines (internal use only) */
542 int V1_read_line_nat(struct Map_info *, struct line_pnts *, struct line_cats *,
543  off_t);
544 int V1_read_line_ogr(struct Map_info *, struct line_pnts *, struct line_cats *,
545  off_t);
546 int V1_read_line_pg(struct Map_info *, struct line_pnts *, struct line_cats *,
547  off_t);
548 int V2_read_line_nat(struct Map_info *, struct line_pnts *, struct line_cats *,
549  int);
550 int V2_read_line_sfa(struct Map_info *, struct line_pnts *, struct line_cats *,
551  int);
552 int V2_read_line_pg(struct Map_info *, struct line_pnts *, struct line_cats *,
553  int);
554 int V1_read_next_line_nat(struct Map_info *, struct line_pnts *,
555  struct line_cats *);
556 int V1_read_next_line_ogr(struct Map_info *, struct line_pnts *,
557  struct line_cats *);
558 int V1_read_next_line_pg(struct Map_info *, struct line_pnts *,
559  struct line_cats *);
560 int V2_read_next_line_nat(struct Map_info *, struct line_pnts *,
561  struct line_cats *);
562 int V2_read_next_line_ogr(struct Map_info *, struct line_pnts *,
563  struct line_cats *);
564 int V2_read_next_line_pg(struct Map_info *, struct line_pnts *,
565  struct line_cats *);
566 int V1_delete_line_nat(struct Map_info *, off_t);
567 int V1_delete_line_ogr(struct Map_info *, off_t);
568 int V1_delete_line_pg(struct Map_info *, off_t);
569 int V2_delete_line_nat(struct Map_info *, off_t);
570 int V2_delete_line_sfa(struct Map_info *, off_t);
571 int V2_delete_line_pg(struct Map_info *, off_t);
572 int V1_restore_line_nat(struct Map_info *, off_t, off_t);
573 int V2_restore_line_nat(struct Map_info *, off_t, off_t);
574 off_t V1_write_line_nat(struct Map_info *, int, const struct line_pnts *,
575  const struct line_cats *);
576 off_t V1_write_line_ogr(struct Map_info *, int, const struct line_pnts *,
577  const struct line_cats *);
578 off_t V1_write_line_pg(struct Map_info *, int, const struct line_pnts *,
579  const struct line_cats *);
580 off_t V2_write_line_nat(struct Map_info *, int, const struct line_pnts *,
581  const struct line_cats *);
582 off_t V2_write_line_sfa(struct Map_info *, int, const struct line_pnts *,
583  const struct line_cats *);
584 off_t V2_write_line_pg(struct Map_info *, int, const struct line_pnts *,
585  const struct line_cats *);
586 off_t V1_rewrite_line_nat(struct Map_info *, off_t, int,
587  const struct line_pnts *, const struct line_cats *);
588 off_t V1_rewrite_line_ogr(struct Map_info *, off_t, int,
589  const struct line_pnts *, const struct line_cats *);
590 off_t V1_rewrite_line_pg(struct Map_info *, off_t, int,
591  const struct line_pnts *, const struct line_cats *);
592 off_t V2_rewrite_line_nat(struct Map_info *, off_t, int,
593  const struct line_pnts *, const struct line_cats *);
594 off_t V2_rewrite_line_sfa(struct Map_info *, off_t, int,
595  const struct line_pnts *, const struct line_cats *);
596 off_t V2_rewrite_line_pg(struct Map_info *, off_t, int,
597  const struct line_pnts *, const struct line_cats *);
598 
599 /* Build topology */
600 int Vect_build_nat(struct Map_info *, int);
601 void Vect__build_downgrade(struct Map_info *, int);
602 int Vect__build_sfa(struct Map_info *, int);
603 int Vect_build_ogr(struct Map_info *, int);
604 int Vect_build_pg(struct Map_info *, int);
605 int Vect_build_line_area(struct Map_info *, int, int);
606 int Vect_isle_find_area(struct Map_info *, int, const struct bound_box *);
607 int Vect_attach_isle(struct Map_info *, int, const struct bound_box *);
608 int Vect_attach_isles(struct Map_info *, const struct bound_box *);
609 int Vect_attach_centroids(struct Map_info *, const struct bound_box *);
610 
611 /* GEOS support */
612 #ifdef HAVE_GEOS
613 GEOSGeometry *Vect_read_line_geos(struct Map_info *, int, int *);
614 GEOSGeometry *Vect_line_to_geos(const struct line_pnts *, int, int);
618 char *Vect_line_to_wkt(const struct line_pnts *, int, int);
619 unsigned char *Vect_line_to_wkb(const struct line_pnts *, int, int, size_t *);
620 char *Vect_read_area_to_wkt(struct Map_info *, int);
621 unsigned char *Vect_read_area_to_wkb(struct Map_info *, int, size_t *);
622 unsigned char *Vect_read_line_to_wkb(struct Map_info *, struct line_pnts *,
623  struct line_cats *, int, size_t *, int *);
624 #endif
625 
626 /* Raster color tables */
627 int Vect_read_colors(const char *, const char *, struct Colors *);
628 int Vect_remove_colors(const char *, const char *);
629 void Vect_write_colors(const char *, const char *, struct Colors *);
630 
631 /* Simplified RTree search using an ilist to store rectangle ids */
632 int RTreeSearch2(struct RTree *, struct RTree_Rect *, struct ilist *);
633 
634 #endif /* GRASS_VECTORDEFS_H */
int V1_open_old_ogr(struct Map_info *, int)
Open existing OGR layer on non-topological level.
Definition: open_ogr.c:43
int V2_rewind_ogr(struct Map_info *)
Rewind vector map (OGR layer) to cause reads to start at beginning on topological level (level 2)
Definition: rewind_ogr.c:61
void Vect_remove_dangles(struct Map_info *, int, double, struct Map_info *)
Remove dangles from vector map.
Definition: dangles.c:49
void Vect_destroy_line_struct(struct line_pnts *)
Frees all memory associated with a line_pnts structure, including the structure itself.
Definition: line.c:77
int Vect_select_lines_by_polygon(struct Map_info *, struct line_pnts *, int, struct line_pnts **, int, struct ilist *)
Select lines by Polygon with optional isles.
Definition: sindex.c:220
dglGraph_s * Vect_net_get_graph(struct Map_info *)
Get graph structure.
Definition: net_analyze.c:397
void Vect_reset_dblinks(struct dblinks *)
Reset dblinks structure (number of fields)
Definition: field.c:101
int Vect_copy_table(struct Map_info *, struct Map_info *, int, int, const char *, int)
Copy attribute table linked to vector map based on type.
plus_t Vect_get_num_holes(struct Map_info *)
Fetch number of holes in vector map.
Definition: level_two.c:147
int Vect_sfa_get_num_features(struct Map_info *)
Get number of simple features.
off_t V1_rewrite_line_ogr(struct Map_info *, off_t, int, const struct line_pnts *, const struct line_cats *)
Rewrites feature at the given offset on level 1 (OGR interface)
Definition: write_ogr.c:89
off_t Vect_rewrite_line(struct Map_info *, off_t, int, const struct line_pnts *, const struct line_cats *)
Rewrites existing feature (topological level required)
int Vect_reset_boxlist(struct boxlist *)
Reset boxlist structure.
int Vect_get_line_nodes(struct Map_info *, int, int *, int *)
Get line nodes.
Definition: level_two.c:303
int Vect_cidx_open(struct Map_info *, int)
Read category index from cidx file if exists.
Definition: Vlib/cindex.c:522
int Vect_check_input_output_name(const char *, const char *, int)
Check for input and output vector map name.
Definition: legal_vname.c:93
int Vect_set_map_name(struct Map_info *, const char *)
Set map name in map header.
off_t V2_write_line_sfa(struct Map_info *, int, const struct line_pnts *, const struct line_cats *)
Writes feature on level 2 (OGR/PostGIS interface, pseudo-topological level)
Definition: write_sfa.c:52
int Vect_add_dblink(struct dblinks *, int, const char *, const char *, const char *, const char *, const char *)
Add new DB connection to dblinks structure.
Definition: field.c:285
plus_t Vect_get_num_islands(struct Map_info *)
Get number of islands in vector map.
Definition: level_two.c:135
int Vect_get_node_coor(struct Map_info *, int, double *, double *, double *)
Get node coordinates.
Definition: level_two.c:274
int Vect_open_fidx(struct Map_info *, struct Format_info_offset *)
Open feature index file.
Definition: open_ogr.c:254
int Vect_sidx_dump(struct Map_info *, FILE *)
Dump spatial index to file.
Definition: build.c:1315
int Vect_cidx_save(struct Map_info *)
Save category index to binary file (cidx)
Definition: Vlib/cindex.c:478
int Vect_list_delete(struct ilist *, int)
Remove a given value (item) from list.
plus_t Vect_get_num_lines(struct Map_info *)
Fetch number of features (points, lines, boundaries, centroids) in vector map.
Definition: level_two.c:75
int V2_read_line_nat(struct Map_info *, struct line_pnts *, struct line_cats *, int)
Read vector feature on topological level (level 2) - native format - internal use only.
Definition: read_nat.c:136
int Vect_select_isles_by_box(struct Map_info *, const struct bound_box *, struct boxlist *)
Select isles with bounding boxes by box.
Definition: sindex.c:165
int Vect_net_get_line_cost(struct Map_info *, int, int, double *)
Returns in cost for given direction in *cost.
Definition: net_analyze.c:414
int Vect_copy_table_by_cat_list(struct Map_info *, struct Map_info *, int, int, const char *, int, const struct cat_list *)
Copy attribute table linked to vector map based on category list.
int Vect_set_proj(struct Map_info *, int)
Set projection in map header.
int Vect_topo_check(struct Map_info *, struct Map_info *)
Extensive tests for correct topology.
Definition: build.c:604
const struct Format_info * Vect_get_finfo(struct Map_info *)
Get header info for non-native formats.
Definition: header_finfo.c:224
double Vect_line_length(const struct line_pnts *)
Calculate line length, 3D-length in case of 3D vector line.
Definition: line.c:575
int Vect_attach_centroids(struct Map_info *, const struct bound_box *)
(Re)Attach centroids in given bounding box to areas
Definition: build.c:505
int Vect_get_point_in_poly_isl(const struct line_pnts *, const struct line_pnts **, int, double *, double *)
Get point inside polygon but outside the islands specifiled in IPoints.
Definition: Vlib/poly.c:449
const char * Vect_get_map_date(struct Map_info *)
Get date when the source map was originally produced from map header.
int Vect_check_line_breaks_list(struct Map_info *, struct ilist *, struct ilist *, int, struct Map_info *)
Check for and count intersecting lines, do not break.
Definition: break_lines.c:105
int Vect_coor_info(struct Map_info *, struct Coor_info *)
Update Coor_info structure.
int V1_open_new_pg(struct Map_info *, const char *, int)
int Vect_open_update(struct Map_info *, const char *, const char *)
Open existing vector map for reading/writing.
int Vect_cat_del(struct line_cats *, int)
Delete all categories of given layer.
plus_t Vect_get_num_areas(struct Map_info *)
Get number of areas in vector map.
Definition: level_two.c:87
int Vect_restore_line(struct Map_info *, off_t, off_t)
Restore previously deleted feature (topological level required)
int Vect_graph_shortest_path(dglGraph_s *, int, int, struct ilist *, double *)
Find shortest path.
int V1_delete_line_pg(struct Map_info *, off_t)
void Vect_write_ascii_head(FILE *, struct Map_info *)
Write data to GRASS ASCII vector format.
Definition: ascii.c:945
int Vect_read_dblinks(struct Map_info *)
Read dblinks to existing structure.
Definition: field.c:827
struct dblinks * Vect_new_dblinks_struct(void)
Create and init new dblinks structure.
Definition: field.c:52
int Vect_write_header(struct Map_info *)
Write vector map header to map head file.
int Vect_cat_in_cat_list(int, const struct cat_list *)
Check if category number is in list.
struct cat_list * Vect_new_cat_list(void)
Allocate memory for cat_list structure.
int Vect_build_sidx(struct Map_info *)
Create spatial index if necessary.
Definition: build.c:1224
int Vect_remove_small_areas(struct Map_info *, double, struct Map_info *, double *)
Remove small areas from the map map.
Definition: remove_areas.c:41
unsigned char * Vect_read_area_to_wkb(struct Map_info *, int, size_t *)
Read vector area and return it as Well Known Binary (WKB) unsigned char array.
Definition: geos_to_wktb.c:33
int Vect_open_old2(struct Map_info *, const char *, const char *, const char *)
Open existing vector map for reading.
int V2_read_next_line_nat(struct Map_info *, struct line_pnts *, struct line_cats *)
Read next vector feature on topological level (level 2) - native format - internal use only.
Definition: read_nat.c:178
int Vect_sfa_check_line_type(const struct line_pnts *, int, SF_FeatureType, int)
Check SF type.
int Vect_set_zone(struct Map_info *, int)
Set projection zone in map header.
int Vect_reset_cats(struct line_cats *)
Reset category structure to make sure cats structure is clean to be re-used.
void Vect_line_parallel2(struct line_pnts *, double, double, double, int, int, double, struct line_pnts *)
Definition: buffer2.c:1189
int Vect_area_alive(struct Map_info *, int)
Check if area is alive or dead (topological level required)
struct field_info * Vect_default_field_info(struct Map_info *, int, const char *, int)
Get default information about link to database for new dblink.
Definition: field.c:358
off_t V1_write_line_nat(struct Map_info *, int, const struct line_pnts *, const struct line_cats *)
Writes feature to 'coor' file at level 1 (internal use only)
Definition: write_nat.c:45
int Vect_str_to_cat_list(const char *, struct cat_list *)
Converts string of categories and cat ranges separated by commas to cat_list.
const char * Vect_get_organization(struct Map_info *)
Get organization string from map header.
int Vect_cidx_get_unique_cats_by_index(struct Map_info *, int, struct ilist *)
Get list of unique categories for given layer index.
Definition: Vlib/cindex.c:288
int Vect_region_box(const struct Cell_head *, struct bound_box *)
Copy region window to bounding box.
int Vect_open_new(struct Map_info *, const char *, int)
Create new vector map for reading/writing.
int V2_rewind_nat(struct Map_info *)
Rewind vector map to cause reads to start at beginning on topological level (level 2) - native format...
Definition: rewind_nat.c:40
int Vect_get_field_number(struct Map_info *, const char *)
Get field number of given field.
Definition: field.c:608
int Vect_line_geodesic_distance(const struct line_pnts *, double, double, double, int, double *, double *, double *, double *, double *, double *)
Calculate geodesic distance of point to line in meters.
Definition: line.c:751
int Vect_copy_map_lines(struct Map_info *, struct Map_info *)
Copy all alive vector features from input vector map to output vector map.
int Vect_cat_in_array(int, const int *, int)
Check if category is in ordered array of integers.
int V1_open_new_nat(struct Map_info *, const char *, int)
Create new vector map (level 1)
Definition: open_nat.c:96
void Vect_graph_init(dglGraph_s *, int)
Initialize graph structure.
int Vect_build_line_area(struct Map_info *, int, int)
Build area on given side of line (GV_LEFT or GV_RIGHT)
Definition: build.c:79
int Vect_point_in_island(double, double, struct Map_info *, int, struct bound_box *)
Determines if a point (X,Y) is inside an island.
Definition: Vlib/poly.c:923
int Vect_cats_in_constraint(struct line_cats *, int, struct cat_list *)
Check if categories match with category constraints.
int Vect_cidx_get_field_index(struct Map_info *, int)
Get layer index for given layer number.
Definition: Vlib/cindex.c:115
int Vect_map_check_dblink(struct Map_info *, int, const char *)
Check if DB connection exists in dblinks structure.
Definition: field.c:237
int Vect_map_del_dblink(struct Map_info *, int)
Delete db connection from Map_info structure.
Definition: field.c:160
int Vect_net_shortest_path(struct Map_info *, int, int, struct ilist *, double *)
Find shortest path.
Definition: net_analyze.c:380
int Vect_remove_colors(const char *, const char *)
Remove color table of raster map.
int Vect_option_to_types(const struct Option *)
Get types from options.
int Vect_find_island(struct Map_info *, double, double)
Find the nearest island.
int Vect_set_varray_from_db(struct Map_info *, int, const char *, int, int, struct varray *)
Set values in 'varray' to 'value' from DB (where statement)
Definition: array.c:242
int Vect_get_updated_node(struct Map_info *, int)
Get updated (modified) node by index.
Definition: level_two.c:241
int Vect_get_next_line_id(struct Map_info *)
Get line id for sequential reading.
plus_t Vect_get_num_volumes(struct Map_info *)
Fetch number of volumes in vector map.
Definition: level_two.c:123
void Vect_hist_rewind(struct Map_info *)
Rewind history file.
Definition: hist.c:114
int V1_rewind_nat(struct Map_info *)
Rewind vector map to cause reads to start at beginning on non-topological level (level 1) - native fo...
Definition: rewind_nat.c:27
const char * Vect_get_comment(struct Map_info *)
Get comment or other info string from map header.
int V1_read_next_line_pg(struct Map_info *, struct line_pnts *, struct line_cats *)
int V1_open_old_nat(struct Map_info *, int)
Open existing vector map (level 1)
Definition: open_nat.c:40
void Vect_line_box(const struct line_pnts *, struct bound_box *)
Get bounding box of line.
Definition: line.c:888
int Vect_net_ttb_shortest_path(struct Map_info *, int, int, int, int, int, struct ilist *, double *)
Find shortest path on network.
Definition: net_analyze.c:260
GEOSCoordSequence * Vect_get_area_points_geos(struct Map_info *, int)
Returns the polygon array of points, i.e. outer ring (shell)
Definition: geos.c:407
char * Vect_read_area_to_wkt(struct Map_info *, int)
Read vector area and return it as Well Known Text (WKT) unsigned char array.
Definition: geos_to_wktb.c:74
int Vect_get_scale(struct Map_info *)
Get map scale from map header.
int Vect_open_tmp_old(struct Map_info *, const char *, const char *)
Open existing temporary vector map for reading.
int Vect_spatial_index_select(const struct spatial_index *, const struct bound_box *, struct ilist *)
Select items by bounding box to list.
int V2_open_old_pg(struct Map_info *)
int Vect_point_on_line(const struct line_pnts *, double, double *, double *, double *, double *, double *)
Find point on line in the specified distance.
Definition: line.c:413
void Vect_remove_constraints(struct Map_info *)
Remove all constraints.
Definition: constraint.c:122
void Vect_select_dangles(struct Map_info *, int, double, struct ilist *)
Select dangles from vector map.
Definition: dangles.c:98
int Vect_boxlist_delete_boxlist(struct boxlist *, const struct boxlist *)
Delete list from existing list.
const char * Vect_get_date(struct Map_info *)
Get date of digitization from map header.
double Vect_line_geodesic_length(const struct line_pnts *)
Calculate line length.
Definition: line.c:602
int V__map_overlap(struct Map_info *, double, double, double, double)
Definition: overlap.c:28
void Vect__build_downgrade(struct Map_info *, int)
Downgrade build level (for internal use only)
Definition: build.c:771
int Vect_cidx_find_next(struct Map_info *, int, int, int, int, int *, int *)
Find next line/area id for given category, start_index and type_mask.
Definition: Vlib/cindex.c:327
int Vect_net_shortest_path_coor(struct Map_info *, double, double, double, double, double, double, double, double, double *, struct line_pnts *, struct ilist *, struct ilist *, struct line_pnts *, struct line_pnts *, double *, double *)
Find shortest path on network between 2 points given by coordinates.
Definition: net_analyze.c:1016
float Vect_get_node_line_angle(struct Map_info *, int, int)
Angle of segment of the line connected to the node.
Definition: level_two.c:412
int Vect_cidx_get_num_types_by_index(struct Map_info *, int)
Get number of feature types for given layer index.
Definition: Vlib/cindex.c:180
void Vect_graph_add_edge(dglGraph_s *, int, int, double, int)
Add edge to graph.
int Vect_build_pg(struct Map_info *, int)
int Vect_cat_set(struct line_cats *, int, int)
Add new field/cat to category structure if doesn't exist yet.
int Vect_get_line_type(struct Map_info *, int)
Get line type.
Definition: level_two.c:254
struct boxlist * Vect_new_boxlist(int)
Creates and initializes a struct boxlist.
int Vect_read_header(struct Map_info *)
Read vector map header from map head file.
int Vect_net_ttb_shortest_path_coor(struct Map_info *, double, double, double, double, double, double, double, double, int, double *, struct line_pnts *, struct ilist *, struct ilist *, struct line_pnts *, struct line_pnts *, double *, double *)
Find shortest path on network with turntable between 2 points given by coordinates.
Definition: net_analyze.c:1052
off_t V1_write_line_ogr(struct Map_info *, int, const struct line_pnts *, const struct line_cats *)
Writes feature on level 1 (OGR interface)
Definition: write_ogr.c:63
void Vect_write_colors(const char *, const char *, struct Colors *)
Write color table for vector map.
void Vect_chtype_bridges(struct Map_info *, struct Map_info *, int *, int *)
Change type of bridges in vector map.
Definition: bridges.c:69
int V2_read_line_pg(struct Map_info *, struct line_pnts *, struct line_cats *, int)
int Vect_get_area_boundaries(struct Map_info *, int, struct ilist *)
Creates list of boundaries for given area.
const char * Vect_get_full_name(struct Map_info *)
Get fully qualified name of vector map.
void Vect_snap_lines_list(struct Map_info *, const struct ilist *, double, struct Map_info *)
Snap selected lines to existing vertex in threshold.
Definition: Vlib/snap.c:169
unsigned char * Vect_line_to_wkb(const struct line_pnts *, int, int, size_t *)
Create a Well Known Binary (WKB) representation of given feature type from points.
Definition: geos_to_wktb.c:205
int Vect_tin_get_z(struct Map_info *, double, double, double *, double *, double *)
int Vect_rename(const char *, const char *)
Rename existing vector map (in the current mapset).
Definition: map.c:233
int Vect_find_poly_centroid(const struct line_pnts *, double *, double *)
Get centroid of polygon.
Definition: Vlib/poly.c:355
int Vect_copy_pnts_to_xyz(const struct line_pnts *, double *, double *, double *, int *)
Copy points from line structure to array.
Definition: line.c:380
void Vect_line_buffer(const struct line_pnts *, double, double, struct line_pnts *)
Create buffer around the line line.
Definition: buffer.c:381
int Vect_val_in_boxlist(const struct boxlist *, int)
Find a given item in the list.
int Vect_save_frmt(struct Map_info *)
Save format definition file for vector map.
int V2_delete_line_pg(struct Map_info *, off_t)
void Vect_line_reverse(struct line_pnts *)
Reverse the order of vertices.
Definition: line.c:898
int Vect_cat_get(const struct line_cats *, int, int *)
Get first found category of given field.
void Vect_snap_lines(struct Map_info *, int, double, struct Map_info *)
Snap lines in vector map to existing vertex in threshold.
Definition: Vlib/snap.c:896
int Vect_cidx_get_field_number(struct Map_info *, int)
Get layer number for given index.
Definition: Vlib/cindex.c:98
int Vect_get_map_box(struct Map_info *, struct bound_box *)
Get bounding box of map (all features in the map)
int Vect_hist_command(struct Map_info *)
Write command info to history file.
Definition: hist.c:29
int Vect_read_colors(const char *, const char *, struct Colors *)
Read color table of vector map.
int Vect_line_intersection2(struct line_pnts *, struct line_pnts *, struct bound_box *, struct bound_box *, struct line_pnts ***, struct line_pnts ***, int *, int *, int)
Intersect 2 lines.
Definition: intersect2.c:675
int Vect_box_extend(struct bound_box *, const struct bound_box *)
Extend box A by box B.
int Vect_find_line_list(struct Map_info *, double, double, double, int, double, int, const struct ilist *, struct ilist *)
Find the nearest line(s).
int Vect_get_map_box1(struct Map_info *, struct bound_box *)
Get bounding box of map on level 1 (all features in the map)
void Vect_destroy_boxlist(struct boxlist *)
Frees all memory associated with a struct boxlist, including the struct itself.
int Vect_get_area_cats(struct Map_info *, int, struct line_cats *)
Get area categories.
int Vect_overlay_and(struct Map_info *, int, struct ilist *, struct ilist *, struct Map_info *, int, struct ilist *, struct ilist *, struct Map_info *)
int Vect_line_intersection(struct line_pnts *, struct line_pnts *, struct bound_box *, struct bound_box *, struct line_pnts ***, struct line_pnts ***, int *, int *, int)
off_t V2_write_line_pg(struct Map_info *, int, const struct line_pnts *, const struct line_cats *)
int Vect_cidx_get_num_fields(struct Map_info *)
Get number of layers in category index.
Definition: Vlib/cindex.c:81
int Vect_set_constraint_region(struct Map_info *, double, double, double, double, double, double)
Set constraint region.
Definition: constraint.c:48
int Vect_set_scale(struct Map_info *, int)
Set map scale in map header.
int Vect_get_isle_points(struct Map_info *, int, struct line_pnts *)
Returns polygon array of points for given isle.
int Vect_snap_line(struct Map_info *, struct ilist *, struct line_pnts *, double, int, int *, int *)
Snap a line to reference lines in Map with threshold.
Definition: Vlib/snap.c:949
int Vect_get_area_points(struct Map_info *, int, struct line_pnts *)
Returns polygon array of points (outer ring) of given area.
char * Vect_sfa_line_geometry_type(const struct line_pnts *, int)
Get geometry type (string)
int Vect_get_centroid_area(struct Map_info *, int)
Get area id the centroid is within.
Definition: level_two.c:429
off_t V2_rewrite_line_sfa(struct Map_info *, off_t, int, const struct line_pnts *, const struct line_cats *)
Rewrites feature at the given offset on level 2 (OGR/PostGIS interface, pseudo-topological level)
Definition: write_sfa.c:152
int Vect_build_nat(struct Map_info *, int)
Build topology.
Definition: build_nat.c:34
int Vect_copy_map_lines_field(struct Map_info *, int, struct Map_info *)
Copy all alive vector features from given layer from input vector map to output vector map.
void Vect_destroy_list(struct ilist *)
Frees all memory associated with a struct ilist, including the struct itself.
int Vect_level(struct Map_info *)
Returns level that Map is opened at.
Definition: level.c:29
GEOSGeometry * Vect_read_line_geos(struct Map_info *, int, int *)
Read vector feature and stores it as GEOSGeometry instance.
Definition: geos.c:45
int Vect_open_tmp_update(struct Map_info *, const char *, const char *)
Open existing temporary vector map for reading/writing.
int V2_close_pg(struct Map_info *)
int Vect_read_ascii_head(FILE *, struct Map_info *)
Read header of GRASS ASCII vector format.
Definition: ascii.c:257
int Vect_close(struct Map_info *)
Close vector map.
void Vect_destroy_cats_struct(struct line_cats *)
Frees all memory associated with line_cats structure, including the struct itself.
int Vect_sfa_is_line_closed(const struct line_pnts *, int, int)
Check if feature is closed.
int Vect_cidx_get_cat_by_index(struct Map_info *, int, int, int *, int *, int *)
Get category, feature type and id for given layer and category index.
Definition: Vlib/cindex.c:262
int Vect_copy_table_by_cats(struct Map_info *, struct Map_info *, int, int, const char *, int, int *, int)
Copy attribute table linked to vector map based on category numbers.
int Vect_sfa_is_line_simple(const struct line_pnts *, int, int)
int Vect_isle_alive(struct Map_info *, int)
Check if isle is alive or dead (topological level required)
struct field_info * Vect_get_field2(struct Map_info *, const char *)
Get information about link to database (by layer number or layer name)
Definition: field.c:571
int Vect_get_constraint_box(struct Map_info *, struct bound_box *)
Get constraint box.
Definition: constraint.c:79
void Vect_cidx_find_all(struct Map_info *, int, int, int, struct ilist *)
Find all line/area id's for given category.
Definition: Vlib/cindex.c:373
int Vect_set_map_date(struct Map_info *, const char *)
Set date when the source map was originally produced in map header.
int Vect__build_sfa(struct Map_info *, int)
Build pseudo-topology (for simple features) - internal use only.
Definition: build_sfa.c:700
void Vect_set_category_index_update(struct Map_info *)
Set category index to be updated when vector is changed.
Definition: map.c:561
int V1_read_next_line_nat(struct Map_info *, struct line_pnts *, struct line_cats *)
Read next vector feature on non-topological level (level 1) - native format - internal use only.
Definition: read_nat.c:71
int Vect_open_update_head(struct Map_info *, const char *, const char *)
Open header file of existing vector map for updating (mostly for database link updates)
int Vect_list_append(struct ilist *, int)
Append new item to the end of list if not yet present.
int Vect_copy_xyz_to_pnts(struct line_pnts *, const double *, const double *, const double *, int)
Copy points from array to line_pnts structure.
Definition: line.c:99
int V2_read_next_line_pg(struct Map_info *, struct line_pnts *, struct line_cats *)
int Vect_set_comment(struct Map_info *, const char *)
Set comment or other info string in map header.
plus_t Vect_get_num_kernels(struct Map_info *)
Fetch number of kernels in vector map.
Definition: level_two.c:99
int Vect_get_point_in_poly(const struct line_pnts *, double *, double *)
Get point inside polygon.
Definition: Vlib/poly.c:208
int Vect_get_updated_line(struct Map_info *, int)
Get updated line by index.
Definition: level_two.c:191
int Vect_check_line_breaks(struct Map_info *, int, struct Map_info *)
Check for and count intersecting lines, do not break.
Definition: break_lines.c:82
void Vect_set_release_support(struct Map_info *)
Set spatial index to be released when vector is closed.
Definition: map.c:545
int V1_rewind_pg(struct Map_info *)
Rewind vector map (PostGIS layer) to cause reads to start at beginning (level 1)
Definition: rewind_pg.c:34
int Vect_copy(const char *, const char *, const char *)
Copy vector map including attribute tables.
Definition: map.c:125
off_t V2_write_line_nat(struct Map_info *, int, const struct line_pnts *, const struct line_cats *)
Writes feature to 'coor' file at topological level (internal use only)
Definition: write_nat.c:67
void Vect_graph_build(dglGraph_s *)
Build network graph.
struct varray * Vect_new_varray(int)
Create new struct varray and allocate space for given number of items.
Definition: array.c:39
struct cat_list * Vect_cats_set_constraint(struct Map_info *, int, char *, char *)
Set category constraints using 'where' or 'cats' option and layer number.
void Vect_spatial_index_init(struct spatial_index *, int)
Initialize spatial index structure.
int Vect_get_num_updated_lines(struct Map_info *)
Get number of updated features.
Definition: level_two.c:175
void Vect_remove_duplicates(struct Map_info *, int, struct Map_info *)
Remove duplicate features from vector map.
int Vect_get_num_line_points(const struct line_pnts *)
Get number of line points.
Definition: line.c:267
int Vect_get_line_box(struct Map_info *, int, struct bound_box *)
Get bounding box of given feature.
void Vect_line_buffer2(const struct line_pnts *, double, double, double, int, int, double, struct line_pnts **, struct line_pnts ***, int *)
Creates buffer around line.
Definition: buffer2.c:1009
int V2_delete_line_nat(struct Map_info *, off_t)
Deletes feature at topological level (internal use only)
Definition: write_nat.c:290
int Vect_box_clip(double *, double *, double *, double *, const struct bound_box *)
Clip coordinates to box, if necessary, lines extending outside of a box.
int Vect_get_zone(struct Map_info *)
int Vect_get_area_isle(struct Map_info *, int, int)
Returns isle id for area.
int Vect_read_line(struct Map_info *, struct line_pnts *, struct line_cats *, int)
Read vector feature (topological level required)
int Vect_delete(const char *)
Delete vector map including attribute tables.
Definition: map.c:367
int Vect_write_dblinks(struct Map_info *)
Write dblinks to file.
Definition: field.c:859
int Vect_line_check_intersection(struct line_pnts *, struct line_pnts *, int)
Check if 2 lines intersect.
int Vect_line_distance(const struct line_pnts *, double, double, double, int, double *, double *, double *, double *, double *, double *)
Calculate distance of point to line.
Definition: line.c:648
int Vect_sfa_get_type(SF_FeatureType)
Get relevant GV type.
int Vect_net_build_graph(struct Map_info *, int, int, int, const char *, const char *, const char *, int, int)
Build network graph.
Definition: net_build.c:695
const char * Vect_get_column_names(struct Map_info *, int)
Fetches list of DB column names of vector map attribute table.
Definition: dbcolumns.c:37
int V1_close_nat(struct Map_info *)
Close vector map.
Definition: close_nat.c:34
struct ilist * Vect_new_list(void)
Creates and initializes a struct ilist.
int Vect_save_topo(struct Map_info *)
Save topology file for vector map.
Definition: build.c:1012
int Vect_legal_filename(const char *)
Check if output is legal vector name.
Definition: legal_vname.c:32
int Vect_list_delete_list(struct ilist *, const struct ilist *)
Delete list from existing list.
int Vect_get_area_num_isles(struct Map_info *, int)
Returns number of isles for given area.
int Vect_attach_isle(struct Map_info *, int, const struct bound_box *)
(Re)Attach isle to area
Definition: build.c:385
int Vect_find_line(struct Map_info *, double, double, double, int, double, int, int)
Find the nearest line.
int V1_restore_line_nat(struct Map_info *, off_t, off_t)
Restores feature at level 1 (internal use only)
Definition: write_nat.c:350
int Vect_print_header(struct Map_info *)
Print vector map header to stdout.
int V1_read_line_ogr(struct Map_info *, struct line_pnts *, struct line_cats *, off_t)
Read feature from OGR layer at given offset (level 1 without topology)
Definition: read_ogr.c:179
int Vect_list_append_list(struct ilist *, const struct ilist *)
Append new items to the end of list if not yet present.
int Vect_get_proj(struct Map_info *)
Get projection from map header.
int Vect_set_varray_from_cat_list(struct Map_info *, int, struct cat_list *, int, int, struct varray *)
Set values in 'varray' to 'value' from category list.
Definition: array.c:124
const char * Vect_get_finfo_format_info(struct Map_info *)
Get format info as string (relevant only for non-native formats)
Definition: header_finfo.c:108
int Vect_box_overlap(const struct bound_box *, const struct bound_box *)
Tests for overlap of two boxes.
int Vect_check_dblink(const struct dblinks *, int, const char *)
Check if DB connection exists in dblinks structure.
Definition: field.c:252
int Vect_open_tmp_new(struct Map_info *, const char *, int)
Create new temporary vector map.
int Vect_net_get_node_cost(struct Map_info *, int, double *)
Get cost of node.
Definition: net_analyze.c:468
int Vect_maptype(struct Map_info *)
Gets vector map format.
int Vect_break_lines_list(struct Map_info *, struct ilist *, struct ilist *, int, struct Map_info *)
Break selected lines in vector map at each intersection.
Definition: break_lines.c:63
int Vect_point_in_poly(double, double, const struct line_pnts *)
Determines if a point (X,Y) is inside a polygon.
Definition: Vlib/poly.c:824
double Vect_points_distance(double, double, double, double, double, double, int)
Calculate distance of 2 points.
Definition: line.c:866
char * Vect_subst_var(const char *, struct Map_info *)
Substitute variable in string.
Definition: field.c:912
int Vect_point_in_area_outer_ring(double, double, struct Map_info *, int, struct bound_box *)
Determines if a point (X,Y) is inside an area outer ring. Islands are not considered.
Definition: Vlib/poly.c:854
void Vect_spatial_index_destroy(struct spatial_index *)
Destroy existing spatial index.
int Vect_cat_list_to_array(const struct cat_list *, int **, int *)
Convert cat_list struct to ordered array of unique integers.
double Vect_get_thresh(struct Map_info *)
Get threshold used for digitization from map header.
int Vect_open_update2(struct Map_info *, const char *, const char *, const char *)
Open existing vector map for reading/writing.
int Vect_line_alive(struct Map_info *, int)
Check if feature is alive or dead (topological level required)
plus_t Vect_get_num_primitives(struct Map_info *, int)
Get number of primitives in vector map.
Definition: level_two.c:47
int Vect_array_to_cat_list(const int *, int, struct cat_list *)
Convert ordered array of integers to cat_list structure.
void Vect_reset_updated(struct Map_info *)
Reset list of updated lines/nodes.
Definition: level_two.c:469
int Vect_get_line_cat(struct Map_info *, int, int)
Fetches FIRST category number for given vector line and field.
Definition: line.c:929
double Vect_get_area_perimeter(struct Map_info *, int)
Returns perimeter of area with perimeter of isles.
int Vect_get_area_box(struct Map_info *, int, struct bound_box *)
Get bounding box of area.
struct Map_info * Vect_new_map_struct(void)
Creates and initializes Map_info structure.
Definition: map.c:41
int Vect_isle_find_area(struct Map_info *, int, const struct bound_box *)
Find area outside island.
Definition: build.c:179
int Vect_cidx_get_num_cats_by_index(struct Map_info *, int)
Get number of categories for given layer index.
Definition: Vlib/cindex.c:161
int Vect_save_sidx(struct Map_info *)
Save spatial index file for vector map.
Definition: build.c:1261
int Vect_topo_dump(struct Map_info *, FILE *)
Dump topology to file.
Definition: build.c:1054
int Vect_overlay_str_to_operator(const char *)
Get operator code from string.
Definition: overlay.c:35
int Vect_boxlist_delete(struct boxlist *, int)
Remove a given value (item) from list.
GEOSGeometry * Vect_read_area_geos(struct Map_info *, int)
Read vector area and stores it as GEOSGeometry instance (polygon)
Definition: geos.c:84
int V1_delete_line_ogr(struct Map_info *, off_t)
Deletes feature at the given offset on level 1 (OGR interface)
Definition: write_ogr.c:119
int Vect_field_cat_del(struct line_cats *, int, int)
Delete field/cat from line_cats structure.
off_t V2_rewrite_line_nat(struct Map_info *, off_t, int, const struct line_pnts *, const struct line_cats *)
Rewrites feature to 'coor' file at topological level (internal use only)
Definition: write_nat.c:161
int Vect_copy_head_data(struct Map_info *, struct Map_info *)
Copy header data from one to another map.
Definition: init_head.c:77
void Vect_break_lines(struct Map_info *, int, struct Map_info *)
Break lines in vector map at each intersection.
Definition: break_lines.c:33
int Vect_cidx_get_num_unique_cats_by_index(struct Map_info *, int)
Get number of unique categories for given layer index.
Definition: Vlib/cindex.c:144
void Vect_spatial_index_del_item(struct spatial_index *, int, const struct bound_box *)
Delete item from spatial index structure.
int Vect_net_nearest_nodes(struct Map_info *, double, double, double, int, double, int *, int *, int *, double *, double *, struct line_pnts *, struct line_pnts *, double *)
Find nearest node(s) on network.
Definition: net_analyze.c:499
off_t V1_rewrite_line_nat(struct Map_info *, off_t, int, const struct line_pnts *, const struct line_cats *)
Rewrites feature to 'coor' file at level 1 (internal use only)
Definition: write_nat.c:105
int Vect_sfa_line_dimension(int)
Get geometry dimension.
int Vect_hist_copy(struct Map_info *, struct Map_info *)
Copy history from one map to another.
Definition: hist.c:131
int Vect_get_isle_boundaries(struct Map_info *, int, struct ilist *)
Creates list of boundaries for given isle.
int Vect_segment_intersection(double, double, double, double, double, double, double, double, double, double, double, double, double *, double *, double *, double *, double *, double *, int)
Check for intersect of 2 line segments.
void Vect_line_parallel(struct line_pnts *, double, double, int, struct line_pnts *)
Create parallel line.
Definition: buffer.c:353
int Vect_set_constraint_field(struct Map_info *, int)
Set constraint field.
Definition: constraint.c:147
int Vect_clean_small_angles_at_nodes(struct Map_info *, int, struct Map_info *)
Clean small angles at nodes.
Definition: clean_nodes.c:33
int Vect_write_ascii(FILE *, FILE *, struct Map_info *, int, int, int, char *, int, int, int, const struct cat_list *, const char *, const char **, int)
Write data to GRASS ASCII vector format.
Definition: ascii.c:337
int Vect__read_head(struct Map_info *)
Reads head information from text file (GV_HEAD_ELEMENT) - for internal use only.
int Vect_delete_line(struct Map_info *, off_t)
Delete existing feature (topological level required)
void Vect_area_buffer2(struct Map_info *, int, double, double, double, int, int, double, struct line_pnts **, struct line_pnts ***, int *)
Creates buffer around area.
Definition: buffer2.c:1074
int V1_read_next_line_ogr(struct Map_info *, struct line_pnts *, struct line_cats *)
Read next feature from OGR layer. Skip empty features (level 1 without topology).
Definition: read_ogr.c:49
int Vect_select_areas_by_box(struct Map_info *, const struct bound_box *, struct boxlist *)
Select areas with bounding boxes by box.
Definition: sindex.c:121
int Vect_open_old(struct Map_info *, const char *, const char *)
Open existing vector map for reading.
int Vect_point_in_box_2d(double, double, const struct bound_box *)
Tests if point is in 2D box.
int Vect_set_organization(struct Map_info *, const char *)
Set organization string in map header.
int Vect_get_num_dblinks(struct Map_info *)
Get number of defined dblinks.
Definition: level_two.c:159
int Vect_build_ogr(struct Map_info *, int)
Build pseudo-topology (simple features) for OGR layer.
Definition: build_ogr.c:49
int Vect_get_point_in_area(struct Map_info *, int, double *, double *)
Get point inside area and outside all islands.
Definition: Vlib/poly.c:55
int Vect_line_check_duplicate(const struct line_pnts *, const struct line_pnts *, int)
Check for duplicate lines.
int Vect_line_insert_point(struct line_pnts *, int, double, double, double)
Insert new point at index position and move all old points at that position and above up.
Definition: line.c:176
void Vect_graph_set_node_costs(dglGraph_s *, int, double)
Set node costs.
int Vect_point_in_area(double, double, struct Map_info *, int, struct bound_box *)
Check if point is in area.
int Vect_get_area_cat(struct Map_info *, int, int)
Find FIRST category of given field and area.
int V1_rewind_ogr(struct Map_info *)
Rewind vector map (OGR layer) to cause reads to start at beginning (level 1)
Definition: rewind_ogr.c:32
int Vect_save_fidx(struct Map_info *, struct Format_info_offset *)
Save feature index file for vector map.
Definition: build_ogr.c:116
void Vect_copy_map_dblinks(struct Map_info *, struct Map_info *, int)
Copy DB links from input vector map to output vector map.
Definition: field.c:205
const char * Vect_maptype_info(struct Map_info *)
Gets vector map format (as string)
off_t Vect_write_line(struct Map_info *, int, const struct line_pnts *, const struct line_cats *)
Writes a new feature.
plus_t Vect_get_num_faces(struct Map_info *)
Get number of faces in vector map.
Definition: level_two.c:111
int Vect__intersect_line_with_poly(const struct line_pnts *, double, struct line_pnts *)
struct field_info * Vect_get_field(struct Map_info *, int)
Get information about link to database (by layer number)
Definition: field.c:515
int Vect_build(struct Map_info *)
Build topology for vector map.
Definition: build.c:586
off_t Vect_get_updated_line_offset(struct Map_info *, int)
Get updated line offset by index.
Definition: level_two.c:207
int Vect_set_date(struct Map_info *, const char *)
Set date of digitization in map header.
int V1_close_ogr(struct Map_info *)
Close vector map (OGR dsn & layer) on level 1.
Definition: close_ogr.c:35
int Vect_merge_lines(struct Map_info *, int, int *, struct Map_info *)
Merge lines or boundaries in vector map.
Definition: merge_lines.c:79
int Vect_build_partial(struct Map_info *, int)
Build partial topology for vector map.
Definition: build.c:861
struct line_pnts * Vect_new_line_struct(void)
Creates and initializes a line_pnts structure.
Definition: line.c:45
const char * Vect_get_finfo_geometry_type(struct Map_info *)
Get geometry type as string (relevant only for non-native formats)
Definition: header_finfo.c:143
int Vect_read_ascii(FILE *, struct Map_info *)
Read data in GRASS ASCII vector format.
Definition: ascii.c:42
int Vect_cidx_get_type_count(struct Map_info *, int, int)
Get count of features of certain type by layer and type.
Definition: Vlib/cindex.c:223
struct field_info * Vect_get_dblink(struct Map_info *, int)
Get information about link to database.
Definition: field.c:475
const char * Vect_get_person(struct Map_info *)
Get user name string who digitized the map from map header.
int Vect_select_lines_by_box(struct Map_info *, const struct bound_box *, int, struct boxlist *)
Select lines with bounding boxes by box.
Definition: sindex.c:32
SF_FeatureType Vect_sfa_get_line_type(const struct line_pnts *, int, int)
Get SF type of given vector feature.
int Vect_get_num_updated_nodes(struct Map_info *)
Get number of updated nodes.
Definition: level_two.c:219
int Vect_cidx_dump(struct Map_info *, FILE *)
Write (dump) category index in text form to file.
Definition: Vlib/cindex.c:420
int Vect_boxlist_append_boxlist(struct boxlist *, const struct boxlist *)
Append new items to the end of list if not yet present.
void Vect_remove_bridges(struct Map_info *, struct Map_info *, int *, int *)
Remove bridges from vector map.
Definition: bridges.c:48
off_t Vect_get_line_offset(struct Map_info *, int)
Get feature offset (topological level required)
int Vect_get_isle_box(struct Map_info *, int, struct bound_box *)
Get bounding box of isle.
int Vect_open_sidx(struct Map_info *, int)
Open spatial index file ('sidx')
int Vect_val_in_list(const struct ilist *, int)
Find a given item in the list.
void Vect_chtype_dangles(struct Map_info *, double, struct Map_info *)
Change boundary dangles to lines.
Definition: dangles.c:74
int Vect_get_node_n_lines(struct Map_info *, int)
Get number of lines for node.
Definition: level_two.c:380
int Vect_boxlist_append(struct boxlist *, int, const struct bound_box *)
Append new item to the end of list if not yet present.
plus_t Vect_get_num_nodes(struct Map_info *)
Get number of nodes in vector map.
Definition: level_two.c:34
int Vect_set_varray_from_cat_string(struct Map_info *, int, const char *, int, int, struct varray *)
Set values in 'varray' to 'value' from category string.
Definition: array.c:79
void Vect_destroy_cat_list(struct cat_list *)
Frees allocated cat_list memory.
int V2_rewind_pg(struct Map_info *)
Rewind vector map (PostGIS layer) to cause reads to start at beginning on topological level (level 2)
Definition: rewind_pg.c:70
const char * Vect_get_column_types(struct Map_info *, int)
Fetches list of DB column types of vector map attribute table.
Definition: dbcolumns.c:92
int Vect_get_area_centroid(struct Map_info *, int)
Returns centroid id for given area.
char * Vect_line_to_wkt(const struct line_pnts *, int, int)
Create a Well Known Text (WKT) representation of given feature type from points.
Definition: geos_to_wktb.c:254
void Vect__init_head(struct Map_info *)
Initialize Map_info head structure (dig_head)
Definition: init_head.c:29
int Vect_find_node(struct Map_info *, double, double, double, double, int)
Find the nearest node.
char * Vect_hist_read(char *, int, struct Map_info *)
Reads one line from history file without newline character.
Definition: hist.c:90
int Vect_map_add_dblink(struct Map_info *, int, const char *, const char *, const char *, const char *, const char *)
Add new db connection to Map_info structure.
Definition: field.c:120
int V1_close_pg(struct Map_info *)
int Vect_build_sidx_from_topo(struct Map_info *)
Create spatial index from topology if necessary (not longer supported)
Definition: build.c:1244
int V2_read_next_line_ogr(struct Map_info *, struct line_pnts *, struct line_cats *)
Read next feature from OGR layer on topological level.
Definition: read_ogr.c:75
int Vect_line_delete_point(struct line_pnts *, int)
Delete point at given index and move all points above down.
Definition: line.c:210
int Vect_node_alive(struct Map_info *, int)
Check if node is alive or dead (topological level required)
void Vect_reset_line(struct line_pnts *)
Reset line.
Definition: line.c:129
char * Vect_get_finfo_layer_name(struct Map_info *)
Get layer name (relevant only for non-native formats)
Definition: header_finfo.c:73
int Vect_rewind(struct Map_info *)
Rewind vector map to cause reads to start at beginning.
const char * Vect_get_proj_name(struct Map_info *)
Query cartographic projection name of pointer to Map_info structure.
int V1_open_new_ogr(struct Map_info *, const char *, int)
Prepare OGR datasource for creating new OGR layer (level 1)
Definition: open_ogr.c:180
int V1_read_line_pg(struct Map_info *, struct line_pnts *, struct line_cats *, off_t)
unsigned char * Vect_read_line_to_wkb(struct Map_info *, struct line_pnts *, struct line_cats *, int, size_t *, int *)
Read a Well Known Binary (WKB) representation of a given feature id.
Definition: geos_to_wktb.c:128
int Vect_fidx_dump(struct Map_info *, FILE *)
Dump feature index to file.
Definition: build_sfa.c:750
const char * Vect_get_name(struct Map_info *)
Get name of vector map.
int Vect_get_node_line(struct Map_info *, int, int)
Get line id for node line index.
Definition: level_two.c:396
int Vect_attach_isles(struct Map_info *, const struct bound_box *)
(Re)Attach isles in given bounding box to areas
Definition: build.c:427
int Vect_read_next_line(struct Map_info *, struct line_pnts *, struct line_cats *)
Read next vector feature.
int V1_read_line_nat(struct Map_info *, struct line_pnts *, struct line_cats *, off_t)
Read vector feature on non-topological level (level 1) - native format - internal use only.
Definition: read_nat.c:43
int Vect__write_head(struct Map_info *)
Writes head information to text file (GV_HEAD_ELEMENT)
void Vect_destroy_map_struct(struct Map_info *)
Frees all memory associated with a Map_info structure, including the structure itself.
Definition: map.c:61
int Vect_line_segment(const struct line_pnts *, double, double, struct line_pnts *)
Create line segment.
Definition: line.c:517
int Vect_hist_write(struct Map_info *, const char *)
Write string to history file.
Definition: hist.c:65
int Vect_sfa_line_astext(const struct line_pnts *, int, int, int, FILE *)
Export geometry to Well-Known Text.
void Vect_point_buffer2(double, double, double, double, double, int, double, struct line_pnts **)
Creates buffer around the point (px, py).
Definition: buffer2.c:1139
int V2_restore_line_nat(struct Map_info *, off_t, off_t)
Restores feature at topological level (internal use only)
Definition: write_nat.c:398
double Vect_get_area_area(struct Map_info *, int)
Returns area of area without areas of isles.
GEOSGeometry * Vect_line_to_geos(const struct line_pnts *, int, int)
Create GEOSGeometry of given type from feature points.
Definition: geos.c:137
int Vect_net_ttb_build_graph(struct Map_info *, int, int, int, int, int, const char *, const char *, const char *, int, int)
int V2_open_old_ogr(struct Map_info *)
Open existing OGR layer on topological level.
Definition: open_ogr.c:145
int Vect_line_check_intersection2(struct line_pnts *, struct line_pnts *, int)
Check if 2 lines intersect.
Definition: intersect2.c:1540
int Vect_set_constraint_type(struct Map_info *, int)
Set constraint type.
Definition: constraint.c:106
int Vect_point_in_box(double, double, double, const struct bound_box *)
Tests if point is in 3D box.
void Vect_spatial_index_add_item(struct spatial_index *, int, const struct bound_box *)
Add a new item to spatial index structure.
int Vect_line_prune(struct line_pnts *)
Remove duplicate points, i.e. zero length segments.
Definition: line.c:279
struct line_cats * Vect_new_cats_struct(void)
Creates and initializes line_cats structure.
const char * Vect_get_mapset(struct Map_info *)
Get name of mapset where vector map lives.
int V1_delete_line_nat(struct Map_info *, off_t)
Deletes feature at level 1 (internal use only)
Definition: write_nat.c:248
int Vect_get_line_areas(struct Map_info *, int, int *, int *)
Get area id on the left and right side of the boundary.
Definition: level_two.c:346
const char * Vect_get_finfo_dsn_name(struct Map_info *)
Get datasource name (relevant only for non-native formats)
Definition: header_finfo.c:37
int RTreeSearch2(struct RTree *, struct RTree_Rect *, struct ilist *)
Definition: rtree_search.c:40
struct field_info * Vect_get_field_by_name(struct Map_info *, const char *)
Get information about link to database (by layer name)
Definition: field.c:541
GEOSCoordSequence * Vect_get_isle_points_geos(struct Map_info *, int)
Returns the polygon (isle) array of points (inner ring)
Definition: geos.c:438
int Vect_field_cat_get(const struct line_cats *, int, struct ilist *)
Get list of categories of given field.
int Vect_set_person(struct Map_info *, const char *)
Set name of user who digitized the map in map header.
int Vect_cidx_get_type_count_by_index(struct Map_info *, int, int, int *, int *)
Get count of feature types for given field and type index.
Definition: Vlib/cindex.c:200
int Vect_line_prune_thresh(struct line_pnts *, double)
Remove points in threshold.
Definition: line.c:309
int Vect_set_thresh(struct Map_info *, double)
Set threshold used for digitization in map header.
int Vect_set_open_level(int)
Predetermine level at which a vector map will be opened for reading.
int Vect_reset_list(struct ilist *)
Reset ilist structure.
int V2_close_ogr(struct Map_info *)
Close vector map on topological level (write out fidx file)
Definition: close_ogr.c:90
int Vect_select_nodes_by_box(struct Map_info *, const struct bound_box *, struct ilist *)
Select nodes by box.
Definition: sindex.c:187
void Vect_set_error_handler_io(struct Map_info *, struct Map_info *)
Define standard error handler for input and output vector maps.
int Vect_is_3d(struct Map_info *)
Check if vector map is 3D.
int Vect_open_old_head(struct Map_info *, const char *, const char *)
Reads only info about vector map (headers)
int Vect_line_get_point(const struct line_pnts *, int, double *, double *, double *)
Get line point of given index.
Definition: line.c:244
void Vect_set_updated(struct Map_info *, int)
Enable/disable maintenance of list of updated lines/nodes.
Definition: level_two.c:454
int Vect_append_point(struct line_pnts *, double, double, double)
Appends one point to the end of a line.
Definition: line.c:148
const char * Vect_get_map_name(struct Map_info *)
Get map name from map header.
void Vect_break_polygons(struct Map_info *, int, struct Map_info *)
Break polygons in vector map.
int Vect_overlay(struct Map_info *, int, struct ilist *, struct ilist *, struct Map_info *, int, struct ilist *, struct ilist *, int, struct Map_info *)
Overlay 2 vector maps and create new one.
Definition: overlay.c:62
int Vect_line_get_intersections2(struct line_pnts *, struct line_pnts *, struct line_pnts *, int)
Get 2 lines intersection points.
Definition: intersect2.c:1562
int Vect_append_points(struct line_pnts *, const struct line_pnts *, int)
Appends points to the end of a line.
Definition: line.c:335
int Vect_copy_tables(struct Map_info *, struct Map_info *, int)
Copy attribute tables linked to vector map.
off_t V2_rewrite_line_pg(struct Map_info *, off_t, int, const struct line_pnts *, const struct line_cats *)
int Vect_find_area(struct Map_info *, double, double)
Find the nearest area.
int Vect_open_old_head2(struct Map_info *, const char *, const char *, const char *)
Reads only info about vector map (headers)
int Vect_select_areas_by_polygon(struct Map_info *, struct line_pnts *, int, struct line_pnts **, struct ilist *)
Select areas by Polygon with optional isles.
Definition: sindex.c:317
int V2_read_line_sfa(struct Map_info *, struct line_pnts *, struct line_cats *, int)
Reads feature from OGR/PostGIS layer on topological level.
Definition: read_sfa.c:40
int V2_delete_line_sfa(struct Map_info *, off_t)
Deletes feature on level 2 (OGR/PostGIS interface)
Definition: write_sfa.c:193
int Vect_line_get_intersections(struct line_pnts *, struct line_pnts *, struct line_pnts *, int)
Get 2 lines intersection points.
void Vect_set_db_updated(struct Map_info *)
Rewrite 'dbln' file.
Definition: field.c:971
int Vect_get_built(struct Map_info *)
Return current highest built level (part)
Definition: build.c:757
int Vect_get_isle_area(struct Map_info *, int)
Returns area id for isle.
int Vect_box_copy(struct bound_box *, const struct bound_box *)
Copy box B to box A.
int V1_open_old_pg(struct Map_info *, int)
int Vect_open_topo(struct Map_info *, int)
Open topology file ('topo')
int Vect_get_finfo_topology_info(struct Map_info *, char **, char **, int *)
Get topology type (relevant only for non-native formats)
Definition: header_finfo.c:247
const char * Vect_get_column_names_types(struct Map_info *, int)
Fetches list of DB column names and types of vector map attribute table.
Definition: dbcolumns.c:149
off_t V1_write_line_pg(struct Map_info *, int, const struct line_pnts *, const struct line_cats *)
off_t V1_rewrite_line_pg(struct Map_info *, off_t, int, const struct line_pnts *, const struct line_cats *)
SF_FeatureType
Simple feature types.
Definition: dig_defines.h:239
int plus_t
plus_t size
Definition: dig_structs.h:41
2D/3D raster map header (used also for region)
Definition: gis.h:437
Definition: gis.h:683
Coor file info.
Definition: dig_structs.h:371
Data structure used for building pseudo-topology.
Definition: dig_structs.h:388
Non-native format info (currently only OGR is implemented)
Definition: dig_structs.h:700
Vector map info.
Definition: dig_structs.h:1243
Structure that stores option information.
Definition: gis.h:554
Definition: rtree.h:123
Bounding box.
Definition: dig_structs.h:64
List of bounding boxes with id.
Definition: dig_structs.h:1723
Category list.
Definition: dig_structs.h:1697
Layer (old: field) information.
Definition: dig_structs.h:131
List of integers.
Definition: gis.h:706
Feature category info.
Definition: dig_structs.h:1677
Feature geometry info - coordinates.
Definition: dig_structs.h:1651
Spatial index info.
Definition: dig_structs.h:1770
Vector array.
Definition: dig_structs.h:1751
struct GEOSCoordSeq_t GEOSCoordSequence
Definition: vector.h:10
struct GEOSGeom_t GEOSGeometry
Definition: vector.h:9