vectorintro.html 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html>
  3. <head>
  4. <title>Vector data processing in GRASS GIS</title>
  5. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  6. <meta name="Author" content="Markus Neteler/GRASS Development Team">
  7. <link rel="stylesheet" href="grassdocs.css" type="text/css">
  8. </head>
  9. <body bgcolor="white">
  10. <img src="grass_logo.png" alt="_\|/_ GRASS logo"><hr align=center size=6 noshade>
  11. <!-- meta page description: Vector data processing -->
  12. <h2>Vector data processing in GRASS GIS</h2>
  13. <h3>Vector maps in general</h3>
  14. A "vector map" is a data layer consisting of a number of sparse features
  15. in geographic space. These might be data points (drill sites), lines
  16. (roads), polygons (park boundary), volumes (3D CAD structure), or some
  17. combination of all these. Typically each feature in the map will be
  18. tied to a set of attribute layers stored in a database (road names,
  19. site ID, geologic type, etc.). As a general rule these can exist in 2D
  20. or 3D space and are independent of the GIS's computation region.
  21. <h3>Vector data import and export</h3>
  22. The <a href="v.in.ogr.html">v.in.ogr</a> module offers a common
  23. interface for many different vector formats. Additionally, it
  24. offers options such as on-the-fly creation of new locations or extension of
  25. the default region to match the extent of the imported vector map.
  26. For special cases, other import modules are available, e.g.
  27. <a href="v.in.ascii.html">v.in.ascii</a> for input from a text file
  28. containing coordinate and attribute data, and
  29. <a href="v.in.db.html">v.in.db</a> for input from a database containing
  30. coordinate and attribute data.
  31. With <a href="v.external.html">v.external</a> external maps can be
  32. virtually linked into a mapset, only pseudo-topology is generated but
  33. the vector geometry is not imported.
  34. The <em>v.out.*</em> set of commands exports to various formats. To import
  35. and export only attribute tables, use <a href="db.in.ogr.html">db.in.ogr</a>
  36. and <a href="db.out.ogr.html">db.out.ogr</a>.
  37. The naming convention for vector maps requires that map names start with a
  38. character, not a number (map name scheme: [A-Za-z][A-Za-z0-9_]*).
  39. <h3>Metadata</h3>
  40. The <a href="v.info.html">v.info</a> display general information such
  41. as metadata and attribute columns about a vector map including the
  42. history how it was generated. Each map generating command stores the
  43. command history into the metadata (query with <a href="v.info.html">v.info -h mapname</a>).
  44. Metadata such as map title, scale, organization etc. can be updated
  45. with <a href="v.support.html">v.support</a>.
  46. <h3>Vector map operations</h3>
  47. GRASS vector map processing is always performed on the full map.
  48. If this is not desired, the input map has to be clipped to the
  49. current region beforehand (<a href="v.in.region.html">v.in.region</a>,
  50. <a href="v.overlay.html">v.overlay</a>,<a href="v.select.html">v.select</a>).
  51. <h3>Vector model and topology</h3>
  52. GRASS is a topological GIS. This means that adjacent geographic
  53. components in a single vector map are related. For example in a
  54. non-topological GIS if two areas shared a common border that border
  55. would be digitized two times and also stored in duplicate. In a
  56. topological GIS this border exists once and is shared between two
  57. areas. Topological represenation of vector data helps to produce and
  58. maintain vector maps with clean geometry as well as enables certain
  59. analyses that can not be conducted with non-topological or spaghetti
  60. data. In GRASS topological data are refered to as level 2 data and
  61. spaghetti data is referred to as level 1.
  62. <p>
  63. Sometimes topology is not necessary and the additional memory and
  64. space requirements are burdensome to a particular task. Therefore two
  65. modules allow for working level 1 (non-topological) data within
  66. GRASS. The <a href="v.in.ascii.html">v.in.ascii</a> module allows
  67. users to input points without building topology. This is very useful
  68. for large files where memory restrictions may cause difficulties. The
  69. other module which works with level 1 data is
  70. <a href="v.surf.rst.html">v.surf.rst</a> which enables spatial
  71. approximation and topographic analysis from a point or isoline file.
  72. <p> In GRASS, the following vector object types are defined:
  73. <ul>
  74. <li> point: a point; </li>
  75. <li> line: a directed sequence of connected vertices with two endpoints called nodes; </li>
  76. <li> boundary: the border line to describe an area; </li>
  77. <li> centroid: a point within a closed ring of boundaries; </li>
  78. <li> area: the topological composition of a closed ring of boundaries and optionally a centroid; </li>
  79. <li> face: a 3D area; </li>
  80. <li> kernel: a 3D centroid in a volume (not yet implemented); </li>
  81. <li> volume: a 3D corpus, the topological composition of faces and kernel (not yet implemented). </li>
  82. </ul>
  83. <p>
  84. Note that all lines and boundaries can be polylines (with vertices in between).
  85. <p>
  86. Area topology also holds information about isles. These isles are located
  87. within that area, not touching the boundaries of the outer area. Isles
  88. consist of one or more areas and are used internally to maintain correct
  89. topology for areas.
  90. <P>
  91. The <a href="v.type.html">v.type</a> module can be used to convert
  92. between vector types if
  93. possible. The <a href="v.build.html">v.build</a> module is used to
  94. generate topology. It optionally allows to extract the erroneous
  95. vector objects into a separate map. Topological errors can be
  96. corrected either manually
  97. within <a href="wxGUI.Vector_Digitizing_Tool.html">wxGUI vector
  98. digitizer</a> or, to some extent, automatically
  99. in <a href="v.clean.html">v.clean</a>. A dedicated vector editing
  100. module is <a href="v.edit.html">v.edit</a> which supports global and
  101. local editing operations.
  102. Adjacent polygons can be found by <a href="v.to.db.html">v.to.db</a>
  103. (see 'sides' option).
  104. <P>
  105. Many operations including extraction, queries, overlay, and export will
  106. only act on features which have been assigned a category number. Typically
  107. a centroid will hold the attribute data for the area between it and its
  108. boundaries. Boundaries are not typically given a category ID as it would be
  109. ambiguous as to which area either side of it the attribute data would belong
  110. to. An exception might be when the boundary between two crop-fields is the
  111. center-line of a road, and the category information is an index to the road
  112. name. For everyday use boundaries and centroids can be treated as internal
  113. data types and the user can work directly and more simply with the "area"
  114. meta-feature type.
  115. <h3>Vector object categories and attribute management</h3>
  116. GRASS vectors can be linked to one or many database management systems
  117. (DBMS). The <em>db.*</em> set of commands provides basic SQL support for
  118. attribute management, while the <em>v.db.*</em> set of commands operates
  119. on a table linked to a vector map.
  120. <ul>
  121. <li><b>Categories</b><br>
  122. Categories are used to categorize vector objects and link
  123. attribute(s) to each category. Each vector object can have zero, one or
  124. several categories. Category numbers do not have to be unique for
  125. each vector object, several vector objects can share the same category.
  126. <br>Category numbers are stored both within the geometry file for each
  127. vector object and within the attribute table(s) (usually the "cat"
  128. column). It is not required that attribute table(s) hold an entry for
  129. each category, and attribute table(s) can hold
  130. information about categories not present in the vector geometry file.
  131. This means that e.g. an attribute table can be populated first and then
  132. vector objects can be added to the geometry file with category numbers.
  133. Using <a href="v.category.html">v.category</a>, category numbers can be
  134. printed or maintained.
  135. <br><br></li>
  136. <li><b>Layers</b><br>
  137. It is possible to link the geographic objects in
  138. a vector map to one or more tables. Each link to a distinct
  139. attribute table is called a layer. A link defines which database
  140. driver, database and table is to be used. Each category number in a
  141. geometry file is associated with a layer and corresponds to a row in the
  142. attribute table for this layer (the linking column is usually the "cat"
  143. key column). Using <a href="v.db.connect.html">v.db.connect</a> layers
  144. can be listed or maintained.<br>
  145. Vector objects are not organized in layers. All vector
  146. objects are kept in one geometry file, and topology is maintained for
  147. all vector objects together. GRASS layers only consist of links to
  148. different attribute tables in which vector objects can have zero, one or
  149. more categories. If a vector object has zero categories in a layer, then
  150. it does not appear in that layer. In this fashion some vector objects
  151. may appear in some layers but not in others. The practical benefit of
  152. this system is that it allows placement of thematically distinct but
  153. topologically related objects into a single map (e.g. forests and lakes).
  154. These virtual layers are also useful for linking time series attribute
  155. data to a series of locations that did not change over time. By default
  156. the first layer is active, i.e. the first table corresponds to the first
  157. layer. Further tables are linked to subsequent layers.
  158. <br><br></li>
  159. <li><b>SQL support</b><br>
  160. The DBF driver provides only very limited SQL support (as DBF is not an
  161. SQL DB) while the other DBMS backends (such as SQLite, PostgreSQL, MySQL
  162. etc) provide full SQL support since the SQL commands are sent directly
  163. to the DBMI. SQL commands can be directly executed with
  164. <a href="db.execute.html">db.execute</a>,
  165. <a href="db.select.html">db.select</a> and the other db.* modules.
  166. </li>
  167. </ul>
  168. When creating vector maps from scratch, in general an attribute table must be created and
  169. the table must be populated with one row per category (using <a href="v.to.db.html">v.to.db</a>).
  170. However, this can be performed in a single step using <a href="v.db.addtable.html">v.db.addtable</a>
  171. along with the definition of table column types. Column adding and dropping
  172. can be done with <a HREF="v.db.addcolumn.html">v.db.addcolumn</a> and
  173. <a HREF="v.db.dropcolumn.html">v.db.dropcolumn</a>. A table column can be renamed with
  174. <a HREF="v.db.renamecolumn.html">v.db.renamecolumn</a>. To drop a table from a map, use
  175. <a HREF="v.db.droptable.html">v.db.droptable</a>. Values in a table can be updated
  176. with <a HREF="v.db.update.html">v.db.update</a>. Tables can be joined with with
  177. <a HREF="v.db.join.html">v.db.join</a>.
  178. <h3>Editing vector attributes</h3>
  179. To manually edit attributes of a table, the map has to be
  180. queried in 'edit mode' using <a href="d.what.vect.html">d.what.vect</a>.
  181. To bulk process attributes, it is recommended to use SQL
  182. (<a href="db.execute.html">db.execute</a>).
  183. <h3>Geometry operations</h3>
  184. The module <a href="v.in.region.html">v.in.region</a> saves the
  185. current region boundary into a vector area.
  186. Split vector lines can be changes to polylines by
  187. <a href="v.build.polylines.html">v.build.polylines</a>. Long lines can be
  188. split by <a href="v.split.html">v.split</a> and
  189. <a href="v.segment.html">v.segment</a>.
  190. Buffer and circles can be generated with <a href="v.buffer.html">v.buffer</a>
  191. and <a href="v.parallel.html">v.parallel</a>.
  192. <a href="v.generalize.html">v.generalize</a> is module for generalization of GRASS vector maps.
  193. 2D vector maps can be changed to 3D using
  194. <a href="v.drape.html">v.drape</a> or <a href="v.extrude.html">v.extrude</a>.
  195. If needed, the spatial position of vector points can be perturbed by
  196. <a href="v.perturb.html">v.perturb</a>.
  197. The <a href="v.type.html">v.type</a> command changes between vector
  198. types (see list above).
  199. Projected vector maps can be reprojected with <a href="v.proj.html">v.proj</a>.
  200. Unprojected maps can be geocoded with <a href="v.transform.html">v.transform</a>.
  201. Triangulation and point-to-polygon conversions can be done with <a
  202. href="v.delaunay.html">v.delaunay</a>, <a href="v.hull.html">v.hull</a>,
  203. and <a href="v.voronoi.html">v.voronoi</a>.
  204. The <a href="v.random.html">v.random</a> command generated random points.
  205. <h3>Vector overlays and selections</h3>
  206. Geometric overlay of vector maps is done with <a href="v.patch.html">v.patch</a>,
  207. <a href="v.overlay.html">v.overlay</a> and <a href="v.select.html">v.select</a>,
  208. depending on the combination of vector types.
  209. Vectors can be extracted with <a href="v.extract.html">v.extract</a>
  210. and reclassified with <a href="v.reclass.html">v.reclass</a>.
  211. <h3>Vector statistics</h3>
  212. Statistics can be generated by <a href="v.qcount.html">v.qcount</a>,
  213. <a href="v.sample.html">v.sample</a>, <a href="v.normal.html">v.normal</a>,
  214. and <a href="v.univar.html">v.univar</a>.
  215. Distances between vector objects are calculated with <a href="v.distance.html">v.distance</a>.
  216. <h3>Vector-Raster-DB conversion</h3>
  217. The <a href="v.to.db.html">v.to.db</a> transfers vector information
  218. into database tables.
  219. With <a href="v.to.points.html">v.to.points</a>,
  220. <a href="v.to.rast.html">v.to.rast</a> and <a href="v.to.rast3.html">v.to.rast3</a>
  221. conversions are performed.
  222. <h3>Vector queries</h3>
  223. Vector maps can be queried with <a href="v.what.html">v.what</a> and
  224. <a href="v.what.vect.html">v.what.vect</a>.
  225. <h3>Vector-Raster queries</h3>
  226. Raster values can be transferred to vector maps with
  227. <a href="v.what.rast.html">v.what.rast</a> and
  228. <a href="v.rast.stats">v.rast.stats</a>.
  229. <h3>Vector network analysis</h3>
  230. GRASS provides support for vector network analysis. The following algorithms
  231. are implemented:
  232. <ul>
  233. <li> Vector maintenance: <a href="v.net.html">v.net</a></li>
  234. <li> Shortest path: <a href="d.path.html">d.path</a> and
  235. <a href="v.net.path.html">v.net.path</a></li>
  236. <li> Shortest path between all pairs of nodes <a href="v.net.allpairs.html">v.net.allpairs</a>
  237. <li> Allocation of sources (create subnetworks, e.g. police station zones):
  238. <a href="v.net.alloc.html">v.net.alloc</a></li>
  239. <li> Iso-distances (from centers): <a href="v.net.iso.html">v.net.iso</a></li>
  240. <li> Computes bridges and articulation points: <a href="v.net.bridge.html">v.net.bridge</a></li>
  241. <li> Computes degree, centrality, betweeness, closeness and eigenvector centrality measures: <a href="v.net.centrality.html">v.net.centrality</a></li>
  242. <li> Computes strongly and weakly connected components: <a href="v.net.components.html">v.net.components</a></li>
  243. <li> Computes vertex connectivity between two sets of nodes: <a href="v.net.connectivity.html">v.net.connectivity</a></li>
  244. <li> Computes shortest distance via the network between the given sets of features: <a href="v.net.distance.html">v.net.distance</a></li>
  245. <li> Computes the maximum flow between two sets of nodes: <a href="v.net.flow.html">v.net.flow</a></li>
  246. <li> Computes minimum spanning tree:<a href="v.net.spanningtree.html">v.net.spanningtree</a></li>
  247. <li> Minimum Steiner trees (star-like connections, e.g. broadband cable
  248. connections): <a href="v.net.steiner.html">v.net.steiner</a></li>
  249. <li> Finds shortest path using timetables: <a href="v.net.timetable.html">v.net.timetable</a></li>
  250. <li> Traveling salesman (round trip): <a href="v.net.salesman.html">v.net.salesman</a></li>
  251. </ul>
  252. Vector directions are defined by the digitizing direction (a--&gt;--b).
  253. Both directions are supported, network modules provide parameters
  254. to assign attribute columns to the forward and backward direction.
  255. <h3>Vector networks: Linear referencing system (LRS)</h3>
  256. LRS uses linear features and distance measured along those features to
  257. positionate objects. There are the commands
  258. <a href="v.lrs.create.html">v.lrs.create</a> to create a linear reference system,
  259. <a href="v.lrs.label.html">v.lrs.label</a> to create stationing on the LRS,
  260. <a href="v.lrs.segment.html">v.lrs.segment</a> to create points/segments on LRS,
  261. and
  262. <a href="v.lrs.where.html">v.lrs.where</a> to find line id and real km+offset
  263. for given points in vector map using linear reference system.
  264. <p>
  265. The <a href="lrs.html">LRS tutorial</a> explains further details.
  266. <h3>Interpolation and approximation</h3>
  267. Some of the vector modules deal with spatial or volumetric
  268. approximation (also called interpolation):
  269. <a href="v.kernel.html">v.kernel</a>,
  270. <a href="v.surf.idw.html">v.surf.idw</a>,
  271. <a href="v.surf.rst.html">v.surf.rst</a>, and
  272. <a href="v.vol.rst.html">v.vol.rst</a>.
  273. <h3>Lidar data processing</h3>
  274. Lidar point clouds (first and last return) are imported with <a
  275. href="v.in.ascii.html">v.in.ascii</a> (-b flag to not build the
  276. topology). Outlier detection is done with
  277. <a href="v.outlier.html">v.outlier</a> on both first and last return data.
  278. Then, with <a href="v.lidar.edgedetection.html">v.lidar.edgedetection</a>,
  279. edges are detected from last return data. The building are generated by
  280. <a href="v.lidar.growing.html">v.lidar.growing</a> from detected
  281. edges. The resulting data are post-processed with
  282. <a href="v.lidar.correction.html">v.lidar.correction</a>. Finally, the
  283. DTM and DSM are generated with <a href="v.surf.bspline.html">v.surf.bspline</a>
  284. (DTM: uses the 'v.lidar.correction' output; DSM: uses last return output
  285. from outlier detection).
  286. <h3>See also</h3>
  287. <ul>
  288. <li><a href="databaseintro.html">Introduction to GRASS database management</a></li>
  289. <li><a href="rasterintro.html">Introduction to GRASS raster map processing</a></li>
  290. <li><a href="raster3dintro.html">Introduction to GRASS 3D raster map (voxel) processing</a></li>
  291. </ul>
  292. <HR>
  293. <BR>
  294. <a href="index.html">Main index</a> - <a href="vector.html">vector index</a> - <a href="full_index.html">full index</a>
  295. <P>&copy; 2008 <a href="http://grass.osgeo.org">GRASS Development Team</a></P>
  296. </body>
  297. </html>