GRASS 8 Programmer's Manual 8.6.0dev(2026)-ddeab64dbf
Loading...
Searching...
No Matches
defs/vector.h
Go to the documentation of this file.
1#ifndef GRASS_VECTORDEFS_H
2#define GRASS_VECTORDEFS_H
3
4#include <stdbool.h>
5
6/*
7 * "Public" functions, for use in modules
8 */
9/* Points (line) */
11int Vect_append_point(struct line_pnts *, double, double, double);
12int Vect_append_points(struct line_pnts *, const struct line_pnts *, int);
13int Vect_line_insert_point(struct line_pnts *, int, double, double, double);
14int Vect_line_delete_point(struct line_pnts *, int);
15int Vect_line_get_point(const struct line_pnts *, int, double *, double *,
16 double *);
17int Vect_get_num_line_points(const struct line_pnts *);
18int Vect_line_prune(struct line_pnts *);
19int Vect_line_prune_thresh(struct line_pnts *, double);
20void Vect_line_reverse(struct line_pnts *);
21int Vect_copy_xyz_to_pnts(struct line_pnts *, const double *, const double *,
22 const double *, int);
23int Vect_copy_pnts_to_xyz(const struct line_pnts *, double *, double *,
24 double *, int *);
25void Vect_reset_line(struct line_pnts *);
27int Vect_point_on_line(const struct line_pnts *, double, double *, double *,
28 double *, double *, double *);
29int Vect_line_segment(const struct line_pnts *, double, double,
30 struct line_pnts *);
31double Vect_line_length(const struct line_pnts *);
32double Vect_line_geodesic_length(const struct line_pnts *);
33int Vect_line_distance(const struct line_pnts *, double, double, double, int,
34 double *, double *, double *, double *, double *,
35 double *);
36int Vect_line_geodesic_distance(const struct line_pnts *, double, double,
37 double, int, double *, double *, double *,
38 double *, double *, double *);
39void Vect_line_box(const struct line_pnts *, struct bound_box *);
40void Vect_line_parallel(struct line_pnts *, double, double, int,
41 struct line_pnts *);
42void Vect_line_parallel2(struct line_pnts *, double, double, double, int, int,
43 double, struct line_pnts *);
44void Vect_line_buffer(const struct line_pnts *, double, double,
45 struct line_pnts *);
46void Vect_line_buffer2(const struct line_pnts *, double, double, double, int,
47 int, double, struct line_pnts **, struct line_pnts ***,
48 int *);
49void Vect_area_buffer2(struct Map_info *, int, double, double, double, int, int,
50 double, struct line_pnts **, struct line_pnts ***,
51 int *);
52void Vect_point_buffer2(double, double, double, double, double, int, double,
53 struct line_pnts **);
54
55/* Categories */
57int Vect_cat_set(struct line_cats *, int, int);
58int Vect_cat_get(const struct line_cats *, int, int *);
59int Vect_cat_del(struct line_cats *, int);
60int Vect_field_cat_del(struct line_cats *, int, int);
61int Vect_field_cat_get(const struct line_cats *, int, struct ilist *);
62int Vect_cat_in_array(int, const int *, int);
63int Vect_reset_cats(struct line_cats *);
65int Vect_get_area_cats(struct Map_info *, int, struct line_cats *);
66int Vect_get_area_cat(struct Map_info *, int, int);
67int Vect_get_line_cat(struct Map_info *, int, int);
68struct cat_list *Vect_cats_set_constraint(struct Map_info *, int, char *,
69 char *);
70int Vect_cats_in_constraint(struct line_cats *, int, struct cat_list *);
71
72/* List of categories */
73struct cat_list *Vect_new_cat_list(void);
74int Vect_str_to_cat_list(const char *, struct cat_list *);
75int Vect_array_to_cat_list(const int *, int, struct cat_list *);
76int Vect_cat_list_to_array(const struct cat_list *, int **, int *);
77int Vect_cat_in_cat_list(int, const struct cat_list *);
78void Vect_destroy_cat_list(struct cat_list *);
79
80/* Vector array */
81struct varray *Vect_new_varray(int);
82int Vect_set_varray_from_cat_string(struct Map_info *, int, const char *, int,
83 int, struct varray *);
84int Vect_set_varray_from_cat_list(struct Map_info *, int, struct cat_list *,
85 int, int, struct varray *);
86int Vect_set_varray_from_db(struct Map_info *, int, const char *, int, int,
87 struct varray *);
88
89/* DB connection - field info */
91void Vect_reset_dblinks(struct dblinks *);
92int Vect_add_dblink(struct dblinks *, int, const char *, const char *,
93 const char *, const char *, const char *);
94int Vect_check_dblink(const struct dblinks *, int, const char *);
95int Vect_map_add_dblink(struct Map_info *, int, const char *, const char *,
96 const char *, const char *, const char *);
97int Vect_map_del_dblink(struct Map_info *, int);
98void Vect_copy_map_dblinks(struct Map_info *, struct Map_info *, int);
99int Vect_map_check_dblink(struct Map_info *, int, const char *);
100int Vect_read_dblinks(struct Map_info *);
101int Vect_write_dblinks(struct Map_info *);
102struct field_info *Vect_default_field_info(struct Map_info *, int, const char *,
103 int);
104struct field_info *Vect_get_dblink(struct Map_info *, int);
105struct field_info *Vect_get_field(struct Map_info *, int);
106struct field_info *Vect_get_field_by_name(struct Map_info *, const char *);
107struct field_info *Vect_get_field2(struct Map_info *, const char *);
108int Vect_get_field_number(struct Map_info *, const char *);
109void Vect_set_db_updated(struct Map_info *);
110const char *Vect_get_column_names(struct Map_info *, int);
111const char *Vect_get_column_types(struct Map_info *, int);
112const char *Vect_get_column_names_types(struct Map_info *, int);
114
115/* List of FID (feature ID) (integers) */
116struct ilist *Vect_new_list(void);
117int Vect_list_append(struct ilist *, int);
118int Vect_list_append_list(struct ilist *, const struct ilist *);
119int Vect_list_delete(struct ilist *, int);
120int Vect_list_delete_list(struct ilist *, const struct ilist *);
121int Vect_val_in_list(const struct ilist *, int);
122int Vect_reset_list(struct ilist *);
123void Vect_destroy_list(struct ilist *);
124
125/* List of bounding boxes with ids */
126struct boxlist *Vect_new_boxlist(int);
127int Vect_boxlist_append(struct boxlist *, int, const struct bound_box *);
128int Vect_boxlist_append_boxlist(struct boxlist *, const struct boxlist *);
129int Vect_boxlist_delete(struct boxlist *, int);
130int Vect_boxlist_delete_boxlist(struct boxlist *, const struct boxlist *);
131int Vect_val_in_boxlist(const struct boxlist *, int);
132int Vect_reset_boxlist(struct boxlist *);
133void Vect_destroy_boxlist(struct boxlist *);
134
135/* Bounding box (MBR) */
136int Vect_point_in_box(double, double, double, const struct bound_box *);
137int Vect_point_in_box_2d(double, double, const struct bound_box *);
138int Vect_box_overlap(const struct bound_box *, const struct bound_box *);
139int Vect_box_copy(struct bound_box *, const struct bound_box *);
140int Vect_box_extend(struct bound_box *, const struct bound_box *);
141int Vect_box_clip(double *, double *, double *, double *,
142 const struct bound_box *);
143int Vect_region_box(const struct Cell_head *, struct bound_box *);
144
145/* Category index */
147int Vect_cidx_get_field_number(struct Map_info *, int);
148int Vect_cidx_get_field_index(struct Map_info *, int);
152int Vect_cidx_get_type_count_by_index(struct Map_info *, int, int, int *,
153 int *);
154int Vect_cidx_get_type_count(struct Map_info *, int, int);
155int Vect_cidx_get_cat_by_index(struct Map_info *, int, int, int *, int *,
156 int *);
157int Vect_cidx_get_unique_cats_by_index(struct Map_info *, int, struct ilist *);
158int Vect_cidx_find_next(struct Map_info *, int, int, int, int, int *, int *);
159void Vect_cidx_find_all(struct Map_info *, int, int, int, struct ilist *);
160int Vect_cidx_dump(struct Map_info *, FILE *);
161int Vect_cidx_save(struct Map_info *);
162int Vect_cidx_open(struct Map_info *, int);
163
164/* Create/destroy Map_info */
165struct Map_info *Vect_new_map_struct(void);
166void Vect_destroy_map_struct(struct Map_info *);
167
168/* Set/get map header info */
169int Vect_read_header(struct Map_info *);
170int Vect_write_header(struct Map_info *);
171const char *Vect_get_name(struct Map_info *);
172const char *Vect_get_mapset(struct Map_info *);
173const char *Vect_get_full_name(struct Map_info *);
174const char *Vect_get_finfo_dsn_name(struct Map_info *);
175char *Vect_get_finfo_layer_name(struct Map_info *);
176const char *Vect_get_finfo_format_info(struct Map_info *);
177const char *Vect_get_finfo_geometry_type(struct Map_info *);
178const struct Format_info *Vect_get_finfo(struct Map_info *);
179int Vect_get_finfo_topology_info(struct Map_info *, char **, char **, int *);
180int Vect_is_3d(struct Map_info *);
181int Vect_set_organization(struct Map_info *, const char *);
182const char *Vect_get_organization(struct Map_info *);
183int Vect_set_date(struct Map_info *, const char *);
184const char *Vect_get_date(struct Map_info *);
185int Vect_set_person(struct Map_info *, const char *);
186const char *Vect_get_person(struct Map_info *);
187int Vect_set_map_name(struct Map_info *, const char *);
188const char *Vect_get_map_name(struct Map_info *);
189int Vect_set_map_date(struct Map_info *, const char *);
190const char *Vect_get_map_date(struct Map_info *);
191int Vect_set_comment(struct Map_info *, const char *);
192const char *Vect_get_comment(struct Map_info *);
193int Vect_set_scale(struct Map_info *, int);
194int Vect_get_scale(struct Map_info *);
195int Vect_set_zone(struct Map_info *, int);
196int Vect_get_zone(struct Map_info *);
197int Vect_get_proj(struct Map_info *);
198int Vect_set_proj(struct Map_info *, int);
199const char *Vect_get_proj_name(struct Map_info *);
200int Vect_set_thresh(struct Map_info *, double);
201double Vect_get_thresh(struct Map_info *);
202int Vect_get_constraint_box(struct Map_info *, struct bound_box *);
203
204/* Get map information */
205int Vect_level(struct Map_info *);
206
207/* Get map level 1 information */
208int Vect_get_map_box1(struct Map_info *, struct bound_box *);
209
210/* Get map level 2 information */
211int Vect_get_line_type(struct Map_info *, int);
221int Vect_get_line_box(struct Map_info *, int, struct bound_box *);
222int Vect_get_area_box(struct Map_info *, int, struct bound_box *);
223int Vect_get_isle_box(struct Map_info *, int, struct bound_box *);
224int Vect_get_map_box(struct Map_info *, struct bound_box *);
225int V__map_overlap(struct Map_info *, double, double, double, double);
228
229/* Open/close/rewind/set_constraints for map */
230int Vect_check_input_output_name(const char *, const char *, int);
231int Vect_legal_filename(const char *);
232int Vect_set_open_level(int);
233int Vect_open_old(struct Map_info *, const char *, const char *);
234int Vect_open_tmp_old(struct Map_info *, const char *, const char *);
235int Vect_open_old2(struct Map_info *, const char *, const char *, const char *);
236int Vect_open_old_head(struct Map_info *, const char *, const char *);
237int Vect_open_old_head2(struct Map_info *, const char *, const char *,
238 const char *);
239int Vect_open_new(struct Map_info *, const char *, int);
240int Vect_open_tmp_new(struct Map_info *, const char *, int);
241int Vect_open_update(struct Map_info *, const char *, const char *);
242int Vect_open_tmp_update(struct Map_info *, const char *, const char *);
243int Vect_open_update2(struct Map_info *, const char *, const char *,
244 const char *);
245int Vect_open_update_head(struct Map_info *, const char *, const char *);
246int Vect_copy_head_data(struct Map_info *, struct Map_info *);
247int Vect_build(struct Map_info *);
248int Vect_topo_check(struct Map_info *, struct Map_info *);
249int Vect_get_built(struct Map_info *);
250int Vect_build_partial(struct Map_info *, int);
251int Vect_set_constraint_region(struct Map_info *, double, double, double,
252 double, double, double);
253int Vect_set_constraint_type(struct Map_info *, int);
254int Vect_set_constraint_field(struct Map_info *, int);
255void Vect_remove_constraints(struct Map_info *);
256int Vect_rewind(struct Map_info *);
257int Vect_close(struct Map_info *);
258void Vect_set_error_handler_io(struct Map_info *, struct Map_info *);
259
260/* Read/write lines, nodes, areas */
261/* Level 1 and 2 */
262int Vect_get_next_line_id(struct Map_info *);
263int Vect_read_next_line(struct Map_info *, struct line_pnts *,
264 struct line_cats *);
265off_t Vect_write_line(struct Map_info *, int, const struct line_pnts *,
266 const struct line_cats *);
267off_t Vect_rewrite_line(struct Map_info *, off_t, int, const struct line_pnts *,
268 const struct line_cats *);
269int Vect_delete_line(struct Map_info *, off_t);
270int Vect_restore_line(struct Map_info *, off_t, off_t);
271
272int Vect_get_num_dblinks(struct Map_info *);
273
274/* Level 2 only */
275int Vect_read_line(struct Map_info *, struct line_pnts *, struct line_cats *,
276 int);
277
278int Vect_line_alive(struct Map_info *, int);
279int Vect_node_alive(struct Map_info *, int);
280int Vect_area_alive(struct Map_info *, int);
281int Vect_isle_alive(struct Map_info *, int);
282int Vect_get_line_nodes(struct Map_info *, int, int *, int *);
283int Vect_get_line_areas(struct Map_info *, int, int *, int *);
284off_t Vect_get_line_offset(struct Map_info *, int);
285
286int Vect_get_node_coor(struct Map_info *, int, double *, double *, double *);
287int Vect_get_node_n_lines(struct Map_info *, int);
288int Vect_get_node_line(struct Map_info *, int, int);
289float Vect_get_node_line_angle(struct Map_info *, int, int);
290
291int Vect_get_area_points(struct Map_info *, int, struct line_pnts *);
292int Vect_get_area_centroid(struct Map_info *, int);
293int Vect_get_area_num_isles(struct Map_info *, int);
294int Vect_get_area_isle(struct Map_info *, int, int);
295double Vect_get_area_perimeter(struct Map_info *, int);
296double Vect_get_area_area(struct Map_info *, int);
297int Vect_get_area_boundaries(struct Map_info *, int, struct ilist *);
298
299int Vect_get_isle_points(struct Map_info *, int, struct line_pnts *);
300int Vect_get_isle_area(struct Map_info *, int);
301int Vect_get_isle_boundaries(struct Map_info *, int, struct ilist *);
302
303int Vect_get_centroid_area(struct Map_info *, int);
304
305/* Level 2 update only */
307int Vect_get_updated_line(struct Map_info *, int);
308off_t Vect_get_updated_line_offset(struct Map_info *, int);
310int Vect_get_updated_node(struct Map_info *, int);
311void Vect_set_updated(struct Map_info *, int);
312void Vect_reset_updated(struct Map_info *);
313
314/* History */
315int Vect_hist_command(struct Map_info *);
316int Vect_hist_write(struct Map_info *, const char *);
317int Vect_hist_copy(struct Map_info *, struct Map_info *);
318void Vect_hist_rewind(struct Map_info *);
319char *Vect_hist_read(char *, int, struct Map_info *);
320
321/* Selecting features */
322int Vect_select_lines_by_box(struct Map_info *, const struct bound_box *, int,
323 struct boxlist *);
324int Vect_select_areas_by_box(struct Map_info *, const struct bound_box *,
325 struct boxlist *);
326int Vect_select_isles_by_box(struct Map_info *, const struct bound_box *,
327 struct boxlist *);
328int Vect_select_nodes_by_box(struct Map_info *, const struct bound_box *,
329 struct ilist *);
330int Vect_find_node(struct Map_info *, double, double, double, double, int);
331int Vect_find_line(struct Map_info *, double, double, double, int, double, int,
332 int);
333int Vect_find_line_list(struct Map_info *, double, double, double, int, double,
334 int, const struct ilist *, struct ilist *);
335int Vect_find_area(struct Map_info *, double, double);
336int Vect_find_island(struct Map_info *, double, double);
337int Vect_select_lines_by_polygon(struct Map_info *, struct line_pnts *, int,
338 struct line_pnts **, int, struct ilist *);
339int Vect_select_areas_by_polygon(struct Map_info *, struct line_pnts *, int,
340 struct line_pnts **, struct ilist *);
341
342/* Analysis */
343int Vect_tin_get_z(struct Map_info *, double, double, double *, double *,
344 double *);
345
346/* int Vect_point_in_islands (struct Map_info *, int, double, double); */
347int Vect_find_poly_centroid(const struct line_pnts *, double *, double *);
348int Vect__intersect_line_with_poly(const struct line_pnts *, double,
349 struct line_pnts *);
350int Vect_get_point_in_area(struct Map_info *, int, double *, double *);
351int Vect_get_point_in_poly(const struct line_pnts *, double *, double *);
352int Vect_get_point_in_poly_isl(const struct line_pnts *,
353 const struct line_pnts **, int, double *,
354 double *);
355int Vect_point_in_area(double, double, struct Map_info *, int,
356 struct bound_box *);
357int Vect_point_in_area_outer_ring(double, double, struct Map_info *, int,
358 struct bound_box *);
359int Vect_point_in_island(double, double, struct Map_info *, int,
360 struct bound_box *);
361int Vect_point_in_poly(double, double, const struct line_pnts *);
362
363/* Cleaning */
364void Vect_break_lines(struct Map_info *, int, struct Map_info *);
365int Vect_break_lines_list(struct Map_info *, struct ilist *, struct ilist *,
366 int, struct Map_info *);
367int Vect_check_line_breaks(struct Map_info *, int, struct Map_info *);
368int Vect_check_line_breaks_list(struct Map_info *, struct ilist *,
369 struct ilist *, int, struct Map_info *);
370int Vect_merge_lines(struct Map_info *, int, int *, struct Map_info *);
371void Vect_break_polygons(struct Map_info *, int, struct Map_info *);
372void Vect_remove_duplicates(struct Map_info *, int, struct Map_info *);
373int Vect_line_check_duplicate(const struct line_pnts *,
374 const struct line_pnts *, int);
375void Vect_snap_lines(struct Map_info *, int, double, struct Map_info *);
376void Vect_snap_lines_list(struct Map_info *, const struct ilist *, double,
377 struct Map_info *);
378int Vect_snap_line(struct Map_info *, struct ilist *, struct line_pnts *,
379 double, int, int *, int *);
380void Vect_remove_dangles(struct Map_info *, int, double, struct Map_info *);
381void Vect_chtype_dangles(struct Map_info *, double, struct Map_info *);
382void Vect_select_dangles(struct Map_info *, int, double, struct ilist *);
383void Vect_remove_bridges(struct Map_info *, struct Map_info *, int *, int *);
384void Vect_chtype_bridges(struct Map_info *, struct Map_info *, int *, int *);
385int Vect_remove_small_areas(struct Map_info *, double, struct Map_info *,
386 double *);
387int Vect_clean_small_angles_at_nodes(struct Map_info *, int, struct Map_info *);
388
389/* Overlay */
390int Vect_overlay_str_to_operator(const char *);
391int Vect_overlay(struct Map_info *, int, struct ilist *, struct ilist *,
392 struct Map_info *, int, struct ilist *, struct ilist *, int,
393 struct Map_info *);
394int Vect_overlay_and(struct Map_info *, int, struct ilist *, struct ilist *,
395 struct Map_info *, int, struct ilist *, struct ilist *,
396 struct Map_info *);
397
398/* Graph */
399void Vect_graph_init(dglGraph_s *, int);
401void Vect_graph_add_edge(dglGraph_s *, int, int, double, int);
402void Vect_graph_set_node_costs(dglGraph_s *, int, double);
403int Vect_graph_shortest_path(dglGraph_s *, int, int, struct ilist *, double *);
404
405/* Network (graph) */
406int Vect_net_build_graph(struct Map_info *, int, int, int, const char *,
407 const char *, const char *, int, int);
408int Vect_net_ttb_build_graph(struct Map_info *, int, int, int, int, int,
409 const char *, const char *, const char *, int,
410 int);
411int Vect_net_shortest_path(struct Map_info *, int, int, struct ilist *,
412 double *);
413int Vect_net_ttb_shortest_path(struct Map_info *, int, int, int, int, int,
414 struct ilist *, double *);
416int Vect_net_get_line_cost(struct Map_info *, int, int, double *);
417int Vect_net_get_node_cost(struct Map_info *, int, double *);
418int Vect_net_nearest_nodes(struct Map_info *, double, double, double, int,
419 double, int *, int *, int *, double *, double *,
420 struct line_pnts *, struct line_pnts *, double *);
421int Vect_net_shortest_path_coor(struct Map_info *, double, double, double,
422 double, double, double, double, double,
423 double *, struct line_pnts *, struct ilist *,
424 struct ilist *, struct line_pnts *,
425 struct line_pnts *, double *, double *);
426int Vect_net_ttb_shortest_path_coor(struct Map_info *, double, double, double,
427 double, double, double, double, double, int,
428 double *, struct line_pnts *,
429 struct ilist *, struct ilist *,
430 struct line_pnts *, struct line_pnts *,
431 double *, double *);
432
433/* Miscellaneous */
434int Vect_topo_dump(struct Map_info *, FILE *);
435double Vect_points_distance(double, double, double, double, double, double,
436 int);
437int Vect_option_to_types(const struct Option *);
438int Vect_copy_map_lines(struct Map_info *, struct Map_info *);
439int Vect_copy_map_lines_field(struct Map_info *, int, struct Map_info *);
440int Vect_copy(const char *, const char *, const char *);
441int Vect_rename(const char *, const char *);
442int Vect_copy_table(struct Map_info *, struct Map_info *, int, int,
443 const char *, int);
444int Vect_copy_table_by_cat_list(struct Map_info *, struct Map_info *, int, int,
445 const char *, int, const struct cat_list *);
446int Vect_copy_table_by_cats(struct Map_info *, struct Map_info *, int, int,
447 const char *, int, int *, int);
448int Vect_copy_tables(struct Map_info *, struct Map_info *, int);
449int Vect_delete(const char *);
450int Vect_segment_intersection(double, double, double, double, double, double,
451 double, double, double, double, double, double,
452 double *, double *, double *, double *, double *,
453 double *, int);
454int Vect_line_intersection(struct line_pnts *, struct line_pnts *,
455 struct bound_box *, struct bound_box *,
456 struct line_pnts ***, struct line_pnts ***, int *,
457 int *, int);
458int Vect_line_intersection2(struct line_pnts *, struct line_pnts *,
459 struct bound_box *, struct bound_box *,
460 struct line_pnts ***, struct line_pnts ***, int *,
461 int *, int);
462int Vect_line_check_intersection(struct line_pnts *, struct line_pnts *, int);
463int Vect_line_check_intersection2(struct line_pnts *, struct line_pnts *, int);
464int Vect_line_get_intersections(struct line_pnts *, struct line_pnts *,
465 struct line_pnts *, int);
467 struct line_pnts *, int);
468char *Vect_subst_var(const char *, struct Map_info *);
469
470/* Custom spatial index */
471void Vect_spatial_index_init(struct spatial_index *, int);
474 const struct bound_box *);
476 const struct bound_box *);
478 const struct bound_box *, struct ilist *);
479
480/* GRASS ASCII vector format */
481int Vect_read_ascii(FILE *, struct Map_info *);
482int Vect_read_ascii_head(FILE *, struct Map_info *);
483int Vect_write_ascii(FILE *, FILE *, struct Map_info *, int, int, int, char *,
484 int, int, int, const struct cat_list *, const char *,
485 const char **, int);
486void Vect_write_ascii_head(FILE *, struct Map_info *);
487
488/* Simple Features */
489SF_FeatureType Vect_sfa_get_line_type(const struct line_pnts *, int, int);
491int Vect_sfa_check_line_type(const struct line_pnts *, int, SF_FeatureType,
492 int);
494char *Vect_sfa_line_geometry_type(const struct line_pnts *, int);
495int Vect_sfa_line_astext(const struct line_pnts *, int, int, int, FILE *);
496int Vect_sfa_is_line_simple(const struct line_pnts *, int, int);
497int Vect_sfa_is_line_closed(const struct line_pnts *, int, int);
499
500/*
501 * Internal functions, MUST NOT be used in modules
502 */
503int Vect_print_header(struct Map_info *);
504void Vect__init_head(struct Map_info *);
505
506/* Open/close/rewind map */
507int Vect_coor_info(struct Map_info *, struct Coor_info *);
508const char *Vect_maptype_info(struct Map_info *);
509int Vect_maptype(struct Map_info *);
510int Vect_open_topo(struct Map_info *, int);
511int Vect_save_topo(struct Map_info *);
512int Vect_open_sidx(struct Map_info *, int);
513int Vect_save_sidx(struct Map_info *);
514int Vect_sidx_dump(struct Map_info *, FILE *);
516int Vect_build_sidx(struct Map_info *);
517int Vect_open_fidx(struct Map_info *, struct Format_info_offset *);
518int Vect_save_fidx(struct Map_info *, struct Format_info_offset *);
519int Vect_fidx_dump(struct Map_info *, FILE *);
520int Vect_save_frmt(struct Map_info *);
521
522int Vect__write_head(struct Map_info *);
523int Vect__read_head(struct Map_info *);
524int V1_open_old_nat(struct Map_info *, int);
525int V1_open_old_ogr(struct Map_info *, int);
526int V1_open_old_pg(struct Map_info *, int);
527int V2_open_old_ogr(struct Map_info *);
528int V2_open_old_pg(struct Map_info *);
529int V1_open_new_nat(struct Map_info *, const char *, int);
530int V1_open_new_ogr(struct Map_info *, const char *, int);
531int V1_open_new_pg(struct Map_info *, const char *, int);
532int V1_rewind_nat(struct Map_info *);
533int V1_rewind_ogr(struct Map_info *);
534int V1_rewind_pg(struct Map_info *);
535int V2_rewind_nat(struct Map_info *);
536int V2_rewind_ogr(struct Map_info *);
537int V2_rewind_pg(struct Map_info *);
538int V1_close_nat(struct Map_info *);
539int V1_close_ogr(struct Map_info *);
540int V1_close_pg(struct Map_info *);
541int V2_close_ogr(struct Map_info *);
542int V2_close_pg(struct Map_info *);
543
544/* Read/write lines (internal use only) */
545int V1_read_line_nat(struct Map_info *, struct line_pnts *, struct line_cats *,
546 off_t);
547int V1_read_line_ogr(struct Map_info *, struct line_pnts *, struct line_cats *,
548 off_t);
549int V1_read_line_pg(struct Map_info *, struct line_pnts *, struct line_cats *,
550 off_t);
551int V2_read_line_nat(struct Map_info *, struct line_pnts *, struct line_cats *,
552 int);
553int V2_read_line_sfa(struct Map_info *, struct line_pnts *, struct line_cats *,
554 int);
555int V2_read_line_pg(struct Map_info *, struct line_pnts *, struct line_cats *,
556 int);
557int V1_read_next_line_nat(struct Map_info *, struct line_pnts *,
558 struct line_cats *);
559int V1_read_next_line_ogr(struct Map_info *, struct line_pnts *,
560 struct line_cats *);
561int V1_read_next_line_pg(struct Map_info *, struct line_pnts *,
562 struct line_cats *);
563int V2_read_next_line_nat(struct Map_info *, struct line_pnts *,
564 struct line_cats *);
565int V2_read_next_line_ogr(struct Map_info *, struct line_pnts *,
566 struct line_cats *);
567int V2_read_next_line_pg(struct Map_info *, struct line_pnts *,
568 struct line_cats *);
569int V1_delete_line_nat(struct Map_info *, off_t);
570int V1_delete_line_ogr(struct Map_info *, off_t);
571int V1_delete_line_pg(struct Map_info *, off_t);
572int V2_delete_line_nat(struct Map_info *, off_t);
573int V2_delete_line_sfa(struct Map_info *, off_t);
574int V2_delete_line_pg(struct Map_info *, off_t);
575int V1_restore_line_nat(struct Map_info *, off_t, off_t);
576int V2_restore_line_nat(struct Map_info *, off_t, off_t);
577off_t V1_write_line_nat(struct Map_info *, int, const struct line_pnts *,
578 const struct line_cats *);
579off_t V1_write_line_ogr(struct Map_info *, int, const struct line_pnts *,
580 const struct line_cats *);
581off_t V1_write_line_pg(struct Map_info *, int, const struct line_pnts *,
582 const struct line_cats *);
583off_t V2_write_line_nat(struct Map_info *, int, const struct line_pnts *,
584 const struct line_cats *);
585off_t V2_write_line_sfa(struct Map_info *, int, const struct line_pnts *,
586 const struct line_cats *);
587off_t V2_write_line_pg(struct Map_info *, int, const struct line_pnts *,
588 const struct line_cats *);
589off_t V1_rewrite_line_nat(struct Map_info *, off_t, int,
590 const struct line_pnts *, const struct line_cats *);
591off_t V1_rewrite_line_ogr(struct Map_info *, off_t, int,
592 const struct line_pnts *, const struct line_cats *);
593off_t V1_rewrite_line_pg(struct Map_info *, off_t, int,
594 const struct line_pnts *, const struct line_cats *);
595off_t V2_rewrite_line_nat(struct Map_info *, off_t, int,
596 const struct line_pnts *, const struct line_cats *);
597off_t V2_rewrite_line_sfa(struct Map_info *, off_t, int,
598 const struct line_pnts *, const struct line_cats *);
599off_t V2_rewrite_line_pg(struct Map_info *, off_t, int,
600 const struct line_pnts *, const struct line_cats *);
601
602/* Build topology */
603int Vect_build_nat(struct Map_info *, int);
604void Vect__build_downgrade(struct Map_info *, int);
605int Vect__build_sfa(struct Map_info *, int);
606int Vect_build_ogr(struct Map_info *, int);
607int Vect_build_pg(struct Map_info *, int);
608int Vect_build_line_area(struct Map_info *, int, int);
609int Vect_isle_find_area(struct Map_info *, int, const struct bound_box *);
610int Vect_attach_isle(struct Map_info *, int, const struct bound_box *);
611int Vect_attach_isles(struct Map_info *, const struct bound_box *);
612int Vect_attach_centroids(struct Map_info *, const struct bound_box *);
613
614/* GEOS support */
615#ifdef HAVE_GEOS
616GEOSGeometry *Vect_read_line_geos(struct Map_info *, int, int *);
617GEOSGeometry *Vect_line_to_geos(const struct line_pnts *, int, int);
621char *Vect_line_to_wkt(const struct line_pnts *, int, bool);
622char *Vect_line_to_wkt2(const struct line_pnts *, int, bool, bool);
623unsigned char *Vect_line_to_wkb(const struct line_pnts *, int, int, size_t *);
624char *Vect_read_area_to_wkt(struct Map_info *, int);
625char *Vect_read_area_to_wkt2(struct Map_info *, int, bool);
626unsigned char *Vect_read_area_to_wkb(struct Map_info *, int, size_t *);
627unsigned char *Vect_read_line_to_wkb(struct Map_info *, struct line_pnts *,
628 struct line_cats *, int, size_t *, int *);
629#endif
630
631/* Raster color tables */
632int Vect_read_colors(const char *, const char *, struct Colors *);
633int Vect_remove_colors(const char *, const char *);
634void Vect_write_colors(const char *, const char *, struct Colors *);
635
636/* Simplified RTree search using an ilist to store rectangle ids */
637int RTreeSearch2(struct RTree *, struct RTree_Rect *, struct ilist *);
638
639#endif /* GRASS_VECTORDEFS_H */
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:353
int V1_open_old_ogr(struct Map_info *, int)
Open existing OGR layer on non-topological level.
Definition open_ogr.c:41
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:54
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
void Vect_reset_dblinks(struct dblinks *)
Reset dblinks structure (number of fields)
Definition field.c:96
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:82
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:304
int Vect_cidx_open(struct Map_info *, int)
Read category index from cidx file if exists.
int Vect_check_input_output_name(const char *, const char *, int)
Check for input and output vector map name.
Definition legal_vname.c:91
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:50
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:280
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
char * Vect_hist_read(char *, int, struct Map_info *)
Reads one line from history file without newline character.
Definition hist.c:90
int Vect_open_fidx(struct Map_info *, struct Format_info_offset *)
Open feature index file.
Definition open_ogr.c:238
int Vect_sidx_dump(struct Map_info *, FILE *)
Dump spatial index to file.
Definition build.c:1317
int Vect_cidx_save(struct Map_info *)
Save category index to binary file (cidx)
char * Vect_subst_var(const char *, struct Map_info *)
Substitute variable in string.
Definition field.c:923
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
char * Vect_read_area_to_wkt2(struct Map_info *, int, bool)
Read vector area and return it as Well Known Text (WKT) unsigned char array.
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:137
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.
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:597
double Vect_line_length(const struct line_pnts *)
Calculate line length, 3D-length in case of 3D vector line.
Definition line.c:575
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_attach_centroids(struct Map_info *, const struct bound_box *)
(Re)Attach centroids in given bounding box to areas
Definition build.c:498
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:536
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
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.
int Vect_coor_info(struct Map_info *, struct Coor_info *)
Update Coor_info structure.
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_open_new_pg(struct Map_info *, const char *, int)
Prepare PostGIS database for creating new feature table (level 1)
Definition open_pg.c:226
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
struct dblinks * Vect_new_dblinks_struct(void)
Create and init new dblinks structure.
Definition field.c:47
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.
char * Vect_line_to_wkt(const struct line_pnts *, int, bool)
Create a Well Known Text (WKT) representation of given feature type from points.
int V1_delete_line_pg(struct Map_info *, off_t)
Deletes feature at the given offset (level 1)
Definition write_pg.c:324
void Vect_write_ascii_head(FILE *, struct Map_info *)
Write data to GRASS ASCII vector format.
Definition ascii.c:970
int Vect_read_dblinks(struct Map_info *)
Read dblinks to existing structure.
Definition field.c:837
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.
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.
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:179
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:1196
int Vect_area_alive(struct Map_info *, int)
Check if area is alive or dead (topological level required)
const char * Vect_get_comment(struct Map_info *)
Get comment or other info string from map header.
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.
int Vect_cidx_get_unique_cats_by_index(struct Map_info *, int, struct ilist *)
Get list of unique categories for given layer index.
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:603
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:97
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:72
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.
int Vect_map_check_dblink(struct Map_info *, int, const char *)
Check if DB connection exists in dblinks structure.
Definition field.c:232
int Vect_map_del_dblink(struct Map_info *, int)
Delete db connection from Map_info structure.
Definition field.c:155
int Vect_net_shortest_path(struct Map_info *, int, int, struct ilist *, double *)
Find shortest path.
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:243
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
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.
int V1_read_next_line_pg(struct Map_info *, struct line_pnts *, struct line_cats *)
Read next feature from PostGIS layer. Skip empty features (level 1 without topology)....
Definition read_pg.c:88
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.
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 *)
Open vector map - PostGIS feature table on topological level.
Definition open_pg.c:166
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
char * Vect_line_to_wkt2(const struct line_pnts *, int, bool, bool)
Create a Well Known Text (WKT) representation of given feature type from points.
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.
dglGraph_s * Vect_net_get_graph(struct Map_info *)
Get graph structure.
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:767
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.
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.
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:413
int Vect_cidx_get_num_types_by_index(struct Map_info *, int)
Get number of feature types for given layer index.
void Vect_graph_add_edge(dglGraph_s *, int, int, double, int)
Add edge to graph.
int Vect_build_pg(struct Map_info *, int)
Build topology for PostGIS layer.
Definition build_pg.c:63
const char * Vect_get_mapset(struct Map_info *)
Get name of mapset where vector map lives.
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
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.
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:61
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)
Read feature from PostGIS layer on topological level.
Definition read_pg.c:328
int Vect_get_area_boundaries(struct Map_info *, int, struct ilist *)
Creates list of boundaries for given area.
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:172
int Vect_tin_get_z(struct Map_info *, double, double, double *, double *, double *)
Calculates z coordinate for point from TIN.
Definition tin.c:31
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)
Deletes feature on topological level (PostGIS interface)
Definition write_pg.c:387
GEOSGeometry * Vect_line_to_geos(const struct line_pnts *, int, int)
Create GEOSGeometry of given type from feature points.
Definition geos.c:137
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.
struct boxlist * Vect_new_boxlist(int)
Creates and initializes a struct boxlist.
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:909
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.
const char * Vect_get_organization(struct Map_info *)
Get organization string from map header.
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:677
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 *)
Overlay 2 vector maps with AND.
Definition overlay.c:101
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)
Intersect 2 lines.
off_t V2_write_line_pg(struct Map_info *, int, const struct line_pnts *, const struct line_cats *)
Writes feature on topological level (PostGIS interface)
Definition write_pg.c:152
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.
const char * Vect_get_name(struct Map_info *)
Get name of vector map.
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:962
int Vect_get_area_points(struct Map_info *, int, struct line_pnts *)
Returns polygon array of points (outer ring) of given area.
int Vect_get_centroid_area(struct Map_info *, int)
Get area id the centroid is within.
Definition level_two.c:430
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:145
const char * Vect_get_date(struct Map_info *)
Get date of digitization from map header.
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
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 *)
Close vector map (PostGIS layer) on topological level (write out fidx file)
Definition close_pg.c:116
int Vect_read_ascii_head(FILE *, struct Map_info *)
Read header of GRASS ASCII vector format.
Definition ascii.c:268
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.
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)
Check if feature is simple.
int Vect_isle_alive(struct Map_info *, int)
Check if isle is alive or dead (topological level required)
struct field_info * Vect_get_field(struct Map_info *, int)
Get information about link to database (by layer number)
Definition field.c:510
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.
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:696
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
struct Map_info * Vect_new_map_struct(void)
Creates and initializes Map_info structure.
Definition map.c:41
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.
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.
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 *)
Read next feature from PostGIS layer on topological level (simple feature access).
Definition read_pg.c:119
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
GEOSCoordSequence * Vect_get_area_points_geos(struct Map_info *, int)
Returns the polygon array of points, i.e. outer ring (shell)
Definition geos.c:411
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:81
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.
const char * Vect_get_finfo_format_info(struct Map_info *)
Get format info as string (relevant only for non-native formats)
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:1014
int V2_delete_line_nat(struct Map_info *, off_t)
Deletes feature at topological level (internal use only)
Definition write_nat.c:290
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:163
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 *)
Get projection zone from map header.
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:869
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:703
int V1_close_nat(struct Map_info *)
Close vector map.
Definition close_nat.c:34
int Vect_save_topo(struct Map_info *)
Save topology file for vector map.
Definition build.c:1009
int Vect_legal_filename(const char *)
Check if output is legal vector name.
Definition legal_vname.c:31
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.
const char * Vect_get_column_types(struct Map_info *, int)
Fetches list of DB column types of vector map attribute table.
Definition dbcolumns.c:99
char * Vect_read_area_to_wkt(struct Map_info *, int)
Read vector area and return it as Well Known Text (WKT) unsigned char array.
int Vect_attach_isle(struct Map_info *, int, const struct bound_box *)
(Re)Attach isle to area
Definition build.c:378
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:167
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:123
const char * Vect_maptype_info(struct Map_info *)
Gets vector map format (as string)
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:247
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.
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:62
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
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.
const char * Vect_get_person(struct Map_info *)
Get user name string who digitized the map from map header.
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:470
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.
int Vect_isle_find_area(struct Map_info *, int, const struct bound_box *)
Find area outside island.
Definition build.c:172
int Vect_cidx_get_num_cats_by_index(struct Map_info *, int)
Get number of categories for given layer index.
int Vect_save_sidx(struct Map_info *)
Save spatial index file for vector map.
Definition build.c:1263
int Vect_topo_dump(struct Map_info *, FILE *)
Dump topology to file.
Definition build.c:1052
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.
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:107
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
GEOSCoordSequence * Vect_get_isle_points_geos(struct Map_info *, int)
Returns the polygon (isle) array of points (inner ring)
Definition geos.c:442
int Vect_cidx_get_num_unique_cats_by_index(struct Map_info *, int)
Get number of unique categories for given layer index.
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.
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
const char * Vect_get_map_name(struct Map_info *)
Get map name from map header.
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:348
const char * Vect_get_finfo_geometry_type(struct Map_info *)
Get geometry type as string (relevant only for non-native formats)
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:1079
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:47
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.
struct field_info * Vect_get_dblink(struct Map_info *, int)
Get information about link to database.
Definition field.c:470
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:47
struct line_cats * Vect_new_cats_struct(void)
Creates and initializes line_cats structure.
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
struct ilist * Vect_new_list(void)
Creates and initializes a struct ilist.
int Vect_line_check_duplicate(const struct line_pnts *, const struct line_pnts *, int)
Check for duplicate lines.
struct cat_list * Vect_new_cat_list(void)
Allocate memory for cat_list structure.
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
const char * Vect_get_full_name(struct Map_info *)
Get fully qualified name of vector map.
GEOSGeometry * Vect_read_area_geos(struct Map_info *, int)
Read vector area and stores it as GEOSGeometry instance (polygon)
Definition geos.c:84
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:30
int Vect_save_fidx(struct Map_info *, struct Format_info_offset *)
Save feature index file for vector map.
Definition build_ogr.c:109
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:200
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 *)
int Vect_build(struct Map_info *)
Build topology for vector map.
Definition build.c:579
void Vect_destroy_field_info(struct field_info *)
Free a struct field_info and all memory associated with it.
Definition field.c:628
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:33
int Vect_merge_lines(struct Map_info *, int, int *, struct Map_info *)
Merge lines or boundaries in vector map.
Definition merge_lines.c:78
int Vect_build_partial(struct Map_info *, int)
Build partial topology for vector map.
Definition build.c:857
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.
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
const struct Format_info * Vect_get_finfo(struct Map_info *)
Get header info for non-native formats.
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.
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.
const char * Vect_get_finfo_dsn_name(struct Map_info *)
Get datasource name (relevant only for non-native formats)
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:381
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:78
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
int Vect_get_area_centroid(struct Map_info *, int)
Returns centroid id for given area.
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.
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:115
int V1_close_pg(struct Map_info *)
Close vector map (PostGIS layer) on level 1.
Definition close_pg.c:39
const char * Vect_get_proj_name(struct Map_info *)
Query cartographic projection name of pointer to Map_info structure.
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:68
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
int Vect_rewind(struct Map_info *)
Rewind vector map to cause reads to start at beginning.
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:169
int V1_read_line_pg(struct Map_info *, struct line_pnts *, struct line_cats *, off_t)
Read feature from PostGIS layer at given offset (level 1 without topology)
Definition read_pg.c:245
int Vect_fidx_dump(struct Map_info *, FILE *)
Dump feature index to file.
Definition build_sfa.c:742
int Vect_get_node_line(struct Map_info *, int, int)
Get line id for node line index.
Definition level_two.c:397
int Vect_attach_isles(struct Map_info *, const struct bound_box *)
(Re)Attach isles in given bounding box to areas
Definition build.c:420
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
struct varray * Vect_new_varray(int)
Create new struct varray and allocate space for given number of items.
Definition array.c:38
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:1146
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.
int Vect_net_ttb_build_graph(struct Map_info *, int, int, int, int, int, const char *, const char *, const char *, int, int)
Build network graph with turntable.
Definition net_build.c:48
int V2_open_old_ogr(struct Map_info *)
Open existing OGR layer on topological level.
Definition open_ogr.c:138
int Vect_line_check_intersection2(struct line_pnts *, struct line_pnts *, int)
Check if 2 lines intersect.
int Vect_set_constraint_type(struct Map_info *, int)
Set constraint type.
Definition constraint.c:106
char * Vect_get_finfo_layer_name(struct Map_info *)
Get layer name (relevant only for non-native formats)
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
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:347
struct line_pnts * Vect_new_line_struct(void)
Creates and initializes a line_pnts structure.
Definition line.c:45
struct cat_list * Vect_cats_set_constraint(struct Map_info *, int, char *, char *)
Set category constraints using 'where' or 'cats' option and layer number.
int RTreeSearch2(struct RTree *, struct RTree_Rect *, struct ilist *)
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.
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:83
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
const char * Vect_get_map_date(struct Map_info *)
Get date when the source map was originally produced from map header.
void Vect_set_updated(struct Map_info *, int)
Enable/disable maintenance of list of updated lines/nodes.
Definition level_two.c:455
int Vect_append_point(struct line_pnts *, double, double, double)
Appends one point to the end of a line.
Definition line.c:148
char * Vect_sfa_line_geometry_type(const struct line_pnts *, int)
Get geometry type (string)
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.
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 *)
Rewrites feature at topological level (PostGIS interface, internal use only)
Definition write_pg.c:229
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:181
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:982
int Vect_get_built(struct Map_info *)
Return current highest built level (part)
Definition build.c:753
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)
Open vector map - PostGIS feature table on non-topological level.
Definition open_pg.c:73
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:566
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)
off_t V1_write_line_pg(struct Map_info *, int, const struct line_pnts *, const struct line_cats *)
Writes feature on level 1 (PostGIS interface)
Definition write_pg.c:109
off_t V1_rewrite_line_pg(struct Map_info *, off_t, int, const struct line_pnts *, const struct line_cats *)
Rewrites feature at the given offset (level 1) (PostGIS interface, internal use only)
Definition write_pg.c:190
SF_FeatureType
Simple feature types.
int plus_t
plus_t size
Definition dig_structs.h:39
2D/3D raster map header (used also for region)
Definition gis.h:446
Definition gis.h:692
Coor file info.
Data structure used for building pseudo-topology.
Non-native format info (currently only OGR is implemented)
Vector map info.
Structure that stores option information.
Definition gis.h:563
Definition rtree.h:123
Bounding box.
Definition dig_structs.h:62
List of bounding boxes with id.
Category list.
Layer (old: field) information.
List of integers.
Definition gis.h:715
Feature category info.
Feature geometry info - coordinates.
Spatial index info.
Vector array.
struct GEOSCoordSeq_t GEOSCoordSequence
Definition vector.h:10
struct GEOSGeom_t GEOSGeometry
Definition vector.h:9