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