vectorlib.dox 25 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222
  1. /*! \page vectorlib GRASS Vector Library
  2. by GRASS Development Team (http://grass.osgeo.org)
  3. \par Table of contents
  4. - \ref vlibBackground
  5. - \ref vlibIntro
  6. - \ref vlibVectorMap
  7. - \ref vlibVectorLevels
  8. - \ref vlibCategoriesLayers
  9. - \ref vlibAttributes
  10. - \ref vlibGeometry
  11. - \ref vlibFeatureTypes
  12. - \ref vlibStructures
  13. - \ref vlibFunc
  14. - \ref vlibAuthors
  15. - \ref vlibReferences
  16. - \ref vlibSeealso
  17. \par Subpages
  18. - \subpage vlibs
  19. - \subpage vlibFormat
  20. - \subpage vlibTopology
  21. - \subpage vlibSpatialIndex
  22. - \subpage vlibAscii
  23. - \subpage vlibOgr
  24. - \subpage vlibTin
  25. - \subpage veditlib
  26. - \subpage dglib
  27. - \subpage netalib
  28. \section vlibBackground Background
  29. Generally, the vector data model is used to describe geographic
  30. phenomena which may be represented by geometric entities like
  31. <em>points</em>, <em>lines</em>, and <em>areas</em>. The GRASS vector
  32. data model includes the description of <em>topology</em>, where
  33. besides the coordinates describing the location of the primitives
  34. (points, lines, boundaries, centroids, faces, kernels, and volumes),
  35. their spatial relations are also stored. In general, topological GIS
  36. requires a data structure where the common boundary between two
  37. adjacent areas is stored as a single line, simplifying the vector data
  38. maintenance.
  39. \section vlibIntro Introduction
  40. The GRASS 6/7 vector format is very similar to the previous GRASS 4.x
  41. (5.0/5.3) vector format.
  42. This description covers the new GRASS 6/7 vector library architecture.
  43. This new architecture overcomes the vector limitations of GRASS
  44. 4.x-5.4.x by extending the vector support with attributes stored in
  45. the external relational databases, and by new 3D capabilities. Besides
  46. internal file based storage the geometry may alternatively be stored
  47. in a PostGIS database (accessible via OGR interface). This enables
  48. users to maintain large data sets with simultaneous write
  49. access. External GIS formats such as SHAPE-files may be used directly,
  50. without requiring format conversion. All vector data accessed through
  51. the OGR interface have only pseudo-topology and only a limited subset
  52. of vector operations can be performed.
  53. The current implementation includes:
  54. - <em>multi-layer</em>: features in one vector map may represent more
  55. layers and may be linked to more external tables (see \ref
  56. vlibCategoriesLayers)
  57. - <em>2D and 3D vector geometry</em> with full topology support for 2D and
  58. partial topology support for 3D (see \ref vlibTopoManagement)
  59. - <em>multi-format</em>: external data formats supported (SHAPE-file,
  60. OGR sources etc.)
  61. - <em>portability</em>: platform independent internal format, read- and
  62. writable on 32bit, 64bit etc. computer architectures
  63. - integrated \ref dglib - support for vector network analysis
  64. - <em>spatial index</em>: based on R-tree method for fast vector
  65. geometry access (see \ref vlibSpidx)
  66. - <em>multi-attribute</em>: attributes saved in external Relational
  67. Database Management System (RDBMS) connected through DBMI
  68. library and drivers (see \ref vlibAttributes)
  69. \section vlibVectorMap Vector map definition (native format)
  70. GRASS vector maps are stored in an <em>arc-node</em> representation,
  71. consisting of curves called arcs. An arc is stored as a series of
  72. x,y,z coordinate pairs. The two endpoints of an arc are called
  73. <em>nodes</em>. Two consecutive x,y,z pairs define an arc segment. The
  74. user specifies the type of input to GRASS; GRASS doesn't decide. GRASS
  75. supports feature type definition which allows for multiple types to
  76. co-exist in the same map. A centroid is assigned to the area it is
  77. within/inside (geometrically). An area is defined by one or more
  78. boundaries that form a losed ring. The category to which an area belongs
  79. is stored with the centroid. Such centroids are stored in the same binary
  80. 'coor' file with other primitives. Each element may have none, one or
  81. more categories (cats). More cats can be distinguished by field number
  82. (field, called "layer" at user level). Single and multi-category
  83. support on modules level are implemented. The z coordinate is optional
  84. and both 2D and 3D files may be written.
  85. The following <em>vector feature types (primitives)</em> are defined
  86. by the vector library (and holds by the coor file; see also \ref
  87. vlibFeatureTypes):
  88. - point: a point (2D or 3D) - GV_POINT
  89. - line: a directed sequence of connected vertices with two endpoints
  90. called nodes (2D or 3D) - GV_LINE
  91. - boundary: the border line to describe an area (2D only) - GV_BOUNDARY
  92. - centroid: a point within a closed boundary(ies) to describe an area
  93. (2D only) - GV_CENTROID
  94. - face: a 3D boundary (not implemented yet) - GV_FACE
  95. - kernel: a 3D centroid in a volume - GV_KERNEL
  96. From vector feature types mentioned above are derived:
  97. - area: the topological composition of a closed ring of boundary(ies)
  98. and optionally a centroid (2D only, 3D coordinates supported but
  99. ignored) - GV_AREA
  100. - isle: an area within area, not touching the boundaries of the outer
  101. area (2D only, 3D coordinates supported but ignored)
  102. - volume: a 3D corpus, the topological composition of faces and
  103. kernel (not implemented yet) - GV_VOLUME
  104. - hole: a volume within volume, 3D equivalent to isle within area (not
  105. implemented yet)
  106. Note that all lines and boundaries can consist of multiple segments.
  107. Area topology also holds information about isles. <em>Isles</em> are
  108. located within an area, not touching the boundaries of the outer
  109. area. Isles consist of one or more areas and are used internally by
  110. the vector library to maintain correct topology of areas.
  111. \section vlibVectorLevels Levels of read access
  112. There are two levels of read access to the vector data:
  113. - <i>Level One</i> provides simple access to the vector feature
  114. information. There is no access to topology information at this
  115. level.
  116. - <i>Level Two</i> provides full access to all the information
  117. including topology information. This level requires more from the
  118. programmer, more memory, and longer startup time. Without this level,
  119. areas are not available.
  120. The level of access is retured by Vect_open_old().
  121. <b>Example for sequential read access without topology:</b>
  122. \code
  123. int main
  124. {
  125. int type, ltype;
  126. struct Map_info Map;
  127. struct line_pnts *Points;
  128. struct line_cat *Cats;
  129. const char *name, *mapset;
  130. /* set open level to 1: no topology */
  131. Vect_set_open_level(1);
  132. if (Vect_open_old(&Map, name, mapset) < 1)
  133. G_fatal_error(_("Failed to open vector '%s'"), name);
  134. /* rewind vector file */
  135. Vect_rewind(&Map);
  136. Points = Vect_new_line_struct();
  137. Cats = Vect_new_cats_struct();
  138. while ((ltype = Vect_read_next_line(&Map, Points, Cats) > 0) {
  139. /* check for desired type */
  140. if (!(ltype & type))
  141. continue;
  142. /* process the feature */
  143. }
  144. exit(EXIT_SUCCESS);
  145. }
  146. \endcode
  147. <b>Example for random read access with topology:</b>
  148. \code
  149. int main
  150. {
  151. int line, nlines, type, ltype;
  152. struct Map_info Map;
  153. struct line_pnts *Points;
  154. struct line_cat *Cats;
  155. const char *name, *mapset;
  156. if (Vect_open_old(&Map, name, mapset) < 2)
  157. G_fatal_error(_("Failed to open vector '%s'"), name);
  158. Points = Vect_new_line_struct();
  159. Cats = Vect_new_cats_struct();
  160. nlines = Vect_get_num_lines(&Map);
  161. for (line = 1; line <= nlines; line++) {
  162. /* check for desired type */
  163. if (!(Vect_get_line_type(&Map, line) & type))
  164. continue;
  165. Vect_read_line(&Map, points, cats, line);
  166. /* process the feature */
  167. }
  168. exit(EXIT_SUCCESS);
  169. }
  170. \endcode
  171. <b>Example for working with areas (requires topology):</b>
  172. \code
  173. int main
  174. {
  175. int area, nareas;
  176. struct Map_info Map;
  177. struct line_cat *Cats;
  178. const char *name, *mapset;
  179. if (Vect_open_old(&Map, name, mapset) < 2)
  180. G_fatal_error(_("Failed to open vector '%s'"), name);
  181. Points = Vect_new_line_struct();
  182. Cats = Vect_new_cats_struct();
  183. nareas = Vect_get_num_areas(&Map);
  184. for (area = 1; area <= nareas; area++) {
  185. /* process the area */
  186. /* example: get area categories */
  187. if (Vect_get_area_cats(&Map, area, Cats) == -1)
  188. G_message(_("No catagory available for area %d"), area);
  189. }
  190. exit(EXIT_SUCCESS);
  191. }
  192. \endcode
  193. <em>Note:</em> Higher level of access are planned, so when checking
  194. success return codes for a particular level of access (when calling
  195. Vect_open_old() for example), the programmer should use >= instead of
  196. == for compatibility with future releases.
  197. An existing vector map can be opened for reading by Vect_open_old().
  198. A new vector map can be created (or open for writing) by
  199. Vect_open_new(). Vect_open_old() attempts to open a vector map at the
  200. highest possible level of access. It will return the number of the
  201. level at which the map was opened. Vect_open_new() always opens at level 1
  202. only. If you require that a vector map be opened at a lower level
  203. (e.g. one), you can call the routine <tt>Vect_set_open_level(1)</tt>;
  204. Vect_open_old() will then either open at level one or fail. If you
  205. instead require the highest level access possible, you should not use
  206. Vect_set_open_level(), but instead check the return value of
  207. Vect_open_old() to make sure it is greater than or equal to the lowest
  208. level at which you need access. This allows for future levels to work
  209. without need for module change.
  210. \section vlibCategoriesLayers Categories and Layers
  211. <i>Note: "layer" was called "field" in earlier version.</i>
  212. In GRASS, a "category" or "category number" is a vector feature ID
  213. used to link geometry to attributes which are stored in one or several
  214. (external) database table(s). This category number is stored into the
  215. vector geometry as well as a "cat" column (integer type) in each
  216. attribute database table. The category number is used to lookup an
  217. attribute assigned to a vector object. At user level, category numbers
  218. can be assigned to vector objects with the <tt>v.category</tt> command.
  219. In order to assign multiple attributes in different tables to vector
  220. objects, each map can hold multiple category numbers. This is achieved
  221. by assigning more than one "layer" to the map (<tt>v.db.connect</tt>
  222. command). The layer number determines which table to be used for
  223. attribute queries. For example, a cadastrial vector area map can be
  224. assigned on layer 1 to an attribute table containing landuse
  225. descriptions which are maintained by department A while layer 2 is
  226. assigned to an attribute table containing owner descriptions which are
  227. maintained by department B.
  228. Each vector feature inside a vector map has zero, one or more
  229. &lt;layer,category&gt; tuple(s). A user can (but not must) create
  230. attribute tables which are referenced by the layer, and rows which are
  231. essentially referenced by the &lt;layer,category&gt; pair.
  232. %Categories start with 1 (category '0' is allowed for OGR
  233. layers). %Categories do not have to be continuous.
  234. Information about categories holds \ref line_cats data structure.
  235. \section vlibAttributes Attributes
  236. The old GRASS 4.x 'dig_cats' files are not used any more and vectors'
  237. attributes are stored in external database. Connection with the
  238. database is done through drivers based on \ref dbmilib. Records in a
  239. table are linked to vector entities by layer and category number. The
  240. layer identifies table and the category identifies record. I.e., for
  241. any unique combination
  242. \verbatim
  243. map+mapset+layer+category
  244. \endverbatim
  245. there exists one unique combination
  246. \verbatim
  247. driver+database+table+row
  248. \endverbatim
  249. The general DBMI settings are defined in the '$MAPSET/VAR' text file
  250. (maintained with <tt>db.connect</tt> command at user level).
  251. \section vlibStructures Vector library data structures
  252. All data structure used by the vector library are defined in
  253. include/vect/dig_structs.h. See the list bellow:
  254. Major:
  255. - \ref Map_info
  256. - \ref Plus_head
  257. - \ref dig_head
  258. Supporting:
  259. - \ref bound_box
  260. - \ref gvfile
  261. - \ref Port_info
  262. - \ref Coor_info
  263. - \ref spatial_index
  264. Format-related:
  265. - \ref Format_info
  266. - \ref Format_info_ogr
  267. DB-related:
  268. - \ref field_info
  269. - \ref dblinks
  270. Geometry-related:
  271. - \ref line_pnts
  272. Category-related:
  273. - \ref line_cats
  274. - \ref cat_list
  275. - \ref Cat_index
  276. Topology-related:
  277. - \ref P_node
  278. - \ref P_line
  279. - \ref P_area
  280. - \ref P_isle
  281. Misc:
  282. - \ref ilist
  283. - \ref varray
  284. Obsolete:
  285. - \ref site_att
  286. - \ref recycle
  287. \section vlibGeometry Vector library feature geometry
  288. \subsection vlibFeatureTypes Feature types
  289. Feature types are defined in include/vect_dig_defines.h, see the list bellow:
  290. - GV_POINT
  291. - GV_LINE
  292. - GV_BOUNDARY
  293. - GV_CENTROID
  294. - GV_FACE
  295. - GV_KERNEL
  296. - GV_AREA
  297. - GV_VOLUME
  298. - GV_POINTS (GV_POINT | GV_CENTROID)
  299. - GV_LINES (GV_LINE | GV_BOUNDARY)
  300. Face and kernel are 3D equivalents of boundary and centroid, but there
  301. is no support (yet) for 3D topology (volumes). Faces are used in a
  302. couple of modules including NVIZ to visualize 3D buildings and other
  303. volumetric figures.
  304. \section vlibFunc List of vector library functions
  305. The vector library provides the GRASS programmer with routines to
  306. process vector data. The routines in the vector library are presented
  307. in functional groupings, rather than in alphabetical order. The order
  308. of presentation will, it is hoped, provide better understanding of how
  309. the library is to be used, as well as show the interrelationships
  310. among the various routines. Note that a good way to understand how to
  311. use these routines is to look at the source code for GRASS modules
  312. which use them.
  313. Note: All routines start with one of following prefixes Vect_, V1_,
  314. V2_ or dig_. To avoid name conficts, programmers should not create
  315. variables or routines in their own modules which use this prefix.
  316. The Vect_*() functions are the programmer's API for GRASS vector
  317. programming. The programmer should use only routines with this prefix.
  318. \section vlibArea Vector area functions
  319. - Vect_get_area_area()
  320. - Vect_get_area_boundaries()
  321. - Vect_get_area_centroid()
  322. - Vect_get_area_isle()
  323. - Vect_get_area_num_isles()
  324. - Vect_area_perimeter()
  325. - Vect_get_area_points()
  326. - Vect_get_isle_area()
  327. - Vect_get_isle_boundaries()
  328. - Vect_get_isle_points()
  329. - Vect_point_in_area()
  330. \section vlibArray Vector array functions
  331. - Vect_new_varray()
  332. - Vect_set_varray_from_cat_list()
  333. - Vect_set_varray_from_cat_string()
  334. - Vect_set_varray_from_db()
  335. \section vlibBox Vector bounding box functions
  336. - Vect_box_copy()
  337. - Vect_box_clip()
  338. - Vect_box_extend()
  339. - Vect_box_overlap()
  340. - Vect_get_area_box()
  341. - Vect_get_isle_box()
  342. - Vect_get_line_box()
  343. - Vect_get_map_box()
  344. - Vect_point_in_box()
  345. - Vect_region_box()
  346. \section vlibBreakLines Vector break lines functions
  347. - Vect_break_lines()
  348. - Vect_break_lines_list()
  349. \section vlibBreakPolygons Vector break polygons functions
  350. - Vect_break_polygons()
  351. \section vlibBridges Vector bridges functions
  352. - Vect_chtype_bridges()
  353. - Vect_remove_bridges()
  354. \section vlibBuffer Vector buffer functions
  355. - Vect_line_buffer()
  356. - Vect_line_parallel()
  357. \section vlibBuild Vector build functions
  358. - Vect_build()
  359. - Vect_build_partial()
  360. - Vect_get_built()
  361. - Vect_build_sidx_from_topo()
  362. - Vect_build_sidx()
  363. - Vect_save_sidx()
  364. - Vect_save_topo()
  365. - Vect_sidx_dump()
  366. - Vect_topo_dump()
  367. \subsection vlibBuildNat Vector build (native) functions
  368. - Vect_attach_centroids()
  369. - Vect_attach_isle()
  370. - Vect_attach_isles()
  371. - Vect_build_line_area()
  372. - Vect_build_nat()
  373. - Vect_isle_find_area()
  374. \subsection vlibBuildOgr Vector build (OGR) functions
  375. - Vect_build_ogr()
  376. \section vlibCats Vector categories functions
  377. - Vect_array_to_cat_list()
  378. - Vect_cat_del()
  379. - Vect_cat_get()
  380. - Vect_cat_in_array()
  381. - Vect_cat_in_cat_list()
  382. - Vect_cat_set()
  383. - Vect_destroy_cat_list()
  384. - Vect_destroy_cats_struct()
  385. - Vect_field_cat_del()
  386. - Vect_get_area_cats()
  387. - Vect_get_area_cat()
  388. - Vect_get_line_cat()
  389. - Vect_new_cat_list()
  390. - Vect_new_cats_struct()
  391. - Vect_reset_cats()
  392. - Vect_str_to_cat_list()
  393. \section vlibCindex Vector category index functions
  394. (note: vector layer is historically called "field")
  395. - Vect_cidx_dump()
  396. - Vect_cidx_find_next()
  397. - Vect_cidx_find_all()
  398. - Vect_cidx_get_cat_by_index()
  399. - Vect_cidx_get_field_index()
  400. - Vect_cidx_get_field_number()
  401. - Vect_cidx_get_num_cats_by_index()
  402. - Vect_cidx_get_num_fields()
  403. - Vect_cidx_get_num_types_by_index()
  404. - Vect_cidx_get_num_unique_cats_by_index()
  405. - Vect_cidx_get_type_count()
  406. - Vect_cidx_get_type_count_by_index()
  407. - Vect_cidx_open()
  408. - Vect_cidx_save()
  409. - Vect_set_category_index_update()
  410. \section vlibCleanNodes Vector clean nodes functions
  411. - Vect_clean_small_angles_at_nodes()
  412. \section vlibClose Vector close functions
  413. - Vect_close()
  414. \section vlibConstraint Vector constraint functions
  415. - Vect_get_constraint_box()
  416. - Vect_remove_constraints()
  417. - Vect_set_constraint_region()
  418. - Vect_set_constraint_type()
  419. \section vlibDangles Vector dangles functions
  420. - Vect_chtype_dangles()
  421. - Vect_remove_dangles()
  422. - Vect_select_dangles()
  423. \section vlibDbcolumns Vector dbcolumns functions
  424. - Vect_get_column_names()
  425. - Vect_get_column_names_types()
  426. - Vect_get_column_types()
  427. \section vlibError Vector error functions
  428. - Vect_get_fatal_error()
  429. - Vect_set_fatal_error()
  430. \section vlibField Vector field functions
  431. (note: vector layer is historically called "field")
  432. - Vect_add_dblink()
  433. - Vect_check_dblink()
  434. - Vect_default_field_info()
  435. - Vect_get_dblink()
  436. - Vect_get_field()
  437. - Vect_get_field_by_name()
  438. - Vect_map_add_dblink()
  439. - Vect_map_check_dblink()
  440. - Vect_map_del_dblink()
  441. - Vect_new_dblinks_struct()
  442. - Vect_read_dblinks()
  443. - Vect_reset_dblinks()
  444. - Vect_set_db_updated()
  445. - Vect_subst_var()
  446. - Vect_write_dblinks()
  447. \section vlibFind Vector find functions
  448. - Vect_find_area()
  449. - Vect_find_island()
  450. - Vect_find_line()
  451. - Vect_find_line_list()
  452. - Vect_find_node()
  453. \section vlibGraph Vector graph functions
  454. - Vect_graph_add_edge()
  455. - Vect_graph_build()
  456. - Vect_graph_init()
  457. - Vect_graph_set_node_costs()
  458. - Vect_graph_shortest_path()
  459. \section vlibHeader Vector header functions
  460. - Vect_get_comment()
  461. - Vect_get_constraint_box()
  462. - Vect_get_date()
  463. - Vect_get_full_name()
  464. - Vect_get_map_date()
  465. - Vect_get_map_name()
  466. - Vect_get_mapset()
  467. - Vect_get_name()
  468. - Vect_get_organization()
  469. - Vect_get_person()
  470. - Vect_get_proj()
  471. - Vect_get_proj_name()
  472. - Vect_get_scale()
  473. - Vect_get_thresh()
  474. - Vect_get_zone()
  475. - Vect_is_3d()
  476. - Vect_print_header()
  477. - Vect_read_header()
  478. - Vect_set_comment()
  479. - Vect_set_date()
  480. - Vect_set_map_date()
  481. - Vect_set_map_name()
  482. - Vect_set_organization()
  483. - Vect_set_person()
  484. - Vect_set_scale()
  485. - Vect_set_thresh()
  486. - Vect_set_zone()
  487. - Vect_write_header()
  488. \section vlibHist Vector history functions
  489. - Vect_hist_command()
  490. - Vect_hist_copy()
  491. - Vect_hist_read()
  492. - Vect_hist_rewind()
  493. - Vect_hist_write()
  494. \section vlibInitHead Vector header functions
  495. - Vect_copy_head_data()
  496. \section vlibIntersect Vector intersection functions
  497. - Vect_line_check_intersection()
  498. - Vect_line_intersection()
  499. - Vect_segment_intersection()
  500. \section vlibLegalVname Vector valid map name functions
  501. - Vect_check_input_output_name()
  502. - Vect_legal_filename()
  503. \section vlibLevel Vector level functions
  504. - Vect_level()
  505. \section vlibLevelTwo Vector topological (level 2) functions
  506. - Vect_get_centroid_area()
  507. - Vect_get_line_areas()
  508. - Vect_get_line_nodes()
  509. - Vect_get_node_coor()
  510. - Vect_get_node_line()
  511. - Vect_get_node_line_angle()
  512. - Vect_get_node_n_lines()
  513. - Vect_get_num_areas()
  514. - Vect_get_num_dblinks()
  515. - Vect_get_num_faces()
  516. - Vect_get_num_islands()
  517. - Vect_get_num_lines()
  518. - Vect_get_num_nodes()
  519. - Vect_get_num_primitives()
  520. - Vect_get_num_updated_lines()
  521. - Vect_get_num_updated_nodes()
  522. - Vect_get_updated_line()
  523. - Vect_get_updated_node()
  524. - Vect_set_release_support()
  525. \section vlibLine Vector feature functions
  526. - Vect_append_point()
  527. - Vect_append_points()
  528. - Vect_copy_pnts_to_xyz()
  529. - Vect_copy_xyz_to_pnts()
  530. - Vect_destroy_line_struct()
  531. - Vect_get_num_line_points()
  532. - Vect_line_box()
  533. - Vect_line_delete_point()
  534. - Vect_line_distance()
  535. - Vect_line_geodesic_length()
  536. - Vect_line_get_point()
  537. - Vect_line_insert_point()
  538. - Vect_line_length()
  539. - Vect_line_prune()
  540. - Vect_line_prune_thresh()
  541. - Vect_line_reverse()
  542. - Vect_line_segment()
  543. - Vect_new_line_struct()
  544. - Vect_point_on_line()
  545. - Vect_points_distance()
  546. - Vect_reset_line()
  547. \section vlibList Vector list functions
  548. - Vect_destroy_list()
  549. - Vect_list_append()
  550. - Vect_list_append_list()
  551. - Vect_list_delete()
  552. - Vect_list_delete_list()
  553. - Vect_new_list()
  554. - Vect_reset_list()
  555. - Vect_val_in_list()
  556. - Vect_destroy_boxlist()
  557. - Vect_boxlist_append()
  558. - Vect_boxlist_append_boxlist()
  559. - Vect_boxlist_delete()
  560. - Vect_boxlist_delete_boxlist()
  561. - Vect_new_boxlist()
  562. - Vect_reset_boxlist()
  563. - Vect_val_in_boxlist()
  564. \section vlibMap Vector map functions
  565. - Vect_copy()
  566. - Vect_copy_map_lines()
  567. - Vect_copy_table()
  568. - Vect_copy_table_by_cats()
  569. - Vect_copy_tables()
  570. - Vect_delete()
  571. - Vect_rename()
  572. \section vlibMergeLines Vector merge line functions
  573. - Vect_merge_lines()
  574. \section vlibNet Vector network functions
  575. - Vect_net_build_graph()
  576. - Vect_net_get_line_cost()
  577. - Vect_net_get_node_cost()
  578. - Vect_net_nearest_nodes()
  579. - Vect_net_shortest_path()
  580. - Vect_net_shortest_path_coor()
  581. \section vlibOpen Vector open functions
  582. - Vect_coor_info()
  583. - Vect_maptype_info()
  584. - Vect_maptype()
  585. - Vect_open_new()
  586. - Vect__open_old()
  587. - Vect_open_old()
  588. - Vect_open_old_head()
  589. - Vect_open_sidx()
  590. - Vect_open_topo()
  591. - Vect_open_update()
  592. - Vect_open_update_head()
  593. - Vect_set_open_level()
  594. \section vlibOverlay Vector overlay functions
  595. - Vect_overlay()
  596. - Vect_overlay_str_to_operator()
  597. \section vlibVpoly Vector polygon functions
  598. - Vect_find_poly_centroid()
  599. - Vect_get_point_in_area()
  600. - Vect_point_in_area_outer_ring()
  601. - Vect_point_in_island()
  602. - Vect_get_point_in_poly()
  603. - Vect_get_point_in_poly_isl()
  604. \section vlibRead Vector read functions
  605. \subsection vlibread1_2 Level 1 and 2
  606. - Vect_read_next_line()
  607. \subsection vlibRead2 Level 2 only
  608. - Vect_area_alive()
  609. - Vect_isle_alive()
  610. - Vect_line_alive()
  611. - Vect_node_alive()
  612. - Vect_read_line()
  613. \section vlibRemoveAreas Vector remove areas functions
  614. - Vect_remove_small_areas()
  615. \section vlibRemoveDuplicates Vector remove duplicates functions
  616. - Vect_line_check_duplicate()
  617. - Vect_remove_duplicates()
  618. \section vlibRewind Vector rewind functions
  619. - Vect_rewind()
  620. \section vlibSelect Vector select functions
  621. - Vect_select_areas_by_box()
  622. - Vect_select_areas_by_polygon()
  623. - Vect_select_isles_by_box()
  624. - Vect_select_lines_by_box()
  625. - Vect_select_lines_by_polygon()
  626. - Vect_select_nodes_by_box()
  627. \section vlibSindex Vector spatial index functions
  628. - Vect_spatial_index_add_item()
  629. - Vect_spatial_index_del_item()
  630. - Vect_spatial_index_destroy()
  631. - Vect_spatial_index_init()
  632. - Vect_spatial_index_select()
  633. \section vlibSnap Vector snap functions
  634. - Vect_snap_lines()
  635. - Vect_snap_lines_list()
  636. \section vlibTinFuns Vector TIN functions
  637. - Vect_tin_get_z()
  638. \section vlibType Vector type option functions
  639. - Vect_option_to_types()
  640. \section vlibDelete Vector delete functions
  641. \subsection vlibDelete2 Level 2 only
  642. - Vect_delete_line()
  643. \section vlibWrite Vector write functions
  644. \subsection vlibWrite1_2 Level 1 and 2
  645. - Vect_write_line()
  646. \subsection vlibWrite2 Level 2 only
  647. - Vect_rewrite_line()
  648. \subsection vlibAsciiFn Vector ASCII functions
  649. - Vect_read_ascii()
  650. - Vect_read_ascii_head()
  651. - Vect_write_ascii()
  652. - Vect_write_ascii_head()
  653. \subsection vlibSFAFn Vector Simple Feature Access API
  654. Functions from GRASS Simple Feature API (in progress, incomplete).
  655. - Vect_sfa_get_line_type()
  656. - Vect_sfa_check_line_type()
  657. - Vect_sfa_line_dimension()
  658. - Vect_sfa_line_geometry_type()
  659. - Vect_sfa_line_astext()
  660. - Vect_sfa_is_line_simple()
  661. - Vect_sfa_is_line_closed()
  662. \section vlibGeosFn Vector GEOS functions
  663. Note: The functions are available only if GRASS is compiled with
  664. <tt>--with-geos</tt> switch.
  665. - Vect_read_line_geos()
  666. - Vect_read_area_geos()
  667. - Vect_line_to_geos()
  668. - Vect_get_area_points_geos()
  669. - Vect_get_isle_points_geos()
  670. \section vlibPgFn Vector PostgreSQL/PostGIS functions
  671. Note: The functions are available only if GRASS is compiled with
  672. <tt>--with-postgres</tt> switch.
  673. - Vect_open_topo_pg()
  674. - Vect_build_pg()
  675. (For internal use only)
  676. - V1_open_old_pg(), V2_open_old_pg() called by Vect_open_old()
  677. - V1_open_new_pg(), V2_open_new_pg() called by Vect_open_new()
  678. - V1_rewind_pg(), V2_rewind_pg() called by Vect_rewind()
  679. - V1_close_pg(), V2_close_pg() called by Vect_close()
  680. - V1_read_line_pg(), V2_read_line_pg() called by Vect_read_line()
  681. - V1_read_next_line_pg(), V2_read_next_line_pg() called by Vect_read_next_line()
  682. - V1_delete_line_pg(), V2_delete_line_sfa() called by Vect_delete_line()
  683. - V1_write_line_pg(), V2_write_line_pg() called by Vect_write_line()
  684. - V1_rewrite_line_pg(), V2_rewrite_line_sfa() called by Vect_rewrite_line()
  685. - V2_write_area_pg(), see <tt>v.out.postgis</tt> for implementation issues
  686. \section vlibAuthors Authors
  687. - Radim Blazek (vector architecture) <radim.blazek gmail.com>
  688. - Roberto Micarelli (DGLib) <mi.ro iol.it>
  689. Updates for GRASS 7:
  690. - Markus Metz (file-based spatial index, vector topology)
  691. - Martin Landa (GEOS support, direct OGR read access, PostgreSQL/PostGIS support) <landa.martin gmail.com>
  692. \section vlibReferences References
  693. Text based on: R. Blazek, M. Neteler, and R. Micarelli. The new GRASS 5.1
  694. vector architecture. In Open source GIS - GRASS users conference 2002,
  695. Trento, Italy, 11-13 September 2002. University of Trento, Italy, 2002.
  696. <a href="http://www.ing.unitn.it/~grass/conferences/GRASS2002/proceedings/proceedings/pdfs/Blazek_Radim.pdf">http://www.ing.unitn.it/~grass/conferences/GRASS2002/proceedings/proceedings/pdfs/Blazek_Radim.pdf</a>
  697. \section vlibSeealso See Also
  698. - \ref dglib
  699. - \ref dbmilib
  700. - \ref veditlib
  701. */