<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://grasswiki.osgeo.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%E2%9A%A0%EF%B8%8FAvitti</id>
	<title>GRASS-Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://grasswiki.osgeo.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%E2%9A%A0%EF%B8%8FAvitti"/>
	<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/wiki/Special:Contributions/%E2%9A%A0%EF%B8%8FAvitti"/>
	<updated>2026-05-25T17:29:23Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=AddOns/GRASS7/raster&amp;diff=21557</id>
		<title>AddOns/GRASS7/raster</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=AddOns/GRASS7/raster&amp;diff=21557"/>
		<updated>2015-06-16T12:43:39Z</updated>

		<summary type="html">&lt;p&gt;⚠️Avitti: Add description of r.smooth.seg module.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AddOns}}&lt;br /&gt;
* '''[http://grass.osgeo.org/grass70/manuals/addons/ GRASS GIS 7 Addons Manual pages] - a complete overview of available Addons'''&lt;br /&gt;
* [https://trac.osgeo.org/grass/browser/grass-addons Browse the Svn add-ons code in the Trac system]&lt;br /&gt;
* For addon installation, simply use {{cmd|g.extension}}&lt;br /&gt;
* Source code download: get all addons from the svn repository with:&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass7/raster/&lt;br /&gt;
&lt;br /&gt;
==== r.agent ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.agent|version=7}} shall provide an inital base for organizing worlds with raster playgrounds and agents in. Still under development.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Michael Lustenberger&lt;br /&gt;
&lt;br /&gt;
==== r.area ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.area|version=7}} can be used to remove, areas smaller than treshold, reclass according areas (similar to r.reclass area, but work in cells, not hectares and allow create more classes)&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Jarek Jasiewicz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== r.basin ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.basin|version=7}} generates the main morphometric parameters of the basin starting from the digital elevation model and the coordinates of the basin's closing section.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Margherita Di Leo, Massimo Di Stefano&lt;br /&gt;
&lt;br /&gt;
==== r.bioclim ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.bioclim|version=7}} calculates various bioclimatic indices from monthly temperature and optional precipitation time series. The time series can be averages for several years or monthly values for a specific year. In any case all 12 months must be provided. It a precipitation time series is not provided, only those indices based on temperature are calculated. The names of the output maps are &amp;lt;output&amp;gt;.bio01, &amp;lt;output&amp;gt;.bio02, &amp;lt;output&amp;gt;.bio03, etc. &lt;br /&gt;
&lt;br /&gt;
==== r.bitpattern ====&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== r.catchment ====&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
'''(more modules missing here, for now see manual above or fix this Wiki page!)'''&lt;br /&gt;
&lt;br /&gt;
==== r.convergence ====&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
==== r.convert ====&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== r.crater ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.crater|version=7}}: estimates the size of a gravity dominated impact crater or the projectile that made it.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Yann Chemin&lt;br /&gt;
&lt;br /&gt;
==== r.damflood ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.damflood|version=7}}: The definition of flooding areas is of considerable importance for both the risk analysis and the emergency management.&lt;br /&gt;
This command is an embedded GRASS GIS hydrodynamic 2D model that allows to obtain flooding area due to a failure of a dam, given the geometry of the reservoir and of the downstream area, the initial conditions and the dam breach geometry.&lt;br /&gt;
&lt;br /&gt;
: '''Authors:''' Roberto Marzocchi and Massimiliano Cannata&lt;br /&gt;
&lt;br /&gt;
==== r.droka ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.droka|version=7}}: This script defines rockfall zones from a digital elevation model (DEM) and vector layer containing starting point or points.&lt;br /&gt;
&lt;br /&gt;
: '''Authors:''' Andrea Filipello and Daniele Strigaro &lt;br /&gt;
&lt;br /&gt;
==== r.fidimo ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.fidimo|version=7}}: [http://jradinger.wordpress.com/fidimo/ FIDIMO] is a raster tool to model fish dispersal in river networks. Therefore, empirical leptokurtic fish dispersal kernels are used to model movement distances in rasterized river networks, considering movement barriers. FIDIMO allows predicting and simulating spatio-temporal patterns of fish dispersal. &lt;br /&gt;
&lt;br /&gt;
Radinger, J., Kail, J. and Wolter, C. (2013) FIDIMO – A Free and Open Source GIS based dispersal model for riverine fish. ''Ecological Informatics'' 1–10. DOI: [http://dx.doi.org/10.1016/j.ecoinf.2013.06.002 10.1016/j.ecoinf.2013.06.002]&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Johannes Radinger&lt;br /&gt;
&lt;br /&gt;
==== r.flexure ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.flexure|version=7}}: r.flexure is used to calculate how the lithosphere bends under geologic loads. It is an interface for the [https://github.com/awickert/gFlex gFlex] model, which must be downloaded and installed in order for it to work.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Andrew Wickert&lt;br /&gt;
&lt;br /&gt;
==== r.flip ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.flip|version=7}} Flips a raster map&lt;br /&gt;
&lt;br /&gt;
==== r.forestfrag ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.forestfrag|version=7}} is an addon to create a forest fragmentation index from a GRASS raster map (where forest=1, non-forest=0) based on a method developed by Riitters et. al (2000). The index is computed using an moving window of user-defined size (default = 3).&lt;br /&gt;
&lt;br /&gt;
:'''Authors:''' Maning Sambale, Stefan Sylla (original script) and Paulo van Breugel (present script)&lt;br /&gt;
&lt;br /&gt;
==== r.fuzzy ====&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
* {{AddonSrc|raster|r.fuzzy.logic|version=7}}&lt;br /&gt;
* {{AddonSrc|raster|r.fuzzy.set|version=7}}&lt;br /&gt;
* {{AddonSrc|raster|r.fuzzy.system|version=7}}&lt;br /&gt;
&lt;br /&gt;
==== r.gdd ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.gdd|version=7}} calculates (accumulated) growing degree days (GDDs) and Winkler indices from several input maps with temperature data for different times of the day.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Markus Metz&lt;br /&gt;
&lt;br /&gt;
==== r.hants ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.hants|version=7}} performs a harmonic analysis of time series in order to estimate missing values and identify outliers. For each input map, an output map with the suffix suffix (default: _hants) is created.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Markus Metz&lt;br /&gt;
&lt;br /&gt;
==== r.hazard.flood ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.hazard.flood|version=7}} is an implementation of a fast procedure to detect flood prone areas. The exposure to flooding may be delineated by adopting a topographic index (TIm) computed from a DEM. The portion of a basin exposed to flood inundation is generally characterized by a TIm higher than a given threshold, tau. The threshold is automatically determinated from the cellsize. The proposed procedure may help in the delineation of flood prone areas especially in basins with marked topography. The use of the modified topographic index should not be considered as an alternative to standard hydrological-hydraulic simulations for flood mapping, but it may represent a useful and rapid tool for a preliminary delineation of flooding areas in ungauged basins and in areas where expensive and time consuming hydrological-hydraulic simulations are not affordable or economically convenient. &lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Margherita Di Leo&lt;br /&gt;
&lt;br /&gt;
==== r.houghtransform ====&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
==== r.hydrodem ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.hydrodem|version=7}} applies hydrological conditioning (sink removal) to a required input elevation map. If the conditioned elevation map is going to be used as input elevation for r.watershed, only small sinks should be removed and the amount of modifications restricted with the mod option. For other modules such as {{cmd|r.terraflow}} or third-party software, full sink removal is recommended.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Markus Metz&lt;br /&gt;
&lt;br /&gt;
==== r.in.srtm.region ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.in.srtm.region|version=7}} for download and import of SRTM for the current region. If needed, tiles are patched together and optionally holes interpolated.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Markus Metz&lt;br /&gt;
&lt;br /&gt;
==== r.in.wms2 ====&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
==== r.lfp ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.lfp|version=7}} creates a longest flow path raster map using a drainage direction raster map and the coordinates of an outlet point. The module internally runs &amp;lt;em&amp;gt;r.stream.distance&amp;lt;/em&amp;gt; twice to calculate flow length downstream and upstream raster maps, and combines them to get the longest flow path. An input drainage map can be created using {{cmd|r.watershed}} or {{cmd|r.stream.extract}}.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Huidae Cho&lt;br /&gt;
&lt;br /&gt;
==== r.massmov ====&lt;br /&gt;
&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
==== r.meb ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.meb|version=7}}: The multivariate environmental bias (MEB) takes the medium conditions in an area N and computes how much conditions in a subset of N (S) deviate from these medium conditions.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Paulo van Breugel&lt;br /&gt;
&lt;br /&gt;
==== r.mess====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.mess|version=7}}, Function to compute the &amp;quot;Multivariate Environmental Similarity Surfaces&amp;quot; (MESS), which represents how similar a point is to a reference set of points, with respect to a set of predictor variables&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Paulo van Breugel&lt;br /&gt;
&lt;br /&gt;
==== r.modis ====&lt;br /&gt;
&lt;br /&gt;
'''{{AddonSrc|raster|r.modis|version=7}}''': The '''r.modis''' suite is a toolset to import MODIS satellite data in GRASS GIS. It uses the [http://gis.cri.fmach.it/pymodis/ pyModis library] and the MODIS Reprojection Tool software to convert, mosaik and process MODIS data. It is written in Python language for GRASS 7, developed during the Google Summer of Code 2011.&lt;br /&gt;
&lt;br /&gt;
See also [[R.modis]]:&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Luca Delucchi (GSoC mentor: Markus Neteler)&lt;br /&gt;
&lt;br /&gt;
==== r.niche.similarity ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.niche.similarity|version=7}}: Module to quantify niche similarity or overlap between all pairs of input raster layers, using an index based on Warren et al. (2008) or the index proposed by Schoeners D (Schoener, 1968).&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Paulo van Breugel&lt;br /&gt;
&lt;br /&gt;
==== r.northerness.easterness ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.northerness.easterness|version=7}}: Calculations of northerness, easterness and the interaction between northerness and slope.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Helmut Kudrnovsky&lt;br /&gt;
&lt;br /&gt;
==== r.random.weight ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.random.weight|version=7}}: Generates a raster layer with a weighted random selection of the raster cells (selected cells are assigned a value 1, other a value 0). The user needs to provide a weight raster layer, which defines for each cell the the weight (probablity to be selected).&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Paulo van Breugel&lt;br /&gt;
&lt;br /&gt;
==== r.recode.attr ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.recode.attr|version=7}}: To reclass/recode a raster layer based on values in a csv table.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Paulo van Breugel&lt;br /&gt;
&lt;br /&gt;
==== r.regression.series ====&lt;br /&gt;
&lt;br /&gt;
'''{{AddonSrc|raster|r.regression.series|version=7}}''' is a module to calculate linear regression parameters between two time series, e.g. NDVI and precipitation.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Markus Metz&lt;br /&gt;
&lt;br /&gt;
==== r.roughness.vector ====&lt;br /&gt;
&lt;br /&gt;
'''{{AddonSrc|raster|r.roughness.vector|version=7}}''' is a module to calculate surface roughness as vector dispersion, using a moving-window approach. Resulting maps are: Vector Strength (R) and Inverted Fisher's k parameter.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Carlos Henrique Grohmann and Helmut Kudrnovsky&lt;br /&gt;
&lt;br /&gt;
==== r.smooth.seg ====&lt;br /&gt;
&lt;br /&gt;
'''{{AddonSrc|raster|r.smooth.seg|version=7}}''' generates a piece-wise smooth approximation of the input raster map and a raster map of the discontinuities of the output approximation. The discontinuities of the output approximation are preserved from being smoothed. The module implements the Mumford-Shah variational model for image segmentation.&lt;br /&gt;
&lt;br /&gt;
An overview of the underlying theory with some applications cab be found  &lt;br /&gt;
[http://dx.doi.org/10.1016/j.isprsjprs.2012.02.005 here (Journal paper)]. &amp;lt;br&amp;gt;&lt;br /&gt;
Other examples of use of the module can be found &lt;br /&gt;
[http://www.ing.unitn.it/~vittia/sw here (Web page)] and &lt;br /&gt;
[http://download.osgeo.org/osgeo/foss4g/2009/SPREP/2Thu/Parkside%20GO4/1500/Thu%20G04%201545%20Zatelli.pdf here (Presentation @ FOSS4G 2009 - pdf)]. &amp;lt;br&amp;gt;&lt;br /&gt;
For details on the numerical implementation see &lt;br /&gt;
[http://www.ing.unitn.it/~vittia/misc/vitti_phd.pdf here (PhD thesis - pdf)].&lt;br /&gt;
&lt;br /&gt;
In GRASS 6 the module was named &amp;quot;r.seg&amp;quot;. &amp;lt;br&amp;gt;&lt;br /&gt;
In GRASS 7 the module was formerly named &amp;quot;r.segment&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Alfonso Vitti&lt;br /&gt;
&lt;br /&gt;
==== r.stream.basins ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.stream.basins|version=7}}: Calculate basins according user input.&lt;br /&gt;
&lt;br /&gt;
==== r.stream.channel ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.stream.channel|version=7}}: Calculate some local properties of the stream network. It is supplementary module for r.stream.order and r.stream.distance to investigate channel subsystem.&lt;br /&gt;
&lt;br /&gt;
==== r.stream.distance ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.stream.distance|version=7}}: Calculate distance to and elevation above streams and outlets according user input. It can work in stream mode where target are streams and outlets mode where targets are outlets.&lt;br /&gt;
&lt;br /&gt;
==== r.stream.extract ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.stream.extract|version=7}}: Stream network extraction.&lt;br /&gt;
&lt;br /&gt;
==== r.stream.order ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.stream.order|version=7}}: Calculate Strahler's and Horton's stream order Hack's main streams and Shreeve's stream magnitude. It uses r.watershed or r.stream.extract output files: stream, direction and optionally accumulation. Output data can be either from r.watershed or r.stream.extract but not from both together.&lt;br /&gt;
&lt;br /&gt;
==== r.stream.segment ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.stream.segment|version=7}}: The module is designed to inverstigate network lineaments and calculate angle relations between tributaries and its major streams.&lt;br /&gt;
&lt;br /&gt;
==== r.stream.slope ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.stream.slope|version=7}}: Calculates the difference between elevation of current cell and downstream cell, gradient and max curvature on the basis of a flow direction map. It can be used to calculate the directional slope using a flow direction map.&lt;br /&gt;
&lt;br /&gt;
==== r.stream.snap ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.stream.snap|version=7}}: is a supplementary module for r.stream.extract and r.stream.basins to correct position of outlets or stream initial points as they do not lie on the streamlines.&lt;br /&gt;
&lt;br /&gt;
==== r.stream.stats ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.stream.stats|version=7}}: Calculate Horton's and optionally Hack's statistics according to user input.&lt;br /&gt;
&lt;br /&gt;
==== r.threshold ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.threshold|version=7}} finds optimal threshold for stream extraction.&lt;br /&gt;
....&lt;br /&gt;
&lt;br /&gt;
==== r.to.vect.tiled ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.to.vect.tiled|version=7}} vectorizes the input raster map and produces several tiled vector maps covering the current region. Vectorizing a large raster map with {{cmd|r.to.vect}} can require a lot of memory. In these cases,&amp;lt;em&amp;gt;r.to.vect.tiled&amp;lt;/em&amp;gt; can reduce memory usage by vectorizing each tile separately.&lt;br /&gt;
&lt;br /&gt;
==== r.valley.bottom ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.valley.bottom|version=7}}: Calculation of a Multi-resolution Valley Bottom Flatness (MrVBF) index.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Helmut Kudrnovsky&lt;br /&gt;
&lt;br /&gt;
==== r.vif====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.vif|version=7}}, Compute the variance inflaction factor (VIF) and the square root of the VIF. The variable with the highest VIF will be dropped and the VIF will be recomputed. This will be repeated till an user-defined VIF threshold value is reached.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Paulo van Breugel&lt;br /&gt;
&lt;br /&gt;
==== r.vol.dem ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|raster|r.vol.dem|version=7}} interpolates a voxel model from a series of DEMs by flood filling the voxel space in between.&lt;/div&gt;</summary>
		<author><name>⚠️Avitti</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Image_classification&amp;diff=11357</id>
		<title>Image classification</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Image_classification&amp;diff=11357"/>
		<updated>2010-09-03T10:22:39Z</updated>

		<summary type="html">&lt;p&gt;⚠️Avitti: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Image classification ==&lt;br /&gt;
