1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222 |
- /*! \page vectorlib GRASS Vector Library
- by GRASS Development Team (http://grass.osgeo.org)
- \par Table of contents
- - \ref vlibBackground
- - \ref vlibIntro
- - \ref vlibVectorMap
- - \ref vlibVectorLevels
- - \ref vlibCategoriesLayers
- - \ref vlibAttributes
- - \ref vlibGeometry
- - \ref vlibFeatureTypes
- - \ref vlibStructures
- - \ref vlibFunc
- - \ref vlibAuthors
- - \ref vlibReferences
- - \ref vlibSeealso
- \par Subpages
- - \subpage vlibs
- - \subpage vlibFormat
- - \subpage vlibTopology
- - \subpage vlibSpatialIndex
- - \subpage vlibAscii
- - \subpage vlibOgr
- - \subpage vlibTin
- - \subpage veditlib
- - \subpage dglib
- - \subpage netalib
- \section vlibBackground Background
- Generally, the vector data model is used to describe geographic
- phenomena which may be represented by geometric entities like
- <em>points</em>, <em>lines</em>, and <em>areas</em>. The GRASS vector
- data model includes the description of <em>topology</em>, where
- besides the coordinates describing the location of the primitives
- (points, lines, boundaries, centroids, faces, kernels, and volumes),
- their spatial relations are also stored. In general, topological GIS
- requires a data structure where the common boundary between two
- adjacent areas is stored as a single line, simplifying the vector data
- maintenance.
- \section vlibIntro Introduction
- The GRASS 6/7 vector format is very similar to the previous GRASS 4.x
- (5.0/5.3) vector format.
- This description covers the new GRASS 6/7 vector library architecture.
- This new architecture overcomes the vector limitations of GRASS
- 4.x-5.4.x by extending the vector support with attributes stored in
- the external relational databases, and by new 3D capabilities. Besides
- internal file based storage the geometry may alternatively be stored
- in a PostGIS database (accessible via OGR interface). This enables
- users to maintain large data sets with simultaneous write
- access. External GIS formats such as SHAPE-files may be used directly,
- without requiring format conversion. All vector data accessed through
- the OGR interface have only pseudo-topology and only a limited subset
- of vector operations can be performed.
- The current implementation includes:
- - <em>multi-layer</em>: features in one vector map may represent more
- layers and may be linked to more external tables (see \ref
- vlibCategoriesLayers)
- - <em>2D and 3D vector geometry</em> with full topology support for 2D and
- partial topology support for 3D (see \ref vlibTopoManagement)
- - <em>multi-format</em>: external data formats supported (SHAPE-file,
- OGR sources etc.)
- - <em>portability</em>: platform independent internal format, read- and
- writable on 32bit, 64bit etc. computer architectures
- - integrated \ref dglib - support for vector network analysis
- - <em>spatial index</em>: based on R-tree method for fast vector
- geometry access (see \ref vlibSpidx)
- - <em>multi-attribute</em>: attributes saved in external Relational
- Database Management System (RDBMS) connected through DBMI
- library and drivers (see \ref vlibAttributes)
- \section vlibVectorMap Vector map definition (native format)
- GRASS vector maps are stored in an <em>arc-node</em> representation,
- consisting of curves called arcs. An arc is stored as a series of
- x,y,z coordinate pairs. The two endpoints of an arc are called
- <em>nodes</em>. Two consecutive x,y,z pairs define an arc segment. The
- user specifies the type of input to GRASS; GRASS doesn't decide. GRASS
- supports feature type definition which allows for multiple types to
- co-exist in the same map. A centroid is assigned to the area it is
- within/inside (geometrically). An area is defined by one or more
- boundaries that form a losed ring. The category to which an area belongs
- is stored with the centroid. Such centroids are stored in the same binary
- 'coor' file with other primitives. Each element may have none, one or
- more categories (cats). More cats can be distinguished by field number
- (field, called "layer" at user level). Single and multi-category
- support on modules level are implemented. The z coordinate is optional
- and both 2D and 3D files may be written.
- The following <em>vector feature types (primitives)</em> are defined
- by the vector library (and holds by the coor file; see also \ref
- vlibFeatureTypes):
- - point: a point (2D or 3D) - GV_POINT
- - line: a directed sequence of connected vertices with two endpoints
- called nodes (2D or 3D) - GV_LINE
- - boundary: the border line to describe an area (2D only) - GV_BOUNDARY
- - centroid: a point within a closed boundary(ies) to describe an area
- (2D only) - GV_CENTROID
- - face: a 3D boundary (not implemented yet) - GV_FACE
- - kernel: a 3D centroid in a volume - GV_KERNEL
- From vector feature types mentioned above are derived:
- - area: the topological composition of a closed ring of boundary(ies)
- and optionally a centroid (2D only, 3D coordinates supported but
- ignored) - GV_AREA
- - isle: an area within area, not touching the boundaries of the outer
- area (2D only, 3D coordinates supported but ignored)
- - volume: a 3D corpus, the topological composition of faces and
- kernel (not implemented yet) - GV_VOLUME
- - hole: a volume within volume, 3D equivalent to isle within area (not
- implemented yet)
- Note that all lines and boundaries can consist of multiple segments.
- Area topology also holds information about isles. <em>Isles</em> are
- located within an area, not touching the boundaries of the outer
- area. Isles consist of one or more areas and are used internally by
- the vector library to maintain correct topology of areas.
- \section vlibVectorLevels Levels of read access
- There are two levels of read access to the vector data:
- - <i>Level One</i> provides simple access to the vector feature
- information. There is no access to topology information at this
- level.
- - <i>Level Two</i> provides full access to all the information
- including topology information. This level requires more from the
- programmer, more memory, and longer startup time. Without this level,
- areas are not available.
- The level of access is retured by Vect_open_old().
- <b>Example for sequential read access without topology:</b>
- \code
- int main
- {
- int type, ltype;
- struct Map_info Map;
- struct line_pnts *Points;
- struct line_cat *Cats;
- const char *name, *mapset;
- /* set open level to 1: no topology */
- Vect_set_open_level(1);
- if (Vect_open_old(&Map, name, mapset) < 1)
- G_fatal_error(_("Failed to open vector '%s'"), name);
- /* rewind vector file */
- Vect_rewind(&Map);
-
- Points = Vect_new_line_struct();
- Cats = Vect_new_cats_struct();
- while ((ltype = Vect_read_next_line(&Map, Points, Cats) > 0) {
-
- /* check for desired type */
- if (!(ltype & type))
- continue;
- /* process the feature */
- }
- exit(EXIT_SUCCESS);
- }
- \endcode
- <b>Example for random read access with topology:</b>
- \code
- int main
- {
- int line, nlines, type, ltype;
- struct Map_info Map;
- struct line_pnts *Points;
- struct line_cat *Cats;
- const char *name, *mapset;
- if (Vect_open_old(&Map, name, mapset) < 2)
- G_fatal_error(_("Failed to open vector '%s'"), name);
- Points = Vect_new_line_struct();
- Cats = Vect_new_cats_struct();
-
- nlines = Vect_get_num_lines(&Map);
- for (line = 1; line <= nlines; line++) {
-
- /* check for desired type */
- if (!(Vect_get_line_type(&Map, line) & type))
- continue;
- Vect_read_line(&Map, points, cats, line);
- /* process the feature */
- }
-
- exit(EXIT_SUCCESS);
- }
- \endcode
- <b>Example for working with areas (requires topology):</b>
- \code
- int main
- {
- int area, nareas;
- struct Map_info Map;
- struct line_cat *Cats;
- const char *name, *mapset;
- if (Vect_open_old(&Map, name, mapset) < 2)
- G_fatal_error(_("Failed to open vector '%s'"), name);
- Points = Vect_new_line_struct();
- Cats = Vect_new_cats_struct();
-
- nareas = Vect_get_num_areas(&Map);
- for (area = 1; area <= nareas; area++) {
- /* process the area */
- /* example: get area categories */
- if (Vect_get_area_cats(&Map, area, Cats) == -1)
- G_message(_("No catagory available for area %d"), area);
- }
-
- exit(EXIT_SUCCESS);
- }
- \endcode
- <em>Note:</em> Higher level of access are planned, so when checking
- success return codes for a particular level of access (when calling
- Vect_open_old() for example), the programmer should use >= instead of
- == for compatibility with future releases.
- An existing vector map can be opened for reading by Vect_open_old().
- A new vector map can be created (or open for writing) by
- Vect_open_new(). Vect_open_old() attempts to open a vector map at the
- highest possible level of access. It will return the number of the
- level at which the map was opened. Vect_open_new() always opens at level 1
- only. If you require that a vector map be opened at a lower level
- (e.g. one), you can call the routine <tt>Vect_set_open_level(1)</tt>;
- Vect_open_old() will then either open at level one or fail. If you
- instead require the highest level access possible, you should not use
- Vect_set_open_level(), but instead check the return value of
- Vect_open_old() to make sure it is greater than or equal to the lowest
- level at which you need access. This allows for future levels to work
- without need for module change.
- \section vlibCategoriesLayers Categories and Layers
- <i>Note: "layer" was called "field" in earlier version.</i>
- In GRASS, a "category" or "category number" is a vector feature ID
- used to link geometry to attributes which are stored in one or several
- (external) database table(s). This category number is stored into the
- vector geometry as well as a "cat" column (integer type) in each
- attribute database table. The category number is used to lookup an
- attribute assigned to a vector object. At user level, category numbers
- can be assigned to vector objects with the <tt>v.category</tt> command.
- In order to assign multiple attributes in different tables to vector
- objects, each map can hold multiple category numbers. This is achieved
- by assigning more than one "layer" to the map (<tt>v.db.connect</tt>
- command). The layer number determines which table to be used for
- attribute queries. For example, a cadastrial vector area map can be
- assigned on layer 1 to an attribute table containing landuse
- descriptions which are maintained by department A while layer 2 is
- assigned to an attribute table containing owner descriptions which are
- maintained by department B.
- Each vector feature inside a vector map has zero, one or more
- <layer,category> tuple(s). A user can (but not must) create
- attribute tables which are referenced by the layer, and rows which are
- essentially referenced by the <layer,category> pair.
- %Categories start with 1 (category '0' is allowed for OGR
- layers). %Categories do not have to be continuous.
- Information about categories holds \ref line_cats data structure.
- \section vlibAttributes Attributes
- The old GRASS 4.x 'dig_cats' files are not used any more and vectors'
- attributes are stored in external database. Connection with the
- database is done through drivers based on \ref dbmilib. Records in a
- table are linked to vector entities by layer and category number. The
- layer identifies table and the category identifies record. I.e., for
- any unique combination
- \verbatim
- map+mapset+layer+category
- \endverbatim
- there exists one unique combination
- \verbatim
- driver+database+table+row
- \endverbatim
- The general DBMI settings are defined in the '$MAPSET/VAR' text file
- (maintained with <tt>db.connect</tt> command at user level).
- \section vlibStructures Vector library data structures
- All data structure used by the vector library are defined in
- include/vect/dig_structs.h. See the list bellow:
- Major:
- - \ref Map_info
- - \ref Plus_head
- - \ref dig_head
- Supporting:
- - \ref bound_box
- - \ref gvfile
- - \ref Port_info
- - \ref Coor_info
- - \ref spatial_index
- Format-related:
- - \ref Format_info
- - \ref Format_info_ogr
- DB-related:
- - \ref field_info
- - \ref dblinks
- Geometry-related:
- - \ref line_pnts
- Category-related:
- - \ref line_cats
- - \ref cat_list
- - \ref Cat_index
- Topology-related:
- - \ref P_node
- - \ref P_line
- - \ref P_area
- - \ref P_isle
- Misc:
- - \ref ilist
- - \ref varray
- Obsolete:
- - \ref site_att
- - \ref recycle
- \section vlibGeometry Vector library feature geometry
- \subsection vlibFeatureTypes Feature types
- Feature types are defined in include/vect_dig_defines.h, see the list bellow:
- - GV_POINT
- - GV_LINE
- - GV_BOUNDARY
- - GV_CENTROID
- - GV_FACE
- - GV_KERNEL
- - GV_AREA
- - GV_VOLUME
- - GV_POINTS (GV_POINT | GV_CENTROID)
- - GV_LINES (GV_LINE | GV_BOUNDARY)
- Face and kernel are 3D equivalents of boundary and centroid, but there
- is no support (yet) for 3D topology (volumes). Faces are used in a
- couple of modules including NVIZ to visualize 3D buildings and other
- volumetric figures.
- \section vlibFunc List of vector library functions
- The vector library provides the GRASS programmer with routines to
- process vector data. The routines in the vector library are presented
- in functional groupings, rather than in alphabetical order. The order
- of presentation will, it is hoped, provide better understanding of how
- the library is to be used, as well as show the interrelationships
- among the various routines. Note that a good way to understand how to
- use these routines is to look at the source code for GRASS modules
- which use them.
- Note: All routines start with one of following prefixes Vect_, V1_,
- V2_ or dig_. To avoid name conficts, programmers should not create
- variables or routines in their own modules which use this prefix.
- The Vect_*() functions are the programmer's API for GRASS vector
- programming. The programmer should use only routines with this prefix.
- \section vlibArea Vector area functions
- - Vect_get_area_area()
- - Vect_get_area_boundaries()
- - Vect_get_area_centroid()
- - Vect_get_area_isle()
- - Vect_get_area_num_isles()
- - Vect_area_perimeter()
- - Vect_get_area_points()
- - Vect_get_isle_area()
- - Vect_get_isle_boundaries()
- - Vect_get_isle_points()
- - Vect_point_in_area()
- \section vlibArray Vector array functions
- - Vect_new_varray()
- - Vect_set_varray_from_cat_list()
- - Vect_set_varray_from_cat_string()
- - Vect_set_varray_from_db()
- \section vlibBox Vector bounding box functions
- - Vect_box_copy()
- - Vect_box_clip()
- - Vect_box_extend()
- - Vect_box_overlap()
- - Vect_get_area_box()
- - Vect_get_isle_box()
- - Vect_get_line_box()
- - Vect_get_map_box()
- - Vect_point_in_box()
- - Vect_region_box()
- \section vlibBreakLines Vector break lines functions
- - Vect_break_lines()
- - Vect_break_lines_list()
- \section vlibBreakPolygons Vector break polygons functions
- - Vect_break_polygons()
- \section vlibBridges Vector bridges functions
- - Vect_chtype_bridges()
- - Vect_remove_bridges()
- \section vlibBuffer Vector buffer functions
- - Vect_line_buffer()
- - Vect_line_parallel()
- \section vlibBuild Vector build functions
- - Vect_build()
- - Vect_build_partial()
- - Vect_get_built()
- - Vect_build_sidx_from_topo()
- - Vect_build_sidx()
- - Vect_save_sidx()
- - Vect_save_topo()
- - Vect_sidx_dump()
- - Vect_topo_dump()
- \subsection vlibBuildNat Vector build (native) functions
- - Vect_attach_centroids()
- - Vect_attach_isle()
- - Vect_attach_isles()
- - Vect_build_line_area()
- - Vect_build_nat()
- - Vect_isle_find_area()
- \subsection vlibBuildOgr Vector build (OGR) functions
- - Vect_build_ogr()
- \section vlibCats Vector categories functions
- - Vect_array_to_cat_list()
- - Vect_cat_del()
- - Vect_cat_get()
- - Vect_cat_in_array()
- - Vect_cat_in_cat_list()
- - Vect_cat_set()
- - Vect_destroy_cat_list()
- - Vect_destroy_cats_struct()
- - Vect_field_cat_del()
- - Vect_get_area_cats()
- - Vect_get_area_cat()
- - Vect_get_line_cat()
- - Vect_new_cat_list()
- - Vect_new_cats_struct()
- - Vect_reset_cats()
- - Vect_str_to_cat_list()
- \section vlibCindex Vector category index functions
- (note: vector layer is historically called "field")
- - Vect_cidx_dump()
- - Vect_cidx_find_next()
- - Vect_cidx_find_all()
- - Vect_cidx_get_cat_by_index()
- - Vect_cidx_get_field_index()
- - Vect_cidx_get_field_number()
- - Vect_cidx_get_num_cats_by_index()
- - Vect_cidx_get_num_fields()
- - Vect_cidx_get_num_types_by_index()
- - Vect_cidx_get_num_unique_cats_by_index()
- - Vect_cidx_get_type_count()
- - Vect_cidx_get_type_count_by_index()
- - Vect_cidx_open()
- - Vect_cidx_save()
- - Vect_set_category_index_update()
- \section vlibCleanNodes Vector clean nodes functions
- - Vect_clean_small_angles_at_nodes()
- \section vlibClose Vector close functions
- - Vect_close()
- \section vlibConstraint Vector constraint functions
- - Vect_get_constraint_box()
- - Vect_remove_constraints()
- - Vect_set_constraint_region()
- - Vect_set_constraint_type()
- \section vlibDangles Vector dangles functions
- - Vect_chtype_dangles()
- - Vect_remove_dangles()
- - Vect_select_dangles()
- \section vlibDbcolumns Vector dbcolumns functions
- - Vect_get_column_names()
- - Vect_get_column_names_types()
- - Vect_get_column_types()
- \section vlibError Vector error functions
- - Vect_get_fatal_error()
- - Vect_set_fatal_error()
- \section vlibField Vector field functions
- (note: vector layer is historically called "field")
- - Vect_add_dblink()
- - Vect_check_dblink()
- - Vect_default_field_info()
- - Vect_get_dblink()
- - Vect_get_field()
- - Vect_get_field_by_name()
- - Vect_map_add_dblink()
- - Vect_map_check_dblink()
- - Vect_map_del_dblink()
- - Vect_new_dblinks_struct()
- - Vect_read_dblinks()
- - Vect_reset_dblinks()
- - Vect_set_db_updated()
- - Vect_subst_var()
- - Vect_write_dblinks()
- \section vlibFind Vector find functions
- - Vect_find_area()
- - Vect_find_island()
- - Vect_find_line()
- - Vect_find_line_list()
- - Vect_find_node()
- \section vlibGraph Vector graph functions
- - Vect_graph_add_edge()
- - Vect_graph_build()
- - Vect_graph_init()
- - Vect_graph_set_node_costs()
- - Vect_graph_shortest_path()
- \section vlibHeader Vector header functions
- - Vect_get_comment()
- - Vect_get_constraint_box()
- - Vect_get_date()
- - Vect_get_full_name()
- - Vect_get_map_date()
- - Vect_get_map_name()
- - Vect_get_mapset()
- - Vect_get_name()
- - Vect_get_organization()
- - Vect_get_person()
- - Vect_get_proj()
- - Vect_get_proj_name()
- - Vect_get_scale()
- - Vect_get_thresh()
- - Vect_get_zone()
- - Vect_is_3d()
- - Vect_print_header()
- - Vect_read_header()
- - Vect_set_comment()
- - Vect_set_date()
- - Vect_set_map_date()
- - Vect_set_map_name()
- - Vect_set_organization()
- - Vect_set_person()
- - Vect_set_scale()
- - Vect_set_thresh()
- - Vect_set_zone()
- - Vect_write_header()
- \section vlibHist Vector history functions
- - Vect_hist_command()
- - Vect_hist_copy()
- - Vect_hist_read()
- - Vect_hist_rewind()
- - Vect_hist_write()
- \section vlibInitHead Vector header functions
- - Vect_copy_head_data()
- \section vlibIntersect Vector intersection functions
- - Vect_line_check_intersection()
- - Vect_line_intersection()
- - Vect_segment_intersection()
- \section vlibLegalVname Vector valid map name functions
- - Vect_check_input_output_name()
- - Vect_legal_filename()
- \section vlibLevel Vector level functions
- - Vect_level()
- \section vlibLevelTwo Vector topological (level 2) functions
- - Vect_get_centroid_area()
- - Vect_get_line_areas()
- - Vect_get_line_nodes()
- - Vect_get_node_coor()
- - Vect_get_node_line()
- - Vect_get_node_line_angle()
- - Vect_get_node_n_lines()
- - Vect_get_num_areas()
- - Vect_get_num_dblinks()
- - Vect_get_num_faces()
- - Vect_get_num_islands()
- - Vect_get_num_lines()
- - Vect_get_num_nodes()
- - Vect_get_num_primitives()
- - Vect_get_num_updated_lines()
- - Vect_get_num_updated_nodes()
- - Vect_get_updated_line()
- - Vect_get_updated_node()
- - Vect_set_release_support()
- \section vlibLine Vector feature functions
- - Vect_append_point()
- - Vect_append_points()
- - Vect_copy_pnts_to_xyz()
- - Vect_copy_xyz_to_pnts()
- - Vect_destroy_line_struct()
- - Vect_get_num_line_points()
- - Vect_line_box()
- - Vect_line_delete_point()
- - Vect_line_distance()
- - Vect_line_geodesic_length()
- - Vect_line_get_point()
- - Vect_line_insert_point()
- - Vect_line_length()
- - Vect_line_prune()
- - Vect_line_prune_thresh()
- - Vect_line_reverse()
- - Vect_line_segment()
- - Vect_new_line_struct()
- - Vect_point_on_line()
- - Vect_points_distance()
- - Vect_reset_line()
- \section vlibList Vector list functions
- - Vect_destroy_list()
- - Vect_list_append()
- - Vect_list_append_list()
- - Vect_list_delete()
- - Vect_list_delete_list()
- - Vect_new_list()
- - Vect_reset_list()
- - Vect_val_in_list()
- - Vect_destroy_boxlist()
- - Vect_boxlist_append()
- - Vect_boxlist_append_boxlist()
- - Vect_boxlist_delete()
- - Vect_boxlist_delete_boxlist()
- - Vect_new_boxlist()
- - Vect_reset_boxlist()
- - Vect_val_in_boxlist()
- \section vlibMap Vector map functions
- - Vect_copy()
- - Vect_copy_map_lines()
- - Vect_copy_table()
- - Vect_copy_table_by_cats()
- - Vect_copy_tables()
- - Vect_delete()
- - Vect_rename()
- \section vlibMergeLines Vector merge line functions
- - Vect_merge_lines()
- \section vlibNet Vector network functions
- - Vect_net_build_graph()
- - Vect_net_get_line_cost()
- - Vect_net_get_node_cost()
- - Vect_net_nearest_nodes()
- - Vect_net_shortest_path()
- - Vect_net_shortest_path_coor()
- \section vlibOpen Vector open functions
- - Vect_coor_info()
- - Vect_maptype_info()
- - Vect_maptype()
- - Vect_open_new()
- - Vect__open_old()
- - Vect_open_old()
- - Vect_open_old_head()
- - Vect_open_sidx()
- - Vect_open_topo()
- - Vect_open_update()
- - Vect_open_update_head()
- - Vect_set_open_level()
- \section vlibOverlay Vector overlay functions
- - Vect_overlay()
- - Vect_overlay_str_to_operator()
- \section vlibVpoly Vector polygon functions
- - Vect_find_poly_centroid()
- - Vect_get_point_in_area()
- - Vect_point_in_area_outer_ring()
- - Vect_point_in_island()
- - Vect_get_point_in_poly()
- - Vect_get_point_in_poly_isl()
- \section vlibRead Vector read functions
- \subsection vlibread1_2 Level 1 and 2
- - Vect_read_next_line()
- \subsection vlibRead2 Level 2 only
- - Vect_area_alive()
- - Vect_isle_alive()
- - Vect_line_alive()
- - Vect_node_alive()
- - Vect_read_line()
- \section vlibRemoveAreas Vector remove areas functions
- - Vect_remove_small_areas()
- \section vlibRemoveDuplicates Vector remove duplicates functions
- - Vect_line_check_duplicate()
- - Vect_remove_duplicates()
- \section vlibRewind Vector rewind functions
- - Vect_rewind()
- \section vlibSelect Vector select functions
- - Vect_select_areas_by_box()
- - Vect_select_areas_by_polygon()
- - Vect_select_isles_by_box()
- - Vect_select_lines_by_box()
- - Vect_select_lines_by_polygon()
- - Vect_select_nodes_by_box()
- \section vlibSindex Vector spatial index functions
- - Vect_spatial_index_add_item()
- - Vect_spatial_index_del_item()
- - Vect_spatial_index_destroy()
- - Vect_spatial_index_init()
- - Vect_spatial_index_select()
- \section vlibSnap Vector snap functions
- - Vect_snap_lines()
- - Vect_snap_lines_list()
- \section vlibTinFuns Vector TIN functions
- - Vect_tin_get_z()
- \section vlibType Vector type option functions
- - Vect_option_to_types()
- \section vlibDelete Vector delete functions
- \subsection vlibDelete2 Level 2 only
- - Vect_delete_line()
- \section vlibWrite Vector write functions
- \subsection vlibWrite1_2 Level 1 and 2
- - Vect_write_line()
- \subsection vlibWrite2 Level 2 only
- - Vect_rewrite_line()
- \subsection vlibAsciiFn Vector ASCII functions
- - Vect_read_ascii()
-
- - Vect_read_ascii_head()
- - Vect_write_ascii()
-
- - Vect_write_ascii_head()
- \subsection vlibSFAFn Vector Simple Feature Access API
- Functions from GRASS Simple Feature API (in progress, incomplete).
- - Vect_sfa_get_line_type()
- - Vect_sfa_check_line_type()
- - Vect_sfa_line_dimension()
- - Vect_sfa_line_geometry_type()
- - Vect_sfa_line_astext()
- - Vect_sfa_is_line_simple()
- - Vect_sfa_is_line_closed()
- \section vlibGeosFn Vector GEOS functions
- Note: The functions are available only if GRASS is compiled with
- <tt>--with-geos</tt> switch.
- - Vect_read_line_geos()
- - Vect_read_area_geos()
- - Vect_line_to_geos()
- - Vect_get_area_points_geos()
- - Vect_get_isle_points_geos()
- \section vlibPgFn Vector PostgreSQL/PostGIS functions
- Note: The functions are available only if GRASS is compiled with
- <tt>--with-postgres</tt> switch.
- - Vect_open_topo_pg()
- - Vect_build_pg()
- (For internal use only)
- - V1_open_old_pg(), V2_open_old_pg() called by Vect_open_old()
- - V1_open_new_pg(), V2_open_new_pg() called by Vect_open_new()
- - V1_rewind_pg(), V2_rewind_pg() called by Vect_rewind()
- - V1_close_pg(), V2_close_pg() called by Vect_close()
- - V1_read_line_pg(), V2_read_line_pg() called by Vect_read_line()
- - V1_read_next_line_pg(), V2_read_next_line_pg() called by Vect_read_next_line()
- - V1_delete_line_pg(), V2_delete_line_sfa() called by Vect_delete_line()
- - V1_write_line_pg(), V2_write_line_pg() called by Vect_write_line()
- - V1_rewrite_line_pg(), V2_rewrite_line_sfa() called by Vect_rewrite_line()
- - V2_write_area_pg(), see <tt>v.out.postgis</tt> for implementation issues
- \section vlibAuthors Authors
- - Radim Blazek (vector architecture) <radim.blazek gmail.com>
- - Roberto Micarelli (DGLib) <mi.ro iol.it>
- Updates for GRASS 7:
- - Markus Metz (file-based spatial index, vector topology)
- - Martin Landa (GEOS support, direct OGR read access, PostgreSQL/PostGIS support) <landa.martin gmail.com>
- \section vlibReferences References
- Text based on: R. Blazek, M. Neteler, and R. Micarelli. The new GRASS 5.1
- vector architecture. In Open source GIS - GRASS users conference 2002,
- Trento, Italy, 11-13 September 2002. University of Trento, Italy, 2002.
- <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>
-
- \section vlibSeealso See Also
- - \ref dglib
-
- - \ref dbmilib
-
- - \ref veditlib
- */
|