Provided by: grass-doc_7.4.0-1_all bug

Vector data processing in GRASS GIS

   Vector maps in general
       A  "vector  map"  is  a data layer consisting of a number of sparse features in geographic
       space. These might be data points (drill sites), lines (roads), polygons (park  boundary),
       volumes  (3D  CAD  structure), or some combination of all these. Typically each feature in
       the map will be tied to a set of attribute layers stored in a database (road  names,  site
       ID,  geologic  type,  etc.).  As  a general rule these can exist in 2D or 3D space and are
       independent of the GIS’s computation region.

   Vector data import and export
       The v.in.ogr  module  offers  a  common  interface  for  many  different  vector  formats.
       Additionally,  it offers options such as on-the-fly creation of new locations or extension
       of the default region to match the extent of the imported vector map.  For special  cases,
       other import modules are available, e.g.  v.in.ascii for input from a text file containing
       coordinate and attribute data, and v.in.db for input from a database containing coordinate
       and  attribute data.  With v.external external maps can be virtually linked into a mapset,
       only pseudo-topology is generated but the vector geometry is not  imported.   The  v.out.*
       set  of  commands  exports to various formats. To import and export only attribute tables,
       use db.in.ogr and db.out.ogr.

       GRASS GIS vector map exchange between different locations (same projection) can be done in
       a lossless way using the v.pack and v.unpack modules.

       The  naming convention for vector maps requires that map names start with a character, not
       a number (map name scheme: [A-Za-z][A-Za-z0-9_]*).

   Metadata
       The v.info display general information such as metadata  and  attribute  columns  about  a
       vector  map including the history how it was generated. Each map generating command stores
       the command history into the metadata (query with v.info -h mapname).   Metadata  such  as
       map title, scale, organization etc. can be updated with v.support.

   Vector map operations
       GRASS  vector map processing is always performed on the full map.  If this is not desired,
       the  input  map  has  to  be  clipped  to  the  current  region  beforehand  (v.in.region,
       v.overlay,v.select).

   Vector model and topology
       GRASS  is  a  topological  GIS. This means that adjacent geographic components in a single
       vector map are related. For example in a non-topological GIS if two areas shared a  common
       border  that  border  would  be  digitized  two  times  and also stored in duplicate. In a
       topological GIS this border exists once and is  shared  between  two  areas.   Topological
       representation  of  vector  data  helps  to  produce  and  maintain vector maps with clean
       geometry  as  well  as  enables  certain  analyses  that  can  not   be   conducted   with
       non-topological  or  spaghetti data. In GRASS, topological data are referred to as level 2
       data and spaghetti data is referred to as level 1.

       Sometimes topology is not necessary and the additional memory and space  requirements  are
       burdensome  to  a  particular  task.  Therefore  two  modules  allow  for  working level 1
       (non-topological) data within GRASS. The v.in.ascii module allows users  to  input  points
       without  building  topology. This is very useful for large files where memory restrictions
       may cause difficulties. The other module which works with level 1 data is v.surf.rst which
       enables spatial approximation and topographic analysis from a point or isoline file.

       In GRASS, the following vector object types are defined:

           •   point: a point;

           •   line: a directed sequence of connected vertices with two endpoints called nodes;

           •   boundary: the border line to describe an area;

           •   centroid: a point within a closed ring of boundaries;

           •   area: the topological composition of a closed ring of boundaries and a centroid;

           •   face: a 3D area;

           •   kernel: a 3D centroid in a volume (not yet implemented);

           •   volume:  a  3D  corpus,  the  topological composition of faces and kernel (not yet
               implemented).

       Lines and boundaries can be composed of multiple vertices.

       Area topology also holds information about isles. These  isles  are  located  within  that
       area,  not touching the boundaries of the outer area. Isles are holes inside the area, and
       can consist of one or more areas. They are used internally to  maintain  correct  topology
       for areas.

       The  v.type  module  can  be used to convert between vector types if possible. The v.build
       module is used to generate topology. It optionally allows the user  to  extract  erroneous
       vector  objects  into  a separate map. Topological errors can be corrected either manually
       within wxGUI vector digitizer or, to some extent, automatically in v.clean.   A  dedicated
       vector  editing  module  is  v.edit  which  supports  global and local editing operations.
       Adjacent polygons can be found by v.to.db (see ’sides’ option).

       Many operations including extraction, queries,  overlay,  and  export  will  only  act  on
       features  which  have  been assigned a category number. Typically a centroid will hold the
       attribute data for the area with which the centroid  is  associated.  Boundaries  are  not
       typically  given a category ID as it would be ambiguous as to which area either side of it
       the attribute data would belong to. An exception might be when the  boundary  between  two
       crop-fields  is the center-line of a road, and the category information is an index to the
       road name. For everyday use boundaries and centroids can be treated as internal data types
       and the user can work directly and more simply with the "area" type.

   Vector object categories and attribute management
       GRASS  vectors  can  be linked to one or many database management systems (DBMS). The db.*
       set of commands provides basic SQL support for attribute management, while the v.db.*  set
       of commands operates on a table linked to a vector map.

           •   Categories
               Categories  are  used  to  categorize vector objects and link attribute(s) to each
               category. Each vector object can have zero, one or  several  categories.  Category
               numbers  do  not  have to be unique for each vector object, several vector objects
               can share the same category.
               Category numbers are stored both within the geometry file for each  vector  object
               and within the (optional) attribute table(s) (usually the "cat" column). It is not
               required that attribute table(s) hold an entry for each  category,  and  attribute
               table(s)  can hold information about categories not present in the vector geometry
               file.  This means that e.g. an attribute table can be  populated  first  and  then
               vector  objects  can  be  added to the geometry file with category numbers.  Using
               v.category, category numbers can be printed or maintained.

           •   Layers
               Layers are a characteristic of the vector feature (geometries) file.  As mentioned
               above,  categories allow the user to give either a unique id to each feature or to
               group similar features by giving them  all  the  same  id.  Layers  allow  several
               parallel, but different groupings of features in a same map. The practical benefit
               of  this  system  is  that  it  allows  placement  of  thematically  distinct  but
               topologically  related  objects  into  a  single  map,  or for linking time series
               attribute data to a series of locations that did not change over time.
               For example, one can have roads with one layer containing the unique  id  of  each
               road and another layer with ids for specific routes that one might take, combining
               several roads by assigning the same id. While this example can also be dealt  with
               in  an  attribute  table,  another  example  of the use of layers that shows their
               specific advantage is the possibility to identify the same geometrical features as
               representing  different  thematic  objects. For example, in a map with a series of
               polygons representing fields in which at the same time  the  boundaries  of  these
               fields  have a meaning as linear features, e.g. as paths, one can give a unique id
               to each field as area in layer 1, and a unique id in layer  2  to  those  boundary
               lines that are paths. If the paths will always depend on the field boundaries (and
               might change if these boundaries change) then keeping them in the same map can  be
               helpful.  Trying  to  reproduce  the same functionality through attributes is much
               more complicated.
               If a vector object has zero categories in a layer, then it does not appear in that
               layer.  In  this  fashion some vector objects may appear in some layers but not in
               others. Taking the example of the fields and paths, only some boundaries, but  not
               all,  might have a category value in layer 2. With option=report, v.category lists
               available categories in each layer.
               Optionally, each layer can (but does not have to) be linked to an attribute table.
               The  link  is made by the category values of the features in that layer which have
               to have corresponding entries in the specified key column  of  the  table.   Using
               v.db.connect  connections  between  layers  and  attribute tables can be listed or
               maintained.
               In most modules, the first layer (layer=1) is active by  default.  Using  layer=-1
               one can access all layers.

           •   SQL support
               The  DBF  driver  provides only very limited SQL support (as DBF is not an SQL DB)
               while the other DBMS backends (such as SQLite, PostgreSQL, MySQL etc) provide full
               SQL support since the SQL commands are sent directly to the DBMI. SQL commands can
               be directly executed with db.execute, db.select and the other db.* modules.
       When creating vector maps from scratch, in general an attribute table must be created  and
       the  table must be populated with one row per category (using v.to.db).  However, this can
       be performed in a single step using v.db.addtable  along  with  the  definition  of  table
       column   types.   Column   adding  and  dropping  can  be  done  with  v.db.addcolumn  and
       v.db.dropcolumn. A table column can be renamed with v.db.renamecolumn.  To  drop  a  table
       from  a map, use v.db.droptable. Values in a table can be updated with v.db.update. Tables
       can be joined with with v.db.join.

   Editing vector attributes
       To manually edit attributes of a table, the map has to be queried  in  ’edit  mode’  using
       d.what.vect.  To bulk process attributes, it is recommended to use SQL (db.execute).

   Geometry operations
       The  module  v.in.region  saves the current region extents as a vector area.  Split vector
       lines can be converted to polylines by v.build.polylines.  Long  lines  can  be  split  by
       v.split  and v.segment.  Buffer and circles can be generated with v.buffer and v.parallel.
       v.generalize is module for generalization of GRASS vector maps.  2D  vector  maps  can  be
       changed  to  3D  using  v.drape  or  v.extrude.  If needed, the spatial position of vector
       points can be perturbed by v.perturb.  The v.type command  changes  between  vector  types
       (see list above).  Projected vector maps can be reprojected with v.proj.  Unprojected maps
       can be geocoded with v.transform.  Based on the  control  points,  v.rectify  rectifies  a
       vector map by computing a coordinate transformation for each vector object.  Triangulation
       and point-to-polygon conversions can be done with v.delaunay, v.hull, and v.voronoi.   The
       v.random command generated random points.

   Vector overlays and selections
       Geometric  overlay  of vector maps is done with v.patch, v.overlay and v.select, depending
       on the combination  of  vector  types.   Vectors  can  be  extracted  with  v.extract  and
       reclassified with v.reclass.

   Vector statistics
       Statistics  can  be generated by v.qcount, v.sample, v.normal, v.univar, and v.vect.stats.
       Distances between vector objects are calculated with v.distance.

   Vector-Raster-DB conversion
       The  v.to.db  transfers  vector  information  into  database  tables.   With  v.to.points,
       v.to.rast  and v.to.rast3 conversions are performed. Note that a raster mask ("MASK") will
       not be respected since it is only applied when reading an existing GRASS raster map.

   Vector queries
       Vector maps can be queried with v.what and v.what.vect.

   Vector-Raster queries
       Raster values can be transferred to vector maps with v.what.rast and v.rast.stats.

   Vector network analysis
       GRASS  provides  support  for  vector  network  analysis.  The  following  algorithms  are
       implemented:

           •   Network preparation and maintenance: v.net

           •   Shortest path: d.path and v.net.path

           •   Shortest path between all pairs of nodes v.net.allpairs

           •   Allocation of sources (create subnetworks, e.g. police station zones): v.net.alloc

           •   Iso-distances (from centers): v.net.iso

           •   Computes bridges and articulation points: v.net.bridge

           •   Computes  degree,  centrality,  betweeness,  closeness  and eigenvector centrality
               measures: v.net.centrality

           •   Computes strongly and weakly connected components: v.net.components

           •   Computes vertex connectivity between two sets of nodes: v.net.connectivity

           •   Computes shortest distance via the network between the  given  sets  of  features:
               v.net.distance

           •   Computes the maximum flow between two sets of nodes: v.net.flow

           •   Computes minimum spanning tree:v.net.spanningtree

           •   Minimum  Steiner  trees (star-like connections, e.g. broadband cable connections):
               v.net.steiner

           •   Finds shortest path using timetables: v.net.timetable

           •   Traveling salesman (round trip): v.net.salesman
       Vector directions are defined by the digitizing direction (a-->--b).  Both directions  are
       supported,  most  network  modules  provide  parameters to assign attribute columns to the
       forward and backward direction.

   Vector networks: Linear referencing system (LRS)
       LRS uses linear features  and  distance  measured  along  those  features  to  positionate
       objects.  There  are  the  commands  v.lrs.create  to  create  a  linear reference system,
       v.lrs.label to create stationing on the LRS, v.lrs.segment to  create  points/segments  on
       LRS,  and  v.lrs.where  to  find line id and real km+offset for given points in vector map
       using linear reference system.

       The LRS tutorial explains further details.

   Interpolation and approximation
       Some of the vector modules deal with spatial  or  volumetric  approximation  (also  called
       interpolation): v.kernel, v.surf.idw, v.surf.rst, and v.vol.rst.

   Lidar data processing
       Lidar point clouds (first and last return) are imported from text files with v.in.ascii or
       from LAS files with v.in.lidar. Both modules recognize the -b flag to not build  topology.
       Outlier  detection  is done with v.outlier on both first and last return data.  Then, with
       v.lidar.edgedetection, edges  are  detected  from  last  return  data.  The  building  are
       generated  by  v.lidar.growing from detected edges.  The resulting data are post-processed
       with v.lidar.correction. Finally, the DTM and DSM are generated with v.surf.bspline  (DTM:
       uses   the  ’v.lidar.correction’  output;  DSM:  uses  last  return  output  from  outlier
       detection).
       In addition, v.decimate can be used to decimates a point cloud.

   See also
           •   Introduction to raster data processing

           •   Introduction to 3D raster data (voxel) processing

           •   Introduction to vector data processing

           •   Introduction to image processing

           •   Introduction into temporal data processing

           •   Introduction to database management

           •   Projections and spatial transformations

SOURCE CODE

       Available at: Vector data processing in GRASS GIS source code (history)

       Main index | Vector index | Topics index | Keywords index | Graphical index | Full index

       © 2003-2018 GRASS Development Team, GRASS GIS 7.4.0 Reference Manual