&lt;br /&gt;
'''Classification methods in GRASS'''&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| ||'''radiometric&amp;lt;BR&amp;gt;unsupervised'''||'''radiometric&amp;lt;BR&amp;gt;supervised 1'''||'''radiometric&amp;lt;BR&amp;gt;supervised 2'''||'''radiometric &amp;amp; geometric&amp;lt;BR&amp;gt;supervised'''&lt;br /&gt;
|-&lt;br /&gt;
| '''Image Preprocessing''' || colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center;&amp;quot;| {{AddonCmd|r.seg}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Preprocessing'''||{{cmd|i.cluster}}||{{cmd|i.class}} (monitor digitizing)||{{cmd|i.gensig}} (using training maps)||{{cmd|i.gensigset}} (using training maps)&lt;br /&gt;
|-&lt;br /&gt;
| '''Classification'''||{{cmd|i.maxlik}}||{{cmd|i.maxlik}}||{{cmd|i.maxlik}}||{{cmd|i.smap}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Remarks'''||automated run based||requires digitalization||requires digitalization||requires digitalization&lt;br /&gt;
|-&lt;br /&gt;
|    ||on image statistics||of training areas||of training areas||of training areas&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You can digitize training areas with either r.digit (not recommended) or v.digit + v.to.rast (recommended)&lt;br /&gt;
&lt;br /&gt;
=== Image Preprocessing (otional) ===&lt;br /&gt;
* {{AddonCmd|r.seg}} - produces a smooth approximation of the data and performs discontinuity detection. The module is based on the Mumford-Shah variational model for image segmentation. Used as pre-analysis for a subsequent classification.&lt;br /&gt;
: For details, see the [http://www.ing.unitn.it/~vittia/sw/doc/r.seg_doc.html r.seg documentation]&lt;br /&gt;
&lt;br /&gt;
=== Interactive setup ===&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.class}} - Generates spectral signatures for an image by allowing the user to outline regions of interest.&lt;br /&gt;
: The resulting signature file can be used as input for {{cmd|i.maxlik}} or as a seed signature file for {{cmd|i.cluster}}.&lt;br /&gt;
&lt;br /&gt;
=== Preprocessing ===&lt;br /&gt;
&lt;br /&gt;
*  {{cmd|i.cluster}} - Generates spectral signatures for land cover types in an image using a clustering algorithm.&lt;br /&gt;
: The resulting signature file is used as input for {{cmd|i.maxlik}}, to generate an unsupervised image classification.&lt;br /&gt;
* {{cmd|i.gensig}} - Generates statistics for {{cmd|i.maxlik}} from raster map layer.&lt;br /&gt;
* {{cmd|i.gensigset}} - Generate statistics for {{cmd|i.smap}} from raster map layer.&lt;br /&gt;
&lt;br /&gt;
=== Unsupervised classification ===&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.maxlik}} - Classifies the cell spectral reflectances in imagery data.&lt;br /&gt;
: Classification is based on the spectral signature information generated by either {{cmd|i.cluster}}, {{cmd|i.class}}, or {{cmd|i.gensig}}.&lt;br /&gt;
&lt;br /&gt;
=== Supervised classification ===&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.smap}}  - Performs contextual (image segmentation) image classification using sequential maximum a posteriori (SMAP) estimation.&lt;br /&gt;
* In case of panchromatic maps or limited amount of channels, it is often recommended to generate synthetic channels through texture analysis ({{cmd|r.texture}})&lt;br /&gt;
&lt;br /&gt;
== Small classification tutorial ==&lt;br /&gt;
&lt;br /&gt;
Required: GRASS &amp;gt;=  6.4.0&lt;br /&gt;
&lt;br /&gt;
We are using Landsat satellite data prepared for the [http://www.grassbook.org/data_menu3rd.php North Carolina] sampling site. It is a multispectral dataset where each channel is stored in a separate map.&lt;br /&gt;
&lt;br /&gt;
We are using the North Carolina location here.&lt;br /&gt;
&lt;br /&gt;
=== Warming up with Landsat TM ===&lt;br /&gt;
&lt;br /&gt;
  # look what maps are there&lt;br /&gt;
  g.list rast&lt;br /&gt;
  # set to one of the color channels and print current region settings&lt;br /&gt;
  g.region rast=lsat7_2002_10 -p&lt;br /&gt;
&lt;br /&gt;
  # look at some Landsat map (1: blue, 2: green, 3: red, 4: near infrared etc.)&lt;br /&gt;
  d.mon x0&lt;br /&gt;
  d.rast lsat7_2002_10&lt;br /&gt;
  d.rast lsat7_2002_20&lt;br /&gt;
  d.rast lsat7_2002_30 &lt;br /&gt;
  d.rast lsat7_2002_40&lt;br /&gt;
&lt;br /&gt;
We can easily query the spectrum for individual points:&lt;br /&gt;
  d.what.rast lsat7_2002_10,lsat7_2002_20,lsat7_2002_30,lsat7_2002_40&lt;br /&gt;
&lt;br /&gt;
Histogram of a channel:&lt;br /&gt;
  d.histogram lsat7_2002_10&lt;br /&gt;
&lt;br /&gt;
Create RGB view on the fly, true and false color:&lt;br /&gt;
  d.rgb b=lsat7_2002_10 g=lsat7_2002_20 r=lsat7_2002_30&lt;br /&gt;
  d.rgb b=lsat7_2002_70 g=lsat7_2002_20 r=lsat7_2002_30&lt;br /&gt;
  d.rgb b=lsat7_2002_70 g=lsat7_2002_50 r=lsat7_2002_30&lt;br /&gt;
  d.rgb b=lsat7_2002_70 g=lsat7_2002_50 r=lsat7_2002_10&lt;br /&gt;
&lt;br /&gt;
Check thermal channel (encoded to fit into 0.255 data range):&lt;br /&gt;
# http://landsathandbook.gsfc.nasa.gov/handbook/handbook_htmls/chapter11/chapter11.html&lt;br /&gt;
# Look up LMIN/LMAX: &amp;quot;Table 11.2 ETM+ Spectral Radiance Range watts/(meter squared * ster * µm)&amp;quot;&lt;br /&gt;
# we won't go into details here, r.mapcalc would be used to convert to Kelvoin/degree Celsius.&lt;br /&gt;
&lt;br /&gt;
  # look at encoded thermal channel&lt;br /&gt;
  d.rast lsat7_2002_61&lt;br /&gt;
&lt;br /&gt;
NDVI as example for map algebra:&lt;br /&gt;
  r.mapcalc &amp;quot;ndvi = 1.0 * (lsat7_2002_40 - lsat7_2002_30)/(lsat7_2002_40 + lsat7_2002_30)&amp;quot;&lt;br /&gt;
  d.rast.leg ndvi&lt;br /&gt;
  r.colors ndvi color=ndvi&lt;br /&gt;
  d.rast.leg ndvi&lt;br /&gt;
&lt;br /&gt;
Show selected NDVI &amp;quot;classes&amp;quot;:&lt;br /&gt;
  d.rast ndvi val=0.3-1.0&lt;br /&gt;
  d.rast ndvi val=-1.0--0.1&lt;br /&gt;
  d.rast ndvi val=0.0-0.2&lt;br /&gt;
  d.rast ndvi val=0.0-0.3&lt;br /&gt;
&lt;br /&gt;
Look at panchromatic channel, compare resolution:&lt;br /&gt;
  g.region rast=lsat7_2002_80 -p&lt;br /&gt;
  d.erase -f&lt;br /&gt;
  d.rast lsat7_2002_80&lt;br /&gt;
  d.zoom&lt;br /&gt;
  d.rast lsat7_2002_30&lt;br /&gt;
  d.rast lsat7_2002_80&lt;br /&gt;
&lt;br /&gt;
=== Image Classification ===&lt;br /&gt;
&lt;br /&gt;
Set region setting to red image:&lt;br /&gt;
  g.region rast=lsat7_2002_30 -p&lt;br /&gt;
&lt;br /&gt;
Create a group&lt;br /&gt;
  i.group group=lsat7_2002 subgroup=lsat7_2002 \&lt;br /&gt;
    input=lsat7_2002_10,lsat7_2002_20,lsat7_2002_30,lsat7_2002_40,lsat7_2002_50,lsat7_2002_70&lt;br /&gt;
&lt;br /&gt;
==== Unsupervised classification====&lt;br /&gt;
&lt;br /&gt;
Generate unsupervised statistics&lt;br /&gt;
  i.cluster  group=lsat7_2002 subgroup=lsat7_2002 sigfile=lsat7_2002_sig classes=10 reportfile=lsat7_2002.txt&lt;br /&gt;
&lt;br /&gt;
  # look at report file&lt;br /&gt;
  gedit lsat7_2002.txt &lt;br /&gt;
&lt;br /&gt;
Assign pixels to classes, check quality of assignment:&lt;br /&gt;
  i.maxlik group=lsat7_2002 subgroup=lsat7_2002 sigfile=lsat7_2002_sig class=lsat7_2002_class reject=lsat7_2002_reject&lt;br /&gt;
  d.rast.leg lsat7_2002_class&lt;br /&gt;
  d.mon x1&lt;br /&gt;
  d.rast.leg lsat7_2002_reject&lt;br /&gt;
  d.mon x2&lt;br /&gt;
  d.histogram lsat7_2002_reject&lt;br /&gt;
&lt;br /&gt;
Play with different cluster separations:&lt;br /&gt;
  i.cluster group=lsat7_2002 subgroup=lsat7_2002 sigfile=lsat7_2002_sig classes=10 reportfile=lsat7_2002.txt separation=1.5&lt;br /&gt;
  i.maxlik group=lsat7_2002 subgroup=lsat7_2002 sigfile=lsat7_2002_sig class=lsat7_2002_class2 reject=lsat7_2002_reject2&lt;br /&gt;
  d.mon x4&lt;br /&gt;
  d.rast.leg lsat7_2002_class2&lt;br /&gt;
  d.rast.leg lsat7_2002_reject2&lt;br /&gt;
  d.rast.leg lsat7_2002_reject&lt;br /&gt;
  d.rast.leg lsat7_2002_reject2&lt;br /&gt;
  d.rast.leg lsat7_2002_reject&lt;br /&gt;
  d.rast.leg lsat7_2002_reject2&lt;br /&gt;
  d.rast.leg lsat7_2002_class2&lt;br /&gt;
&lt;br /&gt;
Compare to RGB:&lt;br /&gt;
  d.rgb b=lsat7_2002_70 g=lsat7_2002_50 r=lsat7_2002_10&lt;br /&gt;
  d.rast lsat7_2002_class2 cat=1 -o&lt;br /&gt;
  d.rgb b=lsat7_2002_70 g=lsat7_2002_50 r=lsat7_2002_10&lt;br /&gt;
  d.rast lsat7_2002_class cat=1 -o&lt;br /&gt;
  d.rgb b=lsat7_2002_70 g=lsat7_2002_50 r=lsat7_2002_10&lt;br /&gt;
  d.rast lsat7_2002_class cat=1 -o&lt;br /&gt;
&lt;br /&gt;
We do a 3rd attempt with more classes&lt;br /&gt;
  i.cluster group=lsat7_2002 subgroup=lsat7_2002 sigfile=lsat7_2002_sig classes=15 reportfile=lsat7_2002.txt &lt;br /&gt;
  i.maxlik group=lsat7_2002 subgroup=lsat7_2002 sigfile=lsat7_2002_sig class=lsat7_2002_class3 reject=lsat7_2002_reject3&lt;br /&gt;
  d.rgb b=lsat7_2002_70 g=lsat7_2002_50 r=lsat7_2002_10&lt;br /&gt;
  d.rast lsat7_2002_class3 cat=1 -o&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Supervised classification====&lt;br /&gt;
&lt;br /&gt;
Rlaunch GUI for digitizer:&lt;br /&gt;
  g.gui wxpython&lt;br /&gt;
 &lt;br /&gt;
  # ... digitize training areas of water, asphalt, forest, uncovered soil; polygons/centroids with attribute&lt;br /&gt;
  # advantage: we know what the classes are&lt;br /&gt;
&lt;br /&gt;
Assign also numerical ID for each class in new column&lt;br /&gt;
  v.db.select lsat7_training&lt;br /&gt;
  v.db.addcol lsat7_training col=&amp;quot;id integer&amp;quot;&lt;br /&gt;
  v.db.select lsat7_training&lt;br /&gt;
  v.db.update lsat7_training col=id where=&amp;quot;name = 'water'&amp;quot; val=1&lt;br /&gt;
  v.db.update lsat7_training col=id where=&amp;quot;name = 'forest'&amp;quot; val=2&lt;br /&gt;
  v.db.update lsat7_training col=id where=&amp;quot;name = 'asphalt'&amp;quot; val=3&lt;br /&gt;
  v.db.update lsat7_training col=id where=&amp;quot;name = 'soil'&amp;quot; val=4&lt;br /&gt;
  v.db.select lsat7_training&lt;br /&gt;
&lt;br /&gt;
Transform vector training map to raster model:&lt;br /&gt;
  v.to.rast in=lsat7_training out=lsat7_training use=attr col=id labelcol=name --o&lt;br /&gt;
  &lt;br /&gt;
  d.mon x0&lt;br /&gt;
  d.rast.leg lsat7_training &lt;br /&gt;
&lt;br /&gt;
Generate statistics from training areas&lt;br /&gt;
  i.gensigset group=lsat7_2002 subgroup=lsat7_2002 sig=lsat7_2002_smap training=lsat7_training&lt;br /&gt;
&lt;br /&gt;
Perform supervised classification&lt;br /&gt;
  i.smap group=lsat7_2002 subgroup=lsat7_2002 sig=lsat7_2002_smap  out=smap&lt;br /&gt;
&lt;br /&gt;
  d.rast.leg smap&lt;br /&gt;
  d.rgb b=lsat7_2002_10 g=lsat7_2002_20 r=lsat7_2002_30&lt;br /&gt;
&lt;br /&gt;
Vectorize result:&lt;br /&gt;
  r.to.vect smap out=smap feat=area&lt;br /&gt;
  d.rgb b=lsat7_2002_10 g=lsat7_2002_20 r=lsat7_2002_30&lt;br /&gt;
  d.vect smap  type=boundary col=red&lt;br /&gt;
&lt;br /&gt;
That's it :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Further reading classification with GRASS ==&lt;br /&gt;
* Micha Silver: [http://my.arava.co.il/~micha/blog/?p=3 Analyzing acacia tree health in the Arava with GRASS GIS]&lt;br /&gt;
* Perrygeo: [http://www.perrygeo.net/wordpress/?p=104 Impervious surface deliniation with GRASS]&lt;br /&gt;
* Dylan Beaudette: [http://casoilresource.lawr.ucdavis.edu/drupal/node/159 Working with Landsat Data]&lt;br /&gt;
* Dylan Beaudette: [http://casoilresource.lawr.ucdavis.edu/drupal/node/548 Canopy Quantification via Image Classification]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Image processing]]&lt;/div&gt;</summary>
		<author><name>⚠️Avitti</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Image_classification&amp;diff=11356</id>
		<title>Image classification</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Image_classification&amp;diff=11356"/>
		<updated>2010-09-03T10:22:18Z</updated>

		<summary type="html">&lt;p&gt;⚠️Avitti: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Image classification ==&lt;br /&gt;
&lt;br /&gt;
'''Classification methods in GRASS'''&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| ||'''radiometric&amp;lt;BR&amp;gt;unsupervised'''||'''radiometric&amp;lt;BR&amp;gt;supervised 1'''||'''radiometric&amp;lt;BR&amp;gt;supervised 2'''||'''radiometric &amp;amp; geometric&amp;lt;BR&amp;gt;supervised'''&lt;br /&gt;
|-&lt;br /&gt;
| '''Image Preprocessing''' || colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center;&amp;quot;| {{AddonCmd|r.seg}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Preprocessing'''||{{cmd|i.cluster}}||{{cmd|i.class}} (monitor digitizing)||{{cmd|i.gensig}} (using training maps)||{{cmd|i.gensigset}} (using training maps)&lt;br /&gt;
|-&lt;br /&gt;
| '''Classification'''||{{cmd|i.maxlik}}||{{cmd|i.maxlik}}||{{cmd|i.maxlik}}||{{cmd|i.smap}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Remarks'''||automated run based||requires digitalization||requires digitalization||requires digitalization&lt;br /&gt;
|-&lt;br /&gt;
|    ||on image statistics||of training areas||of training areas||of training areas&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You can digitize training areas with either r.digit (not recommended) or v.digit + v.to.rast (recommended)&lt;br /&gt;
&lt;br /&gt;
=== Image Preprocessing (otional) ===&lt;br /&gt;
* {{AddonCmd|r.seg}} - produces a smooth approximation of the data and performs discontinuity detection. The module is based on the Mumford-Shah variational model for image segmentation. Used as pre-analysis for a subsequent classification.&lt;br /&gt;
: For details, see [http://www.ing.unitn.it/~vittia/sw/doc/r.seg_doc.html r.seg documentation]&lt;br /&gt;
&lt;br /&gt;
=== Interactive setup ===&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.class}} - Generates spectral signatures for an image by allowing the user to outline regions of interest.&lt;br /&gt;
: The resulting signature file can be used as input for {{cmd|i.maxlik}} or as a seed signature file for {{cmd|i.cluster}}.&lt;br /&gt;
&lt;br /&gt;
=== Preprocessing ===&lt;br /&gt;
&lt;br /&gt;
*  {{cmd|i.cluster}} - Generates spectral signatures for land cover types in an image using a clustering algorithm.&lt;br /&gt;
: The resulting signature file is used as input for {{cmd|i.maxlik}}, to generate an unsupervised image classification.&lt;br /&gt;
* {{cmd|i.gensig}} - Generates statistics for {{cmd|i.maxlik}} from raster map layer.&lt;br /&gt;
* {{cmd|i.gensigset}} - Generate statistics for {{cmd|i.smap}} from raster map layer.&lt;br /&gt;
&lt;br /&gt;
=== Unsupervised classification ===&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.maxlik}} - Classifies the cell spectral reflectances in imagery data.&lt;br /&gt;
: Classification is based on the spectral signature information generated by either {{cmd|i.cluster}}, {{cmd|i.class}}, or {{cmd|i.gensig}}.&lt;br /&gt;
&lt;br /&gt;
=== Supervised classification ===&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.smap}}  - Performs contextual (image segmentation) image classification using sequential maximum a posteriori (SMAP) estimation.&lt;br /&gt;
* In case of panchromatic maps or limited amount of channels, it is often recommended to generate synthetic channels through texture analysis ({{cmd|r.texture}})&lt;br /&gt;
&lt;br /&gt;
== Small classification tutorial ==&lt;br /&gt;
&lt;br /&gt;
Required: GRASS &amp;gt;=  6.4.0&lt;br /&gt;
&lt;br /&gt;
We are using Landsat satellite data prepared for the [http://www.grassbook.org/data_menu3rd.php North Carolina] sampling site. It is a multispectral dataset where each channel is stored in a separate map.&lt;br /&gt;
&lt;br /&gt;
We are using the North Carolina location here.&lt;br /&gt;
&lt;br /&gt;
=== Warming up with Landsat TM ===&lt;br /&gt;
&lt;br /&gt;
  # look what maps are there&lt;br /&gt;
  g.list rast&lt;br /&gt;
  # set to one of the color channels and print current region settings&lt;br /&gt;
  g.region rast=lsat7_2002_10 -p&lt;br /&gt;
&lt;br /&gt;
  # look at some Landsat map (1: blue, 2: green, 3: red, 4: near infrared etc.)&lt;br /&gt;
  d.mon x0&lt;br /&gt;
  d.rast lsat7_2002_10&lt;br /&gt;
  d.rast lsat7_2002_20&lt;br /&gt;
  d.rast lsat7_2002_30 &lt;br /&gt;
  d.rast lsat7_2002_40&lt;br /&gt;
&lt;br /&gt;
We can easily query the spectrum for individual points:&lt;br /&gt;
  d.what.rast lsat7_2002_10,lsat7_2002_20,lsat7_2002_30,lsat7_2002_40&lt;br /&gt;
&lt;br /&gt;
Histogram of a channel:&lt;br /&gt;
  d.histogram lsat7_2002_10&lt;br /&gt;
&lt;br /&gt;
Create RGB view on the fly, true and false color:&lt;br /&gt;
  d.rgb b=lsat7_2002_10 g=lsat7_2002_20 r=lsat7_2002_30&lt;br /&gt;
  d.rgb b=lsat7_2002_70 g=lsat7_2002_20 r=lsat7_2002_30&lt;br /&gt;
  d.rgb b=lsat7_2002_70 g=lsat7_2002_50 r=lsat7_2002_30&lt;br /&gt;
  d.rgb b=lsat7_2002_70 g=lsat7_2002_50 r=lsat7_2002_10&lt;br /&gt;
&lt;br /&gt;
Check thermal channel (encoded to fit into 0.255 data range):&lt;br /&gt;
# http://landsathandbook.gsfc.nasa.gov/handbook/handbook_htmls/chapter11/chapter11.html&lt;br /&gt;
# Look up LMIN/LMAX: &amp;quot;Table 11.2 ETM+ Spectral Radiance Range watts/(meter squared * ster * µm)&amp;quot;&lt;br /&gt;
# we won't go into details here, r.mapcalc would be used to convert to Kelvoin/degree Celsius.&lt;br /&gt;
&lt;br /&gt;
  # look at encoded thermal channel&lt;br /&gt;
  d.rast lsat7_2002_61&lt;br /&gt;
&lt;br /&gt;
NDVI as example for map algebra:&lt;br /&gt;
  r.mapcalc &amp;quot;ndvi = 1.0 * (lsat7_2002_40 - lsat7_2002_30)/(lsat7_2002_40 + lsat7_2002_30)&amp;quot;&lt;br /&gt;
  d.rast.leg ndvi&lt;br /&gt;
  r.colors ndvi color=ndvi&lt;br /&gt;
  d.rast.leg ndvi&lt;br /&gt;
&lt;br /&gt;
Show selected NDVI &amp;quot;classes&amp;quot;:&lt;br /&gt;
  d.rast ndvi val=0.3-1.0&lt;br /&gt;
  d.rast ndvi val=-1.0--0.1&lt;br /&gt;
  d.rast ndvi val=0.0-0.2&lt;br /&gt;
  d.rast ndvi val=0.0-0.3&lt;br /&gt;
&lt;br /&gt;
Look at panchromatic channel, compare resolution:&lt;br /&gt;
  g.region rast=lsat7_2002_80 -p&lt;br /&gt;
  d.erase -f&lt;br /&gt;
  d.rast lsat7_2002_80&lt;br /&gt;
  d.zoom&lt;br /&gt;
  d.rast lsat7_2002_30&lt;br /&gt;
  d.rast lsat7_2002_80&lt;br /&gt;
&lt;br /&gt;
=== Image Classification ===&lt;br /&gt;
&lt;br /&gt;
Set region setting to red image:&lt;br /&gt;
  g.region rast=lsat7_2002_30 -p&lt;br /&gt;
&lt;br /&gt;
Create a group&lt;br /&gt;
  i.group group=lsat7_2002 subgroup=lsat7_2002 \&lt;br /&gt;
    input=lsat7_2002_10,lsat7_2002_20,lsat7_2002_30,lsat7_2002_40,lsat7_2002_50,lsat7_2002_70&lt;br /&gt;
&lt;br /&gt;
==== Unsupervised classification====&lt;br /&gt;
&lt;br /&gt;
Generate unsupervised statistics&lt;br /&gt;
  i.cluster  group=lsat7_2002 subgroup=lsat7_2002 sigfile=lsat7_2002_sig classes=10 reportfile=lsat7_2002.txt&lt;br /&gt;
&lt;br /&gt;
  # look at report file&lt;br /&gt;
  gedit lsat7_2002.txt &lt;br /&gt;
&lt;br /&gt;
Assign pixels to classes, check quality of assignment:&lt;br /&gt;
  i.maxlik group=lsat7_2002 subgroup=lsat7_2002 sigfile=lsat7_2002_sig class=lsat7_2002_class reject=lsat7_2002_reject&lt;br /&gt;
  d.rast.leg lsat7_2002_class&lt;br /&gt;
  d.mon x1&lt;br /&gt;
  d.rast.leg lsat7_2002_reject&lt;br /&gt;
  d.mon x2&lt;br /&gt;
  d.histogram lsat7_2002_reject&lt;br /&gt;
&lt;br /&gt;
Play with different cluster separations:&lt;br /&gt;
  i.cluster group=lsat7_2002 subgroup=lsat7_2002 sigfile=lsat7_2002_sig classes=10 reportfile=lsat7_2002.txt separation=1.5&lt;br /&gt;
  i.maxlik group=lsat7_2002 subgroup=lsat7_2002 sigfile=lsat7_2002_sig class=lsat7_2002_class2 reject=lsat7_2002_reject2&lt;br /&gt;
  d.mon x4&lt;br /&gt;
  d.rast.leg lsat7_2002_class2&lt;br /&gt;
  d.rast.leg lsat7_2002_reject2&lt;br /&gt;
  d.rast.leg lsat7_2002_reject&lt;br /&gt;
  d.rast.leg lsat7_2002_reject2&lt;br /&gt;
  d.rast.leg lsat7_2002_reject&lt;br /&gt;
  d.rast.leg lsat7_2002_reject2&lt;br /&gt;
  d.rast.leg lsat7_2002_class2&lt;br /&gt;
&lt;br /&gt;
Compare to RGB:&lt;br /&gt;
  d.rgb b=lsat7_2002_70 g=lsat7_2002_50 r=lsat7_2002_10&lt;br /&gt;
  d.rast lsat7_2002_class2 cat=1 -o&lt;br /&gt;
  d.rgb b=lsat7_2002_70 g=lsat7_2002_50 r=lsat7_2002_10&lt;br /&gt;
  d.rast lsat7_2002_class cat=1 -o&lt;br /&gt;
  d.rgb b=lsat7_2002_70 g=lsat7_2002_50 r=lsat7_2002_10&lt;br /&gt;
  d.rast lsat7_2002_class cat=1 -o&lt;br /&gt;
&lt;br /&gt;
We do a 3rd attempt with more classes&lt;br /&gt;
  i.cluster group=lsat7_2002 subgroup=lsat7_2002 sigfile=lsat7_2002_sig classes=15 reportfile=lsat7_2002.txt &lt;br /&gt;
  i.maxlik group=lsat7_2002 subgroup=lsat7_2002 sigfile=lsat7_2002_sig class=lsat7_2002_class3 reject=lsat7_2002_reject3&lt;br /&gt;
  d.rgb b=lsat7_2002_70 g=lsat7_2002_50 r=lsat7_2002_10&lt;br /&gt;
  d.rast lsat7_2002_class3 cat=1 -o&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Supervised classification====&lt;br /&gt;
&lt;br /&gt;
Rlaunch GUI for digitizer:&lt;br /&gt;
  g.gui wxpython&lt;br /&gt;
 &lt;br /&gt;
  # ... digitize training areas of water, asphalt, forest, uncovered soil; polygons/centroids with attribute&lt;br /&gt;
  # advantage: we know what the classes are&lt;br /&gt;
&lt;br /&gt;
Assign also numerical ID for each class in new column&lt;br /&gt;
  v.db.select lsat7_training&lt;br /&gt;
  v.db.addcol lsat7_training col=&amp;quot;id integer&amp;quot;&lt;br /&gt;
  v.db.select lsat7_training&lt;br /&gt;
  v.db.update lsat7_training col=id where=&amp;quot;name = 'water'&amp;quot; val=1&lt;br /&gt;
  v.db.update lsat7_training col=id where=&amp;quot;name = 'forest'&amp;quot; val=2&lt;br /&gt;
  v.db.update lsat7_training col=id where=&amp;quot;name = 'asphalt'&amp;quot; val=3&lt;br /&gt;
  v.db.update lsat7_training col=id where=&amp;quot;name = 'soil'&amp;quot; val=4&lt;br /&gt;
  v.db.select lsat7_training&lt;br /&gt;
&lt;br /&gt;
Transform vector training map to raster model:&lt;br /&gt;
  v.to.rast in=lsat7_training out=lsat7_training use=attr col=id labelcol=name --o&lt;br /&gt;
  &lt;br /&gt;
  d.mon x0&lt;br /&gt;
  d.rast.leg lsat7_training &lt;br /&gt;
&lt;br /&gt;
Generate statistics from training areas&lt;br /&gt;
  i.gensigset group=lsat7_2002 subgroup=lsat7_2002 sig=lsat7_2002_smap training=lsat7_training&lt;br /&gt;
&lt;br /&gt;
Perform supervised classification&lt;br /&gt;
  i.smap group=lsat7_2002 subgroup=lsat7_2002 sig=lsat7_2002_smap  out=smap&lt;br /&gt;
&lt;br /&gt;
  d.rast.leg smap&lt;br /&gt;
  d.rgb b=lsat7_2002_10 g=lsat7_2002_20 r=lsat7_2002_30&lt;br /&gt;
&lt;br /&gt;
Vectorize result:&lt;br /&gt;
  r.to.vect smap out=smap feat=area&lt;br /&gt;
  d.rgb b=lsat7_2002_10 g=lsat7_2002_20 r=lsat7_2002_30&lt;br /&gt;
  d.vect smap  type=boundary col=red&lt;br /&gt;
&lt;br /&gt;
That's it :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Further reading classification with GRASS ==&lt;br /&gt;
* Micha Silver: [http://my.arava.co.il/~micha/blog/?p=3 Analyzing acacia tree health in the Arava with GRASS GIS]&lt;br /&gt;
* Perrygeo: [http://www.perrygeo.net/wordpress/?p=104 Impervious surface deliniation with GRASS]&lt;br /&gt;
* Dylan Beaudette: [http://casoilresource.lawr.ucdavis.edu/drupal/node/159 Working with Landsat Data]&lt;br /&gt;
* Dylan Beaudette: [http://casoilresource.lawr.ucdavis.edu/drupal/node/548 Canopy Quantification via Image Classification]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Image processing]]&lt;/div&gt;</summary>
		<author><name>⚠️Avitti</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Image_classification&amp;diff=11355</id>
		<title>Image classification</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Image_classification&amp;diff=11355"/>
		<updated>2010-09-03T10:20:42Z</updated>

		<summary type="html">&lt;p&gt;⚠️Avitti: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Image classification ==&lt;br /&gt;
&lt;br /&gt;
'''Classification methods in GRASS'''&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| ||'''radiometric&amp;lt;BR&amp;gt;unsupervised'''||'''radiometric&amp;lt;BR&amp;gt;supervised 1'''||'''radiometric&amp;lt;BR&amp;gt;supervised 2'''||'''radiometric &amp;amp; geometric&amp;lt;BR&amp;gt;supervised'''&lt;br /&gt;
|-&lt;br /&gt;
| '''Image Preprocessing''' || colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center;&amp;quot;| {{AddonCmd|r.seg}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Preprocessing'''||{{cmd|i.cluster}}||{{cmd|i.class}} (monitor digitizing)||{{cmd|i.gensig}} (using training maps)||{{cmd|i.gensigset}} (using training maps)&lt;br /&gt;
|-&lt;br /&gt;
| '''Classification'''||{{cmd|i.maxlik}}||{{cmd|i.maxlik}}||{{cmd|i.maxlik}}||{{cmd|i.smap}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Remarks'''||automated run based||requires digitalization||requires digitalization||requires digitalization&lt;br /&gt;
|-&lt;br /&gt;
|    ||on image statistics||of training areas||of training areas||of training areas&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You can digitize training areas with either r.digit (not recommended) or v.digit + v.to.rast (recommended)&lt;br /&gt;
&lt;br /&gt;
=== Image Preprocessing (otional) ===&lt;br /&gt;
* {{AddonCmd|r.seg}} - produces a smooth approximation of the data and discontinuity detection (based on the Mumford-Shah variational model for image segmentation). Used as pre-analysis for a subsequent classification.&lt;br /&gt;
: For details, see [http://www.ing.unitn.it/~vittia/sw/doc/r.seg_doc.html r.seg documentation]&lt;br /&gt;
&lt;br /&gt;
=== Interactive setup ===&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.class}} - Generates spectral signatures for an image by allowing the user to outline regions of interest.&lt;br /&gt;
: The resulting signature file can be used as input for {{cmd|i.maxlik}} or as a seed signature file for {{cmd|i.cluster}}.&lt;br /&gt;
&lt;br /&gt;
=== Preprocessing ===&lt;br /&gt;
&lt;br /&gt;
*  {{cmd|i.cluster}} - Generates spectral signatures for land cover types in an image using a clustering algorithm.&lt;br /&gt;
: The resulting signature file is used as input for {{cmd|i.maxlik}}, to generate an unsupervised image classification.&lt;br /&gt;
* {{cmd|i.gensig}} - Generates statistics for {{cmd|i.maxlik}} from raster map layer.&lt;br /&gt;
* {{cmd|i.gensigset}} - Generate statistics for {{cmd|i.smap}} from raster map layer.&lt;br /&gt;
&lt;br /&gt;
=== Unsupervised classification ===&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.maxlik}} - Classifies the cell spectral reflectances in imagery data.&lt;br /&gt;
: Classification is based on the spectral signature information generated by either {{cmd|i.cluster}}, {{cmd|i.class}}, or {{cmd|i.gensig}}.&lt;br /&gt;
&lt;br /&gt;
=== Supervised classification ===&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.smap}}  - Performs contextual (image segmentation) image classification using sequential maximum a posteriori (SMAP) estimation.&lt;br /&gt;
* In case of panchromatic maps or limited amount of channels, it is often recommended to generate synthetic channels through texture analysis ({{cmd|r.texture}})&lt;br /&gt;
&lt;br /&gt;
== Small classification tutorial ==&lt;br /&gt;
&lt;br /&gt;
Required: GRASS &amp;gt;=  6.4.0&lt;br /&gt;
&lt;br /&gt;
We are using Landsat satellite data prepared for the [http://www.grassbook.org/data_menu3rd.php North Carolina] sampling site. It is a multispectral dataset where each channel is stored in a separate map.&lt;br /&gt;
&lt;br /&gt;
We are using the North Carolina location here.&lt;br /&gt;
&lt;br /&gt;
=== Warming up with Landsat TM ===&lt;br /&gt;
&lt;br /&gt;
  # look what maps are there&lt;br /&gt;
  g.list rast&lt;br /&gt;
  # set to one of the color channels and print current region settings&lt;br /&gt;
  g.region rast=lsat7_2002_10 -p&lt;br /&gt;
&lt;br /&gt;
  # look at some Landsat map (1: blue, 2: green, 3: red, 4: near infrared etc.)&lt;br /&gt;
  d.mon x0&lt;br /&gt;
  d.rast lsat7_2002_10&lt;br /&gt;
  d.rast lsat7_2002_20&lt;br /&gt;
  d.rast lsat7_2002_30 &lt;br /&gt;
  d.rast lsat7_2002_40&lt;br /&gt;
&lt;br /&gt;
We can easily query the spectrum for individual points:&lt;br /&gt;
  d.what.rast lsat7_2002_10,lsat7_2002_20,lsat7_2002_30,lsat7_2002_40&lt;br /&gt;
&lt;br /&gt;
Histogram of a channel:&lt;br /&gt;
  d.histogram lsat7_2002_10&lt;br /&gt;
&lt;br /&gt;
Create RGB view on the fly, true and false color:&lt;br /&gt;
  d.rgb b=lsat7_2002_10 g=lsat7_2002_20 r=lsat7_2002_30&lt;br /&gt;
  d.rgb b=lsat7_2002_70 g=lsat7_2002_20 r=lsat7_2002_30&lt;br /&gt;
  d.rgb b=lsat7_2002_70 g=lsat7_2002_50 r=lsat7_2002_30&lt;br /&gt;
  d.rgb b=lsat7_2002_70 g=lsat7_2002_50 r=lsat7_2002_10&lt;br /&gt;
&lt;br /&gt;
Check thermal channel (encoded to fit into 0.255 data range):&lt;br /&gt;
# http://landsathandbook.gsfc.nasa.gov/handbook/handbook_htmls/chapter11/chapter11.html&lt;br /&gt;
# Look up LMIN/LMAX: &amp;quot;Table 11.2 ETM+ Spectral Radiance Range watts/(meter squared * ster * µm)&amp;quot;&lt;br /&gt;
# we won't go into details here, r.mapcalc would be used to convert to Kelvoin/degree Celsius.&lt;br /&gt;
&lt;br /&gt;
  # look at encoded thermal channel&lt;br /&gt;
  d.rast lsat7_2002_61&lt;br /&gt;
&lt;br /&gt;
NDVI as example for map algebra:&lt;br /&gt;
  r.mapcalc &amp;quot;ndvi = 1.0 * (lsat7_2002_40 - lsat7_2002_30)/(lsat7_2002_40 + lsat7_2002_30)&amp;quot;&lt;br /&gt;
  d.rast.leg ndvi&lt;br /&gt;
  r.colors ndvi color=ndvi&lt;br /&gt;
  d.rast.leg ndvi&lt;br /&gt;
&lt;br /&gt;
Show selected NDVI &amp;quot;classes&amp;quot;:&lt;br /&gt;
  d.rast ndvi val=0.3-1.0&lt;br /&gt;
  d.rast ndvi val=-1.0--0.1&lt;br /&gt;
  d.rast ndvi val=0.0-0.2&lt;br /&gt;
  d.rast ndvi val=0.0-0.3&lt;br /&gt;
&lt;br /&gt;
Look at panchromatic channel, compare resolution:&lt;br /&gt;
  g.region rast=lsat7_2002_80 -p&lt;br /&gt;
  d.erase -f&lt;br /&gt;
  d.rast lsat7_2002_80&lt;br /&gt;
  d.zoom&lt;br /&gt;
  d.rast lsat7_2002_30&lt;br /&gt;
  d.rast lsat7_2002_80&lt;br /&gt;
&lt;br /&gt;
=== Image Classification ===&lt;br /&gt;
&lt;br /&gt;
Set region setting to red image:&lt;br /&gt;
  g.region rast=lsat7_2002_30 -p&lt;br /&gt;
&lt;br /&gt;
Create a group&lt;br /&gt;
  i.group group=lsat7_2002 subgroup=lsat7_2002 \&lt;br /&gt;
    input=lsat7_2002_10,lsat7_2002_20,lsat7_2002_30,lsat7_2002_40,lsat7_2002_50,lsat7_2002_70&lt;br /&gt;
&lt;br /&gt;
==== Unsupervised classification====&lt;br /&gt;
&lt;br /&gt;
Generate unsupervised statistics&lt;br /&gt;
  i.cluster  group=lsat7_2002 subgroup=lsat7_2002 sigfile=lsat7_2002_sig classes=10 reportfile=lsat7_2002.txt&lt;br /&gt;
&lt;br /&gt;
  # look at report file&lt;br /&gt;
  gedit lsat7_2002.txt &lt;br /&gt;
&lt;br /&gt;
Assign pixels to classes, check quality of assignment:&lt;br /&gt;
  i.maxlik group=lsat7_2002 subgroup=lsat7_2002 sigfile=lsat7_2002_sig class=lsat7_2002_class reject=lsat7_2002_reject&lt;br /&gt;
  d.rast.leg lsat7_2002_class&lt;br /&gt;
  d.mon x1&lt;br /&gt;
  d.rast.leg lsat7_2002_reject&lt;br /&gt;
  d.mon x2&lt;br /&gt;
  d.histogram lsat7_2002_reject&lt;br /&gt;
&lt;br /&gt;
Play with different cluster separations:&lt;br /&gt;
  i.cluster group=lsat7_2002 subgroup=lsat7_2002 sigfile=lsat7_2002_sig classes=10 reportfile=lsat7_2002.txt separation=1.5&lt;br /&gt;
  i.maxlik group=lsat7_2002 subgroup=lsat7_2002 sigfile=lsat7_2002_sig class=lsat7_2002_class2 reject=lsat7_2002_reject2&lt;br /&gt;
  d.mon x4&lt;br /&gt;
  d.rast.leg lsat7_2002_class2&lt;br /&gt;
  d.rast.leg lsat7_2002_reject2&lt;br /&gt;
  d.rast.leg lsat7_2002_reject&lt;br /&gt;
  d.rast.leg lsat7_2002_reject2&lt;br /&gt;
  d.rast.leg lsat7_2002_reject&lt;br /&gt;
  d.rast.leg lsat7_2002_reject2&lt;br /&gt;
  d.rast.leg lsat7_2002_class2&lt;br /&gt;
&lt;br /&gt;
Compare to RGB:&lt;br /&gt;
  d.rgb b=lsat7_2002_70 g=lsat7_2002_50 r=lsat7_2002_10&lt;br /&gt;
  d.rast lsat7_2002_class2 cat=1 -o&lt;br /&gt;
  d.rgb b=lsat7_2002_70 g=lsat7_2002_50 r=lsat7_2002_10&lt;br /&gt;
  d.rast lsat7_2002_class cat=1 -o&lt;br /&gt;
  d.rgb b=lsat7_2002_70 g=lsat7_2002_50 r=lsat7_2002_10&lt;br /&gt;
  d.rast lsat7_2002_class cat=1 -o&lt;br /&gt;
&lt;br /&gt;
We do a 3rd attempt with more classes&lt;br /&gt;
  i.cluster group=lsat7_2002 subgroup=lsat7_2002 sigfile=lsat7_2002_sig classes=15 reportfile=lsat7_2002.txt &lt;br /&gt;
  i.maxlik group=lsat7_2002 subgroup=lsat7_2002 sigfile=lsat7_2002_sig class=lsat7_2002_class3 reject=lsat7_2002_reject3&lt;br /&gt;
  d.rgb b=lsat7_2002_70 g=lsat7_2002_50 r=lsat7_2002_10&lt;br /&gt;
  d.rast lsat7_2002_class3 cat=1 -o&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Supervised classification====&lt;br /&gt;
&lt;br /&gt;
Rlaunch GUI for digitizer:&lt;br /&gt;
  g.gui wxpython&lt;br /&gt;
 &lt;br /&gt;
  # ... digitize training areas of water, asphalt, forest, uncovered soil; polygons/centroids with attribute&lt;br /&gt;
  # advantage: we know what the classes are&lt;br /&gt;
&lt;br /&gt;
Assign also numerical ID for each class in new column&lt;br /&gt;
  v.db.select lsat7_training&lt;br /&gt;
  v.db.addcol lsat7_training col=&amp;quot;id integer&amp;quot;&lt;br /&gt;
  v.db.select lsat7_training&lt;br /&gt;
  v.db.update lsat7_training col=id where=&amp;quot;name = 'water'&amp;quot; val=1&lt;br /&gt;
  v.db.update lsat7_training col=id where=&amp;quot;name = 'forest'&amp;quot; val=2&lt;br /&gt;
  v.db.update lsat7_training col=id where=&amp;quot;name = 'asphalt'&amp;quot; val=3&lt;br /&gt;
  v.db.update lsat7_training col=id where=&amp;quot;name = 'soil'&amp;quot; val=4&lt;br /&gt;
  v.db.select lsat7_training&lt;br /&gt;
&lt;br /&gt;
Transform vector training map to raster model:&lt;br /&gt;
  v.to.rast in=lsat7_training out=lsat7_training use=attr col=id labelcol=name --o&lt;br /&gt;
  &lt;br /&gt;
  d.mon x0&lt;br /&gt;
  d.rast.leg lsat7_training &lt;br /&gt;
&lt;br /&gt;
Generate statistics from training areas&lt;br /&gt;
  i.gensigset group=lsat7_2002 subgroup=lsat7_2002 sig=lsat7_2002_smap training=lsat7_training&lt;br /&gt;
&lt;br /&gt;
Perform supervised classification&lt;br /&gt;
  i.smap group=lsat7_2002 subgroup=lsat7_2002 sig=lsat7_2002_smap  out=smap&lt;br /&gt;
&lt;br /&gt;
  d.rast.leg smap&lt;br /&gt;
  d.rgb b=lsat7_2002_10 g=lsat7_2002_20 r=lsat7_2002_30&lt;br /&gt;
&lt;br /&gt;
Vectorize result:&lt;br /&gt;
  r.to.vect smap out=smap feat=area&lt;br /&gt;
  d.rgb b=lsat7_2002_10 g=lsat7_2002_20 r=lsat7_2002_30&lt;br /&gt;
  d.vect smap  type=boundary col=red&lt;br /&gt;
&lt;br /&gt;
That's it :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Further reading classification with GRASS ==&lt;br /&gt;
* Micha Silver: [http://my.arava.co.il/~micha/blog/?p=3 Analyzing acacia tree health in the Arava with GRASS GIS]&lt;br /&gt;
* Perrygeo: [http://www.perrygeo.net/wordpress/?p=104 Impervious surface deliniation with GRASS]&lt;br /&gt;
* Dylan Beaudette: [http://casoilresource.lawr.ucdavis.edu/drupal/node/159 Working with Landsat Data]&lt;br /&gt;
* Dylan Beaudette: [http://casoilresource.lawr.ucdavis.edu/drupal/node/548 Canopy Quantification via Image Classification]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Image processing]]&lt;/div&gt;</summary>
		<author><name>⚠️Avitti</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Image_classification&amp;diff=11354</id>
		<title>Image classification</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Image_classification&amp;diff=11354"/>
		<updated>2010-09-03T10:16:19Z</updated>

		<summary type="html">&lt;p&gt;⚠️Avitti: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Image classification ==&lt;br /&gt;
&lt;br /&gt;
'''Classification methods in GRASS'''&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| ||'''radiometric&amp;lt;BR&amp;gt;unsupervised'''||'''radiometric&amp;lt;BR&amp;gt;supervised 1'''||'''radiometric&amp;lt;BR&amp;gt;supervised 2'''||'''radiometric &amp;amp; geometric&amp;lt;BR&amp;gt;supervised'''&lt;br /&gt;
|-&lt;br /&gt;
| '''Image Preprocessing''' || colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align: center;&amp;quot;| {{AddonCmd|r.seg}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Preprocessing'''||{{cmd|i.cluster}}||{{cmd|i.class}} (monitor digitizing)||{{cmd|i.gensig}} (using training maps)||{{cmd|i.gensigset}} (using training maps)&lt;br /&gt;
|-&lt;br /&gt;
| '''Classification'''||{{cmd|i.maxlik}}||{{cmd|i.maxlik}}||{{cmd|i.maxlik}}||{{cmd|i.smap}}&lt;br /&gt;
|-&lt;br /&gt;
| '''Remarks'''||automated run based||requires digitalization||requires digitalization||requires digitalization&lt;br /&gt;
|-&lt;br /&gt;
|    ||on image statistics||of training areas||of training areas||of training areas&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
You can digitize training areas with either r.digit (not recommended) or v.digit + v.to.rast (recommended)&lt;br /&gt;
&lt;br /&gt;
=== Image Preprocessing (otional) ===&lt;br /&gt;
* {{AddonCmd|r.seg}} - performs image segmentation and discontinuity detection (based on the Mumford-Shah variational model). Used as pre-analysis for a subsequent classification&lt;br /&gt;
: For details, see [http://www.ing.unitn.it/~vittia/sw/doc/r.seg_doc.html r.seg documentation]&lt;br /&gt;
&lt;br /&gt;
=== Interactive setup ===&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.class}} - Generates spectral signatures for an image by allowing the user to outline regions of interest.&lt;br /&gt;
: The resulting signature file can be used as input for {{cmd|i.maxlik}} or as a seed signature file for {{cmd|i.cluster}}.&lt;br /&gt;
&lt;br /&gt;
=== Preprocessing ===&lt;br /&gt;
&lt;br /&gt;
*  {{cmd|i.cluster}} - Generates spectral signatures for land cover types in an image using a clustering algorithm.&lt;br /&gt;
: The resulting signature file is used as input for {{cmd|i.maxlik}}, to generate an unsupervised image classification.&lt;br /&gt;
* {{cmd|i.gensig}} - Generates statistics for {{cmd|i.maxlik}} from raster map layer.&lt;br /&gt;
* {{cmd|i.gensigset}} - Generate statistics for {{cmd|i.smap}} from raster map layer.&lt;br /&gt;
&lt;br /&gt;
=== Unsupervised classification ===&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.maxlik}} - Classifies the cell spectral reflectances in imagery data.&lt;br /&gt;
: Classification is based on the spectral signature information generated by either {{cmd|i.cluster}}, {{cmd|i.class}}, or {{cmd|i.gensig}}.&lt;br /&gt;
&lt;br /&gt;
=== Supervised classification ===&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.smap}}  - Performs contextual (image segmentation) image classification using sequential maximum a posteriori (SMAP) estimation.&lt;br /&gt;
* In case of panchromatic maps or limited amount of channels, it is often recommended to generate synthetic channels through texture analysis ({{cmd|r.texture}})&lt;br /&gt;
&lt;br /&gt;
== Small classification tutorial ==&lt;br /&gt;
&lt;br /&gt;
Required: GRASS &amp;gt;=  6.4.0&lt;br /&gt;
&lt;br /&gt;
We are using Landsat satellite data prepared for the [http://www.grassbook.org/data_menu3rd.php North Carolina] sampling site. It is a multispectral dataset where each channel is stored in a separate map.&lt;br /&gt;
&lt;br /&gt;
We are using the North Carolina location here.&lt;br /&gt;
&lt;br /&gt;
=== Warming up with Landsat TM ===&lt;br /&gt;
&lt;br /&gt;
  # look what maps are there&lt;br /&gt;
  g.list rast&lt;br /&gt;
  # set to one of the color channels and print current region settings&lt;br /&gt;
  g.region rast=lsat7_2002_10 -p&lt;br /&gt;
&lt;br /&gt;
  # look at some Landsat map (1: blue, 2: green, 3: red, 4: near infrared etc.)&lt;br /&gt;
  d.mon x0&lt;br /&gt;
  d.rast lsat7_2002_10&lt;br /&gt;
  d.rast lsat7_2002_20&lt;br /&gt;
  d.rast lsat7_2002_30 &lt;br /&gt;
  d.rast lsat7_2002_40&lt;br /&gt;
&lt;br /&gt;
We can easily query the spectrum for individual points:&lt;br /&gt;
  d.what.rast lsat7_2002_10,lsat7_2002_20,lsat7_2002_30,lsat7_2002_40&lt;br /&gt;
&lt;br /&gt;
Histogram of a channel:&lt;br /&gt;
  d.histogram lsat7_2002_10&lt;br /&gt;
&lt;br /&gt;
Create RGB view on the fly, true and false color:&lt;br /&gt;
  d.rgb b=lsat7_2002_10 g=lsat7_2002_20 r=lsat7_2002_30&lt;br /&gt;
  d.rgb b=lsat7_2002_70 g=lsat7_2002_20 r=lsat7_2002_30&lt;br /&gt;
  d.rgb b=lsat7_2002_70 g=lsat7_2002_50 r=lsat7_2002_30&lt;br /&gt;
  d.rgb b=lsat7_2002_70 g=lsat7_2002_50 r=lsat7_2002_10&lt;br /&gt;
&lt;br /&gt;
Check thermal channel (encoded to fit into 0.255 data range):&lt;br /&gt;
# http://landsathandbook.gsfc.nasa.gov/handbook/handbook_htmls/chapter11/chapter11.html&lt;br /&gt;
# Look up LMIN/LMAX: &amp;quot;Table 11.2 ETM+ Spectral Radiance Range watts/(meter squared * ster * µm)&amp;quot;&lt;br /&gt;
# we won't go into details here, r.mapcalc would be used to convert to Kelvoin/degree Celsius.&lt;br /&gt;
&lt;br /&gt;
  # look at encoded thermal channel&lt;br /&gt;
  d.rast lsat7_2002_61&lt;br /&gt;
&lt;br /&gt;
NDVI as example for map algebra:&lt;br /&gt;
  r.mapcalc &amp;quot;ndvi = 1.0 * (lsat7_2002_40 - lsat7_2002_30)/(lsat7_2002_40 + lsat7_2002_30)&amp;quot;&lt;br /&gt;
  d.rast.leg ndvi&lt;br /&gt;
  r.colors ndvi color=ndvi&lt;br /&gt;
  d.rast.leg ndvi&lt;br /&gt;
&lt;br /&gt;
Show selected NDVI &amp;quot;classes&amp;quot;:&lt;br /&gt;
  d.rast ndvi val=0.3-1.0&lt;br /&gt;
  d.rast ndvi val=-1.0--0.1&lt;br /&gt;
  d.rast ndvi val=0.0-0.2&lt;br /&gt;
  d.rast ndvi val=0.0-0.3&lt;br /&gt;
&lt;br /&gt;
Look at panchromatic channel, compare resolution:&lt;br /&gt;
  g.region rast=lsat7_2002_80 -p&lt;br /&gt;
  d.erase -f&lt;br /&gt;
  d.rast lsat7_2002_80&lt;br /&gt;
  d.zoom&lt;br /&gt;
  d.rast lsat7_2002_30&lt;br /&gt;
  d.rast lsat7_2002_80&lt;br /&gt;
&lt;br /&gt;
=== Image Classification ===&lt;br /&gt;
&lt;br /&gt;
Set region setting to red image:&lt;br /&gt;
  g.region rast=lsat7_2002_30 -p&lt;br /&gt;
&lt;br /&gt;
Create a group&lt;br /&gt;
  i.group group=lsat7_2002 subgroup=lsat7_2002 \&lt;br /&gt;
    input=lsat7_2002_10,lsat7_2002_20,lsat7_2002_30,lsat7_2002_40,lsat7_2002_50,lsat7_2002_70&lt;br /&gt;
&lt;br /&gt;
==== Unsupervised classification====&lt;br /&gt;
&lt;br /&gt;
Generate unsupervised statistics&lt;br /&gt;
  i.cluster  group=lsat7_2002 subgroup=lsat7_2002 sigfile=lsat7_2002_sig classes=10 reportfile=lsat7_2002.txt&lt;br /&gt;
&lt;br /&gt;
  # look at report file&lt;br /&gt;
  gedit lsat7_2002.txt &lt;br /&gt;
&lt;br /&gt;
Assign pixels to classes, check quality of assignment:&lt;br /&gt;
  i.maxlik group=lsat7_2002 subgroup=lsat7_2002 sigfile=lsat7_2002_sig class=lsat7_2002_class reject=lsat7_2002_reject&lt;br /&gt;
  d.rast.leg lsat7_2002_class&lt;br /&gt;
  d.mon x1&lt;br /&gt;
  d.rast.leg lsat7_2002_reject&lt;br /&gt;
  d.mon x2&lt;br /&gt;
  d.histogram lsat7_2002_reject&lt;br /&gt;
&lt;br /&gt;
Play with different cluster separations:&lt;br /&gt;
  i.cluster group=lsat7_2002 subgroup=lsat7_2002 sigfile=lsat7_2002_sig classes=10 reportfile=lsat7_2002.txt separation=1.5&lt;br /&gt;
  i.maxlik group=lsat7_2002 subgroup=lsat7_2002 sigfile=lsat7_2002_sig class=lsat7_2002_class2 reject=lsat7_2002_reject2&lt;br /&gt;
  d.mon x4&lt;br /&gt;
  d.rast.leg lsat7_2002_class2&lt;br /&gt;
  d.rast.leg lsat7_2002_reject2&lt;br /&gt;
  d.rast.leg lsat7_2002_reject&lt;br /&gt;
  d.rast.leg lsat7_2002_reject2&lt;br /&gt;
  d.rast.leg lsat7_2002_reject&lt;br /&gt;
  d.rast.leg lsat7_2002_reject2&lt;br /&gt;
  d.rast.leg lsat7_2002_class2&lt;br /&gt;
&lt;br /&gt;
Compare to RGB:&lt;br /&gt;
  d.rgb b=lsat7_2002_70 g=lsat7_2002_50 r=lsat7_2002_10&lt;br /&gt;
  d.rast lsat7_2002_class2 cat=1 -o&lt;br /&gt;
  d.rgb b=lsat7_2002_70 g=lsat7_2002_50 r=lsat7_2002_10&lt;br /&gt;
  d.rast lsat7_2002_class cat=1 -o&lt;br /&gt;
  d.rgb b=lsat7_2002_70 g=lsat7_2002_50 r=lsat7_2002_10&lt;br /&gt;
  d.rast lsat7_2002_class cat=1 -o&lt;br /&gt;
&lt;br /&gt;
We do a 3rd attempt with more classes&lt;br /&gt;
  i.cluster group=lsat7_2002 subgroup=lsat7_2002 sigfile=lsat7_2002_sig classes=15 reportfile=lsat7_2002.txt &lt;br /&gt;
  i.maxlik group=lsat7_2002 subgroup=lsat7_2002 sigfile=lsat7_2002_sig class=lsat7_2002_class3 reject=lsat7_2002_reject3&lt;br /&gt;
  d.rgb b=lsat7_2002_70 g=lsat7_2002_50 r=lsat7_2002_10&lt;br /&gt;
  d.rast lsat7_2002_class3 cat=1 -o&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Supervised classification====&lt;br /&gt;
&lt;br /&gt;
Rlaunch GUI for digitizer:&lt;br /&gt;
  g.gui wxpython&lt;br /&gt;
 &lt;br /&gt;
  # ... digitize training areas of water, asphalt, forest, uncovered soil; polygons/centroids with attribute&lt;br /&gt;
  # advantage: we know what the classes are&lt;br /&gt;
&lt;br /&gt;
Assign also numerical ID for each class in new column&lt;br /&gt;
  v.db.select lsat7_training&lt;br /&gt;
  v.db.addcol lsat7_training col=&amp;quot;id integer&amp;quot;&lt;br /&gt;
  v.db.select lsat7_training&lt;br /&gt;
  v.db.update lsat7_training col=id where=&amp;quot;name = 'water'&amp;quot; val=1&lt;br /&gt;
  v.db.update lsat7_training col=id where=&amp;quot;name = 'forest'&amp;quot; val=2&lt;br /&gt;
  v.db.update lsat7_training col=id where=&amp;quot;name = 'asphalt'&amp;quot; val=3&lt;br /&gt;
  v.db.update lsat7_training col=id where=&amp;quot;name = 'soil'&amp;quot; val=4&lt;br /&gt;
  v.db.select lsat7_training&lt;br /&gt;
&lt;br /&gt;
Transform vector training map to raster model:&lt;br /&gt;
  v.to.rast in=lsat7_training out=lsat7_training use=attr col=id labelcol=name --o&lt;br /&gt;
  &lt;br /&gt;
  d.mon x0&lt;br /&gt;
  d.rast.leg lsat7_training &lt;br /&gt;
&lt;br /&gt;
Generate statistics from training areas&lt;br /&gt;
  i.gensigset group=lsat7_2002 subgroup=lsat7_2002 sig=lsat7_2002_smap training=lsat7_training&lt;br /&gt;
&lt;br /&gt;
Perform supervised classification&lt;br /&gt;
  i.smap group=lsat7_2002 subgroup=lsat7_2002 sig=lsat7_2002_smap  out=smap&lt;br /&gt;
&lt;br /&gt;
  d.rast.leg smap&lt;br /&gt;
  d.rgb b=lsat7_2002_10 g=lsat7_2002_20 r=lsat7_2002_30&lt;br /&gt;
&lt;br /&gt;
Vectorize result:&lt;br /&gt;
  r.to.vect smap out=smap feat=area&lt;br /&gt;
  d.rgb b=lsat7_2002_10 g=lsat7_2002_20 r=lsat7_2002_30&lt;br /&gt;
  d.vect smap  type=boundary col=red&lt;br /&gt;
&lt;br /&gt;
That's it :)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Further reading classification with GRASS ==&lt;br /&gt;
* Micha Silver: [http://my.arava.co.il/~micha/blog/?p=3 Analyzing acacia tree health in the Arava with GRASS GIS]&lt;br /&gt;
* Perrygeo: [http://www.perrygeo.net/wordpress/?p=104 Impervious surface deliniation with GRASS]&lt;br /&gt;
* Dylan Beaudette: [http://casoilresource.lawr.ucdavis.edu/drupal/node/159 Working with Landsat Data]&lt;br /&gt;
* Dylan Beaudette: [http://casoilresource.lawr.ucdavis.edu/drupal/node/548 Canopy Quantification via Image Classification]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Image processing]]&lt;/div&gt;</summary>
		<author><name>⚠️Avitti</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=AddOns&amp;diff=11342</id>
		<title>AddOns</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=AddOns&amp;diff=11342"/>
		<updated>2010-08-27T15:57:46Z</updated>

		<summary type="html">&lt;p&gt;⚠️Avitti: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains references to user contributions and add-ons (the original GRASS GIS software can be downloaded [http://grass.osgeo.org/download/ here]).&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== AddOns source code repository ==&lt;br /&gt;
&lt;br /&gt;
The AddOns source code is hosted in [http://svn.osgeo.org/grass/grass-addons/ GRASS-AddOns SVN repository].&lt;br /&gt;
&lt;br /&gt;
To checkout:&lt;br /&gt;
&lt;br /&gt;
 svn checkout &amp;lt;nowiki&amp;gt;https://svn.osgeo.org/grass/grass-addons/&amp;lt;/nowiki&amp;gt; grass-addons&lt;br /&gt;
&lt;br /&gt;
Please read [http://trac.osgeo.org/grass/wiki/HowToContribute#WriteaccesstotheGRASS-Addons-SVNrepository How to get write access to the GRASS-Addons-SVN repository] and contact the [http://lists.osgeo.org/mailman/listinfo/grass-dev grass-dev] mailing list if you would like to host your module there.&lt;br /&gt;
&lt;br /&gt;
== Building and installing Addons ==&lt;br /&gt;
&lt;br /&gt;
See the [[Compile and Install#Addons|compile and install]] wiki page.&lt;br /&gt;
&lt;br /&gt;
In GRASS 6.5+ use {{cmd|g.extension|version=65}} module, e.g. to install &amp;lt;tt&amp;gt;r.fuzzy.system&amp;lt;/tt&amp;gt; run&lt;br /&gt;
&lt;br /&gt;
 g.extension extension=r.fuzzy.system&lt;br /&gt;
&lt;br /&gt;
To remove installed Addons run&lt;br /&gt;
&lt;br /&gt;
 g.extension extension=r.fuzzy.system operation=remove&lt;br /&gt;
&lt;br /&gt;
== Adding something new ==&lt;br /&gt;
&lt;br /&gt;
Please announce your add-on to the GRASS users' mailing list so that others may be aware of your work. Also please consider adding your module to one of the [[Applications]] pages.&lt;br /&gt;
&lt;br /&gt;
=== Copyright and licensing information ===&lt;br /&gt;
&lt;br /&gt;
''Please be sure to include copyright and licensing information in the header comments of your code so that others may know how they can use, extend, modify, and redistribute your work.''&lt;br /&gt;
&lt;br /&gt;
e.g. at the top of a shell script:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
############################################################################&lt;br /&gt;
#&lt;br /&gt;
# MODULE:       v.in.e00&lt;br /&gt;
#&lt;br /&gt;
# AUTHOR(S):    Markus Neteler, Otto Dassau&lt;br /&gt;
#&lt;br /&gt;
# PURPOSE:      Import E00 data into a GRASS vector map&lt;br /&gt;
#               Imports single and split E00 files (.e00, .e01, .e02 ...)&lt;br /&gt;
#&lt;br /&gt;
# COPYRIGHT:    (c) 2004, 2005 GDF Hannover bR, http://www.gdf-hannover.de&lt;br /&gt;
#&lt;br /&gt;
#               This program is free software under the GNU General Public&lt;br /&gt;
#               License (&amp;gt;=v2). Read the file COPYING that comes with GRASS&lt;br /&gt;
#               for details.&lt;br /&gt;
#&lt;br /&gt;
#############################################################################&lt;br /&gt;
#&lt;br /&gt;
# REQUIREMENTS:&lt;br /&gt;
#      -  avcimport: http://avce00.maptools.org&lt;br /&gt;
&lt;br /&gt;
[script follows]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Coding standards ===&lt;br /&gt;
&lt;br /&gt;
Please have a look at our [http://grass.osgeo.org/grass63/source/SUBMITTING_SCRIPTS Shell script coding standards] before submitting here.&lt;br /&gt;
&lt;br /&gt;
There are other coding standards given for modules written in C, Tcl/Tk, and Python''(?)'' located in the GRASS source code.&lt;br /&gt;
&lt;br /&gt;
=== Documenting your code ===&lt;br /&gt;
&lt;br /&gt;
You can have an help page template auto-generated by using the GRASS [[module command line parser | command line parser]] with the &amp;lt;tt&amp;gt;--html-description&amp;lt;/tt&amp;gt; command line option. Please, see also the [http://grass.ibiblio.org/grass63/manuals/html63_user/g.parser.html g.parser help page]&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous Add-ons ==&lt;br /&gt;
&lt;br /&gt;
* [http://trac.osgeo.org/grass/browser/grass-addons/misc/utm_which_zone utm_which_zone.sh] is a shell script to determine UTM zone from Lat/Lon input. Requires [http://www.octave.org Octave] or Matlab to be installed. A shell-only version is [http://dcalvelo.free.fr/grass/utm_which_zone_sh.sh available] which only requires awk.&amp;lt;BR&amp;gt;'''Authors''': Hamish Bowman (Octave part), Markus Neteler (shell script wrapper), Daniel Calvelo (sh+awk version)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Perl scripts for converting data forth and back between Excel files and PostgreSQL: [http://dcalvelo.free.fr/grass/pg2xls.pl pg2xls.pl] reads data from PostgreSQL and produces an excel workbook; [http://dcalvelo.free.fr/grass/xls2sql.pl xls2sql.pl] reads excel files and outputs SQL statements to be fed into an RDBMS. Both scripts need modules from [http://www.cpan.org CPAN], especially [http://search.cpan.org/dist/Spreadsheet-ParseExcel/  Spreadsheet::ParseExcel] for xls2sql.pl and [http://search.cpan.org/~tmtm/Spreadsheet-WriteExcel-FromDB Spreadsheet::WriteExcel::FromDB] and its dependencies for pg2sql.pl. Check the source headers for more info.&amp;lt;BR&amp;gt;'''Authors:''' Daniel Calvelo (xls2sql.pl), Markus Neteler (pg2xls.pl)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://dream.lrrl.arch.tu-muenchen.de/~wqual/perl/dbf2sql.tgz dbf2sql] is a Perl script for translating dbf-tables into a sql-command. dbf-tables are read using dbfdump-command from dbd-xbase-perl module ([http://search.cpan.org/~janpaz/DBD-XBase-0.241/ dbd::xbase] and [http://search.cpan.org/~jv/Getopt-Long-2.35/lib/Getopt/Long.pm getopt::long] have to be installed from CPAN first). There are problems, if the last column of the table contains characters. Suggestions for improvements welcome! &amp;lt;BR&amp;gt;'''Author:'''Wolfgang Qual&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.igc.usp.br/pessoais/guano/downloads/azimuth2.c azimuth2.c] is a small C program to calculate the azimuth and length of vector lines exported by GRASS-GIS as ASCII files (like this: v.out.ascii input=vector output=ascii format=standard). It is useful for create rose diagrams of lineament maps. Improvements on the original code after suggestions by Örs Téglásy, Hungary.&amp;lt;BR&amp;gt;'''Author:''' Carlos Henrique Grohmann&lt;br /&gt;
&lt;br /&gt;
==GRASS 6.x (current)==&lt;br /&gt;
&lt;br /&gt;
=== Vector add-ons ===&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/vector&lt;br /&gt;
&lt;br /&gt;
==== v.adehabitat.clusthr, v.adehabitat.kernelUD, v.adehabitat.mcp ====&lt;br /&gt;
&lt;br /&gt;
: Tools to calculate home ranges of animals&lt;br /&gt;
: '''Author:''' Clement Calenge&lt;br /&gt;
&lt;br /&gt;
Available via SVN:&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/vector/adehabitat&lt;br /&gt;
&lt;br /&gt;
==== v.append ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.public.asu.edu/~cmbarton/files/grass_scripts/v.append v.append] is a shell script combining two vector files AND their associated attribute tables. The vector files should be of the same type and, for best results, should have identically formatted attribute tables.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Michael Barton&lt;br /&gt;
&lt;br /&gt;
==== v.autokrige ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/vector/v.autokrige/v.autokrige.py v.autokrige] achieves automatic ordinary kriging from GRASS sites (vector point data), using R with spgrass6 (RGRASS) and automap packages.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Mathieu Grelier&lt;br /&gt;
&lt;br /&gt;
==== v.breach ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.sieczka.org/programy_en.html v.breach] creates vector maps of lines and points of continously lowering elevation down the input watercourses, based on the input raster DEM.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Maciej Sieczka&lt;br /&gt;
&lt;br /&gt;
==== v.colors ====&lt;br /&gt;
&lt;br /&gt;
: {{cmd|v.colors}} ''moved into main archive''&lt;br /&gt;
&lt;br /&gt;
==== v.count.points.sh ====&lt;br /&gt;
&lt;br /&gt;
: [http://wiki.iosa.it/dokuwiki/spatial_analysis:feature_count v.count.points.sh] counts point features in areas, generates table good as input to d.vect.chart.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Stefano Costa&lt;br /&gt;
&lt;br /&gt;
==== v.digatt ====&lt;br /&gt;
&lt;br /&gt;
: [http://phygeo7.geo.uni-augsburg.de/gis2/scripts/v.digatt v.digatt] (shell script) Interactively assign numeric table attributes to series of vector objects. It is meant to be effective by avoiding to type in the attribute value for all single objects again and again. The user is prompted for typing in an attribute value which is assigned to all objects selected by mouseclick afterwards. Next the display is redrawn after updating the table column. Zooming allows to change the region before the old value can be reused or a new one can be typed in (or copied by mouse from another object) in order to assign it to the next series of objects etc. It is tested not very extensively yet. Therefore better work with a copy of your map and consider using v.digit or d.what.vect -e alternatively. [http://phygeo7.geo.uni-augsburg.de/gis2/scripts/v.digatt.png screenshot].&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Andreas Philipp&lt;br /&gt;
&lt;br /&gt;
==== v.dip ====&lt;br /&gt;
&lt;br /&gt;
: [http://marcin.slodkowski.googlepages.com/v.dip.tgz v.dip] creates points of thickness vectors from the vectors of strike and dip angles. The v.dip is the main ANSI C core program. Program so-called v.dip can run without GRASS environment.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Marcin Slodkowski&lt;br /&gt;
&lt;br /&gt;
==== v.flip ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.sieczka.org/programy_en.html v.flip] flips the direction of selected vector lines (redundant since GRASS 6.3 - there is &amp;quot;v.edit tool=flip&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Maciej Sieczka&lt;br /&gt;
&lt;br /&gt;
==== v.group ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.shockfamily.net/cedric/grass/v.group v.group] generates a new vector map with the same geometry as an existing map. The new map has categories and a table based on grouping by the values in certain columns of the existing map's table. The values in these columns are preserved in the table for the new map. It's like a v.reclass that preserves data.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Cedric Shock&lt;br /&gt;
&lt;br /&gt;
==== v.in.gama ====&lt;br /&gt;
&lt;br /&gt;
: Converts [http://www.gnu.org/software/gama/ GNU GaMa] XML output file to a GRASS vector map layer.&lt;br /&gt;
&lt;br /&gt;
:'''Author:''' Martin Landa&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/vector/v.in.gama&lt;br /&gt;
&lt;br /&gt;
==== v.in.geoplot ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/vector/v.in.geoplot v.in.geoplot] converts a [http://www.geoscan-research.co.uk/page9.html/ Geoplot] ASCII export file to a GRASS vector map layer.&lt;br /&gt;
&lt;br /&gt;
:'''Author:''' Benjamin Ducke&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/vector/v.in.geoplot&lt;br /&gt;
&lt;br /&gt;
==== v.in.gshhs ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/vector/v.in.gshhs v.in.gshhs] imports [http://www.soest.hawaii.edu/wessel/gshhs/gshhs.html GSHHS] shorelines into a GRASS vector map. GSHHS data are automatically reprojected to the current location.&lt;br /&gt;
&lt;br /&gt;
:'''Authors:''' several, updated to GRASS 6 by Markus Metz&lt;br /&gt;
&lt;br /&gt;
==== v.in.mbsys_fnv ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/vector/v.in.mbsys_fnv v.in.mbsys_fnv] imports [[MB-System]] navigation files into a GRASS vector map. You can choose from swath area coverage, track lines (including outer port/starboard edges), all bounds as points, etc. An attribute database is created containing the vital statistics of the specified feature such as track length or swath coverage (geodesic), start stop time and location, pitch, roll, heave, etc.&lt;br /&gt;
&lt;br /&gt;
:'''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== v.in.ncdc ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/vector/v.in.ncdc v.in.ncdc] imports an [http://www.ncdc.noaa.gov NCDC] stn file (station data) into a GRASS vector map.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Huidae Cho&lt;br /&gt;
&lt;br /&gt;
==== v.in.postgis ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/vector/v.in.postgis/v.in.postgis.py v.in.postgis] Create a GRASS layer from any sql query on PostGIS data.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Mathieu Grelier&lt;br /&gt;
&lt;br /&gt;
==== v.in.osm ====&lt;br /&gt;
&lt;br /&gt;
: [http://kripton.kripserver.net/software/v.in.osm/ v.in.osm]: OpenStreetMap import into GRASS. Yet only supports deprecated API 0.4, will be modified to work with API 0.5 some time soon.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Jannis Achstetter&lt;br /&gt;
&lt;br /&gt;
: See also [http://hamish.bowman.googlepages.com/gpsdrivefiles#osm osm2grass.sh] by H Bowman&lt;br /&gt;
&lt;br /&gt;
==== v.in.osm2 ====&lt;br /&gt;
&lt;br /&gt;
: [https://trac.osgeo.org/grass/browser/grass-addons/vector/v.in.osm2 v.in.osm2]: OpenStreetMap import into GRASS. Supports current API 0.6, downloads using the [http://wiki.openstreetmap.org/wiki/Xapi Xapi] interface and imports using GpsBabel 1.3.5 or newer. GpsBabel restricts to either nodes or ways being imported at a time, not both. Use {{cmd|v.patch}} to rejoin them. (''work in progress'')&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== v.in.ovl ====&lt;br /&gt;
&lt;br /&gt;
: [http://grasslab.gisix.com/scripts/v.in.ovl/ v.in.ovl] is a shell script that imports an ASCII vector file created with TOP10|25|50 or similar products.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Peter Löwe&lt;br /&gt;
&lt;br /&gt;
==== v.krige ====&lt;br /&gt;
&lt;br /&gt;
: [[V.krige_GSoC_2009 | v.krige]] aims to integrate R functions for kriging (packages automap, gstat, geoR) in a trasparent way. '''Moved into trunk/devbr6 code (r40048)'''&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Anne Ghisla, as Google Summer of Code 2009 project&lt;br /&gt;
&lt;br /&gt;
: See also [[GRASS_AddOns#v.autokrige]] by Mathieu Grelier&lt;br /&gt;
&lt;br /&gt;
==== v.lda ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.public.asu.edu/~cmbarton/files/grass_scripts/v.lda v.lda] is a shell script for calculating Ian Johnson's (U. Sidney) Local Density Analysis values to measure clustering of point data at different neighborhood radii. There is an option to create a simple line graph of the results. There have been reports of problems creating the line graph on Cygwin installations of GRASS.&lt;br /&gt;
&lt;br /&gt;
==== v.line.center ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.sieczka.org/programy_en.html v.line.center] creates a points vector map with each point located in the middle of the length of the input vector line.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Maciej Sieczka&lt;br /&gt;
&lt;br /&gt;
==== v.lmeasure ====&lt;br /&gt;
&lt;br /&gt;
: [http://ngeo.de/grassstuff/v.lmeasure v.lmeasure] and [http://ngeo.de/grassstuff/v.revlmeasure v.revlmeasure] are two perl scripts that place equidistant vector points along a given arbitrary vector line starting from the beginning or end of the vector line, respectively. Resulting  vector points are labeled with the distance from origin.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Mats Schuh&lt;br /&gt;
&lt;br /&gt;
==== v.out.ascii.db ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/vector/v.out.ascii.db v.out.ascii.db] is a shell script for exporting vector point data coordinates and selected attribute columns to either a file or to the console.&lt;br /&gt;
: ''Superseded in GRASS 6.4 by the new v.out.ascii columns= option.''&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== v.out.ascii.mat ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/vector/v.out.ascii.mat v.out.ascii.mat] is a shell script for exporting vector polygon and polyline data into an ASCII text file suitable for loading into Matlab (or [http://www.gnu.org/software/octave/ Octave]).&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== v.out.gmt ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/vector/v.out.gmt v.out.gmt] is a shell script that exports a polygon vector file into GMT xy file. psbasemap code was copied from Hamish's r.out.gmt.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Huidae Cho, Hamish Bowman, Dylan Beaudette&lt;br /&gt;
&lt;br /&gt;
==== v.out.kml ====&lt;br /&gt;
&lt;br /&gt;
: [http://grasslab.gisix.com/scripts/v.out.kml/ v.out.kml] is a shell script that exports a vector file into a KML file for Google Earth or Worldwind. see also [[#r.out.kml|r.out.kml]] and [[#r.out.gmap|r.out.gmap]]&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Peter Löwe&lt;br /&gt;
&lt;br /&gt;
==== v.out.svg ====&lt;br /&gt;
&lt;br /&gt;
: [http://svg.cc/grass/index.html v.out.svg] is a module that exports SVG notation along with optional attribute data directly from GRASS 6.x vector layers. Now part of [http://svn.osgeo.org/grass/grass/trunk/vector/v.out.svg/ grass6-svn].&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Klaus Förster&lt;br /&gt;
&lt;br /&gt;
==== v.points.cog ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/vector/v.points.cog v.points.cog] is a shell script which will create a new point at the center of gravity of each cluster of input points or centroids, grouped by attribute. Among other things this is useful for labeling swarms of points.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== v.profile ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/vector/v.profile v.profile] is vector map profiling tool similar to r.profile. This module will print out distance and attributes to points/lines along profiling line. It's also usefull to determine places where raster profile crosses vector features (i.e. where to place river marker on river walley crossection).&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Maris Nartiss&lt;br /&gt;
&lt;br /&gt;
==== v.random.cover ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/vector/v.random.cover v.random.cover] is a shell script for creating random points constrained within an irregularly shaped vector area. (v.random places points only in current region rectangle). Optionally the user can upload raster values at the points. See also '&amp;lt;tt&amp;gt;r.random cover= vector_output=&amp;lt;/tt&amp;gt;'&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== v.rasterbounds ====&lt;br /&gt;
&lt;br /&gt;
: [http://les-ejk.cz/programs v.rasterbounds] is a shell script for creating polygon-vector file of rasterfile boundaries. The best version of GRASS is 6.1+. If you are using GRASS &amp;lt; 6.1, you  have to be in the same mapset as your raster maps are from.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Jachym Cepicky&lt;br /&gt;
&lt;br /&gt;
==== v.rast.stats2 ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/vector/v.rast.stats2 v.rast.stats2] is an adapted version of the GRASS module v.rast.stats. It uses the grass addon [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.univar2.zonal r.univar2.zonal] to speed up calculation of univariate statistics from a GRASS raster map based on vector polygons.&lt;br /&gt;
&lt;br /&gt;
: '''Authors:''' Markus Neteler, Otto Dassau&lt;br /&gt;
&lt;br /&gt;
==== v.sample.buffer [broken link, please update or delete]====&lt;br /&gt;
&lt;br /&gt;
: [http://www.clubwebcanada.ca/twiens/v.sample.buffer.tgz v.sample.buffer] is a shell script that samples rasters in buffers of a specified size around features in a specified vector file. Sampling results are added as attributes to the vector file. This script was designed for sampling vegetation indices and DEM derived attributes for bird point counts. Sampling results can be one or more basic statistics such as mean, range, max, etc.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Trevor Wiens&lt;br /&gt;
&lt;br /&gt;
==== v.select.region ====&lt;br /&gt;
&lt;br /&gt;
: [ftp://gsca.nrcan.gc.ca/outgoing/Patton/Grass/Scripts/v.select.region.tar.bz2 v.select.region] is a shell script that prints out the names of all vectors matching an input search pattern that has geometry (points, line, areas) that fall within a region bounded by an existing vector map, or within the current Grass region.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Eric Patton&lt;br /&gt;
&lt;br /&gt;
==== v.selmany ====&lt;br /&gt;
&lt;br /&gt;
: [http://svn.osgeo.org/grass/grass-addons/vector/v.selmany/v.selmany v.selmany] is a shell script that allows to interactively select a set of vector objects on a given layer, then assign them attribute values in a connected database table. The script runs on the command line prompt and within a graphic monitor ; it does not work with DBF driver.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Vincent Bain&lt;br /&gt;
&lt;br /&gt;
==== v.surf.icw ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/vector/v.surf.icw v.surf.icw] is an IDW interpolation method using true distance cost instead of euclidean shortest distance, i.e. ''as the fish swims around an island'' not ''as the bird flies''. This will cleanly travel around hard barriers and a cost surface map may be used to model expensive-cross barriers. Input data points do not need direct line of sight to be considered, but should be kept to less than one hundred as the module becomes very computationally expensive. A number of radial basis function options are available. ([http://grass.osgeo.org/wiki/Image:Inlets_03_SurfSal_icw_big.png screenshot])&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== v.surf.idwpow ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.geospatial.it/allegri/grass/v.surf.idwpow.zip v.surf.idwpow] integrates the common v.surf.idw algorithm with the exponential parameter for the distance weights&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Giovanni Allegri&lt;br /&gt;
&lt;br /&gt;
==== v.surf.krige [deprecated: use v.autokrige instead] ====&lt;br /&gt;
&lt;br /&gt;
: v.surf.krige is a script that do a surface interpolation from vector point data by Kriging method. The interpolated value of a cell is determined by using an omnidirectional variogram model fitted starting from model parameter given by user shown from the experimental semi variogram produced by v.variogram. The script can perform also the Leave-One-out cross validation to test the variogram model &amp;quot;fitted by eye&amp;quot; and an automatic fitted variogram model. The cross validation helps the user to choose the best variogram model to interpolate own data.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Pierluigi De Rosa.&lt;br /&gt;
&lt;br /&gt;
==== v.strahler ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.pois.org/florian/downloads/grass/v.strahler.tgz v.strahler] is a module that calculates the Strahler Order for all lines of a given dendritic network.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Florian Kindl. Available via SVN:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/vector/v.strahler&lt;br /&gt;
&lt;br /&gt;
==== v.swathwidth ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/vector/v.swathwidth v.swathwidth] creates a vector map representing the sea bottom coverage of a multibeam (swath) sonar survey.&lt;br /&gt;
: ([http://david.p.finlayson.googlepages.com/swathwidth Screenshots])&lt;br /&gt;
&lt;br /&gt;
: '''Authors:''' David Finlayson, Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== v.thickness ====&lt;br /&gt;
&lt;br /&gt;
: [http://marcin.slodkowski.googlepages.com/v.thickness.tgz v.thickness] creates points of thickness vectors from the vectors of strike and dip angles.The v.thickness is GUI GRASS script for v.dip.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Marcin Slodkowski&lt;br /&gt;
&lt;br /&gt;
==== v.transect.kia ====&lt;br /&gt;
&lt;br /&gt;
: [https://svn.osgeo.org/grass/grass-addons/vector/v.transect.kia v.transect.kia] calculates kilometric abundance indexes (KIA), a common indirect presence index used in wildlife monitoring along line transect surveys.&lt;br /&gt;
: Path lenghts can be corrected by draping on a DEM, different type of point objects can be weighted according to their relative importance, and paths can be  segmented using a further polygon vector (to calculate, say, abundances per elevation range or per habitat class).&lt;br /&gt;
: The module is written in bash and needs a GRASS install compiled with sqlite support.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Clara Tattoni and Damiano G. Preatoni&lt;br /&gt;
&lt;br /&gt;
==== v.trees3d ====&lt;br /&gt;
&lt;br /&gt;
: [http://les-ejk.cz/programs/ v.trees3d] is a module for making 3D trees from input vector point file.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Jachym Cepicky&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== v.trimesh ====&lt;br /&gt;
: [http://www.valledemexico.ambitiouslemon.com/vtrimesh.html v.trimesh] creates a triangular mesh from a vector map using areal constraints for refinement. It uses Jonathan Shewchuk's Triangle library.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Jaime Carrera&lt;br /&gt;
&lt;br /&gt;
==== v.what.rast.buffer ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/vector/v.what.rast.buffer v.what.rast.buffer] is a script that calculates univariate statistics of raster map(s) from buffers around vector points. Results are written to a file. Resolution is taken from each input map.&lt;br /&gt;
: ''see also the [http://starspan.casil.ucdavis.edu StarSpan] software&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== v.variogram [deprecated: use v.autokrige instead] ====&lt;br /&gt;
&lt;br /&gt;
: v.variogram is a script that create an omnidirectional experimental semi-variogram. This scripts require R-statistics software installed on your machine. Now the script is updated to run on spgrass6 &amp;gt;= 0.3 and sp &amp;gt;= 0.9 [http://grass.osgeo.org/pipermail/statsgrass/2006-October/000455.html reply].&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Ivan Marchesini, Pierluigi De Rosa.&lt;br /&gt;
&lt;br /&gt;
==== AniMove ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.faunalia.it/animov/ AniMove] is software for analysis of animal movement and ranging behaviour using QGIS+GRASS+R.&lt;br /&gt;
&lt;br /&gt;
:'''Authors:''' Support by Faunalia.it&lt;br /&gt;
&lt;br /&gt;
==== Utilities ====&lt;br /&gt;
&lt;br /&gt;
===== Shapemerge =====&lt;br /&gt;
&lt;br /&gt;
: [http://perrygeo.googlecode.com/svn/trunk/gis-bin/shpmerge.sh shpmerge] merges all the shapefiles in the current directory into a single output shapefile&lt;br /&gt;
&lt;br /&gt;
:'''Authors:''' Perrygeo&lt;br /&gt;
&lt;br /&gt;
=== Raster add-ons ===&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
&lt;br /&gt;
 svn co &amp;lt;nowiki&amp;gt;https://svn.osgeo.org/grass/grass-addons/raster&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== r.area ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.area r.area] Very simple module. Calculate area size (in cells) for every individual category in input raster map and write number of cells as the value of each cell in the area. Optionally write a binary coverage map and set a minimum area threshold. Works well with {{cmd|r.clump}}.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Jarek Jasiewicz&lt;br /&gt;
&lt;br /&gt;
==== r.bilateral ====&lt;br /&gt;
&lt;br /&gt;
: [http://les-ejk.cz/files/programs/grass/r.bilateral.tgz r.bilateral] Bilateral filter is an edge-preserving filter, which combines domain and range filtering. It is written in C language.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Jachym Cepicky&lt;br /&gt;
&lt;br /&gt;
==== r.broscoe ====&lt;br /&gt;
&lt;br /&gt;
r.broscoe.sh calculates waerden test and t test statistics for some values of threshold area on a single basin, according to A.J.Broscoe theory (1959).&lt;br /&gt;
See v.strahler package&lt;br /&gt;
&lt;br /&gt;
Available via SVN:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/vector/v.strahler/&lt;br /&gt;
&lt;br /&gt;
==== r.boxcount ====&lt;br /&gt;
&lt;br /&gt;
: r.boxcount and r.boxcount.sh calculate the fractal dimension for a given map. These are versions for grass6 of [http://www.ucl.ac.uk/~tcrnmar/ Mark Lake's modules] for grass43.&lt;br /&gt;
&lt;br /&gt;
: '''Authors:''' Mark Lake, grass6 port: Florian Kindl.&lt;br /&gt;
&lt;br /&gt;
Available via SVN:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/raster/r.boxcount/&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/raster/r.boxcount.sh/&lt;br /&gt;
&lt;br /&gt;
==== r.burn.frict ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.burn.frict r.burn.frict] converts vector geometries to raster cells, using a simple anti-aliasing method to close &amp;quot;gaps&amp;quot; between diagonal cells. Useful for &amp;quot;burning&amp;quot; vector geometries into a friction surface, making sure that simulated movement does not &amp;quot;slip&amp;quot; through converted cells that have only diagonal neighbours.&lt;br /&gt;
&lt;br /&gt;
:'''Author:''' Benjamin Ducke&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/raster/r.burn.frict&lt;br /&gt;
&lt;br /&gt;
==== r.colors.quantiles ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.colors.quantiles/r.colors.quantiles r.colors.quantiles] is a shell script used to create raster colors rules based on nquantiles. It uses R and spgrass6 package (RGRASS).&lt;br /&gt;
&lt;br /&gt;
: '''Authors:''' Mathieu Grelier&lt;br /&gt;
&lt;br /&gt;
==== r.colors.stddev ====&lt;br /&gt;
&lt;br /&gt;
: [http://hamish.bowman.googlepages.com/grass_color_maps r.colors.stddev] ''moved into main archive''&lt;br /&gt;
&lt;br /&gt;
==== r.convergence ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.convergence r.convergence] calculate topographic convergence index, useful to detect lineamets represented by chanell/ridge system&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Jarek Jasiewicz&lt;br /&gt;
&lt;br /&gt;
==== r.cpt2grass ====&lt;br /&gt;
&lt;br /&gt;
: [http://hamish.bowman.googlepages.com/grass_color_maps r.cpt2grass] is a GRASS script for importing a [http://www.soest.hawaii.edu/gmt/ GMT] .cpt color table into GRASS. It can save to a text file suitable for r.colors or automatically apply the color table to a raster map.&amp;lt;BR&amp;gt;For a large collection of GMT .cpt files see http://sview01.wiredworkplace.net/pub/cpt-city/&lt;br /&gt;
: Other palette ideas from [http://geography.uoregon.edu/datagraphics/color_scales.htm Univ. Oregon] and [http://oceancolor.gsfc.nasa.gov/PRODUCTS/colorbars.html NASA/Goddard's OceanColor] (latter partially translated for use with GRASS on the [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.colors.tools/palettes grass-addons SVN]).&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== r.csr ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.chrisgarstin.com/stuff/r.csr r.csr] integrates several Grass programs to produce colored, shaded-relief rasters in one step. Accepts single or multiple elevation/bathymetry maps as input; optionally will fill data holidays with 3x3 median filter, multiple times, if required; can apply color maps from a) input raster, b) another raster in MAPSET, or c) from a rules file; otherwise, rainbow colorbar is applied. Output colored, shaded-relief rasters can optionally be exported to tiff format if the appropriate flag is given. Shading parameters can be modified, though useful defaults are given.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Eric Patton&lt;br /&gt;
&lt;br /&gt;
==== r.cva ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.ucl.ac.uk/~tcrnmar/GIS/r.cva.html r.cva] is a cumulative viewshed analysis module. It is an advanced version of the {{cmd|r.los}} program.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' [http://www.ucl.ac.uk/~tcrnmar/ Mark Lake]&lt;br /&gt;
&lt;br /&gt;
==== r.denoise ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.denoise r.denoise] denoises (smooths/despeckles) topographic data, particular DEMs derived from radar data (including SRTM), using Xianfang Sun's [http://www.cs.cf.ac.uk/meshfiltering/index_files/Page342.htm denoising algorithm].  It is designed to preserve sharp edges and to denoise with minimal changes to the original data.  See the [http://personalpages.manchester.ac.uk/staff/john.stevenson/mdenoise/r.denoise.html manual pages] for details.  Further information on Sun's denoising algorithm, including an example, is available [http://personalpages.manchester.ac.uk/staff/john.stevenson/mdenoise here].&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' John Stevenson&lt;br /&gt;
&lt;br /&gt;
==== r.dominant_dir.m and r.calc_terraflow_dir.m ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.terraflow.tools dominant_dir.m and calc_terraflow_dir.m] are two Matlab scripts for determining the dominant flow direction from a r.terraflow MFD map and converting into a GRASS aspect map for use with d.rast.arrow, etc.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== r.eucdist ====&lt;br /&gt;
&lt;br /&gt;
: [http://david.p.finlayson.googlepages.com/r.eucdist r.eucdist] creates a raster map estimating the euclidean distance from known cells.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' David Finlayson&lt;br /&gt;
&lt;br /&gt;
==== r.fragment ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.chrisgarstin.com/stuff/r.fragment r.fragment] fragments a raster into a user-defined set of smaller tiles according to an input number of rows and columns. &lt;br /&gt;
: '''Author:''' Eric Patton&lt;br /&gt;
&lt;br /&gt;
==== r.fuzzy ====&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.fuzzy r.fuzzy] Calculates membership of every cell in raster according membership function defined by user.&lt;br /&gt;
: '''Author:''' Jarek Jasiewicz&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== r.fuzzy.logic ====&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.fuzzy.logic r.fuzzy.logic] Perform fuzzy operators (AND, OR, NOT, IMP) on membership's map using T-norms and T-conorms for 6 most popular families.&lt;br /&gt;
: '''Author:''' Jarek Jasiewicz&lt;br /&gt;
&lt;br /&gt;
==== r.fuzzy.system ====&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.fuzzy.system r.fuzzy.system] Perform full fuzzy clasificationwith 6 most popular fuzzy logic families and few methods of deffuzification.&lt;br /&gt;
: '''Author:''' Jarek Jasiewicz&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/raster/r.fuzzy.system&lt;br /&gt;
&lt;br /&gt;
==== r.game_of_life ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.game_of_life r.game_of_life] is a shell script which runs Conway's classic Game of Life using GRASS raster modules. It is meant to demonstrate how easy it is to program cellular automata in GRASS as well as various 3D raster volume and time series visualization techniques.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== r.gauss ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.les-ejk.cz/files/programs/grass/r.gauss.tgz r.gauss] is Gaussian and Laplacian of Gaussian filter for GRASS. It is written in C language.&lt;br /&gt;
&lt;br /&gt;
:'''Author:''' Jachym Cepicky&lt;br /&gt;
&lt;br /&gt;
==== r.gradgrid4 ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.uibk.ac.at/geographie/personal/mergili/gradgrid4.zip gradgrid4] is a tool for interpolating values of discrete data points to a raster map, applying a local regression approach with a predictor raster. The model is based on shell and python scripts as well as an R batchfile. It was tested on Fedora Core 6 with GRASS 6.2.1 and R 2.5.1, but should work under most UNIX systems. After unzipping the gradgrid4 folder, store it at any place in your local file system. In the subfolder docs you can find a manual and a publication draft with a detailed description of the concept and the example of an application. The subfolder testloc constitutes a GRASS location with test data.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Martin Mergili&lt;br /&gt;
&lt;br /&gt;
==== r.in.mb ====&lt;br /&gt;
&lt;br /&gt;
: [http://blogs.tekmap.ns.ca/archives/458 r.in.mb] is a &amp;quot;GRASS/[[MB-System]] program designed to import ''mbio'' compatible multibeam sonar data directly into the GRASS GIS. The program is a modified version of {{cmd|r.in.xyz}}. Instead of reading an ASCII XYZ file, ''r.in.mb'' reads an MB-System compatible list file.&amp;quot; It can do automatic reprojection and minor hole filling. The default is to import bathymetry data, but optionally amplitude or sidescan sonar data can be loaded instead.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Bob Covill&lt;br /&gt;
&lt;br /&gt;
==== r.in.onearth ====&lt;br /&gt;
&lt;br /&gt;
: [http://www-pool.math.tu-berlin.de/~soeren/grass/modules/ r.in.onearth] for download and import satellite images direct from the NASA onearth WMS server into GRASS.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Soeren Gebbert&lt;br /&gt;
&lt;br /&gt;
==== r.in.swisstopo ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.in.swisstopo/ r.in.swisstopo] for importing swisstopo digital elevation model data into GRASS raster maps.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' J&amp;amp;uuml;rgen Hansmann&lt;br /&gt;
&lt;br /&gt;
Available via SVN:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/raster/r.in.swisstopo/&lt;br /&gt;
&lt;br /&gt;
==== r.in.wms (.py) ====&lt;br /&gt;
&lt;br /&gt;
: [http://les-ejk.cz/files/programs/grass/r.in.wms.tgz r.in.wms] for download and import maps direct from  WMS servers into GRASS. This script is written in Python Programming language. Note GRASS 6.2+ provides a shell script version of r.in.wms, take care of which one is actually being run.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Jachym Cepicky&lt;br /&gt;
&lt;br /&gt;
==== r.inund.fluv ====&lt;br /&gt;
&lt;br /&gt;
: [https://svn.osgeo.org/grass/grass-addons/raster/r.inund.fluv/ r.inund.fluv]This command allows to obtain a fluvial potentially inundation map given a high-resolution DTM of the area surrounding the river and a water surface profile calculated through an 1-D hydrodinamic model. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: '''Authors:''' Roberto Marzocchi, Bianca Federici, Domenico Sguerso&lt;br /&gt;
&lt;br /&gt;
==== r.isoregions ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.isoregions/r.isoregions r.isoregions] allows isoregions creation from a GRASS raster map. &lt;br /&gt;
&lt;br /&gt;
: '''Authors:''' Mathieu Grelier&lt;br /&gt;
&lt;br /&gt;
==== r.interp.mask ====&lt;br /&gt;
&lt;br /&gt;
: [http://david.p.finlayson.googlepages.com/r.interp.mask r.interp.mask] Creates a user-specified buffer around interpolation points that can be used as a MASK to prevent or clip excessive extrapolation artifacts. This works much better than a standard convex hull around the points.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' David Finlayson&lt;br /&gt;
&lt;br /&gt;
==== r.li ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.faunalia.it/download/r_li/ r.li] is a more flexible and faster replacement of the old r.le. '''''Moved into 6.3-SVN'''''.&lt;br /&gt;
&lt;br /&gt;
: '''Authors:''' Claudio Porta, Davide Spano, Serena Pallecchi, [http://www.faunalia.it Faunalia]&lt;br /&gt;
&lt;br /&gt;
==== r.local_max.pl ====&lt;br /&gt;
&lt;br /&gt;
: [http://les-ejk.cz/files/programs/local_max.pl Local maxima] is a Perl script for &amp;lt;code&amp;gt;r.mapcalc&amp;lt;/code&amp;gt;. It detects local maxima of the image.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Jachym Cepicky&lt;br /&gt;
&lt;br /&gt;
==== r.mandelbrot ====&lt;br /&gt;
&lt;br /&gt;
: [http://grasslab.gisix.com/scripts/r.mandelbrot r.mandelbrot] is a shell script to calculate the Mandelbrot set.- for GRASS versions 6.X.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Peter Löwe&lt;br /&gt;
&lt;br /&gt;
==== mcda====&lt;br /&gt;
&lt;br /&gt;
: mcda suite is a toolset for geographics multi-criteria decision aiding and data analysis based on ELECTRE (r.mcda.electre), REGIME (r.mcda.regime) and FUZZY (r.mcda.fuzzy) algorithm. The module r.roughset is also included  for geographics rough set analisys and knowledge discovery based on rough set library. It is written in C language for GRASS versions 6.X.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Gianluca Massei (g_massa@libero.it ) - Antonio Boggia&lt;br /&gt;
&lt;br /&gt;
Available via SVN:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/raster/mcda/&lt;br /&gt;
&lt;br /&gt;
==== r.mlv ====&lt;br /&gt;
&lt;br /&gt;
: [http://les-ejk.cz/files/programs/grass/r.mlv.tgz r.mlv] is Mean of least variance filter for GRASS. It is an edge-preserving (or even edge-enhacing) filter, which should serve for removing additive noise from images. It is written in C language.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Jachym Cepicky&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== r.obstruction, r.planning.static, r.planning.cinematic ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.ing.unitn.it/~grass/software.html r.obstruction, r.planning.static, r.planning.cinematic]: r.obstruction creates a polar obstruction map from a DTM. r.planning.static performs a static planning for GPS and Glonass surveys using the obstruction map created with r.obstruction. r.planning.cinematic performs a cinematic planning for GPS and Glonass surveys. (University of Trento, Faculty of Engineering)&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Daniele Carli, Dimitri D'Inca', Gianluca Fruet, Domenico Sguerso, Paolo Zatelli&lt;br /&gt;
&lt;br /&gt;
==== r.out.jpeg ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.geospatial.it/allegri/grass/r.out.jpeg_ r.out.jpeg] is a simple GRASS script to export georeferenced JPEG images from rasters, keeping the associated color table. It is a two-step export: first a ppm file is created, then it is converted to jpeg usgin the &amp;quot;convert&amp;quot; command from ImageMagick&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Giovanni Allegri&lt;br /&gt;
&lt;br /&gt;
==== r.out.gmap ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.out.gmap r.out.gmap] outputs GRASS raster map into set of image tiles&lt;br /&gt;
following the tiling scheme of Google Maps and Microsoft Virtual Earth.&amp;lt;BR&amp;gt;Read more in the OSGeo Journal [http://www.osgeo.org/journal Volume 5 (2009, to appear)]&amp;lt;BR&amp;gt;see also [[#r.out.kml|r.out.kml]] and [[#v.out.kml|v.out.kml]]&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Tomas Cebecauer&lt;br /&gt;
&lt;br /&gt;
==== r.out.gmt ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.out.gmt r.out.gmt] is a GRASS script for exporting a GRASS raster map into a [http://www.soest.hawaii.edu/gmt/ GMT] grid file. It also creates a GMT color table from the data and can generate some GMT commands for plotting a postscript file. (code is experimental, but functional)&amp;lt;BR&amp;gt;see  also http://169.237.35.250/~dylan/grass_user_group/#GMT_and_GRASS-overview&lt;br /&gt;
&lt;br /&gt;
: '''Authors:''' Hamish Bowman, Dylan Beaudette&lt;br /&gt;
&lt;br /&gt;
==== r.out.gmt2 ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.out.gmt2 r.out.gmt2] is a modified version of Hamish's r.out.gmt.  Added options for title, xlabel, ylabel, comment, and map width.  Removed any settings that can be changed by gmtset for more flexibility.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Huidae Cho, Hamish Bowman, Dylan Beaudette&lt;br /&gt;
&lt;br /&gt;
==== r.out.kml ====&lt;br /&gt;
&lt;br /&gt;
: [https://trac.osgeo.org/grass/browser/grass-addons/raster/r.out.kml r.out.kml] is a shell script that exports a raster map into a KML file and image for Google Earth or Worldwind. See also [[#v.out.kml|v.out.kml]] and [[#r.out.gmap|r.out.gmap]].&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== r.pack ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.pack r.pack and r.unpack] are two GRASS scripts for transfering raster maps to another computer as a single file.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== r.prominence ====&lt;br /&gt;
&lt;br /&gt;
: '''r.prominence''' calculates the average difference between a central cell and its neighbors. It approximated the terrain 'ruggedness' by looking at average differences in elevation within a given neighborhood.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Benjamin Ducke&lt;br /&gt;
&lt;br /&gt;
Available via SVN:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/raster/r.prominence/&lt;br /&gt;
&lt;br /&gt;
==== r.rifs ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.ucl.ac.uk/~tcrnmar/ r.rifs]: r.rifs generates a raster map and/or image of a fractal by means of the specified random iterated function system.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Mark Lake&lt;br /&gt;
&lt;br /&gt;
==== r.roughness ====&lt;br /&gt;
&lt;br /&gt;
[http://trac.osgeo.org/grass/browser/grass-addons/raster/r.roughness/r.roughness.sh r.roughness.sh] is a shell script to calculate the surface roughness of a DEM, using r.surf.area and v.surf.rst. (for GRASS versions 6.1 and above)&lt;br /&gt;
&lt;br /&gt;
[http://www.igc.usp.br/pessoais/guano/downloads/r.roughness60 r.roughness60] - for GRASS versions 6.0.X&lt;br /&gt;
&lt;br /&gt;
[http://trac.osgeo.org/grass/browser/grass-addons/raster/r.roughness/r.roughness.window.area r.roughness.window.area] - calculate surface roughness as the ratio of real (surface) area and planar area, using a moving-window approach.&lt;br /&gt;
&lt;br /&gt;
[http://trac.osgeo.org/grass/browser/grass-addons/raster/r.roughness/r.roughness.window.vector r.roughness.window.vector] - calculate surface roughness as vector dispersion, using a moving-window approach. Resulting maps are: Vector Strength (R) and Inverted Fisher's k parameter. &lt;br /&gt;
&lt;br /&gt;
[http://trac.osgeo.org/grass/browser/grass-addons/raster/r.roughness/r.roughness.window.vector.html r.roughness.window.vector.html] - provisional help page for r.roughness.window.vector.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Carlos Henrique Grohmann&lt;br /&gt;
&lt;br /&gt;
Available via SVN:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/raster/r.roughness/&lt;br /&gt;
&lt;br /&gt;
==== r.roughset ====&lt;br /&gt;
&lt;br /&gt;
: r.roughset is a module for geographics rough set analisys and knowledge discovery based on rough set library. It is written in C language for GRASS versions 6.X.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Gianluca Massei (g_massa@libero.it ) - Antonio Boggia&lt;br /&gt;
&lt;br /&gt;
Available via SVN:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/raster/mcda/r.roughset/&lt;br /&gt;
&lt;br /&gt;
==== r.seg ====&lt;br /&gt;
&lt;br /&gt;
: '''r.seg''' performs image segmentation and discontinuity detection (based on the Mumford-Shah variational model).&lt;br /&gt;
: The module generates a piece-wise smooth approximation of the input raster map and a raster map of the discontinuities of the output approximation. The discontinuities of the output approximation are preserved from being smoothed. &lt;br /&gt;
: See [http://www.ing.unitn.it/~vittia/sw here] for details and examples.&lt;br /&gt;
&lt;br /&gt;
Available [http://www.ing.unitn.it/~vittia/sw here] and via SVN:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/raster/r.seg/&lt;br /&gt;
&lt;br /&gt;
: '''Author''' Alfonso Vitti&lt;br /&gt;
&lt;br /&gt;
==== r.smoothpatch ====&lt;br /&gt;
&lt;br /&gt;
: [http://david.p.finlayson.googlepages.com/r.smoothpatch r.smoothpatch] creates a composite of two rasters using a distance-weighted average across the transition to smooth the edges.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' David Finlayson&lt;br /&gt;
&lt;br /&gt;
==== r.soils.texture ====&lt;br /&gt;
&lt;br /&gt;
: r.soils.texture is a module to define soils texture from sand and clay raster file with a schema text file (now FAO,USDA and ISSS are available). It is written in C language. - for GRASS versions 6.x - For bugs and suggest: g_massa@libero.it &lt;br /&gt;
&lt;br /&gt;
:'''Author:''' Gianluca Massei&lt;br /&gt;
&lt;br /&gt;
Available via SVN:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/raster/r.soils.texture/&lt;br /&gt;
&lt;br /&gt;
==== r.stream.angle ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.stream.angle r.stream.angle] Divide stream network into stright line segments according users input. It extends  Module uses as input direction and stream netwokr map produced by r.watershed and stream.extract  or custom user input. See description for details.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Jarek Jasiewicz&lt;br /&gt;
&lt;br /&gt;
Available via SVN:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/raster/r.stream.angle&lt;br /&gt;
&lt;br /&gt;
==== r.stream.basins ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.stream.basins r.stream.basins] delineate basins according users input. It extends r.water.outlet funcionality to extracting more than one basin at one step. Module uses as input direction map produced  stream network produced by r.stream.extract, r.watershed, r.stream order or custom user input. More in tutorial on grass-wiki pages.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Jarek Jasiewicz&lt;br /&gt;
&lt;br /&gt;
Available via SVN:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/raster/r.stream.basins&lt;br /&gt;
&lt;br /&gt;
==== r.stream.del ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.stream.del r.stream.del] Calculates downslope length of first order streams and delete them if it length (in pixels) is lower than the treeshold. It also join false segments left by deletion into one with category of upper. It uses r.watershed direction map and r.watershed  stream map as input. The module is added only for r.watershed module, r.stream.extract has deleting short streams build-in. During development of r.stream.* it will be probably abandoned due to duplicate functionality&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Jarek Jasiewicz&lt;br /&gt;
&lt;br /&gt;
Available via SVN:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/raster/r.stream.del&lt;br /&gt;
&lt;br /&gt;
==== r.stream.distance ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.stream.distance r.stream.distance] Calculates downslope distance and downslope elevation difference between current cell and stream or outlet cells. It uses r.watershed direction map, r.watershed or r.stream.extract stream map and optionally DEM as input.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Jarek Jasiewicz&lt;br /&gt;
&lt;br /&gt;
Available via SVN:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/raster/r.stream.distance&lt;br /&gt;
&lt;br /&gt;
==== r.stream.extract ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.stream.extract r.stream.extract] extracts topologically clean stream networks from input elevation and optionally accumulation maps. Output is available as raster and vector and can be used as input for the other r.stream.* modules by Jarek Jasiewicz. &lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Markus Metz&lt;br /&gt;
&lt;br /&gt;
Available via SVN:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/raster/r.stream.extract&lt;br /&gt;
&lt;br /&gt;
==== r.stream.order ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.stream.order r.stream.order] orders stream network outputed by r.watershed or r.stream.extract according Sthrahler, Shreve, Horton and Hack ordering systems. It require as input stream and direction map and optionally accumulation map. It handle both SFD nad MFD modes but all data must come from the same procedure.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Jarek Jasiewicz, Markus Metz&lt;br /&gt;
&lt;br /&gt;
Available via SVN:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/raster/r.stream.order&lt;br /&gt;
&lt;br /&gt;
==== r.stream.pos ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.stream.pos r.stream.pos] Helper module for calculating local stream network properties and linear geostatistics. Mostly To use with R and other grass modules. &lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Jarek Jasiewicz&lt;br /&gt;
&lt;br /&gt;
Available via SVN:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/raster/r.stream.pos&lt;br /&gt;
&lt;br /&gt;
==== r.stream.stats ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.stream.stats r.stream.stats] calculate Hortonian statistics for Stahler or Horton stream network created by r.stream.order. It uses r.watershed direction map, DEM and r.stream.order's Stahler or Horton stream network as input. It outputs calculated statistics to standard output.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Jarek Jasiewicz&lt;br /&gt;
&lt;br /&gt;
Available via SVN:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/raster/r.stream.stats&lt;br /&gt;
&lt;br /&gt;
==== r.surf.nnbathy ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.sieczka.org/programy_en.html r.surf.nnbathy] interpolates a surface from a raster input using Pavel Sakov's [http://code.google.com/p/nn-c/ nn] natural neighbor interpolation library. Provides triangulation, Sibson natural neighbor interpolation and non-Sibsonian interpolation.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Maciej Sieczka&lt;br /&gt;
&lt;br /&gt;
==== r.surf.volcano ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.surf.volcano r.surf.volcano] creates an artificial surface resembling a seamount or cone volcano. The user can alter the size and shape of the mountain and optionally roughen its surface. Available decay functions are  polynomial, Gaussian, Lorentzian, logarithmic, and exponential.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== r.terracost ====&lt;br /&gt;
&lt;br /&gt;
[http://www.bowdoin.edu/~ltoma/research.html r.terracost] Scalable approach for computing least-cost-path surfaces on massive grid terrains.&amp;lt;BR&amp;gt;'''Lead author''': Laura Toma&lt;br /&gt;
&lt;br /&gt;
Available via SVN:&lt;br /&gt;
  svn co https://svn.osgeo.org/grass/grass-addons/raster/r.terracost&lt;br /&gt;
&lt;br /&gt;
==== r.tileset ====&lt;br /&gt;
&lt;br /&gt;
: ''{{cmd|r.tileset}} moved into main archive''&lt;br /&gt;
&lt;br /&gt;
==== r.traveltime ====&lt;br /&gt;
&lt;br /&gt;
: [http://jesbergwetter.twoday.net/stories/4845555/ r.traveltime] computes the travel time of surface runoff to an outlet. The program starts at the basin outlet and calculates the travel time at each raster cell recursively. A drainage area related threhold considers even  surface and also channel runoff. Travel times are derived by assuming kinematic wave approximation. The results can be used to derive a time-area function. This might be usefull for precipitation-runoff calculations (estimation of flood predictions) with a lumped hydrologic model (user-specified unit hydrograph).&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Kristian Förster&lt;br /&gt;
&lt;br /&gt;
==== r.univar.zonal ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.univar2.zonal r.univar.zonal] is similar to r.univar, but calculates statistics separately for each category(zone) present in the separate input map used to define zones (zonal statistics). The output can be like the one of r.univar or in easier to read table format and can be written to a file.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Markus Metz&lt;br /&gt;
&lt;br /&gt;
Available via SVN:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/raster/r.univar2.zonal&lt;br /&gt;
&lt;br /&gt;
==== r.viewshed ====&lt;br /&gt;
&lt;br /&gt;
: r.viewshed is a module for extremely fast line of sight analysis (replaces the slow r.los). It is written in C language for GRASS versions 6.X/7.x.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Laura Toma, USA&lt;br /&gt;
&lt;br /&gt;
Available via SVN:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/raster/r.viewshed&lt;br /&gt;
&lt;br /&gt;
Once {{trac|390}} is solved, it will substitute r.los.&lt;br /&gt;
&lt;br /&gt;
==== r.wavelets ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.ing.unitn.it/~grass/software.html r.wavelets]: This package contains wavelets decomposition and reconstruction modules for the GRASS GIS: r.owave.dec computes the orthogonal wavelet transform of a raster map. r.owave.rec reconstructs a raster map from an orthogonal wavelet transform. r.biowave.dec computes the biorthogonal wavelet transform of a raster map. r.biowave.rec reconstructs a raster map from a biorthogonal wavelet transform.&lt;br /&gt;
&lt;br /&gt;
: '''Authors:''' Members of the University of Trento, Faculty of Engineering&lt;br /&gt;
&lt;br /&gt;
==== r.xtent ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.xtent r.xtent] computes a raster map layer representing the Voronoi diagram, weighted Voronoi diagram or a more complex territorial partitioning of space around points (centers) in a vector input map, based on the XTENT formula.&lt;br /&gt;
&lt;br /&gt;
:'''Author:''' Benjamin Ducke&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/raster/r.xtent&lt;br /&gt;
&lt;br /&gt;
==== r.zc.pl ====&lt;br /&gt;
&lt;br /&gt;
: [http://les-ejk.cz/files/programs/zc.pl Zero crossing] is a simple Perl script, finds the ,,zero crossings`` from the Laplacian of Gaussian filter (see above). It is really &amp;lt;em&amp;gt;very&amp;lt;/em&amp;gt; simple, the edges don't need to be really on that pixel, where they are detected, no interpolation is performed.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Jachym Cepicky&lt;br /&gt;
&lt;br /&gt;
==== GIPE ====&lt;br /&gt;
&lt;br /&gt;
: The GRASS Image Processing Environment (GIPE) has USLE, Energy-balance and radiance-reflectance correction models.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Yann Chemin (unless specified otherwise).&lt;br /&gt;
   &lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/gipe&lt;br /&gt;
&lt;br /&gt;
Remark: This is progressively moved to main GRASS SVN (aka GRASS 7)&lt;br /&gt;
&lt;br /&gt;
:* r.hydro.CASC2D, ported from GRASS 5.x version, is temporarily here waiting to return to main GRASS.&lt;br /&gt;
&lt;br /&gt;
:* r.soiltex2prop creates porosity, Saturated Hydraulic conductivity (Ksat) and wetting front pressure head (Hf) from percentage of sand and clay after Rawls et al., 1990. This is a must for r.hydro.CASC2D.&lt;br /&gt;
&lt;br /&gt;
:* i.biomass creates biomass growth map from fPAR, lightuse efficiency, water availability (or evap.fraction), Lat, doy and tsw.&lt;br /&gt;
&lt;br /&gt;
:* i.dn2ref.l7, r.dn2ref.ast create top of atmosphere reflectance for Landsat 7ETM+ and ASTER. These modules also have a flag for radiance output. Updated i.dn2ref.l7 to read .met calibration file.  &lt;br /&gt;
&lt;br /&gt;
:* i.dn2full.l[5,7] is an attempt to get all bands of Landsat[5,7] calibrated and corrected to either reflectance or temperature, reads only the .met file.  &lt;br /&gt;
&lt;br /&gt;
:* i.dn2potrad.l[5,7] is an attempt to get ET potential from DN of Landsat 7 (Careful! No Atmospheric correction!).  &lt;br /&gt;
&lt;br /&gt;
:* i.eb.* are a set of 10+ GRASS modules that together perform the main functions of  the SEBAL model (Bastiaanssen, 1995). Those functions include (but are not limited to) Soil heat flux, sensible heat flux, net radiation, evaporative fraction at satellite overpass, diurnal actual evapotranspiration, momentum roughness length, etc. These  modules are also part of any Energy-Balance related processing. &lt;br /&gt;
&lt;br /&gt;
:* i.evapo.potrad creates diurnal Potential evapotranspiration assuming all net radiation becomes ET, according to SEBAL model (Bastiaanssen, 1995). This module also has a flag for diurnal net radiation as required by SEBAL in i.eb.eta. &lt;br /&gt;
&lt;br /&gt;
:* i.evapo.SENAY creates actual evapotranspiration following the regional method of Senay (2007). &lt;br /&gt;
&lt;br /&gt;
:* i.lmf creates a Local Maximum Fitting on the temporal dimension of the multi-date input dataset, working, but more precision still to be added.&lt;br /&gt;
&lt;br /&gt;
:* i.vi.mpi is the mpi version of i.vi for cluster GRASS GIS education (no speed up here!) '''Author:''' Shamim Akhter &lt;br /&gt;
&lt;br /&gt;
:* i.modis.stateqa extracts State Quality Assessment information from Modis 500m (MOD09A) products.&lt;br /&gt;
&lt;br /&gt;
:* i.water creates a Water Mask from NDVI and Albedo, or specifically for Modis: NDVI and Band 7.&lt;br /&gt;
&lt;br /&gt;
:* i.wi creates a given Water Index (only one so far).&lt;br /&gt;
&lt;br /&gt;
==== HydroFOSS ====&lt;br /&gt;
&lt;br /&gt;
: HydroFOSS - a GIS embedded approach for Free &amp;amp; Open Source Hydrological modeling.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Massimiliano Cannata&lt;br /&gt;
 &lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/HydroFOSS/&lt;br /&gt;
&lt;br /&gt;
==== Hikereport ====&lt;br /&gt;
&lt;br /&gt;
: python script that computes length, cumulative uphill and downhill, average slopes on an interactively drawn path. Based on r.profile's output.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Stefano Negri&lt;br /&gt;
&lt;br /&gt;
 http://tracce.wordpress.com/?attachment_id=71&lt;br /&gt;
&lt;br /&gt;
=== Misc add-ons===&lt;br /&gt;
&lt;br /&gt;
==== m.eigensystem ====&lt;br /&gt;
&lt;br /&gt;
m.eigensystem - Computes eigen values and eigen vectors for square matrices.&lt;br /&gt;
&lt;br /&gt;
: http://svn.osgeo.org/grass/grass-addons/misc/m.eigensystem/&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Michael Shapiro&lt;br /&gt;
&lt;br /&gt;
===Database add-ons===&lt;br /&gt;
==== db.join ====&lt;br /&gt;
&lt;br /&gt;
: Table joining: join one table into another through common attributes&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Markus Neteler. Available via SVN:&lt;br /&gt;
&lt;br /&gt;
   svn co https://svn.osgeo.org/grass/grass-addons/database/db.join/&lt;br /&gt;
or&lt;br /&gt;
   g.extension db.join&lt;br /&gt;
&lt;br /&gt;
===General add-ons===&lt;br /&gt;
&lt;br /&gt;
==== g.laptop.sh ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.nature-consult.de/dassau/g.laptop/g.laptop.sh g.laptop.sh] is an interactive shell script to extract raster and vector data from current Location into a new one. Data can be copied or extracted in current or original resolution and region extend. This script was written to extract smaller parts of a GRASS location to be able to present them on a laptop without the necessity to transfer huge data. Maps do not have to be in the same mapset.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Otto Dassau &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Readline completion ====&lt;br /&gt;
&lt;br /&gt;
: '''''Readline completion''''' for GRASS commands under the bash shell: [http://www.sorokine.info/grass-complete/ grass-complete] won't clutter the environment but needs to be installed; [http://dcalvelo.free.fr/grass/grass_rlcompleter.sh grass_rlcompleter.sh] needs almost no installation but will pollute the environment. Grass-Complete currently requires Bash version 2.05 for proper install.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Alexandre Sorokine (grass-complete), Daniel Calvelo (grass_rlcompleter.sh)&lt;br /&gt;
&lt;br /&gt;
==== g.region.point ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/general/g.region.point g.region.point] is a shell script which resets the computational region to a square box around a given coordinate. It is intended for use within GRASS scripts to speed up processing by limiting expensive raster calculations to a small area of interest.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== g.linke_by_day ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.sun.tools/ g.linke_by_day] is a python script for [[r.sun]] which interpolates a Linke turbidity value for a given day of the year based on monthly values edited into the script.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== g.xlist ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/general/g.xlist g.xlist] is a C implementation of g.mlist. g.xlist searches for data files matching a pattern given by wildcards or POSIX Extended Regular Expressions. POSIX regex(3) functions are required.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Huidae Cho&lt;br /&gt;
&lt;br /&gt;
==== g.xremove ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/general/g.xremove g.xremove] is a C implementation of g.mremove. g.xremove removes data files matching a pattern given by wildcards or POSIX Extended Regular Expressions. POSIX regex(3) functions are required.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Huidae Cho&lt;br /&gt;
&lt;br /&gt;
=== Imagery add-ons ===&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/imagery&lt;br /&gt;
&lt;br /&gt;
==== GIPE ====&lt;br /&gt;
&lt;br /&gt;
GIPE (see also above in raster section) provides:&lt;br /&gt;
i.biomass, i.dn2potrad.l5, i.dn2potrad.l7, i.dn2ref.ast, i.eb.deltat, i.eb.disp, i.eb.eta, i.eb.evapfr, i.eb.g0, i.eb.h0, i.eb.h_SEBAL01, i.eb.h_SEBAL95, i.eb.h_iter, i.eb.molength, i.eb.netrad, i.eb.psi, i.eb.rah, i.eb.rohair, i.eb.ublend, i.eb.ustar, i.eb.wetdrypix, i.eb.z0m, i.eb.z0m0, i.evapo.PT, i.evapo.TSA, i.evapo.potrad, i.evapo.senay, i.evapo.time_integration, i.lmf, i.modis.stateqa, i.sattime, i.vi.grid, i.vi.mpi, i.water, i.wi&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/gipe/&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Yann Chemin&lt;br /&gt;
&lt;br /&gt;
==== i.homography ====&lt;br /&gt;
&lt;br /&gt;
Rectifies an image by computing a coordinate transformation for each pixel in the image based on the control points created by i.linespoints. The approach uses homography extended for corresponding lines.&lt;br /&gt;
&lt;br /&gt;
svn co https://svn.osgeo.org/grass/grass-addons/imagery/i.homography&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Daniel Grasso, Bolzano, Italy, based on code written by Stefano Merler, ITC-irst, Italy&lt;br /&gt;
&lt;br /&gt;
==== i.linespoints ====&lt;br /&gt;
&lt;br /&gt;
An imagery command that enables the user to mark coordinate system points as well as lines on an image to be rectified and then input the coordinates of each point for creation of a coordinate transformation matrix. The transformation matrix is needed as input for the GRASS program i.homography.&lt;br /&gt;
&lt;br /&gt;
svn co https://svn.osgeo.org/grass/grass-addons/imagery/i.linespoints&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Daniel Grasso, Bolzano, Italy, based on i.points&lt;br /&gt;
&lt;br /&gt;
==== i.landsat.toar ====&lt;br /&gt;
&lt;br /&gt;
Transform calibrated digital number of Landsat products to top-of-atmosphere radiance or top-of-atmosphere reflectance and temperature (band 6 of the sensors TM and ETM+). Optionally, used to calculate the at-surface radiance or reflectance with atmospheric correction (DOS method).&lt;br /&gt;
&lt;br /&gt;
svn co https://svn.osgeo.org/grass/grass-addons/imagery/i.landsat.toar&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' E. Jorge Tizado&lt;br /&gt;
&lt;br /&gt;
==== i.points.auto ====&lt;br /&gt;
&lt;br /&gt;
This module allows a search of GCP's on two raster-maps with differents levels of automation. The ''manual'' search is the default search, so it's possible to determine the GCP's manually with the mouse (like {{cmd|i.points}}). ''Semiautomated'' search: The user determines with the mouse some correspondent areas (with a discrete precision) in the two maps and the module searches itself the GCP's in these areas. ''Automated'' search: At the start of module the user has to load the maps that the algorithm uses to the search, so it is recommended to use the maps filtered with the filters DIVERSITY or STDDEV (of GRASS) with a window of 3x3 or 5x5 pixels. However, the algorithm sometimes works well with the original maps too.&lt;br /&gt;
&lt;br /&gt;
Note: This code is basically an improved i.points (from 2004). Subsequent changes in i.points haven's been ported here yet.&lt;br /&gt;
&lt;br /&gt;
svn co https://svn.osgeo.org/grass/grass-addons/imagery/i.points.auto&lt;br /&gt;
&lt;br /&gt;
: '''Authors:''' based on i.points; additions by Ivan Michelazzi, Luca Miori (MSc theses at ITC-irst); Supervisors: Markus Neteler, Stefano Merler, ITC-irst 2003, 2004. [http://gisws.media.osaka-cu.ac.jp/grass04/viewpaper.php?id=37 PDF article]&lt;br /&gt;
&lt;br /&gt;
==== i.points.reproj ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/imagery/i.points.reproj i.points.reproj] is a shell script that will use cs2cs to reproject the target coordinates of a group's POINTS file. By running i.rectify directly to the new target projection, a generation of resampling data loss can be avoided (versus i.rectify + r.proj). On the other hand, i.rectify does not calculate cell resolution well if the map is to be rotated ([http://intevation.de/rt/webrt?serial_num=3296 bug #3296]), in those cases i.rectify+r.proj may be the better option.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== i.plr.py ====&lt;br /&gt;
&lt;br /&gt;
: [[I.plr.py|Probabilistic Label Relaxation]], written in Python&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Georg Kaspar&lt;br /&gt;
&lt;br /&gt;
==== i.pr ====&lt;br /&gt;
&lt;br /&gt;
: Image classification: implements k-NN (multiclass), classification trees (multiclass), maximum likelihood (multiclass), Support Vector Machines (binary), bagging versions of all the base classifiers, AdaBoost for binary trees and support vector machines. It allows feature manipulation (normalization, principal components,...). It also implements feature selection techniques (RFE, E-RFE,...), statistical tests on variables, tools for resampling (cross-validation and bootstrap) and cost-sensitive techniques for trees and support vector machines.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Stefano Merler. Available via SVN:&lt;br /&gt;
&lt;br /&gt;
   svn co https://svn.osgeo.org/grass/grass-addons/imagery/i.pr&lt;br /&gt;
&lt;br /&gt;
==== i.spec.sam ====&lt;br /&gt;
&lt;br /&gt;
: Spectral Angle mapping&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Markus Neteler. Available via SVN:&lt;br /&gt;
&lt;br /&gt;
   svn co https://svn.osgeo.org/grass/grass-addons/imagery/i.spec.sam/&lt;br /&gt;
&lt;br /&gt;
==== i.spec.unmix ====&lt;br /&gt;
&lt;br /&gt;
: Spectral unmixing&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Markus Neteler. Available via SVN:&lt;br /&gt;
&lt;br /&gt;
   svn co https://svn.osgeo.org/grass/grass-addons/imagery/i.spec.unmix/&lt;br /&gt;
&lt;br /&gt;
==== i.topo.corr ====&lt;br /&gt;
: i.topo.corr is used to topographically correct reflectance from imagery files, e.g. obtained with i.landsat.toar (see above), using a sun illumination terrain model. This illumination model represents the cosine of the incident angle, i.e. the  angle between the normal to the ground and the sun rays. It can be obtained with {{cmd|r.sun}} (parameter incidout), and then calculating its cosine with float precision. Correction methods: cosine, minnaert, percent, c-factor.&lt;br /&gt;
&lt;br /&gt;
  svn co https://svn.osgeo.org/grass/grass-addons/imagery/i.topo.corr&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' E. Jorge Tizado&lt;br /&gt;
&lt;br /&gt;
==== i.warp ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/imagery/i.warp i.warp] is a shell script that will use gdalwarp to rectify a raw input image using thin plate splines. The map should be imported into GRASS with r.in.gdal and GCPs set with i.points. Input is the raw image (GeoTIFF, JPEG, etc). Output is a GeoTIFF in the imagery group's target location's map projection. Requires a recent (early 2006) version of GRASS 6.1, or newer.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
=== Display add-ons ===&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/display&lt;br /&gt;
&lt;br /&gt;
==== d.edit.rast ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/display/d.edit.rast d.edit.rast] edits cells in an existing raster map displayed on the current monitor.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Huidae Cho&lt;br /&gt;
&lt;br /&gt;
==== d.frame.quarter ====&lt;br /&gt;
&lt;br /&gt;
: ('''obsolete''') [http://trac.osgeo.org/grass/browser/grass-addons/display/d.frame.split d.frame.quarter] is a shell script that will split the display into four quadrants (or sixths) using ''d.frame''. Individual frames are named ''uno, dos, tres, cuatro'', and ''full_screen''.&lt;br /&gt;
: Replaced by {{cmd|d.split.frame}} in main.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== d.frame.split ====&lt;br /&gt;
&lt;br /&gt;
: ''d.frame.split moved into main archive as {{cmd|d.split.frame}}''&lt;br /&gt;
&lt;br /&gt;
==== d.hyperlink ====&lt;br /&gt;
&lt;br /&gt;
: [ftp://gsca.nrcan.gc.ca/outgoing/Patton/Grass/Scripts/d.hyperlink.tar.bz2 d.hyperlink] is an interactive shell script that allows the viewing of hyperlinked images from a vector's attribute table in an external image viewer. Queries can be made via SQL statements or interactive mouse-clicking. The attribute table must be pre-populated with a column containing the image to link the vector to; the user also specifies the image folder in the current MAPSET where the images are located. The script currently supports gimp, Eye of Gnome, gthumb, gpdf, and Inkscape image viewers.&lt;br /&gt;
&lt;br /&gt;
: '''Author: '''Eric Patton&lt;br /&gt;
&lt;br /&gt;
==== d.mark ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/display/d.shortcuts d.mark] is a shell script that quickly displays a marker on the display at a given coordinate.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman &lt;br /&gt;
&lt;br /&gt;
==== d.region.box ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/display/d.region.box d.region.box] is a shell script that quickly displays a box around the current region.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== d.stations ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/display/d.shortcuts   d.stations] is a shell script that quickly displays vector points (or sites for GRASS 5.4 and below).&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman &lt;br /&gt;
&lt;br /&gt;
==== d.varea ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/display/d.shortcuts d.varea] is a shell script that quickly displays vector areas.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== pd-GRASS ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.ornl.gov/sci/gist/software/grass/ pd-GRASS]: Parallel Display for GRASS GIS&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Alex Sorokine&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== [[IconSymbols]] ====&lt;br /&gt;
&lt;br /&gt;
* [[IconSymbols|Symbols]] which can be used with ''d.vect, d.graph'', and ''ps.map''.&lt;br /&gt;
&lt;br /&gt;
=== Postscript add-ons ===&lt;br /&gt;
&lt;br /&gt;
* ''See also [[ps.map scripts|ps.map samples and templates]]''.&lt;br /&gt;
&lt;br /&gt;
==== ps.atlas ====&lt;br /&gt;
&lt;br /&gt;
: [http://les-ejk.cz/programs/grass/ps.atlas ps.atlas] is a shell script that makes more maps on current region according to input *.psmap file. General map can be stored as vector file. The resulting *.eps maps can be automatically converted to *.pdf files.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Jachym Cepicky&lt;br /&gt;
&lt;br /&gt;
==== ps.output ====&lt;br /&gt;
&lt;br /&gt;
: [https://trac.osgeo.org/grass/browser/grass-addons/postscript/ps.output ps.output] is much like {{cmd|ps.map}} but with advanced decorations and ability for translucency.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Jorge Tizado&lt;br /&gt;
&lt;br /&gt;
==== [[AreaFillPatterns]] ====&lt;br /&gt;
&lt;br /&gt;
* Hatches for ps.map's vareas&lt;br /&gt;
&lt;br /&gt;
===GRASS and UMN Mapserver===&lt;br /&gt;
&lt;br /&gt;
* [http://www.mail-archive.com/mapserver-users@lists.umn.edu/msg00086.html See interesting posting]&lt;br /&gt;
* See wiki [[GRASS and MapServer]] page&lt;br /&gt;
&lt;br /&gt;
==GRASS 5.x (old)==&lt;br /&gt;
&lt;br /&gt;
===Vector add-ons===&lt;br /&gt;
&lt;br /&gt;
* See here: http://grass.osgeo.org/download/addons.php&lt;br /&gt;
&lt;br /&gt;
===Raster add-ons===&lt;br /&gt;
&lt;br /&gt;
* See here: http://grass.osgeo.org/download/addons.php&lt;br /&gt;
&lt;br /&gt;
* [http://www.valledemexico.ambitiouslemon.com/gwmodelling.html r.gmtg] The groundwater modelling tool for grass. A module to use MODFLOW within GRASS. &amp;lt;BR&amp;gt;'''Author''': Jaime Carrera&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.bowdoin.edu/~ltoma/research.html r.terracost] Scalable approach for computing least-cost-path surfaces on massive grid terrains. For GRASS 5.3.&amp;lt;BR&amp;gt;'''Lead author''': Laura Toma&lt;br /&gt;
:Newer version available via SVN:&lt;br /&gt;
  svn co https://svn.osgeo.org/grass/grass-addons/raster/r.terracost&lt;br /&gt;
&lt;br /&gt;
==GRASS 4.x (very old)==&lt;br /&gt;
&lt;br /&gt;
===Raster add-ons===&lt;br /&gt;
&lt;br /&gt;
* MAGICAL Software: The MAGICAL software comprises a suite of three programs that provide a multi-agent simulation extension for the GRASS GIS software. http://www.ucl.ac.uk/~tcrnmar/simulation/magical/magical.html&lt;br /&gt;
&lt;br /&gt;
[[Category:Community]]&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Installation]]&lt;/div&gt;</summary>
		<author><name>⚠️Avitti</name></author>
	</entry>
</feed>