Vect.h 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395
  1. #ifndef GRASS_VECT_H
  2. #define GRASS_VECT_H
  3. #include <grass/gis.h>
  4. #include <grass/vect/digit.h>
  5. /* --- ANSI prototypes for the lib/vector/Vlib functions --- */
  6. /* "Public" functions, for use in modules */
  7. /* Basic structures */
  8. /* Points (line) */
  9. struct line_pnts *Vect_new_line_struct (void);
  10. int Vect_append_point (struct line_pnts *, double, double, double);
  11. int Vect_append_points (struct line_pnts *, struct line_pnts *, int);
  12. int Vect_line_insert_point (struct line_pnts *, int, double, double, double);
  13. int Vect_line_delete_point (struct line_pnts *, int);
  14. int Vect_line_prune (struct line_pnts *);
  15. int Vect_line_prune_thresh (struct line_pnts *, double);
  16. void Vect_line_reverse (struct line_pnts *);
  17. int Vect_copy_xyz_to_pnts (struct line_pnts *, double *, double *, double *, int);
  18. int Vect_copy_pnts_to_xyz (struct line_pnts *, double *, double *, double *, int *);
  19. int Vect_reset_line (struct line_pnts *);
  20. int Vect_destroy_line_struct (struct line_pnts *);
  21. int Vect_point_on_line ( struct line_pnts *, double, double *, double *, double *, double *, double *);
  22. int Vect_line_segment ( struct line_pnts *InPoints, double start, double end, struct line_pnts *OutPoints );
  23. double Vect_line_length ( struct line_pnts *);
  24. double Vect_area_perimeter ( struct line_pnts * );
  25. double Vect_line_geodesic_length ( struct line_pnts *);
  26. int Vect_line_distance ( struct line_pnts *, double, double, double, int,
  27. double *, double *, double *, double *, double *, double *);
  28. int Vect_line_box ( struct line_pnts *, BOUND_BOX * );
  29. void Vect_line_parallel ( struct line_pnts *, double, double, int, struct line_pnts *);
  30. void Vect_line_buffer ( struct line_pnts *, double, double, struct line_pnts * );
  31. /* Categories */
  32. struct line_cats *Vect_new_cats_struct (void);
  33. int Vect_cat_set (struct line_cats *, int, int);
  34. int Vect_cat_get (struct line_cats *, int, int *);
  35. int Vect_cat_del (struct line_cats *, int);
  36. int Vect_field_cat_del (struct line_cats *, int, int);
  37. int Vect_cat_in_array (int, int *, int);
  38. int Vect_reset_cats (struct line_cats *);
  39. int Vect_destroy_cats_struct (struct line_cats *);
  40. int Vect_get_area_cats( struct Map_info *, int, struct line_cats *);
  41. int Vect_get_area_cat ( struct Map_info *, int, int);
  42. int Vect_get_line_cat ( struct Map_info *, int, int );
  43. /* List of categories */
  44. struct cat_list *Vect_new_cat_list (void);
  45. int Vect_str_to_cat_list (char *, struct cat_list *);
  46. int Vect_array_to_cat_list (int *, int, struct cat_list *);
  47. int Vect_cat_in_cat_list (int, struct cat_list *);
  48. int Vect_destroy_cat_list (struct cat_list *);
  49. /* Vector array */
  50. VARRAY *Vect_new_varray (int size);
  51. int Vect_set_varray_from_cat_string ( struct Map_info *, int, char *, int, int, VARRAY *);
  52. int Vect_set_varray_from_cat_list ( struct Map_info *, int, struct cat_list *, int, int, VARRAY *);
  53. int Vect_set_varray_from_db ( struct Map_info *, int, char *, int, int, VARRAY *);
  54. /* DB connection - field info */
  55. struct dblinks *Vect_new_dblinks_struct ( void );
  56. void Vect_reset_dblinks ( struct dblinks *p );
  57. int Vect_add_dblink ( struct dblinks *p, int number, char *name, char *table, char *key,
  58. char *db, char *driver );
  59. int Vect_check_dblink ( struct dblinks *p, int field );
  60. int Vect_map_add_dblink ( struct Map_info *, int number, char *name, char *table, char *key,
  61. char *db, char *driver );
  62. int Vect_map_del_dblink ( struct Map_info *, int number );
  63. int Vect_map_check_dblink ( struct Map_info *, int field);
  64. int Vect_read_dblinks ( struct Map_info * );
  65. int Vect_write_dblinks ( struct Map_info * );
  66. struct field_info *Vect_default_field_info ( struct Map_info *Map, int field,
  67. char *field_name, int type );
  68. struct field_info *Vect_get_dblink ( struct Map_info *Map, int link );
  69. struct field_info *Vect_get_field ( struct Map_info *Map, int field );
  70. void Vect_set_db_updated ( struct Map_info *Map );
  71. char *Vect_get_column_names (struct Map_info *Map, int field);
  72. char *Vect_get_column_types (struct Map_info *Map, int field);
  73. char *Vect_get_column_names_types (struct Map_info *Map, int field);
  74. /* List of FID (feature ID) (integers) */
  75. struct ilist *Vect_new_list (void);
  76. int Vect_list_append ( struct ilist *, int);
  77. int Vect_list_append_list ( struct ilist *, struct ilist *);
  78. int Vect_list_delete ( struct ilist *, int);
  79. int Vect_list_delete_list ( struct ilist *, struct ilist *);
  80. int Vect_val_in_list ( struct ilist *, int);
  81. int Vect_reset_list (struct ilist *);
  82. int Vect_destroy_list (struct ilist *);
  83. /* Bounding box (MBR) */
  84. int Vect_point_in_box (double, double, double, BOUND_BOX *);
  85. int Vect_box_overlap (BOUND_BOX *, BOUND_BOX *);
  86. int Vect_box_copy (BOUND_BOX *, BOUND_BOX *);
  87. int Vect_box_extend (BOUND_BOX *, BOUND_BOX *);
  88. int Vect_box_clip (double *, double *, double *, double *, BOUND_BOX *);
  89. int Vect_region_box ( struct Cell_head *, BOUND_BOX * );
  90. /* Spatial index */
  91. void Vect_spatial_index_init ( SPATIAL_INDEX * );
  92. void Vect_spatial_index_destroy ( SPATIAL_INDEX * );
  93. void Vect_spatial_index_add_item ( SPATIAL_INDEX *, int, BOUND_BOX * );
  94. void Vect_spatial_index_del_item ( SPATIAL_INDEX *, int );
  95. int Vect_spatial_index_select ( SPATIAL_INDEX *, BOUND_BOX *, struct ilist * );
  96. /* Category index */
  97. int Vect_cidx_get_num_fields ( struct Map_info *);
  98. int Vect_cidx_get_field_number ( struct Map_info *, int);
  99. int Vect_cidx_get_field_index ( struct Map_info *, int);
  100. int Vect_cidx_get_num_unique_cats_by_index ( struct Map_info *, int);
  101. int Vect_cidx_get_num_cats_by_index ( struct Map_info *, int);
  102. int Vect_cidx_get_num_types_by_index ( struct Map_info *, int);
  103. int Vect_cidx_get_type_count_by_index ( struct Map_info *, int, int, int *, int *);
  104. int Vect_cidx_get_type_count ( struct Map_info *, int, int);
  105. int Vect_cidx_get_cat_by_index ( struct Map_info *, int, int, int *, int *, int *);
  106. int Vect_cidx_find_next ( struct Map_info *, int, int, int, int, int *, int *);
  107. void Vect_cidx_find_all ( struct Map_info *, int, int, int, struct ilist * );
  108. int Vect_cidx_dump ( struct Map_info *, FILE *);
  109. int Vect_cidx_save ( struct Map_info *);
  110. int Vect_cidx_open ( struct Map_info *, int);
  111. /* Set/get Map header info */
  112. int Vect_read_header (struct Map_info *);
  113. int Vect_write_header (struct Map_info *);
  114. char *Vect_get_name (struct Map_info *);
  115. char *Vect_get_mapset (struct Map_info *);
  116. char *Vect_get_full_name (struct Map_info *);
  117. int Vect_is_3d (struct Map_info *);
  118. int Vect_set_organization (struct Map_info *, char *);
  119. char *Vect_get_organization (struct Map_info *);
  120. int Vect_set_date (struct Map_info *, char *);
  121. char *Vect_get_date (struct Map_info *);
  122. int Vect_set_person (struct Map_info *, char *);
  123. char *Vect_get_person (struct Map_info *);
  124. int Vect_set_map_name (struct Map_info *, char *);
  125. char *Vect_get_map_name (struct Map_info *);
  126. int Vect_set_map_date (struct Map_info *, char *);
  127. char *Vect_get_map_date (struct Map_info *);
  128. int Vect_set_comment (struct Map_info *, char *);
  129. char *Vect_get_comment (struct Map_info *);
  130. int Vect_set_scale (struct Map_info *, int );
  131. int Vect_get_scale (struct Map_info *);
  132. int Vect_set_zone (struct Map_info *, int );
  133. int Vect_get_zone (struct Map_info *);
  134. int Vect_get_proj (struct Map_info *);
  135. char *Vect_get_proj_name (struct Map_info *);
  136. int Vect_set_thresh (struct Map_info *, double );
  137. double Vect_get_thresh (struct Map_info *);
  138. int Vect_get_constraint_box ( struct Map_info *, BOUND_BOX *);
  139. /* Get map level 2 informations */
  140. int Vect_level (struct Map_info *);
  141. int Vect_get_num_nodes (struct Map_info *);
  142. int Vect_get_num_primitives (struct Map_info *, int);
  143. int Vect_get_num_lines (struct Map_info *);
  144. int Vect_get_num_areas (struct Map_info *);
  145. int Vect_get_num_faces (struct Map_info *);
  146. int Vect_get_num_islands (struct Map_info *);
  147. int Vect_get_line_box (struct Map_info *, int, BOUND_BOX *);
  148. int Vect_get_area_box (struct Map_info *, int, BOUND_BOX *);
  149. int Vect_get_isle_box (struct Map_info *, int, BOUND_BOX *);
  150. int Vect_get_map_box (struct Map_info *, BOUND_BOX *);
  151. int V__map_overlap (struct Map_info *, double, double, double, double);
  152. void Vect_set_release_support ( struct Map_info * );
  153. void Vect_set_category_index_update ( struct Map_info * );
  154. /* Set/get fatal error behaviour */
  155. int Vect_set_fatal_error (int);
  156. int Vect_get_fatal_error ();
  157. /* Open/close/rewind/set_constraints for map */
  158. int Vect_check_input_output_name(char *, char *, int);
  159. int Vect_legal_filename(char *);
  160. int Vect_set_open_level (int);
  161. int Vect_open_old (struct Map_info *, char *, char *);
  162. int Vect_open_old_head (struct Map_info *, char *, char *);
  163. int Vect_open_new (struct Map_info *, char *, int);
  164. int Vect_open_update (struct Map_info *, char *, char *);
  165. int Vect_open_update_head ( struct Map_info *, char *, char *);
  166. int Vect_copy_head_data (struct Map_info *, struct Map_info *);
  167. int Vect_build ( struct Map_info *, FILE *);
  168. int Vect_get_built ( struct Map_info *Map );
  169. int Vect_build_partial ( struct Map_info *, int, FILE *);
  170. int Vect_set_constraint_region (struct Map_info *, double, double, double, double, double, double);
  171. int Vect_set_constraint_type (struct Map_info *, int);
  172. int Vect_remove_constraints (struct Map_info *);
  173. int Vect_rewind (struct Map_info *);
  174. int Vect_close (struct Map_info *);
  175. /* Read/write lines, nodes, areas */
  176. /* Level 1 and 2 */
  177. int Vect_read_next_line (struct Map_info *, struct line_pnts *, struct line_cats *);
  178. long Vect_write_line (struct Map_info *, int type, struct line_pnts *, struct line_cats *);
  179. int Vect_get_num_dblinks (struct Map_info *map);
  180. /* Level 2 only */
  181. int Vect_read_line (struct Map_info *, struct line_pnts *, struct line_cats *, int);
  182. int Vect_rewrite_line (struct Map_info *, int, int, struct line_pnts *, struct line_cats *);
  183. int Vect_delete_line (struct Map_info *, int);
  184. int Vect_line_alive ( struct Map_info *, int);
  185. int Vect_node_alive ( struct Map_info *, int);
  186. int Vect_area_alive ( struct Map_info *, int);
  187. int Vect_isle_alive ( struct Map_info *, int);
  188. int Vect_get_line_nodes (struct Map_info *, int, int *, int *);
  189. int Vect_get_line_areas (struct Map_info *, int, int *, int *);
  190. int Vect_get_node_coor (struct Map_info *, int, double *, double *, double *);
  191. int Vect_get_node_n_lines (struct Map_info *, int );
  192. int Vect_get_node_line (struct Map_info *, int, int );
  193. float Vect_get_node_line_angle (struct Map_info *, int, int );
  194. int Vect_get_area_points (struct Map_info *, int, struct line_pnts *);
  195. int Vect_get_area_centroid ( struct Map_info *, int );
  196. int Vect_get_area_num_isles ( struct Map_info *, int );
  197. int Vect_get_area_isle ( struct Map_info *, int, int );
  198. double Vect_get_area_area ( struct Map_info *, int );
  199. int Vect_get_area_boundaries ( struct Map_info *, int, struct ilist * );
  200. int Vect_get_isle_points (struct Map_info *, int, struct line_pnts *);
  201. int Vect_get_isle_area ( struct Map_info *, int );
  202. int Vect_get_isle_boundaries ( struct Map_info *, int, struct ilist * );
  203. int Vect_get_centroid_area ( struct Map_info *, int );
  204. /* Level 2 update only */
  205. int Vect_get_num_updated_lines (struct Map_info *map);
  206. int Vect_get_updated_line (struct Map_info *map, int idx);
  207. int Vect_get_num_updated_nodes (struct Map_info *map);
  208. int Vect_get_updated_node (struct Map_info *map, int idx);
  209. /* History */
  210. int Vect_hist_command ( struct Map_info *Map );
  211. int Vect_hist_write ( struct Map_info *Map, char *str );
  212. int Vect_hist_copy ( struct Map_info *In, struct Map_info *Out );
  213. void Vect_hist_rewind ( struct Map_info *Map );
  214. char *Vect_hist_read ( char *s, int size, struct Map_info *Map );
  215. /* Selecting features */
  216. int Vect_select_lines_by_box (struct Map_info *, BOUND_BOX *, int, struct ilist *);
  217. int Vect_select_areas_by_box (struct Map_info *, BOUND_BOX *, struct ilist *);
  218. int Vect_select_isles_by_box (struct Map_info *, BOUND_BOX *, struct ilist *);
  219. int Vect_select_nodes_by_box (struct Map_info *, BOUND_BOX *, struct ilist *);
  220. int Vect_find_node (struct Map_info *, double, double, double, double, int);
  221. int Vect_find_line (struct Map_info *, double, double, double, int, double, int, int);
  222. int Vect_find_line_list (struct Map_info *, double, double, double, int, double, int,
  223. struct ilist *, struct ilist *);
  224. int Vect_find_area (struct Map_info *, double, double);
  225. int Vect_find_island (struct Map_info *, double, double);
  226. int Vect_select_lines_by_polygon ( struct Map_info *, struct line_pnts *, int, struct line_pnts **,
  227. int, struct ilist *);
  228. int Vect_select_areas_by_polygon ( struct Map_info *, struct line_pnts *, int, struct line_pnts **,
  229. struct ilist *);
  230. /* Analysis */
  231. int Vect_point_in_area (struct Map_info *, int, double, double);
  232. int Vect_tin_get_z (struct Map_info *, double, double, double *, double *, double *);
  233. int Vect_get_point_in_area (struct Map_info *, int, double *, double *);
  234. /* int Vect_point_in_islands (struct Map_info *, int, double, double); */
  235. int Vect_find_poly_centroid (struct line_pnts *, double *, double *);
  236. int Vect_get_point_in_poly_isl (struct line_pnts *, struct line_pnts **, int, double *, double *);
  237. int Vect__intersect_line_with_poly (struct line_pnts *, double, struct line_pnts *);
  238. int Vect_get_point_in_poly (struct line_pnts *, double *, double *);
  239. int Vect_point_in_poly ( double, double, struct line_pnts *);
  240. int Vect_point_in_area_outer_ring ( double, double, struct Map_info *, int);
  241. int Vect_point_in_island ( double, double, struct Map_info *, int);
  242. /* Cleaning */
  243. void Vect_break_lines ( struct Map_info *, int, struct Map_info *, FILE * );
  244. int Vect_break_lines_list (struct Map_info *, struct ilist *, int, struct Map_info *, FILE *);
  245. void Vect_break_polygons ( struct Map_info *, int, struct Map_info *, FILE * );
  246. void Vect_remove_duplicates ( struct Map_info *, int, struct Map_info *, FILE * );
  247. void Vect_snap_lines ( struct Map_info *, int, double, struct Map_info *, FILE * );
  248. void Vect_snap_lines_list (struct Map_info *, struct ilist *, double, struct Map_info *, FILE *);
  249. void Vect_remove_dangles ( struct Map_info *, int, double, struct Map_info *, FILE * );
  250. void Vect_chtype_dangles ( struct Map_info *, double, struct Map_info *, FILE * );
  251. void Vect_select_dangles (struct Map_info *, int, double, FILE *, struct ilist *);
  252. void Vect_remove_bridges ( struct Map_info *, struct Map_info *, FILE * );
  253. void Vect_chtype_bridges ( struct Map_info *, struct Map_info *, FILE * );
  254. int Vect_remove_small_areas ( struct Map_info *, double, struct Map_info *, FILE *, double * );
  255. int Vect_clean_small_angles_at_nodes ( struct Map_info *Map, int type, struct Map_info *Err,
  256. FILE *msgout);
  257. /* Overlay */
  258. int Vect_overlay_str_to_operator ( char * );
  259. int Vect_overlay ( struct Map_info *, int, struct ilist *, struct ilist *,
  260. struct Map_info *, int, struct ilist *, struct ilist *,
  261. int, struct Map_info *);
  262. /* Graph */
  263. void Vect_graph_init ( GRAPH *, int);
  264. void Vect_graph_build ( GRAPH *);
  265. void Vect_graph_add_edge ( GRAPH *, int, int, double, int);
  266. void Vect_graph_set_node_costs ( GRAPH *, int, double);
  267. int Vect_graph_shortest_path ( GRAPH *, int, int, struct ilist *, double * );
  268. /* Network (graph) */
  269. int Vect_net_build_graph ( struct Map_info *, int, int, int, char *, char *, char *, int, int);
  270. int Vect_net_shortest_path ( struct Map_info *, int, int, struct ilist *, double *);
  271. int Vect_net_get_line_cost ( struct Map_info *, int, int, double *);
  272. int Vect_net_get_node_cost ( struct Map_info *, int, double *);
  273. int Vect_net_nearest_nodes ( struct Map_info *, double, double, double, int, double, int *, int *, int *,
  274. double *, double *, struct line_pnts *, struct line_pnts *, double*);
  275. int Vect_net_shortest_path_coor ( struct Map_info *, double, double, double, double, double, double,
  276. double, double, double *, struct line_pnts *,
  277. struct ilist *, struct line_pnts *, struct line_pnts *,
  278. double *, double * );
  279. /* Miscellaneous */
  280. int Vect_topo_dump ( struct Map_info *, FILE *);
  281. double Vect_points_distance ( double, double, double, double, double, double, int);
  282. int Vect_option_to_types (struct Option *);
  283. int Vect_copy_map_lines ( struct Map_info *, struct Map_info * );
  284. int Vect_copy ( char *, char *, char *, FILE * );
  285. int Vect_rename ( char *, char *, FILE * );
  286. int Vect_copy_table ( struct Map_info *, struct Map_info *, int, int, char *, int );
  287. int Vect_copy_table_by_cats ( struct Map_info *, struct Map_info *, int, int, char *, int, int*, int );
  288. int Vect_copy_tables ( struct Map_info *, struct Map_info *, int );
  289. int Vect_delete ( char *map );
  290. int Vect_segment_intersection ( double, double, double, double, double, double,
  291. double, double, double, double, double, double,
  292. double *, double *, double *, double *, double *, double *,
  293. int);
  294. int Vect_line_intersection ( struct line_pnts *, struct line_pnts *,
  295. struct line_pnts ***, struct line_pnts ***,
  296. int *, int *, int );
  297. int Vect_line_check_intersection ( struct line_pnts *, struct line_pnts *, int );
  298. char *Vect_subst_var ( char *str, struct Map_info *Map);
  299. /* Internal functions, MUST NOT be used in modules */
  300. int Vect_print_header (struct Map_info *);
  301. int Vect__init_head (struct Map_info *);
  302. /* Open/close/rewind map */
  303. int Vect_coor_info ( struct Map_info *, struct Coor_info *);
  304. char *Vect_maptype_info ( struct Map_info *);
  305. int Vect_open_topo (struct Map_info *, int);
  306. int Vect_save_topo ( struct Map_info *);
  307. int Vect_open_spatial_index (struct Map_info *);
  308. int Vect_save_spatial_index ( struct Map_info *);
  309. int Vect_spatial_index_dump ( struct Map_info *, FILE * );
  310. int Vect_build_sidx_from_topo ( struct Map_info *, FILE * );
  311. int Vect_build_spatial_index ( struct Map_info *, FILE * );
  312. int Vect__write_head (struct Map_info *);
  313. int Vect__read_head (struct Map_info *);
  314. int V1_open_old_nat (struct Map_info *, int);
  315. int V1_open_old_ogr (struct Map_info *, int);
  316. int V2_open_old_ogr (struct Map_info *);
  317. int V1_open_new_nat (struct Map_info *, char *, int);
  318. int V1_rewind_nat (struct Map_info *);
  319. int V1_rewind_ogr (struct Map_info *);
  320. int V2_rewind_nat (struct Map_info *);
  321. int V2_rewind_ogr (struct Map_info *);
  322. int V1_close_nat (struct Map_info *);
  323. int V1_close_ogr (struct Map_info *);
  324. int V2_close_ogr (struct Map_info *);
  325. /* Read/write lines */
  326. int V1_read_line_nat (struct Map_info *, struct line_pnts *, struct line_cats *, long);
  327. int V1_read_next_line (struct Map_info *, struct line_pnts *, struct line_cats *);
  328. int V1_read_next_line_nat (struct Map_info *, struct line_pnts *, struct line_cats *);
  329. int V1_read_next_line_ogr (struct Map_info *, struct line_pnts *, struct line_cats *);
  330. int V2_read_line_nat (struct Map_info *, struct line_pnts *, struct line_cats *, int);
  331. int V2_read_line_ogr (struct Map_info *, struct line_pnts *, struct line_cats *, int);
  332. int V2_read_next_line (struct Map_info *, struct line_pnts *, struct line_cats *);
  333. int V2_read_next_line_nat (struct Map_info *, struct line_pnts *, struct line_cats *);
  334. int V2_read_next_line_ogr (struct Map_info *, struct line_pnts *, struct line_cats *);
  335. int V1_delete_line (struct Map_info *, long);
  336. int V2_delete_line (struct Map_info *, int);
  337. int V1_delete_line_nat (struct Map_info *, long);
  338. int V2_delete_line_nat (struct Map_info *, int);
  339. long V1_write_line_nat (struct Map_info *, int type, struct line_pnts *, struct line_cats *);
  340. long V2_write_line_nat (struct Map_info *, int type, struct line_pnts *, struct line_cats *);
  341. long V1_write_line_ogr (struct Map_info *, int type, struct line_pnts *, struct line_cats *);
  342. long V1_rewrite_line (struct Map_info *, long offset, int type, struct line_pnts *, struct line_cats *);
  343. long V1_rewrite_line_nat (struct Map_info *, long offset, int type, struct line_pnts *, struct line_cats *);
  344. int V2_rewrite_line_nat (struct Map_info *, int line, int type, struct line_pnts *, struct line_cats *);
  345. long V1_rewrite_line_ogr (struct Map_info *, long offset, int type, struct line_pnts *, struct line_cats *);
  346. /* Miscellaneous */
  347. int Vect_build_nat ( struct Map_info *, int, FILE *);
  348. int Vect_build_ogr ( struct Map_info *, int, FILE *);
  349. int Vect_build_line_area ( struct Map_info *, int, int);
  350. int Vect_isle_find_area ( struct Map_info *, int);
  351. int Vect_attach_isle ( struct Map_info *, int);
  352. int Vect_attach_isles ( struct Map_info *, BOUND_BOX *);
  353. int Vect_attach_centroids ( struct Map_info *, BOUND_BOX *);
  354. #endif