vectorlib.dox 25 KB

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