vectorintro.html 18 KB

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