<?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%8FSbl</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%8FSbl"/>
	<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/wiki/Special:Contributions/%E2%9A%A0%EF%B8%8FSbl"/>
	<updated>2026-05-13T01:10:22Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Team&amp;diff=25324</id>
		<title>Team</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Team&amp;diff=25324"/>
		<updated>2018-09-14T19:47:43Z</updated>

		<summary type="html">&lt;p&gt;⚠️Sbl: /* Add Stefan */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The GRASS GIS project is an international team effort with scientists and developers participating from various fields. Below is a list of the current team.&lt;br /&gt;
&lt;br /&gt;
All general queries concerning GRASS should be addressed to the respective [http://grass.osgeo.org/support/mailing-lists/ GRASS mailing lists]. If you miss yourself or somebody else on the lists below, please feel free to edit this Wiki page or send mail to the [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developers mailing list]. &lt;br /&gt;
__TOC__&lt;br /&gt;
== Current contributors to the development of the GRASS code ==&lt;br /&gt;
&lt;br /&gt;
In alphabetical order; see for example [http://www.ohloh.net/p/grass_gis/contributors here] for contribution statistics.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;margin: 1em auto 1em auto; text-align:left&amp;quot;&lt;br /&gt;
| width=200px | [[Image:Grasslogo vector small.png|100px|center]]&lt;br /&gt;
| '''Anna Kratochvílová''': GRASS 7 wxGUI development, Prague, CZ, mail: [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developers mailing list]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:benjamin.png|100px|center|center]] &lt;br /&gt;
| '''Benjamin Ducke''': extension manager, spatial statistics, archaeological applications, predictive modelling Location: Berlin, Germany, mail: [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developers mailing list]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Grasslogo vector small.png|100px|center]] &lt;br /&gt;
| '''Glynn Clements''': core development, UK, mail: [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developers mailing list ]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:hamish.jpg|100px|center]] &lt;br /&gt;
| '''Hamish Bowman''': Development of display, PostScript, raster, and GPS modules as well as general sanitation of the code, help, and web pages. Location: Department of Marine Science, University of Otago. Dunedin, New Zealand mail: hamish_b AT yahoo com [http://hamish.bowman.googlepages.com/grassfiles http://hamish.bowman.googlepages.com/grassfiles] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:helena.jpg|100px|center]] &lt;br /&gt;
| '''Helena Mitasova''': surface and volume modeling and analysis (RST modules), topographic analysis, hydrologic and erosion modelling, assistance with visualization, working with students on new module development, testing, and bug fixing Location: Raleigh, North Carolina, USA, mail: [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developers mailing list ][http://www4.ncsu.edu/~hmitaso/ http://www4.ncsu.edu/~hmitaso/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:hellik.png|100px|center]]&lt;br /&gt;
| '''Helmut Kudrnovsky''': [http://grass.osgeo.org/grass64/binary/mswindows/native/ winGRASS packaging],german translation, Austria, mail: [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developers mailing list]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Grasslogo vector small.png|100px|center]] &lt;br /&gt;
| '''Huidae Cho''': Hydrologic modeling (TOPMODEL modules), DXF modules, FreeType support, Korean translation. Location: Atlanta, Georgia, USA mail: grass4u AT gmail com, IRC Nick: grass4u [http://idea.isnew.info http://idea.isnew.info]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:lucadelu.png|100px|center]]&lt;br /&gt;
| '''Luca Delucchi''': Python GRASS development (GUI and Modules), Documentation, Italian Translation, Location: Trento (Italy), mail: [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developers mailing list]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Maris_nartiss.jpg|100px|center]]&lt;br /&gt;
| '''[[user:MarisN|Maris Nartiss]]''': Tcl/TK GUI development, Latvia, mail: [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developers mailing list]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Grasslogo vector small.png|100px|center]]&lt;br /&gt;
| '''Markus Metz''': GRASS 7 development, massive data processing, vector library, Italy + Germany, mail: [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developers mailing list]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:markus.jpg|100px|center]] &lt;br /&gt;
| '''Markus Neteler''': various contributions, coordination, main Web site and mailing lists maintenance, Location: Bonn, Germany, mail: [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developers mailing list], IRC Nick: markusN [http://www.grassbook.org/neteler/ http://www.grassbook.org/neteler/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:mlanda.png|100px|center]] &lt;br /&gt;
| '''Martin Landa''': various contributions, vector engine improvements, [[wxGUI]], Location: Prague, Czech Republic Mail: landa.martin AT gmail.com Homepage: [http://geo.fsv.cvut.cz/~landa http://geo.fsv.cvut.cz/~landa]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:michael.jpg|100px|center]] &lt;br /&gt;
| '''Michael Barton ''': GRASS native GUI development, Mac binaries, Location: Tempe, Arizona, USA mail: [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developers mailing list ][http://www.public.asu.edu/~cmbarton/ http://www.public.asu.edu/~cmbarton/]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Grasslogo vector small.png|100px|center]]&lt;br /&gt;
| '''Moritz Lennert''': display tools, mail: [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developers mailing list]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Grasslogo vector small.png|100px|center]]&lt;br /&gt;
| '''Nikos Alexandris''': tester, contributed add-ons, mail: [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developers mailing list]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Grasslogo vector small.png|100px|center]] &lt;br /&gt;
| '''Pietro Zambelli''': GRASS7 Python API (mainly pygrass), Location: Europe, mail: [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developers mailing list], link: ''&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Grasslogo vector small.png|100px|center]] &lt;br /&gt;
| '''Soeren Gebbert''': improvements of [http://www-pool.math.tu-berlin.de/~soeren/grass/ 3D functionality] mail: [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developers mailing list]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
[[Image:Stefan.png|100px|center]]&lt;br /&gt;
| '''Stefan Blumentrath''': GRASS Python development, Oslo, NO, mail: [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developers mailing list][https://www.nina.no/english/Contact/Employees/Employee-info?AnsattID=14230 NINA Oslo]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Grasslogo vector small.png|100px|center]]&lt;br /&gt;
| '''Stepan Turek''': GRASS 7 wxGUI development, Prague, CZ, mail: [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developers mailing list]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Grasslogo vector small.png|100px|center]]&lt;br /&gt;
| '''Vaclav Petras''': GRASS 7 wxGUI development, Prague, CZ, mail: [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developers mailing list]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Grasslogo vector small.png|100px|center]]&lt;br /&gt;
| '''William Kyngesburye''': [http://www.kyngchaos.com/software:grass/ Mac OS X packaging], USA, mail: [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developers mailing list]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Grasslogo vector small.png|100px|center]]&lt;br /&gt;
| '''Yann Chemin''': image processing, mail: [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developers mailing list]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Grasslogo vector small.png|100px|center]] &lt;br /&gt;
| '''''your name''': what-you-do, Location: xyz, mail: [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developers mailing list], link: ''&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Former or currently inactive developers ==&lt;br /&gt;
&lt;br /&gt;
(in alphabetical order)&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; border=&amp;quot;1&amp;quot; style=&amp;quot;margin: 1em auto 1em auto; text-align:left&amp;quot;&lt;br /&gt;
| width=200px | [[Image:Grasslogo vector small.png|100px|center]] &lt;br /&gt;
| '''Bob Covill''' Role: visualization, mail: [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developers mailing list ]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Grasslogo vector small.png|100px|center]] &lt;br /&gt;
| '''Brad Douglas''' Role: bug fixing, code portability, imagery modules Location: Fremont, California, USA, IRC Nick: bdouglas, mail: rez AT touchofmadness com &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:cedric.jpg|100px|center]] &lt;br /&gt;
| '''Cedric Shock''' Role: user interface enhancements, debugging Location: Eugene, Oregon, USA, mail: [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developers mailing list], [http://www.shockfamily.net/cedric/ http://www.shockfamily.net/cedric/] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:DaveSampson.png|100px|center]]&lt;br /&gt;
| '''Dave Sampson''' Role: tutorials, data sets &amp;amp;amp; public data licensing, GRASS map gallery, Ottawa Chapter of OSGeo, Location: Ottawa, Ontario, Canada, mail: samper.d at gmail dot com [http://davidsampson.ca/ http://davidsampson.ca] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:jachym.png|100px|center]] &lt;br /&gt;
| '''Jachym Cepicky''' Role: bug fixing, support of 3D vectors, tester and translator, UI developer, Czech Republic, mail: jachym.cepicky AT gmail.com [http://les-ejk.cz/ http://les-ejk.cz/] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Grasslogo vector small.png|100px|center]] &lt;br /&gt;
| '''Jaroslav Hofierka''' Role: development of modules for solar irradiation, flow routing, surface and volume modelling and analysis (RST modules), hydrologic and erosion modelling, assistance with visualization Location: Presov, Slovakia, mail: [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developers mailing list ]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:maciek.png|100px|center]] &lt;br /&gt;
| '''Maciej Sieczka''' Role: power user, testing Location: Wroclaw, Poland, mail: msieczka AT sieczka.org [http://www.sieczka.org/ http://www.sieczka.org] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Grasslogo vector small.png|100px|center]] &lt;br /&gt;
| '''Marco Pasetti''' Role: Microsoft Windows native binary port of GRASS Location: Brescia, Italy, mail: [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developers mailing list], link: [http://grass.osgeo.org/grass64/binary/mswindows/native/ WinGRASS Project Homepage] &lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Grasslogo vector small.png|100px|center]] &lt;br /&gt;
| '''Paul Kelly''' Role: Proj integration, mail: [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developers mailing list ]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:radim.jpg|100px|center]]&lt;br /&gt;
| '''Radim Blazek''' Role: DBMI, vector engine core developer, Location: Trento, Italy till 2006, mail: [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developers mailing list]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:scott.jpg|100px|center]] &lt;br /&gt;
| '''Scott Mitchell''' Role: tutorial and documentation development, web site maintenance, Ottawa User's Group, OSGeo Journal News and Events Editor Location: Ottawa, Ontario, Canada, mail: [http://lists.osgeo.org/mailman/listinfo/grass-web GRASS web site maintenance mailing list] [http://www.carleton.ca/~smitch http://www.carleton.ca/~smitch] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== The following institutions are currently supporting the GRASS-Project ==&lt;br /&gt;
&lt;br /&gt;
Please see our [http://grass.osgeo.org/donations/ GRASS sponsoring] page. &lt;br /&gt;
&lt;br /&gt;
And a ''thank-you'' to:&lt;br /&gt;
&lt;br /&gt;
* the many people who have contributed in the past&lt;br /&gt;
* the various users who have contributed bug reports and tested unstable GRASS versions; &lt;br /&gt;
* all the sites (and the people behind them) that provide mirrors for the GRASS web pages.&lt;/div&gt;</summary>
		<author><name>⚠️Sbl</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=File:Stefan.png&amp;diff=25323</id>
		<title>File:Stefan.png</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=File:Stefan.png&amp;diff=25323"/>
		<updated>2018-09-14T19:44:50Z</updated>

		<summary type="html">&lt;p&gt;⚠️Sbl: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Stefan&lt;/div&gt;</summary>
		<author><name>⚠️Sbl</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Python_Scripting_Library&amp;diff=25219</id>
		<title>GRASS Python Scripting Library</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Python_Scripting_Library&amp;diff=25219"/>
		<updated>2018-04-23T10:18:19Z</updated>

		<summary type="html">&lt;p&gt;⚠️Sbl: update cleanup to new g.remove&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Python}}&lt;br /&gt;
Python API documentation:&lt;br /&gt;
&lt;br /&gt;
* [http://grass.osgeo.org/grass70/manuals/libpython/ Python API for GRASS GIS 7] and [http://grass.osgeo.org/grass70/manuals/libpython/script_intro.html Python Scripting Library]&lt;br /&gt;
* [http://grass.osgeo.org/programming6/pythonlib.html for GRASS GIS 6]: core.py, db.py, raster.py, vector.py, setup.py, array.py task.py&lt;br /&gt;
&lt;br /&gt;
The GRASS Python Scripting Library can be imported by statement&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
import grass.script as gscript&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The other packages such as PyGRASS can be imported in a similar way.&lt;br /&gt;
&lt;br /&gt;
The code in {{src|lib/python/|lib/python}} provides &amp;lt;tt&amp;gt;grass.script&amp;lt;/tt&amp;gt; and other packages in order to support GRASS scripts written in Python. The {{src|scripts}} directory of GRASS GIS 7 contains a series of examples actually provided to the end users (while the script in GRASS GIS 6 are shell scripts).&lt;br /&gt;
&lt;br /&gt;
For more general info, see also [[GRASS and Python]] and see also [[Converting Bash scripts to Python]] if you have some Bash scripts you want to rewrite to Python.&lt;br /&gt;
&lt;br /&gt;
== Uses for read, feed and pipe, start and exec commands ==&lt;br /&gt;
&lt;br /&gt;
All of the &amp;lt;tt&amp;gt;*_command&amp;lt;/tt&amp;gt; functions use {{pyapi|script|script.core|make_command}} to construct a command&lt;br /&gt;
line for a program which uses the {{cmd|g.parser|desc=GRASS parser}}. Most of them then pass&lt;br /&gt;
that command line to &amp;lt;tt&amp;gt;subprocess.Popen()&amp;lt;/tt&amp;gt; via {{pyapi|script|script.core|start_command}}, except&lt;br /&gt;
for {{pyapi|script|script.core|exec_command}} which uses &amp;lt;tt&amp;gt;os.execvpe()&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[To be precise, they use &amp;lt;tt&amp;gt;grass.Popen()&amp;lt;/tt&amp;gt;, which just calls&lt;br /&gt;
&amp;lt;tt&amp;gt;subprocess.Popen()&amp;lt;/tt&amp;gt; with 'shell=True' on Windows and 'shell=False'&lt;br /&gt;
otherwise. On Windows, you need to use 'shell=True' to be able to&lt;br /&gt;
execute scripts (including batch files); 'shell=False' only works with&lt;br /&gt;
binary executables.]&lt;br /&gt;
&lt;br /&gt;
{{pyapi|script|script.core|start_command}} separates the arguments into those which&lt;br /&gt;
&amp;lt;tt&amp;gt;subprocess.Popen()&amp;lt;/tt&amp;gt; understands and the rest. The rest are passed to&lt;br /&gt;
&amp;lt;tt&amp;gt;make_command()&amp;lt;/tt&amp;gt; to construct a command line which is passed as the&lt;br /&gt;
&amp;quot;args&amp;quot; parameter to &amp;lt;tt&amp;gt;subprocess.Popen()&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In other words, {{pyapi|script|script.core|start_command}} is a GRASS-oriented interface to&lt;br /&gt;
&amp;lt;tt&amp;gt;subprocess.Popen()&amp;lt;/tt&amp;gt;. It should be suitable for any situation where you&lt;br /&gt;
would use &amp;lt;tt&amp;gt;subprocess.Popen()&amp;lt;/tt&amp;gt; to execute a normal GRASS command (one&lt;br /&gt;
which uses the GRASS parser, which is almost all of them; the main&lt;br /&gt;
exception is {{cmd|r.mapcalc}} in 6.x).&lt;br /&gt;
&lt;br /&gt;
Most of the others are convenience wrappers around &amp;lt;tt&amp;gt;start_command()&amp;lt;/tt&amp;gt;, for common use cases.&lt;br /&gt;
&lt;br /&gt;
* {{pyapi|script|script.core|run_command}} calls the wait() method on the process, so it doesn't return until the command has finished, and returns the command's exit code. Similar to &amp;lt;tt&amp;gt;system()&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* {{pyapi|script|script.core|pipe_command}} calls &amp;lt;tt&amp;gt;start_command()&amp;lt;/tt&amp;gt; with 'stdout=PIPE' and returns the process object. You can use the process' .stdout member to read the command's stdout. Similar to popen(..., &amp;quot;r&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
* {{pyapi|script|script.core|feed_command}} calls &amp;lt;tt&amp;gt;start_command()&amp;lt;/tt&amp;gt; with stdin=PIPE and returns the process object. You can use the process' .stdin member to write to the command's stdout. Similar to popen(..., &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
* {{pyapi|script|script.core|read_command}} calls &amp;lt;tt&amp;gt;pipe_command()&amp;lt;/tt&amp;gt;, reads the data from the command's stdout, and returns it as a string. Similar to `backticks` in the shell.&lt;br /&gt;
&lt;br /&gt;
* {{pyapi|script|script.core|write_command}} calls &amp;lt;tt&amp;gt;feed_command()&amp;lt;/tt&amp;gt;, sends the string specified by the &amp;quot;stdin&amp;quot; argument to the command's stdin, waits for the command to finish and returns its exit code. Similar to &amp;quot;echo ... | command&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* {{pyapi|script|script.core|parse_command}} calls &amp;lt;tt&amp;gt;read_command()&amp;lt;/tt&amp;gt; and parses its output as key-value pairs. Useful for obtaining information from {{cmd|g.region}}, {{cmd|g.proj}}, {{cmd|r.info}}, etc.&lt;br /&gt;
&lt;br /&gt;
* {{pyapi|script|script.core|exec_command}} doesn't use &amp;lt;tt&amp;gt;start_command()&amp;lt;/tt&amp;gt; but &amp;lt;tt&amp;gt;os.execvpe()&amp;lt;/tt&amp;gt;. This causes the specified command to replace the current program (i.e. the Python script), so &amp;lt;tt&amp;gt;exec_command()&amp;lt;/tt&amp;gt; never returns. Similar to bash's &amp;quot;exec&amp;quot; command. This can be useful if the script is a &amp;quot;wrapper&amp;quot; around a single command, where you construct the command line and execute the command as the final step. Notes: exec_command() is rarely appropriate. You probably want run_command() instead. On Windows, exec_command() will probably require the &amp;quot;.exe&amp;quot; suffix.&lt;br /&gt;
&lt;br /&gt;
If you have any other questions, you might want to look at the code ({{src|lib/python/core.py}}). Most of these functions are only a few lines long.&lt;br /&gt;
&lt;br /&gt;
=== Hints for parse_command() ===&lt;br /&gt;
&lt;br /&gt;
To turn this command&lt;br /&gt;
        g.rename rast=old_name,new_name&lt;br /&gt;
into a g.parse_command() call, you need to consider that it is a function call with three arguments:&lt;br /&gt;
# &amp;quot;g.rename&amp;quot;&lt;br /&gt;
# rast=old_name&lt;br /&gt;
# new_name&lt;br /&gt;
&lt;br /&gt;
The second argument is a keyword argument, the first and third are&lt;br /&gt;
positional (non-keyword) arguments. Python doesn't allow positional&lt;br /&gt;
arguments to follow keyword arguments; positional arguments come&lt;br /&gt;
first, keyword arguments last.&lt;br /&gt;
&lt;br /&gt;
Given the context, it's safe to assume that you want to pass a pair of&lt;br /&gt;
map names as the value to the rast= option. This requires explicit&lt;br /&gt;
parentheses so that the comma is treated as forming a tuple rather&lt;br /&gt;
than as an argument separator:&lt;br /&gt;
&lt;br /&gt;
        g.parse_command(&amp;quot;g.rename&amp;quot;, rast=(old_name,new_name))&lt;br /&gt;
&lt;br /&gt;
The parentheses in a tuple value can only be omitted if it doesn't&lt;br /&gt;
result in the comma being ambiguous (as is the case in a function&lt;br /&gt;
call).&lt;br /&gt;
&lt;br /&gt;
== Interfacing ==&lt;br /&gt;
&lt;br /&gt;
=== Interfacing with NumPy ===&lt;br /&gt;
&lt;br /&gt;
The {{pyapi|script|script.array|array}} module defines a &amp;lt;code&amp;gt;class array&amp;lt;/code&amp;gt; which is a subclass of [http://docs.scipy.org/doc/numpy/reference/generated/numpy.memmap.html numpy.memmap] with &amp;lt;code&amp;gt;.read()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.write()&amp;lt;/code&amp;gt; methods to read/write the underlying file via {{cmd|r.out.bin}}/{{cmd|r.in.bin}}. Metadata can be read with {{pyapi|script|script.raster|raster_info}}:&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import grass.script as grass&lt;br /&gt;
import grass.script.array as garray&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    map = &amp;quot;elevation.dem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # read map&lt;br /&gt;
    a = garray.array()&lt;br /&gt;
    a.read(map)&lt;br /&gt;
&lt;br /&gt;
    # get raster map info&lt;br /&gt;
    print grass.raster_info(map)['datatype']&lt;br /&gt;
    i = grass.raster_info(map)&lt;br /&gt;
    &lt;br /&gt;
    # get computational region info&lt;br /&gt;
    c = grass.region()&lt;br /&gt;
    print &amp;quot;rows: %d&amp;quot; % c['rows']&lt;br /&gt;
    print &amp;quot;cols: %d&amp;quot; % c['cols']&lt;br /&gt;
&lt;br /&gt;
    # new array for result&lt;br /&gt;
    b = garray.array()&lt;br /&gt;
    # calculate new map from input map and store as GRASS raster map&lt;br /&gt;
    b[...] = (a / 50).astype(int) * 50&lt;br /&gt;
    b.write(&amp;quot;elev.50m&amp;quot;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The size of the array is taken from the current region ([[computational region]]).&lt;br /&gt;
&lt;br /&gt;
The main drawback of using numpy is that you're limited by available&lt;br /&gt;
memory. Using a subclass of &amp;lt;code&amp;gt;numpy.memmap&amp;lt;/code&amp;gt; lets you use files which may&lt;br /&gt;
be much larger, but processing the entire array in one go is likely to&lt;br /&gt;
produce in-memory results of a similar size.&lt;br /&gt;
&lt;br /&gt;
'''NULL (no data) management:'''&lt;br /&gt;
&lt;br /&gt;
For integer maps, the NULL value is -2^31 = -2147483648. For floating-point maps, the NULL value is NaN. Note that the null= parameter for read() and write() specifies the value in the numpy array which is mapped to/from null values in the GRASS raster map.&lt;br /&gt;
&lt;br /&gt;
If you're using floating-point numpy arrays, then use (Note: This assumes that atof() and sscanf(&amp;quot;%lf&amp;quot;) recognise &amp;quot;nan&amp;quot;; this is the case on Linux, but doesn't appear to work on Windows)&lt;br /&gt;
 null=numpy.nan&lt;br /&gt;
&lt;br /&gt;
For integer arrays, using&lt;br /&gt;
 null=-2147483648&lt;br /&gt;
will ensure that valid values don't collide with NYLLs.&lt;br /&gt;
&lt;br /&gt;
'''MASK support:'''&lt;br /&gt;
&lt;br /&gt;
The function grass.script.array.read() and ...write() use r.out.bin and r.in.bin respectively. r.out.bin respects the MASK.&lt;br /&gt;
&lt;br /&gt;
=== Interfacing with NumPy and SciPy  ===&lt;br /&gt;
&lt;br /&gt;
[http://docs.scipy.org/doc/scipy/reference/index.html SciPy] offers simple access to complex calculations. Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from scipy import stats&lt;br /&gt;
import grass.script as grass&lt;br /&gt;
import grass.script.array as garray&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    map = &amp;quot;elevation.dem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    x = garray.array()&lt;br /&gt;
    x.read(map)&lt;br /&gt;
&lt;br /&gt;
    # Descriptive Statistics:&lt;br /&gt;
    print &amp;quot;max, min, mean, var:&amp;quot;&lt;br /&gt;
    print x.max(), x.min(), x.mean(), x.var()&lt;br /&gt;
    print &amp;quot;Skewness test: z-score and 2-sided p-value:&amp;quot;&lt;br /&gt;
    print stats.skewtest(stats.skew(x))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Interfacing with NumPy, SciPy and Matlab ===&lt;br /&gt;
&lt;br /&gt;
One may also use the SciPy - Matlab interface:&lt;br /&gt;
    &lt;br /&gt;
    r.out.mat input=elevation output=elev.mat&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
    ### PY ###&lt;br /&gt;
    import scipy.io as sio&lt;br /&gt;
    # load data&lt;br /&gt;
    elev = sio.loadmat('elev.mat')&lt;br /&gt;
    # retrive the actual array. the data set contains also the spatial reference&lt;br /&gt;
    elev.get('map_data')&lt;br /&gt;
    data = elev.get('map_data')&lt;br /&gt;
    # a first simple plot&lt;br /&gt;
    import pylab&lt;br /&gt;
    pylab.plot(data)&lt;br /&gt;
    pylab.show()&lt;br /&gt;
    # the contour plot&lt;br /&gt;
    pylab.contour(data)&lt;br /&gt;
    # obviously data needs to ne reversed&lt;br /&gt;
    import numpy as np&lt;br /&gt;
    data_rev = data[::-1]&lt;br /&gt;
    pylab.contour(data_rev)&lt;br /&gt;
    # =&amp;gt; this is a quick plot. basemap mapping may provide a nicer map!&lt;br /&gt;
    #######&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Display example ===&lt;br /&gt;
Example of Python script, which is processed by {{cmd|g.parser}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
#&lt;br /&gt;
############################################################################&lt;br /&gt;
#&lt;br /&gt;
# MODULE:      d.shadedmap&lt;br /&gt;
# AUTHOR(S):   Unknown; updated to GRASS 5.7 by Michael Barton&lt;br /&gt;
#              Converted to Python by Glynn Clements&lt;br /&gt;
# PURPOSE:     Uses d.his to drape a color raster over a shaded relief map&lt;br /&gt;
# COPYRIGHT:   (C) 2004,2008,2009 by the GRASS Development Team&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;
#%Module&lt;br /&gt;
#% description: Drapes a color raster over a shaded relief map using d.his&lt;br /&gt;
#% keyword: display&lt;br /&gt;
#% keyword: raster&lt;br /&gt;
#%End&lt;br /&gt;
#%option&lt;br /&gt;
#% key: reliefmap&lt;br /&gt;
#% type: string&lt;br /&gt;
#% gisprompt: old,cell,raster&lt;br /&gt;
#% description: Name of shaded relief or aspect map&lt;br /&gt;
#% required : yes&lt;br /&gt;
#%end&lt;br /&gt;
#%option&lt;br /&gt;
#% key: drapemap&lt;br /&gt;
#% type: string&lt;br /&gt;
#% gisprompt: old,cell,raster&lt;br /&gt;
#% description: Name of raster to drape over relief map&lt;br /&gt;
#% required : yes&lt;br /&gt;
#%end&lt;br /&gt;
#%option&lt;br /&gt;
#% key: brighten&lt;br /&gt;
#% type: integer&lt;br /&gt;
#% description: Percent to brighten&lt;br /&gt;
#% options: -99-99&lt;br /&gt;
#% answer: 0&lt;br /&gt;
#%end&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
from grass.script import core as grass&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    drape_map = options['drapemap']&lt;br /&gt;
    relief_map = options['reliefmap']&lt;br /&gt;
    brighten = options['brighten']&lt;br /&gt;
    ret = grass.run_command(&amp;quot;d.his&amp;quot;, h_map = drape_map,  i_map = relief_map, brighten = brighten)&lt;br /&gt;
    sys.exit(ret)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    options, flags = grass.parser()&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Parsing the options and flags  ===&lt;br /&gt;
&lt;br /&gt;
{{pyapi|script|script.core|parser}} is an interface to {{cmd|g.parser}}, and allows to parse the ''options'' and ''flags'' passed to your script on the command line. It is to be called at the top-level:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    options, flags = grass.parser()&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Global variables &amp;quot;options&amp;quot; and &amp;quot;flags&amp;quot; are Python dictionaries containing the options/flags values, keyed by lower-case option/flag names. The values in &amp;quot;options&amp;quot; are strings, those in &amp;quot;flags&amp;quot; are Python booleans. All those variables have to be previously declared in the header of your script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; options, flags = grass.parser()&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; options&lt;br /&gt;
{'input': 'my_map', 'output': 'map_out', 'option1': '21.472', 'option2': ''}&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; flags&lt;br /&gt;
{'c': True, 'm': False}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Passing several floats to a single option:'''&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python my.module.py input=input output=output myoption=0.1,0.2,0.5&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The values in the &amp;quot;options&amp;quot; dictionary returned from the parser()&lt;br /&gt;
function are always strings. You can parse the string with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
        myoption = map(float, options['myoption'].split(','))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The option definition in the script should have:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
        #% type: double&lt;br /&gt;
        #% multiple: yes&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This allows g.parser to validate the option syntax, so you can rely&lt;br /&gt;
upon the string being in the correct format. If the values have a&lt;br /&gt;
fixed range, you can use e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
        #% options: 0.0-1.0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to have the parser check that the values fall within the range.&lt;br /&gt;
&lt;br /&gt;
For more information on option definitions, see:&lt;br /&gt;
&lt;br /&gt;
http://grass.osgeo.org/programming7/gislib.html#Complete_Structure_Members_Table&lt;br /&gt;
&lt;br /&gt;
=== Example for embedding r.mapcalc (map algebra) ===&lt;br /&gt;
&lt;br /&gt;
{{pyapi|script|script.raster|mapcalc}} accepts a template string followed by keyword&lt;br /&gt;
arguments for the substitutions, e.g. (code snippets):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
grass.mapcalc(&amp;quot;${out} = ${rast1} + ${rast2}&amp;quot;,&lt;br /&gt;
              out = options['output'],&lt;br /&gt;
              rast1 = options['raster1'],&lt;br /&gt;
              rast2 = options['raster2'])&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Best practice'': first copy all of the options[] into separate variables at the beginning of main(), i.e.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def main():&lt;br /&gt;
    output = options['output']&lt;br /&gt;
    raster1 = options['raster1']&lt;br /&gt;
    raster2 = options['raster2']&lt;br /&gt;
 &lt;br /&gt;
    ...&lt;br /&gt;
 &lt;br /&gt;
    grass.mapcalc(&amp;quot;${out} = ${rast1} + ${rast2}&amp;quot;,&lt;br /&gt;
                  out = output,&lt;br /&gt;
                  rast1 = raster1,&lt;br /&gt;
                  rast2 = raster2)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Performing multiple computations using &amp;lt;tt&amp;gt;grass.script.raster.mapcalc()&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
expr = &amp;quot;;&amp;quot;.join([&lt;br /&gt;
        &amp;quot;$out.r = r#$first * $frac + (1.0 - $frac) * r#$second&amp;quot;,&lt;br /&gt;
        &amp;quot;$out.g = g#$first * $frac + (1.0 - $frac) * g#$second&amp;quot;,&lt;br /&gt;
        &amp;quot;$out.b = b#$first * $frac + (1.0 - $frac) * b#$second&amp;quot;])&lt;br /&gt;
grass.mapcalc(expr, out=out, first=first, second=second, frac=percent/100.0)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hint: multi-line strings can be separated by using a semicolon instead of a newline.&lt;br /&gt;
&lt;br /&gt;
=== Looping over file names stored in an ASCII file ===&lt;br /&gt;
&lt;br /&gt;
When looping over file names stored in an ASCII file and getting the error&lt;br /&gt;
&lt;br /&gt;
   WARNING: Illegal filename &amp;lt;map.f1jan.05216.something&lt;br /&gt;
          &amp;gt;. Character &amp;lt;&lt;br /&gt;
          &amp;gt; not allowed.&lt;br /&gt;
&lt;br /&gt;
then the line terminators may be the reason.&lt;br /&gt;
When you iterate over a file, the strings include the line terminators (e.g. '\n' or '\r\n'). Use e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
    for line in gl:&lt;br /&gt;
        renamed = line.rstrip().replace('.','_')&lt;br /&gt;
        ...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to remove any trailing whitespace (including newlines) from each line.&lt;br /&gt;
&lt;br /&gt;
=== Example for parsing raster category labels ===&lt;br /&gt;
&lt;br /&gt;
How to obtain the text labels&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
    # dump cats to file to avoid &amp;quot;too many argument&amp;quot; problem:&lt;br /&gt;
    p = grass.pipe_command('r.category', map = rastertmp, separator = ';', quiet = True)&lt;br /&gt;
    cats = []&lt;br /&gt;
    for line in p.stdout:&lt;br /&gt;
        cats.append(line.rstrip('\r\n').split(';')[0])&lt;br /&gt;
    p.wait()&lt;br /&gt;
&lt;br /&gt;
    number = len(cats)&lt;br /&gt;
    if number &amp;lt; 1:&lt;br /&gt;
        grass.fatal(_(&amp;quot;No categories found in raster map&amp;quot;))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example for parsing category numbers ===&lt;br /&gt;
&lt;br /&gt;
'''Q:''' How to obtain the number of cells of a certain category?&lt;br /&gt;
&lt;br /&gt;
'''A:''' It is recommended to use {{pyapi|script|script.core|pipe_command}} and parse the output, e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       p = grass.pipe_command('r.stats',flags='c',input='map')&lt;br /&gt;
       result = {}&lt;br /&gt;
       for line in p.stdout:&lt;br /&gt;
           val,count = line.strip().split()&lt;br /&gt;
           result[int(val)] = int(count)&lt;br /&gt;
       p.wait()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example for parsing the region output of a module ===&lt;br /&gt;
&lt;br /&gt;
Some of the GRASS GIS modules are delivering region information (e.g. {{cmd|r.in.xyz}} which scans a LiDAR file for the extent of the point cloud). The retrieved region settings (using '''-g''' flag for script style output) can be parsed in Python:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import os&lt;br /&gt;
from grass.script import core as gcore&lt;br /&gt;
&lt;br /&gt;
from grass.pygrass.modules.shortcuts import general as g&lt;br /&gt;
from grass.pygrass.modules.shortcuts import raster as r&lt;br /&gt;
&lt;br /&gt;
# scan a LiDAR xyz point file for its extent&lt;br /&gt;
compregion = gcore.parse_command(&amp;quot;r.in.xyz&amp;quot;, input=&amp;quot;tmp.xyz&amp;quot;, separator=&amp;quot;space&amp;quot;, flags=&amp;quot;sg&amp;quot;, output=&amp;quot;bbox&amp;quot;,&lt;br /&gt;
                                  parse=(gcore.parse_key_val, {'sep': '=', 'vsep': ' '}))&lt;br /&gt;
print(compregion)&lt;br /&gt;
# set computational region from LiDAR extent&lt;br /&gt;
# hint: we turn here the dictionary to a region by unpacking the dictionary:&lt;br /&gt;
g.region(res=&amp;quot;1&amp;quot;, flags=&amp;quot;p&amp;quot;, **compregion)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note the two '''*''' above which unpack the dictionary (see also the related [https://docs.python.org/2/tutorial/controlflow.html#keyword-arguments Python manual] page).&lt;br /&gt;
&lt;br /&gt;
=== Example for getting the region's number of rows and columns ===&lt;br /&gt;
&lt;br /&gt;
'''Q:''' How to obtain the number of rows and columns of the current region?&lt;br /&gt;
&lt;br /&gt;
'''A:''' It is recommended to use the {{pyapi|script|script.core|region}} function which will create a dictionary with values for extents and resolution, e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
#-*- coding:utf-8 -*-&lt;br /&gt;
#&lt;br /&gt;
############################################################################&lt;br /&gt;
#&lt;br /&gt;
# MODULE:       g.region.resolution&lt;br /&gt;
# AUTHOR(S):    based on a post at GRASS-USER mailing list [1]               &lt;br /&gt;
# PURPOSE:	Parses &amp;quot;g.region -g&amp;quot;, prints out number of rows, cols&lt;br /&gt;
# COPYLEFT:     ;-)&lt;br /&gt;
# COMMENT:      ...a lot of comments to be easy-to-read for/by beginners&lt;br /&gt;
#&lt;br /&gt;
#############################################################################&lt;br /&gt;
#&lt;br /&gt;
#%Module&lt;br /&gt;
#% description: Print number of rows, cols of current geographic region&lt;br /&gt;
#% keyword: region&lt;br /&gt;
#%end&lt;br /&gt;
&lt;br /&gt;
# importing required modules&lt;br /&gt;
import sys # the sys module [2]&lt;br /&gt;
from grass.script import core as grass # the core module [3]&lt;br /&gt;
&lt;br /&gt;
# information about imported modules can be obtained using the dir() function&lt;br /&gt;
# e.g.: dir(sys)&lt;br /&gt;
&lt;br /&gt;
# define the &amp;quot;main&amp;quot; function: get number of rows, cols of region&lt;br /&gt;
def main():&lt;br /&gt;
    &lt;br /&gt;
    # #######################################################################&lt;br /&gt;
    # the following commented code works but is kept only for learning purposes&lt;br /&gt;
     &lt;br /&gt;
    ## assigning the output of the command &amp;quot;g.region -g&amp;quot; in a string called &amp;quot;return_rows_x_cols&amp;quot;&lt;br /&gt;
    # return_rows_x_cols = grass.read_command('g.region', flags = 'g')&lt;br /&gt;
    &lt;br /&gt;
    ## parsing arguments of interest (rows, cols) in a dictionary named &amp;quot;rows_x_cols&amp;quot;&lt;br /&gt;
    # rows_x_cols = grass.parse_key_val(return_rows_x_cols)&lt;br /&gt;
    &lt;br /&gt;
    ## selectively print rows, cols from the dictionary &amp;quot;rows_x_cols&amp;quot;&lt;br /&gt;
    # print 'rows=%d \ncols=%d' % (int(rows_x_cols['rows']), int(rows_x_cols['cols']))&lt;br /&gt;
    &lt;br /&gt;
    # #######################################################################&lt;br /&gt;
    &lt;br /&gt;
    # faster/ easier way: use of the &amp;quot;grass.region()&amp;quot; function&lt;br /&gt;
    gregion = grass.region()&lt;br /&gt;
    rows = gregion['rows']&lt;br /&gt;
    cols = gregion['cols']&lt;br /&gt;
    &lt;br /&gt;
    # print rows, cols properly formated &lt;br /&gt;
    print 'rows=%d \ncols=%d' % (rows, cols)&lt;br /&gt;
&lt;br /&gt;
# this &amp;quot;if&amp;quot; condition instructs execution of code contained in this script, *only* if the script is being executed directly &lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;: # this allows the script to be used as a module in other scripts or as a standalone script&lt;br /&gt;
    options, flags = grass.parser() #&lt;br /&gt;
    sys.exit(main()) #&lt;br /&gt;
&lt;br /&gt;
# Links&lt;br /&gt;
# [1] http://n2.nabble.com/Getting-rows-cols-of-a-region-in-a-script-tp2787474p2787509.html&lt;br /&gt;
# [2] http://www.python.org/doc/2.5.2/lib/module-sys.html&lt;br /&gt;
# [3] https://grass.osgeo.org/grass75/manuals/libpython&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Managing mapsets ===&lt;br /&gt;
&lt;br /&gt;
To check if a certain mapset exists in the active location, use {{pyapi|script|script.core|mapsets}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       grass.mapsets(False)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
... returns a list of mapsets in the current location.&lt;br /&gt;
&lt;br /&gt;
=== r.mapcalc example ===&lt;br /&gt;
&lt;br /&gt;
Example of Python script, which is processed by {{cmd|g.parser}}:&lt;br /&gt;
&lt;br /&gt;
The shell script line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
  r.mapcalc &amp;quot;MASK = if(($cloudResampName &amp;lt; 0.01000),1,null())&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
would be written like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       import grass.script as grass&lt;br /&gt;
&lt;br /&gt;
       ...&lt;br /&gt;
&lt;br /&gt;
       grass.mapcalc(&amp;quot;MASK=if(($cloudResampName &amp;lt; 0.01000),1,null())&amp;quot;,&lt;br /&gt;
                     cloudResampName = cloudResampName)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first argument to the mapcalc function is a template (see the Python library documentation for [http://docs.python.org/library/string.html string.Template]). Any keyword arguments (other than &amp;lt;tt&amp;gt;quiet&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;verbose&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;overwrite&amp;lt;/tt&amp;gt;) specify substitutions.&lt;br /&gt;
&lt;br /&gt;
=== r.mapcalc example: defining a moving window ===&lt;br /&gt;
&lt;br /&gt;
Moving window of 4 cell in every 8 direction and do a boolean comparison. Boolean value (e.g. the result of a comparison) is an integer, with 1 for true, 0 for false.&lt;br /&gt;
Then do a r.mapcalc calculation with the moving window.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
       import grass.script as grass&lt;br /&gt;
           &lt;br /&gt;
       # define a moving window of 4 cell in every 8 direction&lt;br /&gt;
       #&lt;br /&gt;
       # map[4,4]                                    map[4,0]                                    map[4,-4]		&lt;br /&gt;
       # 	    map[3,3]                         map[3,0]                         map[3,-3]			&lt;br /&gt;
       # 		       map[2,2]              map[2,0]              map[2,-2]				&lt;br /&gt;
       #                                  map[1,1]   map[1,0]   map[1,-1]	 				&lt;br /&gt;
       # map[0,4]   map[0,3]   map[0,2]   map[0,1]       x      map[0,-1]  map[0,-2]  map[0,-3]  map[0,-4]&lt;br /&gt;
       #                                  map[-1,1]  map[-1,0]  map[-1,-1]					&lt;br /&gt;
       #                       map[-2,2]             map[-2,0]             map[-2,-2]				&lt;br /&gt;
       #            map[-3,3]                        map[-3,0]                        map[-3,-3]			&lt;br /&gt;
       # map[-4,4]                                   map[-4,0]                                   map[-4,-4]&lt;br /&gt;
       &lt;br /&gt;
       # define the offet duplets&lt;br /&gt;
       &lt;br /&gt;
       offsets = [d&lt;br /&gt;
           for j in xrange(1,4+1)&lt;br /&gt;
           for i in [j,-j]&lt;br /&gt;
           for d in [(i,0),(0,i),(i,i),(i,-i)]]&lt;br /&gt;
       	&lt;br /&gt;
       # &amp;gt;&amp;gt;&amp;gt;offsets&lt;br /&gt;
       # [(1, 0), (0, 1), (1, 1), (1, -1), (-1, 0), (0, -1), (-1, -1), (-1, 1), (2, 0), (0, 2), (2, 2), (2, -2), (-2, 0), (0, -2), \&lt;br /&gt;
       # (-2, -2), (-2, 2), (3, 0), (0, 3), (3, 3), (3, -3), (-3, 0), (0, -3), (-3, -3), (-3, 3), (4, 0), (0, 4), (4, 4), (4, -4), \&lt;br /&gt;
       # (-4, 0), (0, -4), (-4, -4), (-4, 4)]&lt;br /&gt;
       &lt;br /&gt;
       # define the calculation term&lt;br /&gt;
       &lt;br /&gt;
       terms = [&amp;quot;(myelevnc[%d,%d] &amp;lt; myelevnc)&amp;quot; % d&lt;br /&gt;
                for d in offsets]&lt;br /&gt;
       &lt;br /&gt;
       # &amp;gt;&amp;gt;&amp;gt;terms&lt;br /&gt;
       # ['(myelevnc[1,0] &amp;lt; myelevnc)', '(myelevnc[0,1] &amp;lt; myelevnc)', '(myelevnc[1,1] &amp;lt; myelevnc)', '(myelevnc[1,-1] &amp;lt; myelevnc)', \&lt;br /&gt;
       # '(myelevnc[-1,0] &amp;lt; myelevnc)', '(myelevnc[0,-1] &amp;lt; myelevnc)', '(myelevnc[-1,-1] &amp;lt; myelevnc)', '(myelevnc[-1,1] &amp;lt; myelevnc)',\&lt;br /&gt;
       # '(myelevnc[2,0] &amp;lt; myelevnc)', '(myelevnc[0,2] &amp;lt; myelevnc)', '(myelevnc[2,2] &amp;lt; myelevnc)', '(myelevnc[2,-2] &amp;lt; myelevnc)', \&lt;br /&gt;
       # '(myelevnc[-2,0] &amp;lt; myelevnc)', '(myelevnc[0,-2] &amp;lt; myelevnc)', '(myelevnc[-2,-2] &amp;lt; myelevnc)', '(myelevnc[-2,2] &amp;lt; myelevnc)', \&lt;br /&gt;
       # '(myelevnc[3,0] &amp;lt; myelevnc)', '(myelevnc[0,3] &amp;lt; myelevnc)', '(myelevnc[3,3] &amp;lt; myelevnc)', '(myelevnc[3,-3] &amp;lt; myelevnc)', \&lt;br /&gt;
       # '(myelevnc[-3,0] &amp;lt; myelevnc)', '(myelevnc[0,-3] &amp;lt; myelevnc)', '(myelevnc[-3,-3] &amp;lt; myelevnc)', '(myelevnc[-3,3] &amp;lt; myelevnc)', \&lt;br /&gt;
       # '(myelevnc[4,0] &amp;lt; myelevnc)', '(myelevnc[0,4] &amp;lt; myelevnc)', '(myelevnc[4,4] &amp;lt; myelevnc)', '(myelevnc[4,-4] &amp;lt; myelevnc)', \&lt;br /&gt;
       # '(myelevnc[-4,0] &amp;lt; myelevnc)', '(myelevnc[0,-4] &amp;lt; myelevnc)', '(myelevnc[-4,-4] &amp;lt; myelevnc)', '(myelevnc[-4,4] &amp;lt; myelevnc)']&lt;br /&gt;
       &lt;br /&gt;
       # define the calculation expression&lt;br /&gt;
       &lt;br /&gt;
       expr = &amp;quot;elevation_percentile4 = (100.0 / 48.0) * (%s)&amp;quot; % &amp;quot; + &amp;quot;.join(terms)&lt;br /&gt;
       &lt;br /&gt;
       # &amp;gt;&amp;gt;&amp;gt;expr&lt;br /&gt;
       #  elevation_percentile4 = (100.0 / 48.0) * ((myelevnc[1,0] &amp;lt; myelevnc) + (myelevnc[0,1] &amp;lt; myelevnc) + (myelevnc[1,1] &amp;lt; myelevnc) + \&lt;br /&gt;
       # (myelevnc[1,-1] &amp;lt; myelevnc) + (myelevnc[-1,0] &amp;lt; myelevnc) + (myelevnc[0,-1] &amp;lt; myelevnc) + (myelevnc[-1,-1] &amp;lt; myelevnc) + \&lt;br /&gt;
       # (myelevnc[-1,1] &amp;lt; myelevnc) + (myelevnc[2,0] &amp;lt; myelevnc) + (myelevnc[0,2] &amp;lt; myelevnc) + (myelevnc[2,2] &amp;lt; myelevnc) + \&lt;br /&gt;
       # (myelevnc[2,-2] &amp;lt; myelevnc) + (myelevnc[-2,0] &amp;lt; myelevnc) + (myelevnc[0,-2] &amp;lt; myelevnc) + (myelevnc[-2,-2] &amp;lt; myelevnc) + \&lt;br /&gt;
       # (myelevnc[-2,2] &amp;lt; myelevnc) + (myelevnc[3,0] &amp;lt; myelevnc) + (myelevnc[0,3] &amp;lt; myelevnc) + (myelevnc[3,3] &amp;lt; myelevnc) + \&lt;br /&gt;
       # (myelevnc[3,-3] &amp;lt; myelevnc) + (myelevnc[-3,0] &amp;lt; myelevnc) + (myelevnc[0,-3] &amp;lt; myelevnc) + (myelevnc[-3,-3] &amp;lt; myelevnc) + \&lt;br /&gt;
       # (myelevnc[-3,3] &amp;lt; myelevnc) + (myelevnc[4,0] &amp;lt; myelevnc) + (myelevnc[0,4] &amp;lt; myelevnc) + (myelevnc[4,4] &amp;lt; myelevnc) + \&lt;br /&gt;
       # (myelevnc[4,-4] &amp;lt; myelevnc) + (myelevnc[-4,0] &amp;lt; myelevnc) + (myelevnc[0,-4] &amp;lt; myelevnc) + (myelevnc[-4,-4] &amp;lt; myelevnc)\&lt;br /&gt;
       #  + (myelevnc[-4,4] &amp;lt; myelevnc))&lt;br /&gt;
       &lt;br /&gt;
       # do the r.mapcalc calculation with the moving window&lt;br /&gt;
       &lt;br /&gt;
       grass.mapcalc( expr )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using output from GRASS modules in the script ===&lt;br /&gt;
&lt;br /&gt;
Sometimes you need to use the output of a module for the next step. There are dedicated functions to obtain the result of, for example, a statistical analysis.&lt;br /&gt;
&lt;br /&gt;
Example: get the range of a raster map and use it in {{cmd|r.mapcalc}}. Here you can use {{pyapi|script|script.raster|raster_info}}, e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       import grass.script as grass&lt;br /&gt;
&lt;br /&gt;
       max = grass.raster_info(inmap)['max']&lt;br /&gt;
       grass.mapcalc(&amp;quot;$outmap = $inmap / $max&amp;quot;,&lt;br /&gt;
                     inmap = inmap, outmap = outmap, max = max)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using output from r.what ===&lt;br /&gt;
&lt;br /&gt;
''Q: How does one return attribute values from a call to the 'r.what' module running in a python script?''&lt;br /&gt;
&lt;br /&gt;
A: If you use &amp;lt;tt&amp;gt;grass.script.raster_what()&amp;lt;/tt&amp;gt;, it returns a list of dictionaries.&lt;br /&gt;
&lt;br /&gt;
PyGRASS which requires you to add &amp;lt;tt&amp;gt;stdout_=PIPE&amp;lt;/tt&amp;gt;, then you can get the output as a string from &amp;lt;tt&amp;gt;module.outputs.stdout&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Or using directly the C API through python with (North Carolina dataset example):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from grass.pygrass.vector import VectorTopo&lt;br /&gt;
from grass.pygrass.raster import RasterRow&lt;br /&gt;
from grass.pygrass.gis.region import Region&lt;br /&gt;
&lt;br /&gt;
with RasterRow('elevation', mode='r') as rast:&lt;br /&gt;
    with VectorTopo('hospitals', mode='r') as hospitals:&lt;br /&gt;
        region = Region()&lt;br /&gt;
        for hosp in hospitals:&lt;br /&gt;
            value = rast.get_value(hosp, region)&lt;br /&gt;
            if value is not None:&lt;br /&gt;
                print(hosp.cat, value)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Calling a GRASS module in Python ===&lt;br /&gt;
&lt;br /&gt;
Imagine, you wanted to execute this command in Python:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
  r.profile -g input=mymap output=newfile profile=12244.256,-295112.597,12128.012,-295293.77&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All arguments except the first (which is a flag) are keyword arguments, i.e. &amp;lt;tt&amp;gt;arg = val&amp;lt;/tt&amp;gt;. For the flag, use &amp;lt;tt&amp;gt;flags = 'g'&amp;lt;/tt&amp;gt; (note that &amp;quot;-g&amp;quot; would be the negative of a Python variable named &amp;quot;g&amp;quot;!). So:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       grass.run_command('r.profile',&lt;br /&gt;
               input = input_map,&lt;br /&gt;
               output = output_file,&lt;br /&gt;
               profile = [12244.256,-295112.597,12128.012,-295293.77]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
or:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
               profile = [(12244.256,-295112.597),(12128.012,-295293.77)]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
i.e. you need to provide the keyword, and the argument must be a valid Python expression. Function &amp;lt;code&amp;gt;run_command()&amp;lt;/code&amp;gt; etc accept lists and tuples.&lt;br /&gt;
&lt;br /&gt;
'''What is the proper way to include keyword-arguments tuples?'''&lt;br /&gt;
&lt;br /&gt;
For example, &amp;quot;g.list -f type=rast,vect&amp;quot; translates into:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       grass.run_command(&amp;quot;g.list&amp;quot;, flags=&amp;quot;f&amp;quot;, type=&amp;quot;rast,vect&amp;quot;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
or:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       grass.run_command(&amp;quot;g.list&amp;quot;, flags=&amp;quot;f&amp;quot;, type=[&amp;quot;rast&amp;quot;,&amp;quot;vect&amp;quot;])&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The various *_command() functions accept arbitrary keyword arguments. Any keywords which don't have a specific meaning to either the *_command() function or the Popen constructor are treated as arguments to the GRASS module.&lt;br /&gt;
&lt;br /&gt;
'''What is the proper way to use multiple flags?'''&lt;br /&gt;
&lt;br /&gt;
How can I call a module with multiple flags set (e.g., -a and -b) in GRASS-Python?&lt;br /&gt;
&lt;br /&gt;
  flags = &amp;quot;ab&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       grass.run_command(&amp;quot;r.info&amp;quot;, flags=&amp;quot;eg&amp;quot;, map=[&amp;quot;elevation&amp;quot;])&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Differences between ''run_command()'' and ''read_command()'':'''&lt;br /&gt;
&lt;br /&gt;
* {{pyapi|script|script.core|run_command}} executes the command and waits for it to terminate; it doesn't redirect any of the standard streams.&lt;br /&gt;
* {{pyapi|script|script.core|read_command}} executes the command with stdout redirected to a pipe, and reads everything written to it. Once the command terminates, it returns the data written to stdout as a string.&lt;br /&gt;
&lt;br /&gt;
'''How to retrieve error messages from ''read_command()'':'''&lt;br /&gt;
&lt;br /&gt;
None of the existing *_command functions redirect stderr. You can do so with e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def read2_command(*args, **kwargs):&lt;br /&gt;
   kwargs['stdout'] = grass.PIPE&lt;br /&gt;
   kwargs['stderr'] = grass.PIPE&lt;br /&gt;
   ps = grass.start_command(*args, **kwargs)&lt;br /&gt;
   return ps.communicate()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This behaves like &amp;lt;tt&amp;gt;read_command()&amp;lt;/tt&amp;gt; except that it returns a tuple of (stdout, stderr) rather than just stdout.&lt;br /&gt;
&lt;br /&gt;
=== Interface to copying maps (g.copy) ===&lt;br /&gt;
&lt;br /&gt;
Copy a raster map (for vector, replace &amp;quot;rast&amp;quot; with &amp;quot;vect&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       grass.run_command('g.copy', rast = (input, output))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To generalize it, &amp;quot;datatype&amp;quot; is the form of grass data to copy (eg, rast, vect, etc)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       grass.run_command('g.copy', **{datatype: (input, output)})&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Interface to listing maps (g.list) ===&lt;br /&gt;
&lt;br /&gt;
You may use the functions in [http://grass.osgeo.org/programming7/namespacepython_1_1script_1_1core.html python.script.core.mlist_grouped()]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
list_grouped('raster')['PERMANENT']&lt;br /&gt;
[..., 'lakes', ..., 'slope', ...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
mlist_grouped('vector', pattern='*roads*')['PERMANENT']&lt;br /&gt;
['railroads', 'roadsmajor']&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also [[Python/pygrass#Sample_PyGRASS_scripts|Sample PyGRASS scripts]] for an alternative solution.&lt;br /&gt;
&lt;br /&gt;
=== i.group with patterns as name for input ===&lt;br /&gt;
&lt;br /&gt;
Imagery groups can be populated like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from grass.pygrass.gis import Mapset&lt;br /&gt;
&lt;br /&gt;
run_command(&amp;quot;i.group&amp;quot;, group=&amp;quot;mygroup&amp;quot;, input=mset.glist(&amp;quot;raster&amp;quot;, pattern=&amp;quot;mypattern_*&amp;quot;))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Percentage output for progress of computation ===&lt;br /&gt;
&lt;br /&gt;
A) Within a Python script, the {{pyapi|script|script.core|percent}} module method wraps the &amp;lt;tt&amp;gt;g.message -p&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
B) If you call a GRASS command within the Python code, you have to parse the output by setting &amp;lt;tt&amp;gt;GRASS_MESSAGE_FORMAT=gui&amp;lt;/tt&amp;gt; in the environment when running the command and read from the command's stderr; e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       import grass.script as grass&lt;br /&gt;
       env = os.environ.copy()&lt;br /&gt;
       env['GRASS_MESSAGE_FORMAT'] = 'gui'&lt;br /&gt;
       p = grass.start_command(..., stderr = grass.PIPE, env = env)&lt;br /&gt;
       # read from p.stderr&lt;br /&gt;
       p.wait()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to capture both stdout and stderr, you need to use threads, select, or non-blocking I/O to consume data from both streams as it is generated in order to avoid deadlock.&lt;br /&gt;
&lt;br /&gt;
ALTERNATIVE:&lt;br /&gt;
&lt;br /&gt;
Redirect both stdout and stderr to the same pipe (and hope that the normal output doesn't include anything which will be mistaken for progress/error/etc messages):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       p = grass.start_command(..., stdout = grass.PIPE, stderr = grass.STDOUT, env = env)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NULL data management ===&lt;br /&gt;
&lt;br /&gt;
How to analyse if there are only NULL cells in a map:&lt;br /&gt;
&lt;br /&gt;
If a map contains only null cells, its minimum and maximum will be &amp;quot;NULL&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
       $ r.mapcalc 'foo = null()'&lt;br /&gt;
       $ r.info -r foo&lt;br /&gt;
       min=NULL&lt;br /&gt;
       max=NULL&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using the Python API, The 'min' and 'max' values in the result of the {{pyapi|script|script.raster|raster_info}} function will be &amp;lt;tt&amp;gt;None&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Counting cells ===&lt;br /&gt;
&lt;br /&gt;
Counting cells is far more expensive than simply determining whether&lt;br /&gt;
there are any non-null cells. Counting cells requires reading the&lt;br /&gt;
entire map, while the {{cmd|r.info}} approach only needs to read the metadata&lt;br /&gt;
files.&lt;br /&gt;
&lt;br /&gt;
If you do need to count cells, {{cmd|r.stats}} is likely to be more efficient than {{cmd|r.univar}}.&lt;br /&gt;
&lt;br /&gt;
A count loop:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       while grass.raster_info(inmap)['max'] is not None:&lt;br /&gt;
           ...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Display: overlayed map display with labels ===&lt;br /&gt;
&lt;br /&gt;
Example: display a vector map and overlay its labels on top of the map.&lt;br /&gt;
&lt;br /&gt;
If the environment contains the setting GRASS_PNG_READ=TRUE, d.* commands should overlay their output on an existing image (otherwise the first command creates the file map.png but the second command overwrites the file with only the labels). So the following should work:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       grass.run_command('d.vect', map='my_shape')&lt;br /&gt;
       env = os.environ.copy()&lt;br /&gt;
       env['GRASS_PNG_READ'] = 'TRUE'&lt;br /&gt;
       grass.run_command('d.labels', labels='my_shape_labels', env = env)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Path to GISDBASE ===&lt;br /&gt;
In order to a avoid hardcoded paths to GRASS mapset files like the SQLite DB file, you can get the GISDBASE variable from the environment:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       import grass.script as grass&lt;br /&gt;
       import os.path&lt;br /&gt;
&lt;br /&gt;
       env = grass.gisenv()&lt;br /&gt;
&lt;br /&gt;
       gisdbase = env['GISDBASE']&lt;br /&gt;
       location = env['LOCATION_NAME']&lt;br /&gt;
       mapset = env['MAPSET']&lt;br /&gt;
&lt;br /&gt;
       path = os.path.join(gisdbase, location, mapset, 'sqlite.db')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating a new location ===&lt;br /&gt;
&lt;br /&gt;
Use {{pyapi|script|script.core|create_location}} to create a new location.&lt;br /&gt;
&lt;br /&gt;
=== Use Python reserved keyword ===&lt;br /&gt;
&lt;br /&gt;
'''Q:''' ''r.resamp.bspline'' uses 'lambda' as a command line parameter name, but when you try to use it with {{pyapi|script|script.core|run_command}} or {{pyapi|script|script.core|start_command}} you get an error as lambda is a python reserved keyword. How to work around that?&lt;br /&gt;
&lt;br /&gt;
'''A:''' Append an underscore to the name, i.e.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       grass.run_command('r.resamp.bspline', lambda_ = ...)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that this follows Python [http://legacy.python.org/dev/peps/pep-0008/#descriptive-naming-styles PEP8] style guide. In GRASS GIS version 6, you have to prepend the underscore.&lt;br /&gt;
&lt;br /&gt;
=== Controlling the PNG display driver ===&lt;br /&gt;
&lt;br /&gt;
Code fragment to control the {{cmd|pngdriver}} in Python:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import os&lt;br /&gt;
import sys&lt;br /&gt;
from grass.script import core as grass&lt;br /&gt;
def main():&lt;br /&gt;
       os.environ['GRASS_PNGFILE'] = filename&lt;br /&gt;
       os.environ['GRASS_WIDTH'] = str(width)&lt;br /&gt;
       os.environ['GRASS_HEIGHT'] = str(height)&lt;br /&gt;
       grass.run_command('d.his', i='elevation_shade', h='elevation')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sophisticated cleanup procedure ===&lt;br /&gt;
&lt;br /&gt;
Scripts which create several temporary files need a more sophisticated cleanup procedure which deletes all the tmp maps which have been created. This procedure should also work if the script stops (e.g due to an error).&lt;br /&gt;
&lt;br /&gt;
Solution: Define a list of map names which starts out empty and has names appended to it as the names are generated. Code fragment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       import atexit, sys&lt;br /&gt;
       import grass.script as grass&lt;br /&gt;
&lt;br /&gt;
       tmp_rast = []&lt;br /&gt;
&lt;br /&gt;
       def cleanup():&lt;br /&gt;
           for rast in tmp_rast:&lt;br /&gt;
               grass.run_command(&amp;quot;g.remove&amp;quot;,&lt;br /&gt;
                                 flags = 'f',&lt;br /&gt;
                                 type = 'raster',&lt;br /&gt;
                                 name = rast,&lt;br /&gt;
                                 quiet = True)&lt;br /&gt;
&lt;br /&gt;
       def main():&lt;br /&gt;
           ...&lt;br /&gt;
           while ...:&lt;br /&gt;
               next_rast = ...&lt;br /&gt;
               tmp_rast.append(next_rast)&lt;br /&gt;
               ...&lt;br /&gt;
&lt;br /&gt;
       if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
           options, flags = grass.parser()&lt;br /&gt;
           atexit.register(cleanup)&lt;br /&gt;
           sys.exit(main())&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using temporary region for computations ===&lt;br /&gt;
&lt;br /&gt;
There are two possible ways how to define temporary region for raster-based computations within your scripts. First method uses environmental variable WIND_OVERRIDE, the second GRASS_REGION, see {{cmd|variables|desc=GRASS variables}} for more info. The key point is to recover the current region when the script is finished or terminated.&lt;br /&gt;
&lt;br /&gt;
* ''First method'' (WIND_OVERRIDE) is implemented as {{pyapi|script|script.core|use_temp_region}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
import grass.script as grass&lt;br /&gt;
&lt;br /&gt;
# store the current region settings and installs an atexit&lt;br /&gt;
# handler to recover the current region on script termination&lt;br /&gt;
grass.use_temp_region()&lt;br /&gt;
&lt;br /&gt;
grass.run_command('g.region', region='detail')&lt;br /&gt;
&lt;br /&gt;
grass.mapcalc('map = 1', overwrite=True)&lt;br /&gt;
&lt;br /&gt;
# after making operations using the temporary region,&lt;br /&gt;
# to unset the temporary WIND_OVERRIDE file and remove any &lt;br /&gt;
# region named by it, it is possible to use del_temp_region&lt;br /&gt;
grass.del_temp_region()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''Second method'' (GRASS_REGION) doesn't store current region settings to any temporary region, it just defines GRASS_REGION which forces GIS Library to use this settings for raster-based computations instead of the settings stored in WIND file (ie. current region). See {{pyapi|script|script.core|region_env}}.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
import os&lt;br /&gt;
import grass.script as grass&lt;br /&gt;
&lt;br /&gt;
# copy environment and define GRASS_REGION environmental variable&lt;br /&gt;
# same as `g.region region=detail`&lt;br /&gt;
env = os.environ.copy()&lt;br /&gt;
env['GRASS_REGION'] = grass.region_env(region='detail')&lt;br /&gt;
 &lt;br /&gt;
grass.mapcalc('map = 1', overwrite=True, env=env)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Direct Access from wxGUI ==&lt;br /&gt;
&lt;br /&gt;
[[wxGUI]] Layer Manager in GRASS GIS comes with &amp;quot;Python shell&amp;quot; which enables users to type and execute python commands directly in wxGUI environment.&lt;br /&gt;
&lt;br /&gt;
[[Image:wxgui-pyshell.png|center|400px|Embedded interactive Python Shell in wxGUI Layer Manager]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[GRASS GIS Jupyter notebooks]]&lt;br /&gt;
* [[Working with GRASS without starting it explicitly‎]]&lt;br /&gt;
* Many more tutorials under [[:Category:Python]]&lt;/div&gt;</summary>
		<author><name>⚠️Sbl</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Python_Scripting_Library&amp;diff=25218</id>
		<title>GRASS Python Scripting Library</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Python_Scripting_Library&amp;diff=25218"/>
		<updated>2018-04-23T10:16:32Z</updated>

		<summary type="html">&lt;p&gt;⚠️Sbl: update cleanup to new g.remove&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Python}}&lt;br /&gt;
Python API documentation:&lt;br /&gt;
&lt;br /&gt;
* [http://grass.osgeo.org/grass70/manuals/libpython/ Python API for GRASS GIS 7] and [http://grass.osgeo.org/grass70/manuals/libpython/script_intro.html Python Scripting Library]&lt;br /&gt;
* [http://grass.osgeo.org/programming6/pythonlib.html for GRASS GIS 6]: core.py, db.py, raster.py, vector.py, setup.py, array.py task.py&lt;br /&gt;
&lt;br /&gt;
The GRASS Python Scripting Library can be imported by statement&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
import grass.script as gscript&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The other packages such as PyGRASS can be imported in a similar way.&lt;br /&gt;
&lt;br /&gt;
The code in {{src|lib/python/|lib/python}} provides &amp;lt;tt&amp;gt;grass.script&amp;lt;/tt&amp;gt; and other packages in order to support GRASS scripts written in Python. The {{src|scripts}} directory of GRASS GIS 7 contains a series of examples actually provided to the end users (while the script in GRASS GIS 6 are shell scripts).&lt;br /&gt;
&lt;br /&gt;
For more general info, see also [[GRASS and Python]] and see also [[Converting Bash scripts to Python]] if you have some Bash scripts you want to rewrite to Python.&lt;br /&gt;
&lt;br /&gt;
== Uses for read, feed and pipe, start and exec commands ==&lt;br /&gt;
&lt;br /&gt;
All of the &amp;lt;tt&amp;gt;*_command&amp;lt;/tt&amp;gt; functions use {{pyapi|script|script.core|make_command}} to construct a command&lt;br /&gt;
line for a program which uses the {{cmd|g.parser|desc=GRASS parser}}. Most of them then pass&lt;br /&gt;
that command line to &amp;lt;tt&amp;gt;subprocess.Popen()&amp;lt;/tt&amp;gt; via {{pyapi|script|script.core|start_command}}, except&lt;br /&gt;
for {{pyapi|script|script.core|exec_command}} which uses &amp;lt;tt&amp;gt;os.execvpe()&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[To be precise, they use &amp;lt;tt&amp;gt;grass.Popen()&amp;lt;/tt&amp;gt;, which just calls&lt;br /&gt;
&amp;lt;tt&amp;gt;subprocess.Popen()&amp;lt;/tt&amp;gt; with 'shell=True' on Windows and 'shell=False'&lt;br /&gt;
otherwise. On Windows, you need to use 'shell=True' to be able to&lt;br /&gt;
execute scripts (including batch files); 'shell=False' only works with&lt;br /&gt;
binary executables.]&lt;br /&gt;
&lt;br /&gt;
{{pyapi|script|script.core|start_command}} separates the arguments into those which&lt;br /&gt;
&amp;lt;tt&amp;gt;subprocess.Popen()&amp;lt;/tt&amp;gt; understands and the rest. The rest are passed to&lt;br /&gt;
&amp;lt;tt&amp;gt;make_command()&amp;lt;/tt&amp;gt; to construct a command line which is passed as the&lt;br /&gt;
&amp;quot;args&amp;quot; parameter to &amp;lt;tt&amp;gt;subprocess.Popen()&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In other words, {{pyapi|script|script.core|start_command}} is a GRASS-oriented interface to&lt;br /&gt;
&amp;lt;tt&amp;gt;subprocess.Popen()&amp;lt;/tt&amp;gt;. It should be suitable for any situation where you&lt;br /&gt;
would use &amp;lt;tt&amp;gt;subprocess.Popen()&amp;lt;/tt&amp;gt; to execute a normal GRASS command (one&lt;br /&gt;
which uses the GRASS parser, which is almost all of them; the main&lt;br /&gt;
exception is {{cmd|r.mapcalc}} in 6.x).&lt;br /&gt;
&lt;br /&gt;
Most of the others are convenience wrappers around &amp;lt;tt&amp;gt;start_command()&amp;lt;/tt&amp;gt;, for common use cases.&lt;br /&gt;
&lt;br /&gt;
* {{pyapi|script|script.core|run_command}} calls the wait() method on the process, so it doesn't return until the command has finished, and returns the command's exit code. Similar to &amp;lt;tt&amp;gt;system()&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* {{pyapi|script|script.core|pipe_command}} calls &amp;lt;tt&amp;gt;start_command()&amp;lt;/tt&amp;gt; with 'stdout=PIPE' and returns the process object. You can use the process' .stdout member to read the command's stdout. Similar to popen(..., &amp;quot;r&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
* {{pyapi|script|script.core|feed_command}} calls &amp;lt;tt&amp;gt;start_command()&amp;lt;/tt&amp;gt; with stdin=PIPE and returns the process object. You can use the process' .stdin member to write to the command's stdout. Similar to popen(..., &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
* {{pyapi|script|script.core|read_command}} calls &amp;lt;tt&amp;gt;pipe_command()&amp;lt;/tt&amp;gt;, reads the data from the command's stdout, and returns it as a string. Similar to `backticks` in the shell.&lt;br /&gt;
&lt;br /&gt;
* {{pyapi|script|script.core|write_command}} calls &amp;lt;tt&amp;gt;feed_command()&amp;lt;/tt&amp;gt;, sends the string specified by the &amp;quot;stdin&amp;quot; argument to the command's stdin, waits for the command to finish and returns its exit code. Similar to &amp;quot;echo ... | command&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* {{pyapi|script|script.core|parse_command}} calls &amp;lt;tt&amp;gt;read_command()&amp;lt;/tt&amp;gt; and parses its output as key-value pairs. Useful for obtaining information from {{cmd|g.region}}, {{cmd|g.proj}}, {{cmd|r.info}}, etc.&lt;br /&gt;
&lt;br /&gt;
* {{pyapi|script|script.core|exec_command}} doesn't use &amp;lt;tt&amp;gt;start_command()&amp;lt;/tt&amp;gt; but &amp;lt;tt&amp;gt;os.execvpe()&amp;lt;/tt&amp;gt;. This causes the specified command to replace the current program (i.e. the Python script), so &amp;lt;tt&amp;gt;exec_command()&amp;lt;/tt&amp;gt; never returns. Similar to bash's &amp;quot;exec&amp;quot; command. This can be useful if the script is a &amp;quot;wrapper&amp;quot; around a single command, where you construct the command line and execute the command as the final step. Notes: exec_command() is rarely appropriate. You probably want run_command() instead. On Windows, exec_command() will probably require the &amp;quot;.exe&amp;quot; suffix.&lt;br /&gt;
&lt;br /&gt;
If you have any other questions, you might want to look at the code ({{src|lib/python/core.py}}). Most of these functions are only a few lines long.&lt;br /&gt;
&lt;br /&gt;
=== Hints for parse_command() ===&lt;br /&gt;
&lt;br /&gt;
To turn this command&lt;br /&gt;
        g.rename rast=old_name,new_name&lt;br /&gt;
into a g.parse_command() call, you need to consider that it is a function call with three arguments:&lt;br /&gt;
# &amp;quot;g.rename&amp;quot;&lt;br /&gt;
# rast=old_name&lt;br /&gt;
# new_name&lt;br /&gt;
&lt;br /&gt;
The second argument is a keyword argument, the first and third are&lt;br /&gt;
positional (non-keyword) arguments. Python doesn't allow positional&lt;br /&gt;
arguments to follow keyword arguments; positional arguments come&lt;br /&gt;
first, keyword arguments last.&lt;br /&gt;
&lt;br /&gt;
Given the context, it's safe to assume that you want to pass a pair of&lt;br /&gt;
map names as the value to the rast= option. This requires explicit&lt;br /&gt;
parentheses so that the comma is treated as forming a tuple rather&lt;br /&gt;
than as an argument separator:&lt;br /&gt;
&lt;br /&gt;
        g.parse_command(&amp;quot;g.rename&amp;quot;, rast=(old_name,new_name))&lt;br /&gt;
&lt;br /&gt;
The parentheses in a tuple value can only be omitted if it doesn't&lt;br /&gt;
result in the comma being ambiguous (as is the case in a function&lt;br /&gt;
call).&lt;br /&gt;
&lt;br /&gt;
== Interfacing ==&lt;br /&gt;
&lt;br /&gt;
=== Interfacing with NumPy ===&lt;br /&gt;
&lt;br /&gt;
The {{pyapi|script|script.array|array}} module defines a &amp;lt;code&amp;gt;class array&amp;lt;/code&amp;gt; which is a subclass of [http://docs.scipy.org/doc/numpy/reference/generated/numpy.memmap.html numpy.memmap] with &amp;lt;code&amp;gt;.read()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.write()&amp;lt;/code&amp;gt; methods to read/write the underlying file via {{cmd|r.out.bin}}/{{cmd|r.in.bin}}. Metadata can be read with {{pyapi|script|script.raster|raster_info}}:&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import grass.script as grass&lt;br /&gt;
import grass.script.array as garray&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    map = &amp;quot;elevation.dem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # read map&lt;br /&gt;
    a = garray.array()&lt;br /&gt;
    a.read(map)&lt;br /&gt;
&lt;br /&gt;
    # get raster map info&lt;br /&gt;
    print grass.raster_info(map)['datatype']&lt;br /&gt;
    i = grass.raster_info(map)&lt;br /&gt;
    &lt;br /&gt;
    # get computational region info&lt;br /&gt;
    c = grass.region()&lt;br /&gt;
    print &amp;quot;rows: %d&amp;quot; % c['rows']&lt;br /&gt;
    print &amp;quot;cols: %d&amp;quot; % c['cols']&lt;br /&gt;
&lt;br /&gt;
    # new array for result&lt;br /&gt;
    b = garray.array()&lt;br /&gt;
    # calculate new map from input map and store as GRASS raster map&lt;br /&gt;
    b[...] = (a / 50).astype(int) * 50&lt;br /&gt;
    b.write(&amp;quot;elev.50m&amp;quot;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The size of the array is taken from the current region ([[computational region]]).&lt;br /&gt;
&lt;br /&gt;
The main drawback of using numpy is that you're limited by available&lt;br /&gt;
memory. Using a subclass of &amp;lt;code&amp;gt;numpy.memmap&amp;lt;/code&amp;gt; lets you use files which may&lt;br /&gt;
be much larger, but processing the entire array in one go is likely to&lt;br /&gt;
produce in-memory results of a similar size.&lt;br /&gt;
&lt;br /&gt;
'''NULL (no data) management:'''&lt;br /&gt;
&lt;br /&gt;
For integer maps, the NULL value is -2^31 = -2147483648. For floating-point maps, the NULL value is NaN. Note that the null= parameter for read() and write() specifies the value in the numpy array which is mapped to/from null values in the GRASS raster map.&lt;br /&gt;
&lt;br /&gt;
If you're using floating-point numpy arrays, then use (Note: This assumes that atof() and sscanf(&amp;quot;%lf&amp;quot;) recognise &amp;quot;nan&amp;quot;; this is the case on Linux, but doesn't appear to work on Windows)&lt;br /&gt;
 null=numpy.nan&lt;br /&gt;
&lt;br /&gt;
For integer arrays, using&lt;br /&gt;
 null=-2147483648&lt;br /&gt;
will ensure that valid values don't collide with NYLLs.&lt;br /&gt;
&lt;br /&gt;
'''MASK support:'''&lt;br /&gt;
&lt;br /&gt;
The function grass.script.array.read() and ...write() use r.out.bin and r.in.bin respectively. r.out.bin respects the MASK.&lt;br /&gt;
&lt;br /&gt;
=== Interfacing with NumPy and SciPy  ===&lt;br /&gt;
&lt;br /&gt;
[http://docs.scipy.org/doc/scipy/reference/index.html SciPy] offers simple access to complex calculations. Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from scipy import stats&lt;br /&gt;
import grass.script as grass&lt;br /&gt;
import grass.script.array as garray&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    map = &amp;quot;elevation.dem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    x = garray.array()&lt;br /&gt;
    x.read(map)&lt;br /&gt;
&lt;br /&gt;
    # Descriptive Statistics:&lt;br /&gt;
    print &amp;quot;max, min, mean, var:&amp;quot;&lt;br /&gt;
    print x.max(), x.min(), x.mean(), x.var()&lt;br /&gt;
    print &amp;quot;Skewness test: z-score and 2-sided p-value:&amp;quot;&lt;br /&gt;
    print stats.skewtest(stats.skew(x))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Interfacing with NumPy, SciPy and Matlab ===&lt;br /&gt;
&lt;br /&gt;
One may also use the SciPy - Matlab interface:&lt;br /&gt;
    &lt;br /&gt;
    r.out.mat input=elevation output=elev.mat&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
    ### PY ###&lt;br /&gt;
    import scipy.io as sio&lt;br /&gt;
    # load data&lt;br /&gt;
    elev = sio.loadmat('elev.mat')&lt;br /&gt;
    # retrive the actual array. the data set contains also the spatial reference&lt;br /&gt;
    elev.get('map_data')&lt;br /&gt;
    data = elev.get('map_data')&lt;br /&gt;
    # a first simple plot&lt;br /&gt;
    import pylab&lt;br /&gt;
    pylab.plot(data)&lt;br /&gt;
    pylab.show()&lt;br /&gt;
    # the contour plot&lt;br /&gt;
    pylab.contour(data)&lt;br /&gt;
    # obviously data needs to ne reversed&lt;br /&gt;
    import numpy as np&lt;br /&gt;
    data_rev = data[::-1]&lt;br /&gt;
    pylab.contour(data_rev)&lt;br /&gt;
    # =&amp;gt; this is a quick plot. basemap mapping may provide a nicer map!&lt;br /&gt;
    #######&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Display example ===&lt;br /&gt;
Example of Python script, which is processed by {{cmd|g.parser}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
#&lt;br /&gt;
############################################################################&lt;br /&gt;
#&lt;br /&gt;
# MODULE:      d.shadedmap&lt;br /&gt;
# AUTHOR(S):   Unknown; updated to GRASS 5.7 by Michael Barton&lt;br /&gt;
#              Converted to Python by Glynn Clements&lt;br /&gt;
# PURPOSE:     Uses d.his to drape a color raster over a shaded relief map&lt;br /&gt;
# COPYRIGHT:   (C) 2004,2008,2009 by the GRASS Development Team&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;
#%Module&lt;br /&gt;
#% description: Drapes a color raster over a shaded relief map using d.his&lt;br /&gt;
#% keyword: display&lt;br /&gt;
#% keyword: raster&lt;br /&gt;
#%End&lt;br /&gt;
#%option&lt;br /&gt;
#% key: reliefmap&lt;br /&gt;
#% type: string&lt;br /&gt;
#% gisprompt: old,cell,raster&lt;br /&gt;
#% description: Name of shaded relief or aspect map&lt;br /&gt;
#% required : yes&lt;br /&gt;
#%end&lt;br /&gt;
#%option&lt;br /&gt;
#% key: drapemap&lt;br /&gt;
#% type: string&lt;br /&gt;
#% gisprompt: old,cell,raster&lt;br /&gt;
#% description: Name of raster to drape over relief map&lt;br /&gt;
#% required : yes&lt;br /&gt;
#%end&lt;br /&gt;
#%option&lt;br /&gt;
#% key: brighten&lt;br /&gt;
#% type: integer&lt;br /&gt;
#% description: Percent to brighten&lt;br /&gt;
#% options: -99-99&lt;br /&gt;
#% answer: 0&lt;br /&gt;
#%end&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
from grass.script import core as grass&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    drape_map = options['drapemap']&lt;br /&gt;
    relief_map = options['reliefmap']&lt;br /&gt;
    brighten = options['brighten']&lt;br /&gt;
    ret = grass.run_command(&amp;quot;d.his&amp;quot;, h_map = drape_map,  i_map = relief_map, brighten = brighten)&lt;br /&gt;
    sys.exit(ret)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    options, flags = grass.parser()&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Parsing the options and flags  ===&lt;br /&gt;
&lt;br /&gt;
{{pyapi|script|script.core|parser}} is an interface to {{cmd|g.parser}}, and allows to parse the ''options'' and ''flags'' passed to your script on the command line. It is to be called at the top-level:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    options, flags = grass.parser()&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Global variables &amp;quot;options&amp;quot; and &amp;quot;flags&amp;quot; are Python dictionaries containing the options/flags values, keyed by lower-case option/flag names. The values in &amp;quot;options&amp;quot; are strings, those in &amp;quot;flags&amp;quot; are Python booleans. All those variables have to be previously declared in the header of your script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; options, flags = grass.parser()&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; options&lt;br /&gt;
{'input': 'my_map', 'output': 'map_out', 'option1': '21.472', 'option2': ''}&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; flags&lt;br /&gt;
{'c': True, 'm': False}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Passing several floats to a single option:'''&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python my.module.py input=input output=output myoption=0.1,0.2,0.5&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The values in the &amp;quot;options&amp;quot; dictionary returned from the parser()&lt;br /&gt;
function are always strings. You can parse the string with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
        myoption = map(float, options['myoption'].split(','))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The option definition in the script should have:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
        #% type: double&lt;br /&gt;
        #% multiple: yes&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This allows g.parser to validate the option syntax, so you can rely&lt;br /&gt;
upon the string being in the correct format. If the values have a&lt;br /&gt;
fixed range, you can use e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
        #% options: 0.0-1.0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to have the parser check that the values fall within the range.&lt;br /&gt;
&lt;br /&gt;
For more information on option definitions, see:&lt;br /&gt;
&lt;br /&gt;
http://grass.osgeo.org/programming7/gislib.html#Complete_Structure_Members_Table&lt;br /&gt;
&lt;br /&gt;
=== Example for embedding r.mapcalc (map algebra) ===&lt;br /&gt;
&lt;br /&gt;
{{pyapi|script|script.raster|mapcalc}} accepts a template string followed by keyword&lt;br /&gt;
arguments for the substitutions, e.g. (code snippets):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
grass.mapcalc(&amp;quot;${out} = ${rast1} + ${rast2}&amp;quot;,&lt;br /&gt;
              out = options['output'],&lt;br /&gt;
              rast1 = options['raster1'],&lt;br /&gt;
              rast2 = options['raster2'])&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Best practice'': first copy all of the options[] into separate variables at the beginning of main(), i.e.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def main():&lt;br /&gt;
    output = options['output']&lt;br /&gt;
    raster1 = options['raster1']&lt;br /&gt;
    raster2 = options['raster2']&lt;br /&gt;
 &lt;br /&gt;
    ...&lt;br /&gt;
 &lt;br /&gt;
    grass.mapcalc(&amp;quot;${out} = ${rast1} + ${rast2}&amp;quot;,&lt;br /&gt;
                  out = output,&lt;br /&gt;
                  rast1 = raster1,&lt;br /&gt;
                  rast2 = raster2)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Performing multiple computations using &amp;lt;tt&amp;gt;grass.script.raster.mapcalc()&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
expr = &amp;quot;;&amp;quot;.join([&lt;br /&gt;
        &amp;quot;$out.r = r#$first * $frac + (1.0 - $frac) * r#$second&amp;quot;,&lt;br /&gt;
        &amp;quot;$out.g = g#$first * $frac + (1.0 - $frac) * g#$second&amp;quot;,&lt;br /&gt;
        &amp;quot;$out.b = b#$first * $frac + (1.0 - $frac) * b#$second&amp;quot;])&lt;br /&gt;
grass.mapcalc(expr, out=out, first=first, second=second, frac=percent/100.0)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hint: multi-line strings can be separated by using a semicolon instead of a newline.&lt;br /&gt;
&lt;br /&gt;
=== Looping over file names stored in an ASCII file ===&lt;br /&gt;
&lt;br /&gt;
When looping over file names stored in an ASCII file and getting the error&lt;br /&gt;
&lt;br /&gt;
   WARNING: Illegal filename &amp;lt;map.f1jan.05216.something&lt;br /&gt;
          &amp;gt;. Character &amp;lt;&lt;br /&gt;
          &amp;gt; not allowed.&lt;br /&gt;
&lt;br /&gt;
then the line terminators may be the reason.&lt;br /&gt;
When you iterate over a file, the strings include the line terminators (e.g. '\n' or '\r\n'). Use e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
    for line in gl:&lt;br /&gt;
        renamed = line.rstrip().replace('.','_')&lt;br /&gt;
        ...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to remove any trailing whitespace (including newlines) from each line.&lt;br /&gt;
&lt;br /&gt;
=== Example for parsing raster category labels ===&lt;br /&gt;
&lt;br /&gt;
How to obtain the text labels&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
    # dump cats to file to avoid &amp;quot;too many argument&amp;quot; problem:&lt;br /&gt;
    p = grass.pipe_command('r.category', map = rastertmp, separator = ';', quiet = True)&lt;br /&gt;
    cats = []&lt;br /&gt;
    for line in p.stdout:&lt;br /&gt;
        cats.append(line.rstrip('\r\n').split(';')[0])&lt;br /&gt;
    p.wait()&lt;br /&gt;
&lt;br /&gt;
    number = len(cats)&lt;br /&gt;
    if number &amp;lt; 1:&lt;br /&gt;
        grass.fatal(_(&amp;quot;No categories found in raster map&amp;quot;))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example for parsing category numbers ===&lt;br /&gt;
&lt;br /&gt;
'''Q:''' How to obtain the number of cells of a certain category?&lt;br /&gt;
&lt;br /&gt;
'''A:''' It is recommended to use {{pyapi|script|script.core|pipe_command}} and parse the output, e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       p = grass.pipe_command('r.stats',flags='c',input='map')&lt;br /&gt;
       result = {}&lt;br /&gt;
       for line in p.stdout:&lt;br /&gt;
           val,count = line.strip().split()&lt;br /&gt;
           result[int(val)] = int(count)&lt;br /&gt;
       p.wait()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example for parsing the region output of a module ===&lt;br /&gt;
&lt;br /&gt;
Some of the GRASS GIS modules are delivering region information (e.g. {{cmd|r.in.xyz}} which scans a LiDAR file for the extent of the point cloud). The retrieved region settings (using '''-g''' flag for script style output) can be parsed in Python:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import os&lt;br /&gt;
from grass.script import core as gcore&lt;br /&gt;
&lt;br /&gt;
from grass.pygrass.modules.shortcuts import general as g&lt;br /&gt;
from grass.pygrass.modules.shortcuts import raster as r&lt;br /&gt;
&lt;br /&gt;
# scan a LiDAR xyz point file for its extent&lt;br /&gt;
compregion = gcore.parse_command(&amp;quot;r.in.xyz&amp;quot;, input=&amp;quot;tmp.xyz&amp;quot;, separator=&amp;quot;space&amp;quot;, flags=&amp;quot;sg&amp;quot;, output=&amp;quot;bbox&amp;quot;,&lt;br /&gt;
                                  parse=(gcore.parse_key_val, {'sep': '=', 'vsep': ' '}))&lt;br /&gt;
print(compregion)&lt;br /&gt;
# set computational region from LiDAR extent&lt;br /&gt;
# hint: we turn here the dictionary to a region by unpacking the dictionary:&lt;br /&gt;
g.region(res=&amp;quot;1&amp;quot;, flags=&amp;quot;p&amp;quot;, **compregion)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note the two '''*''' above which unpack the dictionary (see also the related [https://docs.python.org/2/tutorial/controlflow.html#keyword-arguments Python manual] page).&lt;br /&gt;
&lt;br /&gt;
=== Example for getting the region's number of rows and columns ===&lt;br /&gt;
&lt;br /&gt;
'''Q:''' How to obtain the number of rows and columns of the current region?&lt;br /&gt;
&lt;br /&gt;
'''A:''' It is recommended to use the {{pyapi|script|script.core|region}} function which will create a dictionary with values for extents and resolution, e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
#-*- coding:utf-8 -*-&lt;br /&gt;
#&lt;br /&gt;
############################################################################&lt;br /&gt;
#&lt;br /&gt;
# MODULE:       g.region.resolution&lt;br /&gt;
# AUTHOR(S):    based on a post at GRASS-USER mailing list [1]               &lt;br /&gt;
# PURPOSE:	Parses &amp;quot;g.region -g&amp;quot;, prints out number of rows, cols&lt;br /&gt;
# COPYLEFT:     ;-)&lt;br /&gt;
# COMMENT:      ...a lot of comments to be easy-to-read for/by beginners&lt;br /&gt;
#&lt;br /&gt;
#############################################################################&lt;br /&gt;
#&lt;br /&gt;
#%Module&lt;br /&gt;
#% description: Print number of rows, cols of current geographic region&lt;br /&gt;
#% keyword: region&lt;br /&gt;
#%end&lt;br /&gt;
&lt;br /&gt;
# importing required modules&lt;br /&gt;
import sys # the sys module [2]&lt;br /&gt;
from grass.script import core as grass # the core module [3]&lt;br /&gt;
&lt;br /&gt;
# information about imported modules can be obtained using the dir() function&lt;br /&gt;
# e.g.: dir(sys)&lt;br /&gt;
&lt;br /&gt;
# define the &amp;quot;main&amp;quot; function: get number of rows, cols of region&lt;br /&gt;
def main():&lt;br /&gt;
    &lt;br /&gt;
    # #######################################################################&lt;br /&gt;
    # the following commented code works but is kept only for learning purposes&lt;br /&gt;
     &lt;br /&gt;
    ## assigning the output of the command &amp;quot;g.region -g&amp;quot; in a string called &amp;quot;return_rows_x_cols&amp;quot;&lt;br /&gt;
    # return_rows_x_cols = grass.read_command('g.region', flags = 'g')&lt;br /&gt;
    &lt;br /&gt;
    ## parsing arguments of interest (rows, cols) in a dictionary named &amp;quot;rows_x_cols&amp;quot;&lt;br /&gt;
    # rows_x_cols = grass.parse_key_val(return_rows_x_cols)&lt;br /&gt;
    &lt;br /&gt;
    ## selectively print rows, cols from the dictionary &amp;quot;rows_x_cols&amp;quot;&lt;br /&gt;
    # print 'rows=%d \ncols=%d' % (int(rows_x_cols['rows']), int(rows_x_cols['cols']))&lt;br /&gt;
    &lt;br /&gt;
    # #######################################################################&lt;br /&gt;
    &lt;br /&gt;
    # faster/ easier way: use of the &amp;quot;grass.region()&amp;quot; function&lt;br /&gt;
    gregion = grass.region()&lt;br /&gt;
    rows = gregion['rows']&lt;br /&gt;
    cols = gregion['cols']&lt;br /&gt;
    &lt;br /&gt;
    # print rows, cols properly formated &lt;br /&gt;
    print 'rows=%d \ncols=%d' % (rows, cols)&lt;br /&gt;
&lt;br /&gt;
# this &amp;quot;if&amp;quot; condition instructs execution of code contained in this script, *only* if the script is being executed directly &lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;: # this allows the script to be used as a module in other scripts or as a standalone script&lt;br /&gt;
    options, flags = grass.parser() #&lt;br /&gt;
    sys.exit(main()) #&lt;br /&gt;
&lt;br /&gt;
# Links&lt;br /&gt;
# [1] http://n2.nabble.com/Getting-rows-cols-of-a-region-in-a-script-tp2787474p2787509.html&lt;br /&gt;
# [2] http://www.python.org/doc/2.5.2/lib/module-sys.html&lt;br /&gt;
# [3] https://grass.osgeo.org/grass75/manuals/libpython&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Managing mapsets ===&lt;br /&gt;
&lt;br /&gt;
To check if a certain mapset exists in the active location, use {{pyapi|script|script.core|mapsets}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       grass.mapsets(False)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
... returns a list of mapsets in the current location.&lt;br /&gt;
&lt;br /&gt;
=== r.mapcalc example ===&lt;br /&gt;
&lt;br /&gt;
Example of Python script, which is processed by {{cmd|g.parser}}:&lt;br /&gt;
&lt;br /&gt;
The shell script line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
  r.mapcalc &amp;quot;MASK = if(($cloudResampName &amp;lt; 0.01000),1,null())&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
would be written like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       import grass.script as grass&lt;br /&gt;
&lt;br /&gt;
       ...&lt;br /&gt;
&lt;br /&gt;
       grass.mapcalc(&amp;quot;MASK=if(($cloudResampName &amp;lt; 0.01000),1,null())&amp;quot;,&lt;br /&gt;
                     cloudResampName = cloudResampName)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first argument to the mapcalc function is a template (see the Python library documentation for [http://docs.python.org/library/string.html string.Template]). Any keyword arguments (other than &amp;lt;tt&amp;gt;quiet&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;verbose&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;overwrite&amp;lt;/tt&amp;gt;) specify substitutions.&lt;br /&gt;
&lt;br /&gt;
=== r.mapcalc example: defining a moving window ===&lt;br /&gt;
&lt;br /&gt;
Moving window of 4 cell in every 8 direction and do a boolean comparison. Boolean value (e.g. the result of a comparison) is an integer, with 1 for true, 0 for false.&lt;br /&gt;
Then do a r.mapcalc calculation with the moving window.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
       import grass.script as grass&lt;br /&gt;
           &lt;br /&gt;
       # define a moving window of 4 cell in every 8 direction&lt;br /&gt;
       #&lt;br /&gt;
       # map[4,4]                                    map[4,0]                                    map[4,-4]		&lt;br /&gt;
       # 	    map[3,3]                         map[3,0]                         map[3,-3]			&lt;br /&gt;
       # 		       map[2,2]              map[2,0]              map[2,-2]				&lt;br /&gt;
       #                                  map[1,1]   map[1,0]   map[1,-1]	 				&lt;br /&gt;
       # map[0,4]   map[0,3]   map[0,2]   map[0,1]       x      map[0,-1]  map[0,-2]  map[0,-3]  map[0,-4]&lt;br /&gt;
       #                                  map[-1,1]  map[-1,0]  map[-1,-1]					&lt;br /&gt;
       #                       map[-2,2]             map[-2,0]             map[-2,-2]				&lt;br /&gt;
       #            map[-3,3]                        map[-3,0]                        map[-3,-3]			&lt;br /&gt;
       # map[-4,4]                                   map[-4,0]                                   map[-4,-4]&lt;br /&gt;
       &lt;br /&gt;
       # define the offet duplets&lt;br /&gt;
       &lt;br /&gt;
       offsets = [d&lt;br /&gt;
           for j in xrange(1,4+1)&lt;br /&gt;
           for i in [j,-j]&lt;br /&gt;
           for d in [(i,0),(0,i),(i,i),(i,-i)]]&lt;br /&gt;
       	&lt;br /&gt;
       # &amp;gt;&amp;gt;&amp;gt;offsets&lt;br /&gt;
       # [(1, 0), (0, 1), (1, 1), (1, -1), (-1, 0), (0, -1), (-1, -1), (-1, 1), (2, 0), (0, 2), (2, 2), (2, -2), (-2, 0), (0, -2), \&lt;br /&gt;
       # (-2, -2), (-2, 2), (3, 0), (0, 3), (3, 3), (3, -3), (-3, 0), (0, -3), (-3, -3), (-3, 3), (4, 0), (0, 4), (4, 4), (4, -4), \&lt;br /&gt;
       # (-4, 0), (0, -4), (-4, -4), (-4, 4)]&lt;br /&gt;
       &lt;br /&gt;
       # define the calculation term&lt;br /&gt;
       &lt;br /&gt;
       terms = [&amp;quot;(myelevnc[%d,%d] &amp;lt; myelevnc)&amp;quot; % d&lt;br /&gt;
                for d in offsets]&lt;br /&gt;
       &lt;br /&gt;
       # &amp;gt;&amp;gt;&amp;gt;terms&lt;br /&gt;
       # ['(myelevnc[1,0] &amp;lt; myelevnc)', '(myelevnc[0,1] &amp;lt; myelevnc)', '(myelevnc[1,1] &amp;lt; myelevnc)', '(myelevnc[1,-1] &amp;lt; myelevnc)', \&lt;br /&gt;
       # '(myelevnc[-1,0] &amp;lt; myelevnc)', '(myelevnc[0,-1] &amp;lt; myelevnc)', '(myelevnc[-1,-1] &amp;lt; myelevnc)', '(myelevnc[-1,1] &amp;lt; myelevnc)',\&lt;br /&gt;
       # '(myelevnc[2,0] &amp;lt; myelevnc)', '(myelevnc[0,2] &amp;lt; myelevnc)', '(myelevnc[2,2] &amp;lt; myelevnc)', '(myelevnc[2,-2] &amp;lt; myelevnc)', \&lt;br /&gt;
       # '(myelevnc[-2,0] &amp;lt; myelevnc)', '(myelevnc[0,-2] &amp;lt; myelevnc)', '(myelevnc[-2,-2] &amp;lt; myelevnc)', '(myelevnc[-2,2] &amp;lt; myelevnc)', \&lt;br /&gt;
       # '(myelevnc[3,0] &amp;lt; myelevnc)', '(myelevnc[0,3] &amp;lt; myelevnc)', '(myelevnc[3,3] &amp;lt; myelevnc)', '(myelevnc[3,-3] &amp;lt; myelevnc)', \&lt;br /&gt;
       # '(myelevnc[-3,0] &amp;lt; myelevnc)', '(myelevnc[0,-3] &amp;lt; myelevnc)', '(myelevnc[-3,-3] &amp;lt; myelevnc)', '(myelevnc[-3,3] &amp;lt; myelevnc)', \&lt;br /&gt;
       # '(myelevnc[4,0] &amp;lt; myelevnc)', '(myelevnc[0,4] &amp;lt; myelevnc)', '(myelevnc[4,4] &amp;lt; myelevnc)', '(myelevnc[4,-4] &amp;lt; myelevnc)', \&lt;br /&gt;
       # '(myelevnc[-4,0] &amp;lt; myelevnc)', '(myelevnc[0,-4] &amp;lt; myelevnc)', '(myelevnc[-4,-4] &amp;lt; myelevnc)', '(myelevnc[-4,4] &amp;lt; myelevnc)']&lt;br /&gt;
       &lt;br /&gt;
       # define the calculation expression&lt;br /&gt;
       &lt;br /&gt;
       expr = &amp;quot;elevation_percentile4 = (100.0 / 48.0) * (%s)&amp;quot; % &amp;quot; + &amp;quot;.join(terms)&lt;br /&gt;
       &lt;br /&gt;
       # &amp;gt;&amp;gt;&amp;gt;expr&lt;br /&gt;
       #  elevation_percentile4 = (100.0 / 48.0) * ((myelevnc[1,0] &amp;lt; myelevnc) + (myelevnc[0,1] &amp;lt; myelevnc) + (myelevnc[1,1] &amp;lt; myelevnc) + \&lt;br /&gt;
       # (myelevnc[1,-1] &amp;lt; myelevnc) + (myelevnc[-1,0] &amp;lt; myelevnc) + (myelevnc[0,-1] &amp;lt; myelevnc) + (myelevnc[-1,-1] &amp;lt; myelevnc) + \&lt;br /&gt;
       # (myelevnc[-1,1] &amp;lt; myelevnc) + (myelevnc[2,0] &amp;lt; myelevnc) + (myelevnc[0,2] &amp;lt; myelevnc) + (myelevnc[2,2] &amp;lt; myelevnc) + \&lt;br /&gt;
       # (myelevnc[2,-2] &amp;lt; myelevnc) + (myelevnc[-2,0] &amp;lt; myelevnc) + (myelevnc[0,-2] &amp;lt; myelevnc) + (myelevnc[-2,-2] &amp;lt; myelevnc) + \&lt;br /&gt;
       # (myelevnc[-2,2] &amp;lt; myelevnc) + (myelevnc[3,0] &amp;lt; myelevnc) + (myelevnc[0,3] &amp;lt; myelevnc) + (myelevnc[3,3] &amp;lt; myelevnc) + \&lt;br /&gt;
       # (myelevnc[3,-3] &amp;lt; myelevnc) + (myelevnc[-3,0] &amp;lt; myelevnc) + (myelevnc[0,-3] &amp;lt; myelevnc) + (myelevnc[-3,-3] &amp;lt; myelevnc) + \&lt;br /&gt;
       # (myelevnc[-3,3] &amp;lt; myelevnc) + (myelevnc[4,0] &amp;lt; myelevnc) + (myelevnc[0,4] &amp;lt; myelevnc) + (myelevnc[4,4] &amp;lt; myelevnc) + \&lt;br /&gt;
       # (myelevnc[4,-4] &amp;lt; myelevnc) + (myelevnc[-4,0] &amp;lt; myelevnc) + (myelevnc[0,-4] &amp;lt; myelevnc) + (myelevnc[-4,-4] &amp;lt; myelevnc)\&lt;br /&gt;
       #  + (myelevnc[-4,4] &amp;lt; myelevnc))&lt;br /&gt;
       &lt;br /&gt;
       # do the r.mapcalc calculation with the moving window&lt;br /&gt;
       &lt;br /&gt;
       grass.mapcalc( expr )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using output from GRASS modules in the script ===&lt;br /&gt;
&lt;br /&gt;
Sometimes you need to use the output of a module for the next step. There are dedicated functions to obtain the result of, for example, a statistical analysis.&lt;br /&gt;
&lt;br /&gt;
Example: get the range of a raster map and use it in {{cmd|r.mapcalc}}. Here you can use {{pyapi|script|script.raster|raster_info}}, e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       import grass.script as grass&lt;br /&gt;
&lt;br /&gt;
       max = grass.raster_info(inmap)['max']&lt;br /&gt;
       grass.mapcalc(&amp;quot;$outmap = $inmap / $max&amp;quot;,&lt;br /&gt;
                     inmap = inmap, outmap = outmap, max = max)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using output from r.what ===&lt;br /&gt;
&lt;br /&gt;
''Q: How does one return attribute values from a call to the 'r.what' module running in a python script?''&lt;br /&gt;
&lt;br /&gt;
A: If you use &amp;lt;tt&amp;gt;grass.script.raster_what()&amp;lt;/tt&amp;gt;, it returns a list of dictionaries.&lt;br /&gt;
&lt;br /&gt;
PyGRASS which requires you to add &amp;lt;tt&amp;gt;stdout_=PIPE&amp;lt;/tt&amp;gt;, then you can get the output as a string from &amp;lt;tt&amp;gt;module.outputs.stdout&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Or using directly the C API through python with (North Carolina dataset example):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from grass.pygrass.vector import VectorTopo&lt;br /&gt;
from grass.pygrass.raster import RasterRow&lt;br /&gt;
from grass.pygrass.gis.region import Region&lt;br /&gt;
&lt;br /&gt;
with RasterRow('elevation', mode='r') as rast:&lt;br /&gt;
    with VectorTopo('hospitals', mode='r') as hospitals:&lt;br /&gt;
        region = Region()&lt;br /&gt;
        for hosp in hospitals:&lt;br /&gt;
            value = rast.get_value(hosp, region)&lt;br /&gt;
            if value is not None:&lt;br /&gt;
                print(hosp.cat, value)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Calling a GRASS module in Python ===&lt;br /&gt;
&lt;br /&gt;
Imagine, you wanted to execute this command in Python:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
  r.profile -g input=mymap output=newfile profile=12244.256,-295112.597,12128.012,-295293.77&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All arguments except the first (which is a flag) are keyword arguments, i.e. &amp;lt;tt&amp;gt;arg = val&amp;lt;/tt&amp;gt;. For the flag, use &amp;lt;tt&amp;gt;flags = 'g'&amp;lt;/tt&amp;gt; (note that &amp;quot;-g&amp;quot; would be the negative of a Python variable named &amp;quot;g&amp;quot;!). So:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       grass.run_command('r.profile',&lt;br /&gt;
               input = input_map,&lt;br /&gt;
               output = output_file,&lt;br /&gt;
               profile = [12244.256,-295112.597,12128.012,-295293.77]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
or:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
               profile = [(12244.256,-295112.597),(12128.012,-295293.77)]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
i.e. you need to provide the keyword, and the argument must be a valid Python expression. Function &amp;lt;code&amp;gt;run_command()&amp;lt;/code&amp;gt; etc accept lists and tuples.&lt;br /&gt;
&lt;br /&gt;
'''What is the proper way to include keyword-arguments tuples?'''&lt;br /&gt;
&lt;br /&gt;
For example, &amp;quot;g.list -f type=rast,vect&amp;quot; translates into:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       grass.run_command(&amp;quot;g.list&amp;quot;, flags=&amp;quot;f&amp;quot;, type=&amp;quot;rast,vect&amp;quot;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
or:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       grass.run_command(&amp;quot;g.list&amp;quot;, flags=&amp;quot;f&amp;quot;, type=[&amp;quot;rast&amp;quot;,&amp;quot;vect&amp;quot;])&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The various *_command() functions accept arbitrary keyword arguments. Any keywords which don't have a specific meaning to either the *_command() function or the Popen constructor are treated as arguments to the GRASS module.&lt;br /&gt;
&lt;br /&gt;
'''What is the proper way to use multiple flags?'''&lt;br /&gt;
&lt;br /&gt;
How can I call a module with multiple flags set (e.g., -a and -b) in GRASS-Python?&lt;br /&gt;
&lt;br /&gt;
  flags = &amp;quot;ab&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       grass.run_command(&amp;quot;r.info&amp;quot;, flags=&amp;quot;eg&amp;quot;, map=[&amp;quot;elevation&amp;quot;])&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Differences between ''run_command()'' and ''read_command()'':'''&lt;br /&gt;
&lt;br /&gt;
* {{pyapi|script|script.core|run_command}} executes the command and waits for it to terminate; it doesn't redirect any of the standard streams.&lt;br /&gt;
* {{pyapi|script|script.core|read_command}} executes the command with stdout redirected to a pipe, and reads everything written to it. Once the command terminates, it returns the data written to stdout as a string.&lt;br /&gt;
&lt;br /&gt;
'''How to retrieve error messages from ''read_command()'':'''&lt;br /&gt;
&lt;br /&gt;
None of the existing *_command functions redirect stderr. You can do so with e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def read2_command(*args, **kwargs):&lt;br /&gt;
   kwargs['stdout'] = grass.PIPE&lt;br /&gt;
   kwargs['stderr'] = grass.PIPE&lt;br /&gt;
   ps = grass.start_command(*args, **kwargs)&lt;br /&gt;
   return ps.communicate()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This behaves like &amp;lt;tt&amp;gt;read_command()&amp;lt;/tt&amp;gt; except that it returns a tuple of (stdout, stderr) rather than just stdout.&lt;br /&gt;
&lt;br /&gt;
=== Interface to copying maps (g.copy) ===&lt;br /&gt;
&lt;br /&gt;
Copy a raster map (for vector, replace &amp;quot;rast&amp;quot; with &amp;quot;vect&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       grass.run_command('g.copy', rast = (input, output))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To generalize it, &amp;quot;datatype&amp;quot; is the form of grass data to copy (eg, rast, vect, etc)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       grass.run_command('g.copy', **{datatype: (input, output)})&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Interface to listing maps (g.list) ===&lt;br /&gt;
&lt;br /&gt;
You may use the functions in [http://grass.osgeo.org/programming7/namespacepython_1_1script_1_1core.html python.script.core.mlist_grouped()]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
list_grouped('raster')['PERMANENT']&lt;br /&gt;
[..., 'lakes', ..., 'slope', ...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
mlist_grouped('vector', pattern='*roads*')['PERMANENT']&lt;br /&gt;
['railroads', 'roadsmajor']&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also [[Python/pygrass#Sample_PyGRASS_scripts|Sample PyGRASS scripts]] for an alternative solution.&lt;br /&gt;
&lt;br /&gt;
=== i.group with patterns as name for input ===&lt;br /&gt;
&lt;br /&gt;
Imagery groups can be populated like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from grass.pygrass.gis import Mapset&lt;br /&gt;
&lt;br /&gt;
run_command(&amp;quot;i.group&amp;quot;, group=&amp;quot;mygroup&amp;quot;, input=mset.glist(&amp;quot;raster&amp;quot;, pattern=&amp;quot;mypattern_*&amp;quot;))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Percentage output for progress of computation ===&lt;br /&gt;
&lt;br /&gt;
A) Within a Python script, the {{pyapi|script|script.core|percent}} module method wraps the &amp;lt;tt&amp;gt;g.message -p&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
B) If you call a GRASS command within the Python code, you have to parse the output by setting &amp;lt;tt&amp;gt;GRASS_MESSAGE_FORMAT=gui&amp;lt;/tt&amp;gt; in the environment when running the command and read from the command's stderr; e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       import grass.script as grass&lt;br /&gt;
       env = os.environ.copy()&lt;br /&gt;
       env['GRASS_MESSAGE_FORMAT'] = 'gui'&lt;br /&gt;
       p = grass.start_command(..., stderr = grass.PIPE, env = env)&lt;br /&gt;
       # read from p.stderr&lt;br /&gt;
       p.wait()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to capture both stdout and stderr, you need to use threads, select, or non-blocking I/O to consume data from both streams as it is generated in order to avoid deadlock.&lt;br /&gt;
&lt;br /&gt;
ALTERNATIVE:&lt;br /&gt;
&lt;br /&gt;
Redirect both stdout and stderr to the same pipe (and hope that the normal output doesn't include anything which will be mistaken for progress/error/etc messages):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       p = grass.start_command(..., stdout = grass.PIPE, stderr = grass.STDOUT, env = env)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NULL data management ===&lt;br /&gt;
&lt;br /&gt;
How to analyse if there are only NULL cells in a map:&lt;br /&gt;
&lt;br /&gt;
If a map contains only null cells, its minimum and maximum will be &amp;quot;NULL&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
       $ r.mapcalc 'foo = null()'&lt;br /&gt;
       $ r.info -r foo&lt;br /&gt;
       min=NULL&lt;br /&gt;
       max=NULL&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using the Python API, The 'min' and 'max' values in the result of the {{pyapi|script|script.raster|raster_info}} function will be &amp;lt;tt&amp;gt;None&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Counting cells ===&lt;br /&gt;
&lt;br /&gt;
Counting cells is far more expensive than simply determining whether&lt;br /&gt;
there are any non-null cells. Counting cells requires reading the&lt;br /&gt;
entire map, while the {{cmd|r.info}} approach only needs to read the metadata&lt;br /&gt;
files.&lt;br /&gt;
&lt;br /&gt;
If you do need to count cells, {{cmd|r.stats}} is likely to be more efficient than {{cmd|r.univar}}.&lt;br /&gt;
&lt;br /&gt;
A count loop:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       while grass.raster_info(inmap)['max'] is not None:&lt;br /&gt;
           ...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Display: overlayed map display with labels ===&lt;br /&gt;
&lt;br /&gt;
Example: display a vector map and overlay its labels on top of the map.&lt;br /&gt;
&lt;br /&gt;
If the environment contains the setting GRASS_PNG_READ=TRUE, d.* commands should overlay their output on an existing image (otherwise the first command creates the file map.png but the second command overwrites the file with only the labels). So the following should work:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       grass.run_command('d.vect', map='my_shape')&lt;br /&gt;
       env = os.environ.copy()&lt;br /&gt;
       env['GRASS_PNG_READ'] = 'TRUE'&lt;br /&gt;
       grass.run_command('d.labels', labels='my_shape_labels', env = env)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Path to GISDBASE ===&lt;br /&gt;
In order to a avoid hardcoded paths to GRASS mapset files like the SQLite DB file, you can get the GISDBASE variable from the environment:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       import grass.script as grass&lt;br /&gt;
       import os.path&lt;br /&gt;
&lt;br /&gt;
       env = grass.gisenv()&lt;br /&gt;
&lt;br /&gt;
       gisdbase = env['GISDBASE']&lt;br /&gt;
       location = env['LOCATION_NAME']&lt;br /&gt;
       mapset = env['MAPSET']&lt;br /&gt;
&lt;br /&gt;
       path = os.path.join(gisdbase, location, mapset, 'sqlite.db')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating a new location ===&lt;br /&gt;
&lt;br /&gt;
Use {{pyapi|script|script.core|create_location}} to create a new location.&lt;br /&gt;
&lt;br /&gt;
=== Use Python reserved keyword ===&lt;br /&gt;
&lt;br /&gt;
'''Q:''' ''r.resamp.bspline'' uses 'lambda' as a command line parameter name, but when you try to use it with {{pyapi|script|script.core|run_command}} or {{pyapi|script|script.core|start_command}} you get an error as lambda is a python reserved keyword. How to work around that?&lt;br /&gt;
&lt;br /&gt;
'''A:''' Append an underscore to the name, i.e.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       grass.run_command('r.resamp.bspline', lambda_ = ...)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that this follows Python [http://legacy.python.org/dev/peps/pep-0008/#descriptive-naming-styles PEP8] style guide. In GRASS GIS version 6, you have to prepend the underscore.&lt;br /&gt;
&lt;br /&gt;
=== Controlling the PNG display driver ===&lt;br /&gt;
&lt;br /&gt;
Code fragment to control the {{cmd|pngdriver}} in Python:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import os&lt;br /&gt;
import sys&lt;br /&gt;
from grass.script import core as grass&lt;br /&gt;
def main():&lt;br /&gt;
       os.environ['GRASS_PNGFILE'] = filename&lt;br /&gt;
       os.environ['GRASS_WIDTH'] = str(width)&lt;br /&gt;
       os.environ['GRASS_HEIGHT'] = str(height)&lt;br /&gt;
       grass.run_command('d.his', i='elevation_shade', h='elevation')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sophisticated cleanup procedure ===&lt;br /&gt;
&lt;br /&gt;
Scripts which create several temporary files need a more sophisticated cleanup procedure which deletes all the tmp maps which have been created. This procedure should also work if the script stops (e.g due to an error).&lt;br /&gt;
&lt;br /&gt;
Solution: Define a list of map names which starts out empty and has names appended to it as the names are generated. Code fragment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       import atexit, sys&lt;br /&gt;
       import grass.script as grass&lt;br /&gt;
&lt;br /&gt;
       tmp_rast = []&lt;br /&gt;
&lt;br /&gt;
       def cleanup():&lt;br /&gt;
           for rast in tmp_rast:&lt;br /&gt;
               grass.run_command(&amp;quot;g.remove&amp;quot;,&lt;br /&gt;
                                 rast = rast,&lt;br /&gt;
                                 quiet = True)&lt;br /&gt;
&lt;br /&gt;
       def main():&lt;br /&gt;
           ...&lt;br /&gt;
           while ...:&lt;br /&gt;
               next_rast = ...&lt;br /&gt;
               tmp_rast.append(next_rast)&lt;br /&gt;
               ...&lt;br /&gt;
&lt;br /&gt;
       if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
           options, flags = grass.parser()&lt;br /&gt;
           atexit.register(cleanup)&lt;br /&gt;
           sys.exit(main())&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using temporary region for computations ===&lt;br /&gt;
&lt;br /&gt;
There are two possible ways how to define temporary region for raster-based computations within your scripts. First method uses environmental variable WIND_OVERRIDE, the second GRASS_REGION, see {{cmd|variables|desc=GRASS variables}} for more info. The key point is to recover the current region when the script is finished or terminated.&lt;br /&gt;
&lt;br /&gt;
* ''First method'' (WIND_OVERRIDE) is implemented as {{pyapi|script|script.core|use_temp_region}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
import grass.script as grass&lt;br /&gt;
&lt;br /&gt;
# store the current region settings and installs an atexit&lt;br /&gt;
# handler to recover the current region on script termination&lt;br /&gt;
grass.use_temp_region()&lt;br /&gt;
&lt;br /&gt;
grass.run_command('g.region', region='detail')&lt;br /&gt;
&lt;br /&gt;
grass.mapcalc('map = 1', overwrite=True)&lt;br /&gt;
&lt;br /&gt;
# after making operations using the temporary region,&lt;br /&gt;
# to unset the temporary WIND_OVERRIDE file and remove any &lt;br /&gt;
# region named by it, it is possible to use del_temp_region&lt;br /&gt;
grass.del_temp_region()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''Second method'' (GRASS_REGION) doesn't store current region settings to any temporary region, it just defines GRASS_REGION which forces GIS Library to use this settings for raster-based computations instead of the settings stored in WIND file (ie. current region). See {{pyapi|script|script.core|region_env}}.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
import os&lt;br /&gt;
import grass.script as grass&lt;br /&gt;
&lt;br /&gt;
# copy environment and define GRASS_REGION environmental variable&lt;br /&gt;
# same as `g.region region=detail`&lt;br /&gt;
env = os.environ.copy()&lt;br /&gt;
env['GRASS_REGION'] = grass.region_env(region='detail')&lt;br /&gt;
 &lt;br /&gt;
grass.mapcalc('map = 1', overwrite=True, env=env)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Direct Access from wxGUI ==&lt;br /&gt;
&lt;br /&gt;
[[wxGUI]] Layer Manager in GRASS GIS comes with &amp;quot;Python shell&amp;quot; which enables users to type and execute python commands directly in wxGUI environment.&lt;br /&gt;
&lt;br /&gt;
[[Image:wxgui-pyshell.png|center|400px|Embedded interactive Python Shell in wxGUI Layer Manager]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[GRASS GIS Jupyter notebooks]]&lt;br /&gt;
* [[Working with GRASS without starting it explicitly‎]]&lt;br /&gt;
* Many more tutorials under [[:Category:Python]]&lt;/div&gt;</summary>
		<author><name>⚠️Sbl</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Python_Scripting_Library&amp;diff=25217</id>
		<title>GRASS Python Scripting Library</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Python_Scripting_Library&amp;diff=25217"/>
		<updated>2018-04-23T10:15:46Z</updated>

		<summary type="html">&lt;p&gt;⚠️Sbl: update cleanup to new g.remove&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Python}}&lt;br /&gt;
Python API documentation:&lt;br /&gt;
&lt;br /&gt;
* [http://grass.osgeo.org/grass70/manuals/libpython/ Python API for GRASS GIS 7] and [http://grass.osgeo.org/grass70/manuals/libpython/script_intro.html Python Scripting Library]&lt;br /&gt;
* [http://grass.osgeo.org/programming6/pythonlib.html for GRASS GIS 6]: core.py, db.py, raster.py, vector.py, setup.py, array.py task.py&lt;br /&gt;
&lt;br /&gt;
The GRASS Python Scripting Library can be imported by statement&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
import grass.script as gscript&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The other packages such as PyGRASS can be imported in a similar way.&lt;br /&gt;
&lt;br /&gt;
The code in {{src|lib/python/|lib/python}} provides &amp;lt;tt&amp;gt;grass.script&amp;lt;/tt&amp;gt; and other packages in order to support GRASS scripts written in Python. The {{src|scripts}} directory of GRASS GIS 7 contains a series of examples actually provided to the end users (while the script in GRASS GIS 6 are shell scripts).&lt;br /&gt;
&lt;br /&gt;
For more general info, see also [[GRASS and Python]] and see also [[Converting Bash scripts to Python]] if you have some Bash scripts you want to rewrite to Python.&lt;br /&gt;
&lt;br /&gt;
== Uses for read, feed and pipe, start and exec commands ==&lt;br /&gt;
&lt;br /&gt;
All of the &amp;lt;tt&amp;gt;*_command&amp;lt;/tt&amp;gt; functions use {{pyapi|script|script.core|make_command}} to construct a command&lt;br /&gt;
line for a program which uses the {{cmd|g.parser|desc=GRASS parser}}. Most of them then pass&lt;br /&gt;
that command line to &amp;lt;tt&amp;gt;subprocess.Popen()&amp;lt;/tt&amp;gt; via {{pyapi|script|script.core|start_command}}, except&lt;br /&gt;
for {{pyapi|script|script.core|exec_command}} which uses &amp;lt;tt&amp;gt;os.execvpe()&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
[To be precise, they use &amp;lt;tt&amp;gt;grass.Popen()&amp;lt;/tt&amp;gt;, which just calls&lt;br /&gt;
&amp;lt;tt&amp;gt;subprocess.Popen()&amp;lt;/tt&amp;gt; with 'shell=True' on Windows and 'shell=False'&lt;br /&gt;
otherwise. On Windows, you need to use 'shell=True' to be able to&lt;br /&gt;
execute scripts (including batch files); 'shell=False' only works with&lt;br /&gt;
binary executables.]&lt;br /&gt;
&lt;br /&gt;
{{pyapi|script|script.core|start_command}} separates the arguments into those which&lt;br /&gt;
&amp;lt;tt&amp;gt;subprocess.Popen()&amp;lt;/tt&amp;gt; understands and the rest. The rest are passed to&lt;br /&gt;
&amp;lt;tt&amp;gt;make_command()&amp;lt;/tt&amp;gt; to construct a command line which is passed as the&lt;br /&gt;
&amp;quot;args&amp;quot; parameter to &amp;lt;tt&amp;gt;subprocess.Popen()&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
In other words, {{pyapi|script|script.core|start_command}} is a GRASS-oriented interface to&lt;br /&gt;
&amp;lt;tt&amp;gt;subprocess.Popen()&amp;lt;/tt&amp;gt;. It should be suitable for any situation where you&lt;br /&gt;
would use &amp;lt;tt&amp;gt;subprocess.Popen()&amp;lt;/tt&amp;gt; to execute a normal GRASS command (one&lt;br /&gt;
which uses the GRASS parser, which is almost all of them; the main&lt;br /&gt;
exception is {{cmd|r.mapcalc}} in 6.x).&lt;br /&gt;
&lt;br /&gt;
Most of the others are convenience wrappers around &amp;lt;tt&amp;gt;start_command()&amp;lt;/tt&amp;gt;, for common use cases.&lt;br /&gt;
&lt;br /&gt;
* {{pyapi|script|script.core|run_command}} calls the wait() method on the process, so it doesn't return until the command has finished, and returns the command's exit code. Similar to &amp;lt;tt&amp;gt;system()&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
* {{pyapi|script|script.core|pipe_command}} calls &amp;lt;tt&amp;gt;start_command()&amp;lt;/tt&amp;gt; with 'stdout=PIPE' and returns the process object. You can use the process' .stdout member to read the command's stdout. Similar to popen(..., &amp;quot;r&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
* {{pyapi|script|script.core|feed_command}} calls &amp;lt;tt&amp;gt;start_command()&amp;lt;/tt&amp;gt; with stdin=PIPE and returns the process object. You can use the process' .stdin member to write to the command's stdout. Similar to popen(..., &amp;quot;w&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
* {{pyapi|script|script.core|read_command}} calls &amp;lt;tt&amp;gt;pipe_command()&amp;lt;/tt&amp;gt;, reads the data from the command's stdout, and returns it as a string. Similar to `backticks` in the shell.&lt;br /&gt;
&lt;br /&gt;
* {{pyapi|script|script.core|write_command}} calls &amp;lt;tt&amp;gt;feed_command()&amp;lt;/tt&amp;gt;, sends the string specified by the &amp;quot;stdin&amp;quot; argument to the command's stdin, waits for the command to finish and returns its exit code. Similar to &amp;quot;echo ... | command&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* {{pyapi|script|script.core|parse_command}} calls &amp;lt;tt&amp;gt;read_command()&amp;lt;/tt&amp;gt; and parses its output as key-value pairs. Useful for obtaining information from {{cmd|g.region}}, {{cmd|g.proj}}, {{cmd|r.info}}, etc.&lt;br /&gt;
&lt;br /&gt;
* {{pyapi|script|script.core|exec_command}} doesn't use &amp;lt;tt&amp;gt;start_command()&amp;lt;/tt&amp;gt; but &amp;lt;tt&amp;gt;os.execvpe()&amp;lt;/tt&amp;gt;. This causes the specified command to replace the current program (i.e. the Python script), so &amp;lt;tt&amp;gt;exec_command()&amp;lt;/tt&amp;gt; never returns. Similar to bash's &amp;quot;exec&amp;quot; command. This can be useful if the script is a &amp;quot;wrapper&amp;quot; around a single command, where you construct the command line and execute the command as the final step. Notes: exec_command() is rarely appropriate. You probably want run_command() instead. On Windows, exec_command() will probably require the &amp;quot;.exe&amp;quot; suffix.&lt;br /&gt;
&lt;br /&gt;
If you have any other questions, you might want to look at the code ({{src|lib/python/core.py}}). Most of these functions are only a few lines long.&lt;br /&gt;
&lt;br /&gt;
=== Hints for parse_command() ===&lt;br /&gt;
&lt;br /&gt;
To turn this command&lt;br /&gt;
        g.rename rast=old_name,new_name&lt;br /&gt;
into a g.parse_command() call, you need to consider that it is a function call with three arguments:&lt;br /&gt;
# &amp;quot;g.rename&amp;quot;&lt;br /&gt;
# rast=old_name&lt;br /&gt;
# new_name&lt;br /&gt;
&lt;br /&gt;
The second argument is a keyword argument, the first and third are&lt;br /&gt;
positional (non-keyword) arguments. Python doesn't allow positional&lt;br /&gt;
arguments to follow keyword arguments; positional arguments come&lt;br /&gt;
first, keyword arguments last.&lt;br /&gt;
&lt;br /&gt;
Given the context, it's safe to assume that you want to pass a pair of&lt;br /&gt;
map names as the value to the rast= option. This requires explicit&lt;br /&gt;
parentheses so that the comma is treated as forming a tuple rather&lt;br /&gt;
than as an argument separator:&lt;br /&gt;
&lt;br /&gt;
        g.parse_command(&amp;quot;g.rename&amp;quot;, rast=(old_name,new_name))&lt;br /&gt;
&lt;br /&gt;
The parentheses in a tuple value can only be omitted if it doesn't&lt;br /&gt;
result in the comma being ambiguous (as is the case in a function&lt;br /&gt;
call).&lt;br /&gt;
&lt;br /&gt;
== Interfacing ==&lt;br /&gt;
&lt;br /&gt;
=== Interfacing with NumPy ===&lt;br /&gt;
&lt;br /&gt;
The {{pyapi|script|script.array|array}} module defines a &amp;lt;code&amp;gt;class array&amp;lt;/code&amp;gt; which is a subclass of [http://docs.scipy.org/doc/numpy/reference/generated/numpy.memmap.html numpy.memmap] with &amp;lt;code&amp;gt;.read()&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;.write()&amp;lt;/code&amp;gt; methods to read/write the underlying file via {{cmd|r.out.bin}}/{{cmd|r.in.bin}}. Metadata can be read with {{pyapi|script|script.raster|raster_info}}:&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import grass.script as grass&lt;br /&gt;
import grass.script.array as garray&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    map = &amp;quot;elevation.dem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    # read map&lt;br /&gt;
    a = garray.array()&lt;br /&gt;
    a.read(map)&lt;br /&gt;
&lt;br /&gt;
    # get raster map info&lt;br /&gt;
    print grass.raster_info(map)['datatype']&lt;br /&gt;
    i = grass.raster_info(map)&lt;br /&gt;
    &lt;br /&gt;
    # get computational region info&lt;br /&gt;
    c = grass.region()&lt;br /&gt;
    print &amp;quot;rows: %d&amp;quot; % c['rows']&lt;br /&gt;
    print &amp;quot;cols: %d&amp;quot; % c['cols']&lt;br /&gt;
&lt;br /&gt;
    # new array for result&lt;br /&gt;
    b = garray.array()&lt;br /&gt;
    # calculate new map from input map and store as GRASS raster map&lt;br /&gt;
    b[...] = (a / 50).astype(int) * 50&lt;br /&gt;
    b.write(&amp;quot;elev.50m&amp;quot;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The size of the array is taken from the current region ([[computational region]]).&lt;br /&gt;
&lt;br /&gt;
The main drawback of using numpy is that you're limited by available&lt;br /&gt;
memory. Using a subclass of &amp;lt;code&amp;gt;numpy.memmap&amp;lt;/code&amp;gt; lets you use files which may&lt;br /&gt;
be much larger, but processing the entire array in one go is likely to&lt;br /&gt;
produce in-memory results of a similar size.&lt;br /&gt;
&lt;br /&gt;
'''NULL (no data) management:'''&lt;br /&gt;
&lt;br /&gt;
For integer maps, the NULL value is -2^31 = -2147483648. For floating-point maps, the NULL value is NaN. Note that the null= parameter for read() and write() specifies the value in the numpy array which is mapped to/from null values in the GRASS raster map.&lt;br /&gt;
&lt;br /&gt;
If you're using floating-point numpy arrays, then use (Note: This assumes that atof() and sscanf(&amp;quot;%lf&amp;quot;) recognise &amp;quot;nan&amp;quot;; this is the case on Linux, but doesn't appear to work on Windows)&lt;br /&gt;
 null=numpy.nan&lt;br /&gt;
&lt;br /&gt;
For integer arrays, using&lt;br /&gt;
 null=-2147483648&lt;br /&gt;
will ensure that valid values don't collide with NYLLs.&lt;br /&gt;
&lt;br /&gt;
'''MASK support:'''&lt;br /&gt;
&lt;br /&gt;
The function grass.script.array.read() and ...write() use r.out.bin and r.in.bin respectively. r.out.bin respects the MASK.&lt;br /&gt;
&lt;br /&gt;
=== Interfacing with NumPy and SciPy  ===&lt;br /&gt;
&lt;br /&gt;
[http://docs.scipy.org/doc/scipy/reference/index.html SciPy] offers simple access to complex calculations. Example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from scipy import stats&lt;br /&gt;
import grass.script as grass&lt;br /&gt;
import grass.script.array as garray&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    map = &amp;quot;elevation.dem&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    x = garray.array()&lt;br /&gt;
    x.read(map)&lt;br /&gt;
&lt;br /&gt;
    # Descriptive Statistics:&lt;br /&gt;
    print &amp;quot;max, min, mean, var:&amp;quot;&lt;br /&gt;
    print x.max(), x.min(), x.mean(), x.var()&lt;br /&gt;
    print &amp;quot;Skewness test: z-score and 2-sided p-value:&amp;quot;&lt;br /&gt;
    print stats.skewtest(stats.skew(x))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Interfacing with NumPy, SciPy and Matlab ===&lt;br /&gt;
&lt;br /&gt;
One may also use the SciPy - Matlab interface:&lt;br /&gt;
    &lt;br /&gt;
    r.out.mat input=elevation output=elev.mat&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
    ### PY ###&lt;br /&gt;
    import scipy.io as sio&lt;br /&gt;
    # load data&lt;br /&gt;
    elev = sio.loadmat('elev.mat')&lt;br /&gt;
    # retrive the actual array. the data set contains also the spatial reference&lt;br /&gt;
    elev.get('map_data')&lt;br /&gt;
    data = elev.get('map_data')&lt;br /&gt;
    # a first simple plot&lt;br /&gt;
    import pylab&lt;br /&gt;
    pylab.plot(data)&lt;br /&gt;
    pylab.show()&lt;br /&gt;
    # the contour plot&lt;br /&gt;
    pylab.contour(data)&lt;br /&gt;
    # obviously data needs to ne reversed&lt;br /&gt;
    import numpy as np&lt;br /&gt;
    data_rev = data[::-1]&lt;br /&gt;
    pylab.contour(data_rev)&lt;br /&gt;
    # =&amp;gt; this is a quick plot. basemap mapping may provide a nicer map!&lt;br /&gt;
    #######&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Usage Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Display example ===&lt;br /&gt;
Example of Python script, which is processed by {{cmd|g.parser}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
#&lt;br /&gt;
############################################################################&lt;br /&gt;
#&lt;br /&gt;
# MODULE:      d.shadedmap&lt;br /&gt;
# AUTHOR(S):   Unknown; updated to GRASS 5.7 by Michael Barton&lt;br /&gt;
#              Converted to Python by Glynn Clements&lt;br /&gt;
# PURPOSE:     Uses d.his to drape a color raster over a shaded relief map&lt;br /&gt;
# COPYRIGHT:   (C) 2004,2008,2009 by the GRASS Development Team&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;
#%Module&lt;br /&gt;
#% description: Drapes a color raster over a shaded relief map using d.his&lt;br /&gt;
#% keyword: display&lt;br /&gt;
#% keyword: raster&lt;br /&gt;
#%End&lt;br /&gt;
#%option&lt;br /&gt;
#% key: reliefmap&lt;br /&gt;
#% type: string&lt;br /&gt;
#% gisprompt: old,cell,raster&lt;br /&gt;
#% description: Name of shaded relief or aspect map&lt;br /&gt;
#% required : yes&lt;br /&gt;
#%end&lt;br /&gt;
#%option&lt;br /&gt;
#% key: drapemap&lt;br /&gt;
#% type: string&lt;br /&gt;
#% gisprompt: old,cell,raster&lt;br /&gt;
#% description: Name of raster to drape over relief map&lt;br /&gt;
#% required : yes&lt;br /&gt;
#%end&lt;br /&gt;
#%option&lt;br /&gt;
#% key: brighten&lt;br /&gt;
#% type: integer&lt;br /&gt;
#% description: Percent to brighten&lt;br /&gt;
#% options: -99-99&lt;br /&gt;
#% answer: 0&lt;br /&gt;
#%end&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
from grass.script import core as grass&lt;br /&gt;
&lt;br /&gt;
def main():&lt;br /&gt;
    drape_map = options['drapemap']&lt;br /&gt;
    relief_map = options['reliefmap']&lt;br /&gt;
    brighten = options['brighten']&lt;br /&gt;
    ret = grass.run_command(&amp;quot;d.his&amp;quot;, h_map = drape_map,  i_map = relief_map, brighten = brighten)&lt;br /&gt;
    sys.exit(ret)&lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    options, flags = grass.parser()&lt;br /&gt;
    main()&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Parsing the options and flags  ===&lt;br /&gt;
&lt;br /&gt;
{{pyapi|script|script.core|parser}} is an interface to {{cmd|g.parser}}, and allows to parse the ''options'' and ''flags'' passed to your script on the command line. It is to be called at the top-level:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    options, flags = grass.parser()&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Global variables &amp;quot;options&amp;quot; and &amp;quot;flags&amp;quot; are Python dictionaries containing the options/flags values, keyed by lower-case option/flag names. The values in &amp;quot;options&amp;quot; are strings, those in &amp;quot;flags&amp;quot; are Python booleans. All those variables have to be previously declared in the header of your script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; options, flags = grass.parser()&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; options&lt;br /&gt;
{'input': 'my_map', 'output': 'map_out', 'option1': '21.472', 'option2': ''}&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; flags&lt;br /&gt;
{'c': True, 'm': False}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Passing several floats to a single option:'''&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
python my.module.py input=input output=output myoption=0.1,0.2,0.5&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The values in the &amp;quot;options&amp;quot; dictionary returned from the parser()&lt;br /&gt;
function are always strings. You can parse the string with:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
        myoption = map(float, options['myoption'].split(','))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The option definition in the script should have:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
        #% type: double&lt;br /&gt;
        #% multiple: yes&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This allows g.parser to validate the option syntax, so you can rely&lt;br /&gt;
upon the string being in the correct format. If the values have a&lt;br /&gt;
fixed range, you can use e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
        #% options: 0.0-1.0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to have the parser check that the values fall within the range.&lt;br /&gt;
&lt;br /&gt;
For more information on option definitions, see:&lt;br /&gt;
&lt;br /&gt;
http://grass.osgeo.org/programming7/gislib.html#Complete_Structure_Members_Table&lt;br /&gt;
&lt;br /&gt;
=== Example for embedding r.mapcalc (map algebra) ===&lt;br /&gt;
&lt;br /&gt;
{{pyapi|script|script.raster|mapcalc}} accepts a template string followed by keyword&lt;br /&gt;
arguments for the substitutions, e.g. (code snippets):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
grass.mapcalc(&amp;quot;${out} = ${rast1} + ${rast2}&amp;quot;,&lt;br /&gt;
              out = options['output'],&lt;br /&gt;
              rast1 = options['raster1'],&lt;br /&gt;
              rast2 = options['raster2'])&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''Best practice'': first copy all of the options[] into separate variables at the beginning of main(), i.e.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def main():&lt;br /&gt;
    output = options['output']&lt;br /&gt;
    raster1 = options['raster1']&lt;br /&gt;
    raster2 = options['raster2']&lt;br /&gt;
 &lt;br /&gt;
    ...&lt;br /&gt;
 &lt;br /&gt;
    grass.mapcalc(&amp;quot;${out} = ${rast1} + ${rast2}&amp;quot;,&lt;br /&gt;
                  out = output,&lt;br /&gt;
                  rast1 = raster1,&lt;br /&gt;
                  rast2 = raster2)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Performing multiple computations using &amp;lt;tt&amp;gt;grass.script.raster.mapcalc()&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
expr = &amp;quot;;&amp;quot;.join([&lt;br /&gt;
        &amp;quot;$out.r = r#$first * $frac + (1.0 - $frac) * r#$second&amp;quot;,&lt;br /&gt;
        &amp;quot;$out.g = g#$first * $frac + (1.0 - $frac) * g#$second&amp;quot;,&lt;br /&gt;
        &amp;quot;$out.b = b#$first * $frac + (1.0 - $frac) * b#$second&amp;quot;])&lt;br /&gt;
grass.mapcalc(expr, out=out, first=first, second=second, frac=percent/100.0)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Hint: multi-line strings can be separated by using a semicolon instead of a newline.&lt;br /&gt;
&lt;br /&gt;
=== Looping over file names stored in an ASCII file ===&lt;br /&gt;
&lt;br /&gt;
When looping over file names stored in an ASCII file and getting the error&lt;br /&gt;
&lt;br /&gt;
   WARNING: Illegal filename &amp;lt;map.f1jan.05216.something&lt;br /&gt;
          &amp;gt;. Character &amp;lt;&lt;br /&gt;
          &amp;gt; not allowed.&lt;br /&gt;
&lt;br /&gt;
then the line terminators may be the reason.&lt;br /&gt;
When you iterate over a file, the strings include the line terminators (e.g. '\n' or '\r\n'). Use e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
    for line in gl:&lt;br /&gt;
        renamed = line.rstrip().replace('.','_')&lt;br /&gt;
        ...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to remove any trailing whitespace (including newlines) from each line.&lt;br /&gt;
&lt;br /&gt;
=== Example for parsing raster category labels ===&lt;br /&gt;
&lt;br /&gt;
How to obtain the text labels&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
    # dump cats to file to avoid &amp;quot;too many argument&amp;quot; problem:&lt;br /&gt;
    p = grass.pipe_command('r.category', map = rastertmp, separator = ';', quiet = True)&lt;br /&gt;
    cats = []&lt;br /&gt;
    for line in p.stdout:&lt;br /&gt;
        cats.append(line.rstrip('\r\n').split(';')[0])&lt;br /&gt;
    p.wait()&lt;br /&gt;
&lt;br /&gt;
    number = len(cats)&lt;br /&gt;
    if number &amp;lt; 1:&lt;br /&gt;
        grass.fatal(_(&amp;quot;No categories found in raster map&amp;quot;))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example for parsing category numbers ===&lt;br /&gt;
&lt;br /&gt;
'''Q:''' How to obtain the number of cells of a certain category?&lt;br /&gt;
&lt;br /&gt;
'''A:''' It is recommended to use {{pyapi|script|script.core|pipe_command}} and parse the output, e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       p = grass.pipe_command('r.stats',flags='c',input='map')&lt;br /&gt;
       result = {}&lt;br /&gt;
       for line in p.stdout:&lt;br /&gt;
           val,count = line.strip().split()&lt;br /&gt;
           result[int(val)] = int(count)&lt;br /&gt;
       p.wait()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example for parsing the region output of a module ===&lt;br /&gt;
&lt;br /&gt;
Some of the GRASS GIS modules are delivering region information (e.g. {{cmd|r.in.xyz}} which scans a LiDAR file for the extent of the point cloud). The retrieved region settings (using '''-g''' flag for script style output) can be parsed in Python:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import os&lt;br /&gt;
from grass.script import core as gcore&lt;br /&gt;
&lt;br /&gt;
from grass.pygrass.modules.shortcuts import general as g&lt;br /&gt;
from grass.pygrass.modules.shortcuts import raster as r&lt;br /&gt;
&lt;br /&gt;
# scan a LiDAR xyz point file for its extent&lt;br /&gt;
compregion = gcore.parse_command(&amp;quot;r.in.xyz&amp;quot;, input=&amp;quot;tmp.xyz&amp;quot;, separator=&amp;quot;space&amp;quot;, flags=&amp;quot;sg&amp;quot;, output=&amp;quot;bbox&amp;quot;,&lt;br /&gt;
                                  parse=(gcore.parse_key_val, {'sep': '=', 'vsep': ' '}))&lt;br /&gt;
print(compregion)&lt;br /&gt;
# set computational region from LiDAR extent&lt;br /&gt;
# hint: we turn here the dictionary to a region by unpacking the dictionary:&lt;br /&gt;
g.region(res=&amp;quot;1&amp;quot;, flags=&amp;quot;p&amp;quot;, **compregion)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note the two '''*''' above which unpack the dictionary (see also the related [https://docs.python.org/2/tutorial/controlflow.html#keyword-arguments Python manual] page).&lt;br /&gt;
&lt;br /&gt;
=== Example for getting the region's number of rows and columns ===&lt;br /&gt;
&lt;br /&gt;
'''Q:''' How to obtain the number of rows and columns of the current region?&lt;br /&gt;
&lt;br /&gt;
'''A:''' It is recommended to use the {{pyapi|script|script.core|region}} function which will create a dictionary with values for extents and resolution, e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
#-*- coding:utf-8 -*-&lt;br /&gt;
#&lt;br /&gt;
############################################################################&lt;br /&gt;
#&lt;br /&gt;
# MODULE:       g.region.resolution&lt;br /&gt;
# AUTHOR(S):    based on a post at GRASS-USER mailing list [1]               &lt;br /&gt;
# PURPOSE:	Parses &amp;quot;g.region -g&amp;quot;, prints out number of rows, cols&lt;br /&gt;
# COPYLEFT:     ;-)&lt;br /&gt;
# COMMENT:      ...a lot of comments to be easy-to-read for/by beginners&lt;br /&gt;
#&lt;br /&gt;
#############################################################################&lt;br /&gt;
#&lt;br /&gt;
#%Module&lt;br /&gt;
#% description: Print number of rows, cols of current geographic region&lt;br /&gt;
#% keyword: region&lt;br /&gt;
#%end&lt;br /&gt;
&lt;br /&gt;
# importing required modules&lt;br /&gt;
import sys # the sys module [2]&lt;br /&gt;
from grass.script import core as grass # the core module [3]&lt;br /&gt;
&lt;br /&gt;
# information about imported modules can be obtained using the dir() function&lt;br /&gt;
# e.g.: dir(sys)&lt;br /&gt;
&lt;br /&gt;
# define the &amp;quot;main&amp;quot; function: get number of rows, cols of region&lt;br /&gt;
def main():&lt;br /&gt;
    &lt;br /&gt;
    # #######################################################################&lt;br /&gt;
    # the following commented code works but is kept only for learning purposes&lt;br /&gt;
     &lt;br /&gt;
    ## assigning the output of the command &amp;quot;g.region -g&amp;quot; in a string called &amp;quot;return_rows_x_cols&amp;quot;&lt;br /&gt;
    # return_rows_x_cols = grass.read_command('g.region', flags = 'g')&lt;br /&gt;
    &lt;br /&gt;
    ## parsing arguments of interest (rows, cols) in a dictionary named &amp;quot;rows_x_cols&amp;quot;&lt;br /&gt;
    # rows_x_cols = grass.parse_key_val(return_rows_x_cols)&lt;br /&gt;
    &lt;br /&gt;
    ## selectively print rows, cols from the dictionary &amp;quot;rows_x_cols&amp;quot;&lt;br /&gt;
    # print 'rows=%d \ncols=%d' % (int(rows_x_cols['rows']), int(rows_x_cols['cols']))&lt;br /&gt;
    &lt;br /&gt;
    # #######################################################################&lt;br /&gt;
    &lt;br /&gt;
    # faster/ easier way: use of the &amp;quot;grass.region()&amp;quot; function&lt;br /&gt;
    gregion = grass.region()&lt;br /&gt;
    rows = gregion['rows']&lt;br /&gt;
    cols = gregion['cols']&lt;br /&gt;
    &lt;br /&gt;
    # print rows, cols properly formated &lt;br /&gt;
    print 'rows=%d \ncols=%d' % (rows, cols)&lt;br /&gt;
&lt;br /&gt;
# this &amp;quot;if&amp;quot; condition instructs execution of code contained in this script, *only* if the script is being executed directly &lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;: # this allows the script to be used as a module in other scripts or as a standalone script&lt;br /&gt;
    options, flags = grass.parser() #&lt;br /&gt;
    sys.exit(main()) #&lt;br /&gt;
&lt;br /&gt;
# Links&lt;br /&gt;
# [1] http://n2.nabble.com/Getting-rows-cols-of-a-region-in-a-script-tp2787474p2787509.html&lt;br /&gt;
# [2] http://www.python.org/doc/2.5.2/lib/module-sys.html&lt;br /&gt;
# [3] https://grass.osgeo.org/grass75/manuals/libpython&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Managing mapsets ===&lt;br /&gt;
&lt;br /&gt;
To check if a certain mapset exists in the active location, use {{pyapi|script|script.core|mapsets}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       grass.mapsets(False)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
... returns a list of mapsets in the current location.&lt;br /&gt;
&lt;br /&gt;
=== r.mapcalc example ===&lt;br /&gt;
&lt;br /&gt;
Example of Python script, which is processed by {{cmd|g.parser}}:&lt;br /&gt;
&lt;br /&gt;
The shell script line:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
  r.mapcalc &amp;quot;MASK = if(($cloudResampName &amp;lt; 0.01000),1,null())&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
would be written like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       import grass.script as grass&lt;br /&gt;
&lt;br /&gt;
       ...&lt;br /&gt;
&lt;br /&gt;
       grass.mapcalc(&amp;quot;MASK=if(($cloudResampName &amp;lt; 0.01000),1,null())&amp;quot;,&lt;br /&gt;
                     cloudResampName = cloudResampName)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first argument to the mapcalc function is a template (see the Python library documentation for [http://docs.python.org/library/string.html string.Template]). Any keyword arguments (other than &amp;lt;tt&amp;gt;quiet&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;verbose&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;overwrite&amp;lt;/tt&amp;gt;) specify substitutions.&lt;br /&gt;
&lt;br /&gt;
=== r.mapcalc example: defining a moving window ===&lt;br /&gt;
&lt;br /&gt;
Moving window of 4 cell in every 8 direction and do a boolean comparison. Boolean value (e.g. the result of a comparison) is an integer, with 1 for true, 0 for false.&lt;br /&gt;
Then do a r.mapcalc calculation with the moving window.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
       import grass.script as grass&lt;br /&gt;
           &lt;br /&gt;
       # define a moving window of 4 cell in every 8 direction&lt;br /&gt;
       #&lt;br /&gt;
       # map[4,4]                                    map[4,0]                                    map[4,-4]		&lt;br /&gt;
       # 	    map[3,3]                         map[3,0]                         map[3,-3]			&lt;br /&gt;
       # 		       map[2,2]              map[2,0]              map[2,-2]				&lt;br /&gt;
       #                                  map[1,1]   map[1,0]   map[1,-1]	 				&lt;br /&gt;
       # map[0,4]   map[0,3]   map[0,2]   map[0,1]       x      map[0,-1]  map[0,-2]  map[0,-3]  map[0,-4]&lt;br /&gt;
       #                                  map[-1,1]  map[-1,0]  map[-1,-1]					&lt;br /&gt;
       #                       map[-2,2]             map[-2,0]             map[-2,-2]				&lt;br /&gt;
       #            map[-3,3]                        map[-3,0]                        map[-3,-3]			&lt;br /&gt;
       # map[-4,4]                                   map[-4,0]                                   map[-4,-4]&lt;br /&gt;
       &lt;br /&gt;
       # define the offet duplets&lt;br /&gt;
       &lt;br /&gt;
       offsets = [d&lt;br /&gt;
           for j in xrange(1,4+1)&lt;br /&gt;
           for i in [j,-j]&lt;br /&gt;
           for d in [(i,0),(0,i),(i,i),(i,-i)]]&lt;br /&gt;
       	&lt;br /&gt;
       # &amp;gt;&amp;gt;&amp;gt;offsets&lt;br /&gt;
       # [(1, 0), (0, 1), (1, 1), (1, -1), (-1, 0), (0, -1), (-1, -1), (-1, 1), (2, 0), (0, 2), (2, 2), (2, -2), (-2, 0), (0, -2), \&lt;br /&gt;
       # (-2, -2), (-2, 2), (3, 0), (0, 3), (3, 3), (3, -3), (-3, 0), (0, -3), (-3, -3), (-3, 3), (4, 0), (0, 4), (4, 4), (4, -4), \&lt;br /&gt;
       # (-4, 0), (0, -4), (-4, -4), (-4, 4)]&lt;br /&gt;
       &lt;br /&gt;
       # define the calculation term&lt;br /&gt;
       &lt;br /&gt;
       terms = [&amp;quot;(myelevnc[%d,%d] &amp;lt; myelevnc)&amp;quot; % d&lt;br /&gt;
                for d in offsets]&lt;br /&gt;
       &lt;br /&gt;
       # &amp;gt;&amp;gt;&amp;gt;terms&lt;br /&gt;
       # ['(myelevnc[1,0] &amp;lt; myelevnc)', '(myelevnc[0,1] &amp;lt; myelevnc)', '(myelevnc[1,1] &amp;lt; myelevnc)', '(myelevnc[1,-1] &amp;lt; myelevnc)', \&lt;br /&gt;
       # '(myelevnc[-1,0] &amp;lt; myelevnc)', '(myelevnc[0,-1] &amp;lt; myelevnc)', '(myelevnc[-1,-1] &amp;lt; myelevnc)', '(myelevnc[-1,1] &amp;lt; myelevnc)',\&lt;br /&gt;
       # '(myelevnc[2,0] &amp;lt; myelevnc)', '(myelevnc[0,2] &amp;lt; myelevnc)', '(myelevnc[2,2] &amp;lt; myelevnc)', '(myelevnc[2,-2] &amp;lt; myelevnc)', \&lt;br /&gt;
       # '(myelevnc[-2,0] &amp;lt; myelevnc)', '(myelevnc[0,-2] &amp;lt; myelevnc)', '(myelevnc[-2,-2] &amp;lt; myelevnc)', '(myelevnc[-2,2] &amp;lt; myelevnc)', \&lt;br /&gt;
       # '(myelevnc[3,0] &amp;lt; myelevnc)', '(myelevnc[0,3] &amp;lt; myelevnc)', '(myelevnc[3,3] &amp;lt; myelevnc)', '(myelevnc[3,-3] &amp;lt; myelevnc)', \&lt;br /&gt;
       # '(myelevnc[-3,0] &amp;lt; myelevnc)', '(myelevnc[0,-3] &amp;lt; myelevnc)', '(myelevnc[-3,-3] &amp;lt; myelevnc)', '(myelevnc[-3,3] &amp;lt; myelevnc)', \&lt;br /&gt;
       # '(myelevnc[4,0] &amp;lt; myelevnc)', '(myelevnc[0,4] &amp;lt; myelevnc)', '(myelevnc[4,4] &amp;lt; myelevnc)', '(myelevnc[4,-4] &amp;lt; myelevnc)', \&lt;br /&gt;
       # '(myelevnc[-4,0] &amp;lt; myelevnc)', '(myelevnc[0,-4] &amp;lt; myelevnc)', '(myelevnc[-4,-4] &amp;lt; myelevnc)', '(myelevnc[-4,4] &amp;lt; myelevnc)']&lt;br /&gt;
       &lt;br /&gt;
       # define the calculation expression&lt;br /&gt;
       &lt;br /&gt;
       expr = &amp;quot;elevation_percentile4 = (100.0 / 48.0) * (%s)&amp;quot; % &amp;quot; + &amp;quot;.join(terms)&lt;br /&gt;
       &lt;br /&gt;
       # &amp;gt;&amp;gt;&amp;gt;expr&lt;br /&gt;
       #  elevation_percentile4 = (100.0 / 48.0) * ((myelevnc[1,0] &amp;lt; myelevnc) + (myelevnc[0,1] &amp;lt; myelevnc) + (myelevnc[1,1] &amp;lt; myelevnc) + \&lt;br /&gt;
       # (myelevnc[1,-1] &amp;lt; myelevnc) + (myelevnc[-1,0] &amp;lt; myelevnc) + (myelevnc[0,-1] &amp;lt; myelevnc) + (myelevnc[-1,-1] &amp;lt; myelevnc) + \&lt;br /&gt;
       # (myelevnc[-1,1] &amp;lt; myelevnc) + (myelevnc[2,0] &amp;lt; myelevnc) + (myelevnc[0,2] &amp;lt; myelevnc) + (myelevnc[2,2] &amp;lt; myelevnc) + \&lt;br /&gt;
       # (myelevnc[2,-2] &amp;lt; myelevnc) + (myelevnc[-2,0] &amp;lt; myelevnc) + (myelevnc[0,-2] &amp;lt; myelevnc) + (myelevnc[-2,-2] &amp;lt; myelevnc) + \&lt;br /&gt;
       # (myelevnc[-2,2] &amp;lt; myelevnc) + (myelevnc[3,0] &amp;lt; myelevnc) + (myelevnc[0,3] &amp;lt; myelevnc) + (myelevnc[3,3] &amp;lt; myelevnc) + \&lt;br /&gt;
       # (myelevnc[3,-3] &amp;lt; myelevnc) + (myelevnc[-3,0] &amp;lt; myelevnc) + (myelevnc[0,-3] &amp;lt; myelevnc) + (myelevnc[-3,-3] &amp;lt; myelevnc) + \&lt;br /&gt;
       # (myelevnc[-3,3] &amp;lt; myelevnc) + (myelevnc[4,0] &amp;lt; myelevnc) + (myelevnc[0,4] &amp;lt; myelevnc) + (myelevnc[4,4] &amp;lt; myelevnc) + \&lt;br /&gt;
       # (myelevnc[4,-4] &amp;lt; myelevnc) + (myelevnc[-4,0] &amp;lt; myelevnc) + (myelevnc[0,-4] &amp;lt; myelevnc) + (myelevnc[-4,-4] &amp;lt; myelevnc)\&lt;br /&gt;
       #  + (myelevnc[-4,4] &amp;lt; myelevnc))&lt;br /&gt;
       &lt;br /&gt;
       # do the r.mapcalc calculation with the moving window&lt;br /&gt;
       &lt;br /&gt;
       grass.mapcalc( expr )&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using output from GRASS modules in the script ===&lt;br /&gt;
&lt;br /&gt;
Sometimes you need to use the output of a module for the next step. There are dedicated functions to obtain the result of, for example, a statistical analysis.&lt;br /&gt;
&lt;br /&gt;
Example: get the range of a raster map and use it in {{cmd|r.mapcalc}}. Here you can use {{pyapi|script|script.raster|raster_info}}, e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       import grass.script as grass&lt;br /&gt;
&lt;br /&gt;
       max = grass.raster_info(inmap)['max']&lt;br /&gt;
       grass.mapcalc(&amp;quot;$outmap = $inmap / $max&amp;quot;,&lt;br /&gt;
                     inmap = inmap, outmap = outmap, max = max)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using output from r.what ===&lt;br /&gt;
&lt;br /&gt;
''Q: How does one return attribute values from a call to the 'r.what' module running in a python script?''&lt;br /&gt;
&lt;br /&gt;
A: If you use &amp;lt;tt&amp;gt;grass.script.raster_what()&amp;lt;/tt&amp;gt;, it returns a list of dictionaries.&lt;br /&gt;
&lt;br /&gt;
PyGRASS which requires you to add &amp;lt;tt&amp;gt;stdout_=PIPE&amp;lt;/tt&amp;gt;, then you can get the output as a string from &amp;lt;tt&amp;gt;module.outputs.stdout&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Or using directly the C API through python with (North Carolina dataset example):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from grass.pygrass.vector import VectorTopo&lt;br /&gt;
from grass.pygrass.raster import RasterRow&lt;br /&gt;
from grass.pygrass.gis.region import Region&lt;br /&gt;
&lt;br /&gt;
with RasterRow('elevation', mode='r') as rast:&lt;br /&gt;
    with VectorTopo('hospitals', mode='r') as hospitals:&lt;br /&gt;
        region = Region()&lt;br /&gt;
        for hosp in hospitals:&lt;br /&gt;
            value = rast.get_value(hosp, region)&lt;br /&gt;
            if value is not None:&lt;br /&gt;
                print(hosp.cat, value)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Calling a GRASS module in Python ===&lt;br /&gt;
&lt;br /&gt;
Imagine, you wanted to execute this command in Python:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
  r.profile -g input=mymap output=newfile profile=12244.256,-295112.597,12128.012,-295293.77&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All arguments except the first (which is a flag) are keyword arguments, i.e. &amp;lt;tt&amp;gt;arg = val&amp;lt;/tt&amp;gt;. For the flag, use &amp;lt;tt&amp;gt;flags = 'g'&amp;lt;/tt&amp;gt; (note that &amp;quot;-g&amp;quot; would be the negative of a Python variable named &amp;quot;g&amp;quot;!). So:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       grass.run_command('r.profile',&lt;br /&gt;
               input = input_map,&lt;br /&gt;
               output = output_file,&lt;br /&gt;
               profile = [12244.256,-295112.597,12128.012,-295293.77]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
or:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
               profile = [(12244.256,-295112.597),(12128.012,-295293.77)]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
i.e. you need to provide the keyword, and the argument must be a valid Python expression. Function &amp;lt;code&amp;gt;run_command()&amp;lt;/code&amp;gt; etc accept lists and tuples.&lt;br /&gt;
&lt;br /&gt;
'''What is the proper way to include keyword-arguments tuples?'''&lt;br /&gt;
&lt;br /&gt;
For example, &amp;quot;g.list -f type=rast,vect&amp;quot; translates into:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       grass.run_command(&amp;quot;g.list&amp;quot;, flags=&amp;quot;f&amp;quot;, type=&amp;quot;rast,vect&amp;quot;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
or:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       grass.run_command(&amp;quot;g.list&amp;quot;, flags=&amp;quot;f&amp;quot;, type=[&amp;quot;rast&amp;quot;,&amp;quot;vect&amp;quot;])&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The various *_command() functions accept arbitrary keyword arguments. Any keywords which don't have a specific meaning to either the *_command() function or the Popen constructor are treated as arguments to the GRASS module.&lt;br /&gt;
&lt;br /&gt;
'''What is the proper way to use multiple flags?'''&lt;br /&gt;
&lt;br /&gt;
How can I call a module with multiple flags set (e.g., -a and -b) in GRASS-Python?&lt;br /&gt;
&lt;br /&gt;
  flags = &amp;quot;ab&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       grass.run_command(&amp;quot;r.info&amp;quot;, flags=&amp;quot;eg&amp;quot;, map=[&amp;quot;elevation&amp;quot;])&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Differences between ''run_command()'' and ''read_command()'':'''&lt;br /&gt;
&lt;br /&gt;
* {{pyapi|script|script.core|run_command}} executes the command and waits for it to terminate; it doesn't redirect any of the standard streams.&lt;br /&gt;
* {{pyapi|script|script.core|read_command}} executes the command with stdout redirected to a pipe, and reads everything written to it. Once the command terminates, it returns the data written to stdout as a string.&lt;br /&gt;
&lt;br /&gt;
'''How to retrieve error messages from ''read_command()'':'''&lt;br /&gt;
&lt;br /&gt;
None of the existing *_command functions redirect stderr. You can do so with e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def read2_command(*args, **kwargs):&lt;br /&gt;
   kwargs['stdout'] = grass.PIPE&lt;br /&gt;
   kwargs['stderr'] = grass.PIPE&lt;br /&gt;
   ps = grass.start_command(*args, **kwargs)&lt;br /&gt;
   return ps.communicate()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This behaves like &amp;lt;tt&amp;gt;read_command()&amp;lt;/tt&amp;gt; except that it returns a tuple of (stdout, stderr) rather than just stdout.&lt;br /&gt;
&lt;br /&gt;
=== Interface to copying maps (g.copy) ===&lt;br /&gt;
&lt;br /&gt;
Copy a raster map (for vector, replace &amp;quot;rast&amp;quot; with &amp;quot;vect&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       grass.run_command('g.copy', rast = (input, output))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To generalize it, &amp;quot;datatype&amp;quot; is the form of grass data to copy (eg, rast, vect, etc)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       grass.run_command('g.copy', **{datatype: (input, output)})&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Interface to listing maps (g.list) ===&lt;br /&gt;
&lt;br /&gt;
You may use the functions in [http://grass.osgeo.org/programming7/namespacepython_1_1script_1_1core.html python.script.core.mlist_grouped()]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
list_grouped('raster')['PERMANENT']&lt;br /&gt;
[..., 'lakes', ..., 'slope', ...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
mlist_grouped('vector', pattern='*roads*')['PERMANENT']&lt;br /&gt;
['railroads', 'roadsmajor']&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also [[Python/pygrass#Sample_PyGRASS_scripts|Sample PyGRASS scripts]] for an alternative solution.&lt;br /&gt;
&lt;br /&gt;
=== i.group with patterns as name for input ===&lt;br /&gt;
&lt;br /&gt;
Imagery groups can be populated like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from grass.pygrass.gis import Mapset&lt;br /&gt;
&lt;br /&gt;
run_command(&amp;quot;i.group&amp;quot;, group=&amp;quot;mygroup&amp;quot;, input=mset.glist(&amp;quot;raster&amp;quot;, pattern=&amp;quot;mypattern_*&amp;quot;))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Percentage output for progress of computation ===&lt;br /&gt;
&lt;br /&gt;
A) Within a Python script, the {{pyapi|script|script.core|percent}} module method wraps the &amp;lt;tt&amp;gt;g.message -p&amp;lt;/tt&amp;gt; command.&lt;br /&gt;
&lt;br /&gt;
B) If you call a GRASS command within the Python code, you have to parse the output by setting &amp;lt;tt&amp;gt;GRASS_MESSAGE_FORMAT=gui&amp;lt;/tt&amp;gt; in the environment when running the command and read from the command's stderr; e.g.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       import grass.script as grass&lt;br /&gt;
       env = os.environ.copy()&lt;br /&gt;
       env['GRASS_MESSAGE_FORMAT'] = 'gui'&lt;br /&gt;
       p = grass.start_command(..., stderr = grass.PIPE, env = env)&lt;br /&gt;
       # read from p.stderr&lt;br /&gt;
       p.wait()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you need to capture both stdout and stderr, you need to use threads, select, or non-blocking I/O to consume data from both streams as it is generated in order to avoid deadlock.&lt;br /&gt;
&lt;br /&gt;
ALTERNATIVE:&lt;br /&gt;
&lt;br /&gt;
Redirect both stdout and stderr to the same pipe (and hope that the normal output doesn't include anything which will be mistaken for progress/error/etc messages):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       p = grass.start_command(..., stdout = grass.PIPE, stderr = grass.STDOUT, env = env)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== NULL data management ===&lt;br /&gt;
&lt;br /&gt;
How to analyse if there are only NULL cells in a map:&lt;br /&gt;
&lt;br /&gt;
If a map contains only null cells, its minimum and maximum will be &amp;quot;NULL&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
       $ r.mapcalc 'foo = null()'&lt;br /&gt;
       $ r.info -r foo&lt;br /&gt;
       min=NULL&lt;br /&gt;
       max=NULL&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using the Python API, The 'min' and 'max' values in the result of the {{pyapi|script|script.raster|raster_info}} function will be &amp;lt;tt&amp;gt;None&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Counting cells ===&lt;br /&gt;
&lt;br /&gt;
Counting cells is far more expensive than simply determining whether&lt;br /&gt;
there are any non-null cells. Counting cells requires reading the&lt;br /&gt;
entire map, while the {{cmd|r.info}} approach only needs to read the metadata&lt;br /&gt;
files.&lt;br /&gt;
&lt;br /&gt;
If you do need to count cells, {{cmd|r.stats}} is likely to be more efficient than {{cmd|r.univar}}.&lt;br /&gt;
&lt;br /&gt;
A count loop:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       while grass.raster_info(inmap)['max'] is not None:&lt;br /&gt;
           ...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Display: overlayed map display with labels ===&lt;br /&gt;
&lt;br /&gt;
Example: display a vector map and overlay its labels on top of the map.&lt;br /&gt;
&lt;br /&gt;
If the environment contains the setting GRASS_PNG_READ=TRUE, d.* commands should overlay their output on an existing image (otherwise the first command creates the file map.png but the second command overwrites the file with only the labels). So the following should work:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       grass.run_command('d.vect', map='my_shape')&lt;br /&gt;
       env = os.environ.copy()&lt;br /&gt;
       env['GRASS_PNG_READ'] = 'TRUE'&lt;br /&gt;
       grass.run_command('d.labels', labels='my_shape_labels', env = env)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Path to GISDBASE ===&lt;br /&gt;
In order to a avoid hardcoded paths to GRASS mapset files like the SQLite DB file, you can get the GISDBASE variable from the environment:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       import grass.script as grass&lt;br /&gt;
       import os.path&lt;br /&gt;
&lt;br /&gt;
       env = grass.gisenv()&lt;br /&gt;
&lt;br /&gt;
       gisdbase = env['GISDBASE']&lt;br /&gt;
       location = env['LOCATION_NAME']&lt;br /&gt;
       mapset = env['MAPSET']&lt;br /&gt;
&lt;br /&gt;
       path = os.path.join(gisdbase, location, mapset, 'sqlite.db')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Creating a new location ===&lt;br /&gt;
&lt;br /&gt;
Use {{pyapi|script|script.core|create_location}} to create a new location.&lt;br /&gt;
&lt;br /&gt;
=== Use Python reserved keyword ===&lt;br /&gt;
&lt;br /&gt;
'''Q:''' ''r.resamp.bspline'' uses 'lambda' as a command line parameter name, but when you try to use it with {{pyapi|script|script.core|run_command}} or {{pyapi|script|script.core|start_command}} you get an error as lambda is a python reserved keyword. How to work around that?&lt;br /&gt;
&lt;br /&gt;
'''A:''' Append an underscore to the name, i.e.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       grass.run_command('r.resamp.bspline', lambda_ = ...)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note that this follows Python [http://legacy.python.org/dev/peps/pep-0008/#descriptive-naming-styles PEP8] style guide. In GRASS GIS version 6, you have to prepend the underscore.&lt;br /&gt;
&lt;br /&gt;
=== Controlling the PNG display driver ===&lt;br /&gt;
&lt;br /&gt;
Code fragment to control the {{cmd|pngdriver}} in Python:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
import os&lt;br /&gt;
import sys&lt;br /&gt;
from grass.script import core as grass&lt;br /&gt;
def main():&lt;br /&gt;
       os.environ['GRASS_PNGFILE'] = filename&lt;br /&gt;
       os.environ['GRASS_WIDTH'] = str(width)&lt;br /&gt;
       os.environ['GRASS_HEIGHT'] = str(height)&lt;br /&gt;
       grass.run_command('d.his', i='elevation_shade', h='elevation')&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Sophisticated cleanup procedure ===&lt;br /&gt;
&lt;br /&gt;
Scripts which create several temporary files need a more sophisticated cleanup procedure which deletes all the tmp maps which have been created. This procedure should also work if the script stops (e.g due to an error).&lt;br /&gt;
&lt;br /&gt;
Solution: Define a list of map names which starts out empty and has names appended to it as the names are generated. Code fragment:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       import atexit, sys&lt;br /&gt;
       import grass.script as grass&lt;br /&gt;
&lt;br /&gt;
       tmp_rast = []&lt;br /&gt;
&lt;br /&gt;
       def cleanup():&lt;br /&gt;
           for rast in tmp_rast:&lt;br /&gt;
               grass.run_command(&amp;quot;g.remove&amp;quot;,&lt;br /&gt;
                                 flags='f',&lt;br /&gt;
                                 type= 'raster',&lt;br /&gt;
                                 name = rast,&lt;br /&gt;
                                 quiet = True)&lt;br /&gt;
&lt;br /&gt;
       def main():&lt;br /&gt;
           ...&lt;br /&gt;
           while ...:&lt;br /&gt;
               next_rast = ...&lt;br /&gt;
               tmp_rast.append(next_rast)&lt;br /&gt;
               ...&lt;br /&gt;
&lt;br /&gt;
       if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
           options, flags = grass.parser()&lt;br /&gt;
           atexit.register(cleanup)&lt;br /&gt;
           sys.exit(main())&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Using temporary region for computations ===&lt;br /&gt;
&lt;br /&gt;
There are two possible ways how to define temporary region for raster-based computations within your scripts. First method uses environmental variable WIND_OVERRIDE, the second GRASS_REGION, see {{cmd|variables|desc=GRASS variables}} for more info. The key point is to recover the current region when the script is finished or terminated.&lt;br /&gt;
&lt;br /&gt;
* ''First method'' (WIND_OVERRIDE) is implemented as {{pyapi|script|script.core|use_temp_region}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
import grass.script as grass&lt;br /&gt;
&lt;br /&gt;
# store the current region settings and installs an atexit&lt;br /&gt;
# handler to recover the current region on script termination&lt;br /&gt;
grass.use_temp_region()&lt;br /&gt;
&lt;br /&gt;
grass.run_command('g.region', region='detail')&lt;br /&gt;
&lt;br /&gt;
grass.mapcalc('map = 1', overwrite=True)&lt;br /&gt;
&lt;br /&gt;
# after making operations using the temporary region,&lt;br /&gt;
# to unset the temporary WIND_OVERRIDE file and remove any &lt;br /&gt;
# region named by it, it is possible to use del_temp_region&lt;br /&gt;
grass.del_temp_region()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ''Second method'' (GRASS_REGION) doesn't store current region settings to any temporary region, it just defines GRASS_REGION which forces GIS Library to use this settings for raster-based computations instead of the settings stored in WIND file (ie. current region). See {{pyapi|script|script.core|region_env}}.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
import os&lt;br /&gt;
import grass.script as grass&lt;br /&gt;
&lt;br /&gt;
# copy environment and define GRASS_REGION environmental variable&lt;br /&gt;
# same as `g.region region=detail`&lt;br /&gt;
env = os.environ.copy()&lt;br /&gt;
env['GRASS_REGION'] = grass.region_env(region='detail')&lt;br /&gt;
 &lt;br /&gt;
grass.mapcalc('map = 1', overwrite=True, env=env)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Direct Access from wxGUI ==&lt;br /&gt;
&lt;br /&gt;
[[wxGUI]] Layer Manager in GRASS GIS comes with &amp;quot;Python shell&amp;quot; which enables users to type and execute python commands directly in wxGUI environment.&lt;br /&gt;
&lt;br /&gt;
[[Image:wxgui-pyshell.png|center|400px|Embedded interactive Python Shell in wxGUI Layer Manager]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[GRASS GIS Jupyter notebooks]]&lt;br /&gt;
* [[Working with GRASS without starting it explicitly‎]]&lt;br /&gt;
* Many more tutorials under [[:Category:Python]]&lt;/div&gt;</summary>
		<author><name>⚠️Sbl</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_Community_Sprint_Bonn_2018&amp;diff=25156</id>
		<title>Talk:GRASS Community Sprint Bonn 2018</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_Community_Sprint_Bonn_2018&amp;diff=25156"/>
		<updated>2018-03-23T13:36:22Z</updated>

		<summary type="html">&lt;p&gt;⚠️Sbl: Added stefan&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Participants and Reports =&lt;br /&gt;
&lt;br /&gt;
== Martin Landa ==&lt;br /&gt;
&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Mar+25%2C+2018&amp;amp;daysback=7&amp;amp;authors=martinl&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update SVN log] overview&lt;br /&gt;
* Show computation region extent settings, see {{trac|3519}}&lt;br /&gt;
* wxGUI/datacatalog: zoom to first added map (sync with lmgr behaviour)&lt;br /&gt;
* wxGUI/preferences: add new option for random colors (vector) &lt;br /&gt;
* Read EPSG codes with PROJ v.5 fails, see {{trac|3514}} &lt;br /&gt;
* wxGUI/datacatalog: display layer on double click &lt;br /&gt;
* disable to_text_string() in grass.py, see {{trac|3508}} &lt;br /&gt;
* rename r.sentinel -&amp;gt; i.sentinel (work in progress), see {{trac|3522}} &lt;br /&gt;
* v.random restrict wrong categories assigned, see {{trac|3524}} &lt;br /&gt;
* Currently ​G7:v.random with restrict parameter transfers categories {{trac|3528}}&lt;br /&gt;
* wxGUI: set up default map display properties when new display is open&lt;br /&gt;
* libgis: improve parser UI description error reporting &lt;br /&gt;
* v.to.rast: add support for centroids&lt;br /&gt;
&lt;br /&gt;
== Moritz Lennert ==&lt;br /&gt;
&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Mar+25%2C+2018&amp;amp;daysback=7&amp;amp;authors=mlennert&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update SVN log] overview&lt;br /&gt;
*  Committed fix for r.texture to avoid overwrite of existing output maps&lt;br /&gt;
*  Committed fox for i.segment.uspo to avoid zero division error&lt;br /&gt;
*  Worked on and discussed new startup mockup, created [https://trac.osgeo.org/grass/wiki/wxGUIDevelopment/New_Startup wiki page] for brainstorming&lt;br /&gt;
*  Use of '_' in i.zc module parameter in i.cutlines to enable parallelization of i.zc. Thanks to Pietro for making this possible in pygrass.&lt;br /&gt;
*  Some testing for [https://trac.osgeo.org/grass/ticket/3361 #3361] on slowness of v.select with GEOS. Added explanation to man page to clarify that GRASS' &amp;quot;overlap' = GEOS 'intersects'.&lt;br /&gt;
*  Testing Ondrej' artificial neural networks modules + discussions on further improvements&lt;br /&gt;
*  Discussion of new website design&lt;br /&gt;
*  Discussion on move to github.&lt;br /&gt;
&lt;br /&gt;
== Markus Neteler ==&lt;br /&gt;
&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Mar+25%2C+2018&amp;amp;daysback=7&amp;amp;authors=neteler&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update%20SVN%20log SVN log] overview&lt;br /&gt;
* set up [https://docs.google.com/spreadsheets/d/1BgFMiYlLosFjsVUlUCWwssoxiQB_G7gpkVFgG29gZBM/edit?usp=sharing Budget] for this community sprint&lt;br /&gt;
* testing of {{AddonCmd|i.nightlights.intercalibration}} with DMSP-OLS data, parser fix (contributed by Anika Bettge) and HTML fixes&lt;br /&gt;
* Web: activation of roles in http://staging.grass.osgeo.org/&lt;br /&gt;
* svn to git migration discussions&lt;br /&gt;
** Following https://trac.osgeo.org/gdal/wiki/rfc71_github_migration with interest&lt;br /&gt;
* Ticket {{trac|3527}} (i.atcorr: discrepancy in sensor band numbering in the manual)&lt;br /&gt;
* added &amp;quot;How to add keywords in code&amp;quot; submitting rules for [https://trac.osgeo.org/grass/wiki/Submitting/Python#Addingdescriptionandkeywords Python] and [https://trac.osgeo.org/grass/wiki/Submitting/C#Addingdescriptionandkeywords C]&lt;br /&gt;
&lt;br /&gt;
== Veronica Andreo ==&lt;br /&gt;
&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Mar+25%2C+2018&amp;amp;daysback=7&amp;amp;authors=veroandreo&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update%20SVN%20log SVN log] overview&lt;br /&gt;
* tested {{cmd|r.texture}}&lt;br /&gt;
* committed {{cmd|i.atcorr}} manual example and figure contributed by Zofie Cimburova to perform atmospheric correction on Sentinel-2 bands&lt;br /&gt;
* performed general clean-up on i.atcorr manual page&lt;br /&gt;
* completed [https://grasswiki.osgeo.org/wiki/SENTINEL Sentinel wiki] (kinda). Editions, corrections and more examples are welcome.&lt;br /&gt;
* discussion about new flag and flag behavior for {{cmd|t.remove}} with Luca {{trac|3362}}&lt;br /&gt;
* revised and tested old t.* related tickets; closed some old ones as wontfix or worksforme accordingly.&lt;br /&gt;
* created patch for {{trac|3264}} with Luca's help&lt;br /&gt;
* tested -h flag in {{cmd|t.info}}, see {{trac|3322}}&lt;br /&gt;
* added example to {{cmd|t.register}} (contributed by Ondrej Pesek) + correction of typos and minor text edition&lt;br /&gt;
* tweeted and RT from GRASS account and posted in FB GRASS GIS group&lt;br /&gt;
* completed revision and clean-up of the [https://grasswiki.osgeo.org/wiki/Temporal_data_processing Temporal data processing] wiki&lt;br /&gt;
* opened tickets for {{cmd|g.gui.tplot}} (after discussions with Nikos and Luca)&lt;br /&gt;
* tested {{trac|3223}} and {{trac|3302}}&lt;br /&gt;
* created draft roadmap of priorities for the migration of the web site: see [https://grasswiki.osgeo.org/wiki/GRASS-Wiki/CMS_migration_plan_2018 wiki]&lt;br /&gt;
&lt;br /&gt;
== Ondřej Pešek ==&lt;br /&gt;
&lt;br /&gt;
* Working on artificial neural network modules (see [https://github.com/ctu-geoforall-lab-projects/dp-pesek-2018/compare/master@%7B18/3/2018%7D...master github commits] overview)&lt;br /&gt;
* g.gui.gmodeler: Support parameterization and GUI generation in python script; export to PyWPS script (see [https://github.com/ctu-yfsg/2017-d-grass-modeler-pywps/compare/master@%7B18/03/2018%7D...master github commits] overview)&lt;br /&gt;
* Working on SOS modules (see [https://github.com/pesekon2/GRASS-GIS-SOS-tools/compare/master@%7B17/03/2018%7D...master github commits] overview)&lt;br /&gt;
&lt;br /&gt;
== Luca Delucchi ==&lt;br /&gt;
&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Mar+25%2C+2018&amp;amp;daysback=7&amp;amp;authors=lucadelu&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update%20SVN%20log SVN log] overview&lt;br /&gt;
* {{cmd|g.region}} improved grow option&lt;br /&gt;
* renamed r.modis addons to {{AddonCmd|i.modis}}&lt;br /&gt;
* working on temporal framework open tickets&lt;br /&gt;
* discussion about new flag and flag behavior for {{cmd|t.remove}} with Vero {{trac|3362}}&lt;br /&gt;
* created three new modules to work with signature files {{AddonCmd|i.signature.list}}, {{AddonCmd|i.signature.copy}}, {{AddonCmd|i.signature.remove}}&lt;br /&gt;
* worked with Markus Metz on {{cmd|i.ortho.transform}} command&lt;br /&gt;
* fixed some bug in {{cmd|g.gui.tplot}} {{rev|72485}} {{rev|72489}}, one related to {{trac|3294}}&lt;br /&gt;
* review GSoC proposals&lt;br /&gt;
&lt;br /&gt;
== Nikos Alexandris ==&lt;br /&gt;
&lt;br /&gt;
* Discussion about GRASS GIS, HPC and distributed file systems with Markus Neteler, Soeren Gebert, Markus Metz. Respective wiki pages to be updated.&lt;br /&gt;
* Tests related to https://trac.osgeo.org/grass/ticket/774 available at https://github.com/NikosAlexandris/test_color_space_conversions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stefan Blumentrath ==&lt;br /&gt;
&lt;br /&gt;
* Made his first commit to trunk {{rev|72444}} and fixed {{trac|3322}}&lt;br /&gt;
* worked on an AddOn [https://trac.osgeo.org/grass/browser/sandbox/sbl/t.rast.aggregate.update/t.rast.aggregate.update.py t.rast.aggegate.update] for updating aggregated STRDS from t.rast.aggregate (please test)&lt;br /&gt;
* wrote a patch for improving performace of v.rast.stats that allows multiple input {{trac|3523}} (testing/feedback very welcome)&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Mar+25%2C+2018&amp;amp;daysback=7&amp;amp;authors=sbl&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update%20SVN%20log SVN log] overview&lt;/div&gt;</summary>
		<author><name>⚠️Sbl</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_GIS_Community_Sprint_Bonn_2018&amp;diff=25010</id>
		<title>GRASS GIS Community Sprint Bonn 2018</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_GIS_Community_Sprint_Bonn_2018&amp;diff=25010"/>
		<updated>2018-02-03T19:28:35Z</updated>

		<summary type="html">&lt;p&gt;⚠️Sbl: Stefan arrival&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{toc|right}}&lt;br /&gt;
&lt;br /&gt;
The '''GRASS GIS community''' will join the general '''OSGeo Code Sprint''' at BaseCamp in Bonn, following the annual FOSSGIS conference (German Speaking OSGeo Local Chapter conference in Bonn, Germany)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[File:GRASS_GIS_Code_Sprint_2018.png|320px]] &lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Timing, Venue  ==&lt;br /&gt;
&lt;br /&gt;
OSGeo Code Sprint: '''March 18 - 25, 2018 at BaseCamp. Bonn, Germany'''.&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
Please check more info on the Bonn Code Sprint 2018 [https://wiki.osgeo.org/wiki/OSGeo_Code_Sprint_2018 here].&lt;br /&gt;
&lt;br /&gt;
We also welcome direct '''financial contributions''' to help reducing travelling and accommodation expenses for GRASS developers with far arrival If you are interested to sponsor the GRASS Community Sprint, please read about&lt;br /&gt;
&lt;br /&gt;
:::'''sponsoring the GRASS project''' at '''[http://grass.osgeo.org/donations http://grass.osgeo.org/donations]'''&lt;br /&gt;
&lt;br /&gt;
Note that it is also possible to &amp;lt;b&amp;gt;buy a round of beer for the developers with a quick click&amp;lt;/b&amp;gt; using the PayPal &amp;quot;Buy [pizza/beer/...] Now&amp;quot; button [[Image:Btn_donate_SM.gif|center|link=http://grass.osgeo.org/donations/]]&lt;br /&gt;
&lt;br /&gt;
For any questions, please contact [[User:Neteler|Markus Neteler]] &amp;lt;tt&amp;gt;&amp;lt;neteler at osgeo.org&amp;gt;&amp;lt;/tt&amp;gt;. Any surplus at the end of the event will be turned over to the GRASS GIS project.&lt;br /&gt;
&lt;br /&gt;
This GRASS GIS Community Sprint is a great occasion for you to support the development of GRASS. With your contribution you'll enable more developers to meet. The community sprint is an important opportunity for the GRASS developers to discuss and collaboratively resolve bugs, plan the direction for the project and work on new features. Please see below for the more detailed agenda. The developers and contributors are donating their valuable time, so it would be great if in-kind funding can be made available from within the community to cover out-of-pocket expenses. All of the work that takes place at the community sprint will be directly contributed back into the GRASS project to the benefit of everyone who uses it.&lt;br /&gt;
This Bonn event is especially interesting since '''important OSGeo projects come together'''!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Agenda - What we plan to do ==&lt;br /&gt;
&lt;br /&gt;
=== Move to Git ===&lt;br /&gt;
&lt;br /&gt;
* Choose among different options: OSGeo Git, Github, GitLab&lt;br /&gt;
* Participants are invited to study Git in advance :-)&lt;br /&gt;
&lt;br /&gt;
=== New website ===&lt;br /&gt;
&lt;br /&gt;
* Choose among different options: Wordpress, Sphinx, ... ?&lt;br /&gt;
&lt;br /&gt;
=== Port wxGUI to wxPython 4 ===&lt;br /&gt;
&lt;br /&gt;
* Finish porting wxGUI code to the new wxPython 4&lt;br /&gt;
* It also includes porting code to Python 3&lt;br /&gt;
&lt;br /&gt;
=== Finish complete Python 3 support === &lt;br /&gt;
&lt;br /&gt;
* Includes also wxGUI support for wxPython 4&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== Planned participation ==&lt;br /&gt;
&lt;br /&gt;
For organizational reasons, please '''additionally register''' at: https://wiki.osgeo.org/wiki/OSGeo_Code_Sprint_2018#Participants  &amp;lt;&amp;lt;--- important!&lt;br /&gt;
&lt;br /&gt;
=== In person ===&lt;br /&gt;
&lt;br /&gt;
Please add your name here or contact [[User:Lucadelu|Luca Delucchi]] &amp;lt;tt&amp;gt;&amp;lt;lucadeluge at gmail com&amp;gt;&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;   border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#edf9c7; font-size:95%; empty-cells:show;&amp;quot; &lt;br /&gt;
|width=50px|'''No'''&lt;br /&gt;
|width=130px|'''Participant '''&lt;br /&gt;
|width=100px|'''Country'''&lt;br /&gt;
|width=100px|'''Arrival'''&lt;br /&gt;
|width=100px|'''Departure'''&lt;br /&gt;
|'''Topic'''&lt;br /&gt;
|width=75px|'''T-Shirt'''&lt;br /&gt;
|'''Notes'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Neteler|Markus Neteler]]&lt;br /&gt;
|Germany&lt;br /&gt;
|18.3.&lt;br /&gt;
|25.3.&lt;br /&gt;
|Migration to git discussion, GRASS GIS 8&lt;br /&gt;
|M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:Ychemin|Yann Chemin]]&lt;br /&gt;
|France&lt;br /&gt;
|18.3.&lt;br /&gt;
|25.3.&lt;br /&gt;
|ISIS-GRASS, Planetary projections, i.ortho.photo, bundle blocks, GRASS GIS 8&lt;br /&gt;
|XL&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|[[User:Landa|Martin Landa]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
|18.3.&lt;br /&gt;
|25.3.&lt;br /&gt;
|Migration to git discussion, website discussion, GRASS GIS 8&lt;br /&gt;
|L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Stefan Blumentrath&lt;br /&gt;
|Germany/Norway&lt;br /&gt;
|20.03.&lt;br /&gt;
|25.03.&lt;br /&gt;
|Flexible&lt;br /&gt;
|L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[User:Veroandreo|Veronica Andreo]]&lt;br /&gt;
|Argentina/Netherlands&lt;br /&gt;
|18.3&lt;br /&gt;
|??.??&lt;br /&gt;
|TGRASS, Documentation, website discussion&lt;br /&gt;
|S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|[[User:Lucadelu|Luca Delucchi]]&lt;br /&gt;
|Italy&lt;br /&gt;
|18.3&lt;br /&gt;
|??.??&lt;br /&gt;
|Migration to git discussion, TGRASS, testsuite, website discussion&lt;br /&gt;
|L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|[[User:Mlennert|Moritz Lennert]]&lt;br /&gt;
|Italy&lt;br /&gt;
|18.3&lt;br /&gt;
|21.3&lt;br /&gt;
|Migration to git discussion, website discussion, GRASS 8, new GRASS GIS startup, work on OBIA addons, ...&lt;br /&gt;
|M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Markus Metz&lt;br /&gt;
|Germany&lt;br /&gt;
|18.3.&lt;br /&gt;
|22.3.&lt;br /&gt;
|Migration to git discussion, website discussion, GRASS 8, new GRASS GIS startup&lt;br /&gt;
|M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|#&lt;br /&gt;
|... &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Via IRC chat ===&lt;br /&gt;
&lt;br /&gt;
(IRC is a nice archaic chat system, see [[IRC]])&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;   border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#edf9c7; font-size:95%; empty-cells:show;&amp;quot; &lt;br /&gt;
|width=50px|'''No'''&lt;br /&gt;
|width=130px|'''Participant '''&lt;br /&gt;
|width=100px|'''Country'''&lt;br /&gt;
|-&lt;br /&gt;
|Add&lt;br /&gt;
|your&lt;br /&gt;
|self..&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Individual Preparation ==&lt;br /&gt;
&lt;br /&gt;
* Bring your own computer&lt;br /&gt;
* Bring [http://en.wikipedia.org/wiki/Mains_electricity_by_country your power connector adapter] if needed (photo: [https://en.wikipedia.org/wiki/File:Schuko_plug_and_socket.png Germany]). See also http://www.power-plugs-sockets.com/&lt;br /&gt;
* Install subversion and the compiler tools, and come with a working GRASS development environment if possible.&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
We have to remember to take at least one group photo! :-)&lt;br /&gt;
&lt;br /&gt;
== Reports ==&lt;br /&gt;
&lt;br /&gt;
See [[Talk:GRASS_Community_Sprint_Bonn_2018]]&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* ''Is the GRASS Community Sprint just a coding event?''&lt;br /&gt;
** It is mainly a coding and documentation event. It is a working session for people who are already participants in the GRASS project and/or are committed to improving the GRASS project.&lt;br /&gt;
** On demand we can do some presentations of current working GRASS implementation and new upcoming features to spread the idea of Open Source GIS software&lt;br /&gt;
* ''Is the GRASS Community Sprint for developers only?''&lt;br /&gt;
** No: anybody can help, with testing, checking out bugs and fixes, documentation and more.&lt;br /&gt;
* ''Where can I get help and more information about the community sprint?''&lt;br /&gt;
** Contact [[User:Lucadelu|Luca Delucchi]] &amp;lt;tt&amp;gt;&amp;lt;lucadeluge at gmail com&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Workshops]]&lt;br /&gt;
[[Category: Code Sprint]]&lt;br /&gt;
[[Category: 2018]]&lt;/div&gt;</summary>
		<author><name>⚠️Sbl</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=SENTINEL&amp;diff=25006</id>
		<title>SENTINEL</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=SENTINEL&amp;diff=25006"/>
		<updated>2018-01-29T11:26:27Z</updated>

		<summary type="html">&lt;p&gt;⚠️Sbl: /* Import data */ Link Martins new addon&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Sentinel 2= &lt;br /&gt;
&lt;br /&gt;
Sentinel-2 is an Earth observation mission developed by [https://en.wikipedia.org/wiki/European_Space_Agency ESA] as part of the [https://en.wikipedia.org/wiki/Copernicus_Programme Copernicus Programme] to perform terrestrial observations in support of services such as forest monitoring, land cover changes detection, and natural disaster management. It consists of two identical satellites, [https://en.wikipedia.org/wiki/Sentinel-2A Sentinel-2A] and [https://en.wikipedia.org/wiki/Sentinel-2B Sentinel-2B]. Details about the mission, user and technical guides as well as other documentation can be found at the ESA dedicated website [https://sentinel.esa.int/web/sentinel/missions/sentinel-2] and a number of other sites.&lt;br /&gt;
&lt;br /&gt;
==Overview of Sentinel-2 mission capabilities==&lt;br /&gt;
&lt;br /&gt;
Sentinel-2 mission has the following features:&lt;br /&gt;
* Multi-spectral data with ''13 bands'' in the visible, near infrared (NIR), and short wave infrared (SWIR).&lt;br /&gt;
* Systematic global coverage of land surfaces from 56° S to 84° N, coastal waters, and all of the Mediterranean Sea&lt;br /&gt;
* Revisiting every ''5 days'' under the same viewing angles. At high latitudes, Sentinel-2 swath overlaps and some regions are observed twice or more every 5 days, but with different viewing angles.&lt;br /&gt;
* Spatial resolutions of 10 m (Bands 2, 3, 4 and 8 - Blue, Green, Red and NIR), 20 m (Bands 5, 6 and 7 - Red Edge bands, Band 8A - Narrow infrared and Bands 11 and 12 - SWIR) and 60 m (Bands 1 - Coastal aerosol, Band 9 - Water vapour and Band 10 - SWIR/Cirrus)&lt;br /&gt;
* 290 km field of view&lt;br /&gt;
* Free and open data policy&lt;br /&gt;
&lt;br /&gt;
==Sentinel-2 products==&lt;br /&gt;
&lt;br /&gt;
* '''Level-1B''' product provides radiometrically corrected imagery in Top-Of-Atmosphere (TOA) radiance values and in sensor geometry. Level-1B product is composed of an ensemble of granules that are 25 km across track (AC) by 23 km along track (AL). Additionally, this product includes the refined geometry which is used to generate the Level-1C product. Level-1B pixel coordinates refer to the centre of each pixel.&lt;br /&gt;
&lt;br /&gt;
* '''Level-1C''' product is composed of 100 km² single tiles (ortho-images in UTM/WGS84 projection). The Level-1C product results from using a Digital Elevation Model (DEM) to project the image in cartographic coordinates. Per-pixel radiometric measurements are provided in TOA reflectances with all parameters to transform them into radiances. Level-1C products are resampled with a constant Ground Sampling Distance (GSD) of 10, 20 and 60 m depending on the native resolution of the different spectral bands. In Level-1C products, pixel coordinates refer to the upper left corner of the pixel. Before September 2016, Level-1C was delivered as multi-tile product.&lt;br /&gt;
&lt;br /&gt;
* '''Level-2A''' product provides Bottom Of Atmosphere (BOA) reflectance images derived from the associated Level-1C products. Therefore, each Level-2A product is also a 100 km² tile in cartographic geometry (UTM/WGS84 projection). BOA reflectances in Level-2A products are scaled by a factor of 10000.&lt;br /&gt;
&lt;br /&gt;
==Data download==&lt;br /&gt;
&lt;br /&gt;
Sentinel-2 data might be obtained from the [https://scihub.copernicus.eu/ Copernicus Open Access Hub], either by using the online interactive interface and browsing to your area of interest or by means of the API Hub. There are several other sites from which it is possible to download Sentinel-2 imagery as well. Here, some of them:&lt;br /&gt;
&lt;br /&gt;
* [http://apps.sentinel-hub.com/eo-browser/ Sentinel-app]&lt;br /&gt;
* [http://sentinel-pds.s3-website.eu-central-1.amazonaws.com/ Amazon S3]&lt;br /&gt;
* [https://code-de.org/ Copernicus Data and Exploitation Platform – Deutschland (CODE-DE)]&lt;br /&gt;
* [https://maps.mundialis.de/ mundialis]&lt;br /&gt;
* [https://remotepixel.ca/projects/satellitesearch.html RemotePixel]&lt;br /&gt;
* [https://lv.eosda.com Land Viewer]&lt;br /&gt;
&lt;br /&gt;
For those preferring or needing to download data via the API, there also exist several options: &lt;br /&gt;
&lt;br /&gt;
* [https://github.com/ibamacsr/sentinelsat/ sentinelsat]: Python utilities to access the API of Copernicus Sentinels Scientific Data Hub (useful for all Sentinel satellite imagery)&lt;br /&gt;
* [https://github.com/olivierhagolle/Sentinel-download/ Sentinel-download]: Automated download of Sentinel-2 L1C data from ESA (through wget)&lt;br /&gt;
&lt;br /&gt;
The probably most convenient way to download (and import) Sentinel data is to use the dedicated AddOn:&lt;br /&gt;
* [https://grass.osgeo.org/grass74/manuals/addons/r.sentinel.download.html r.sentinel.download]&lt;br /&gt;
It is build on top of the ''sentinelsat'' library (and also requires ''python-pandas'').&lt;br /&gt;
&lt;br /&gt;
==Data pre-processing==&lt;br /&gt;
&lt;br /&gt;
As from May 2017, ESA started to provide Level 2A products for Europe and they will reprocess the archive during this year (2017). However, it is (still) possible to download Level-1C products and customize the atmospheric correction by using different algorithms (i.e.: 6S, 6SV, [http://rsgislib.org/arcsi/ arcsi]) and/or a different DEM (Sen2Cor uses STRM 90m by default).&lt;br /&gt;
&lt;br /&gt;
==Sentinel-2 in GRASS GIS==&lt;br /&gt;
&lt;br /&gt;
To exemplify the handling of Sentinel-2 data with GRASS GIS, we will use S2 L1C scene from North Carolina (NC) from November 2016. Here are the details:&lt;br /&gt;
&lt;br /&gt;
 S2A_OPER_PRD_MSIL1C_PDMC_20161111T123605_R097_V20161110T160502_20161110T160502&lt;br /&gt;
 830f2a5a-9914-427c-b4e0-69c6c14c71d4&lt;br /&gt;
 2016-11-10T15:05:02Z&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
 S2A_OPER_PRD_MSIL1C_PDMC_20161001T232624_R097_V20161001T160052_20161001T160426&lt;br /&gt;
 44b7fb4c-d2d7-4739-9b8e-3639659505db&lt;br /&gt;
 2016-10-01T16:00:52.000Z&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the zipped folder delivered by ESA, the data itself is hidden under: &lt;br /&gt;
 S2A_OPER_PRD_MSIL1C_PDMC_20161111T123605_R097_V20161110T160502_20161110T160502.SAFE/GRANULE/S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_N02.04/IMG_DATA/&lt;br /&gt;
&lt;br /&gt;
 S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B01.jp2&lt;br /&gt;
 S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B02.jp2&lt;br /&gt;
 S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B03.jp2&lt;br /&gt;
 S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B04.jp2&lt;br /&gt;
 S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B05.jp2&lt;br /&gt;
 S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B06.jp2&lt;br /&gt;
 S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B07.jp2&lt;br /&gt;
 S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B08.jp2&lt;br /&gt;
 S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B09.jp2&lt;br /&gt;
 S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B10.jp2&lt;br /&gt;
 S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B11.jp2&lt;br /&gt;
 S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B12.jp2&lt;br /&gt;
 S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B8A.jp2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- explain naming --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Import data===&lt;br /&gt;
&lt;br /&gt;
The most convenient way to import downloaded Sentinel-data is to use the:&lt;br /&gt;
* [https://grass.osgeo.org/grass74/manuals/addons/r.sentinel.import.html r.sentinel.import] addon.&lt;br /&gt;
&lt;br /&gt;
Manual import of Sentinel data is described below:&lt;br /&gt;
&lt;br /&gt;
Sentinel-2 data comes in JPEG2000 format that can be easily imported into GRASS GIS either by means of {{cmd|r.in.gdal}} (in a UTM location) or using {{cmd|r.import}} that provides reprojection on the fly. In this example, we will use {{cmd|r.import}} to reproject and import into the NC sample location delivered with GRASS GIS. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for map in `ls *.jp2` ; do&lt;br /&gt;
 outmap=`basename $map .jp2`&lt;br /&gt;
 r.import input=$map output=$outmap&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you prefer shorter map names, then it is possible to use {{cmd|g.rename}} or the add-on {{AddonCmd|g.rename.many}}. The other option is editing the file names before importing with sed, for example. Let us keep the S2A, date and band number parts only:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for map in `ls *.jp2` ; do&lt;br /&gt;
 outmap1=`basename $map .jp2`&lt;br /&gt;
 outmap2=`echo $outmap1 | sed s/OPER_MSI_L1C_TL_MTI__//g | sed s/T210803_A007244_T17SPV//g`&lt;br /&gt;
 r.import input=$map output=$outmap2&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The output resolution estimated by {{cmd|r.import}} is slightly different than the nominal resolution of Sentinel-2 bands.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
r.info S2A_20161110_B08 -g | grep res&lt;br /&gt;
nsres=9.80178836938829&lt;br /&gt;
ewres=9.80224757766693&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We need to set the proper resolution at import by means of the resolution and resolution_value options in {{cmd|r.import}}.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for i in 02 03 04 08 ; do&lt;br /&gt;
 g.message message=&amp;quot;importing band ${i} with R 10m&amp;quot;&lt;br /&gt;
 r.import S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B${i}.jp2 out=S2A_20161110_B${i} resolution=value resolution_value=10 extent=input&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for i in 05 06 07 8A 11 12 ; do &lt;br /&gt;
  g.message message=&amp;quot;importing band ${i} with R 20m&amp;quot;&lt;br /&gt;
  r.import S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B${i}.jp2 out=S2A_20161110_B${i} resolution=value resolution_value=20 extent=input&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for i in 01 09 10 ; do &lt;br /&gt;
 g.message message=&amp;quot;importing band ${i} with R 60m&amp;quot;&lt;br /&gt;
 r.import S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B${i}.jp2 out=S2A_20161110_B${i} resolution=value resolution_value=60 extent=input&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unfortunately, nodata are not encoded in the Sentinel data and need to be set manually by replacing 0 with NULL. &lt;br /&gt;
This should be done in the original projection, before reprojecting the data.&lt;br /&gt;
&lt;br /&gt;
In L2A products, there are artefacts along edges of swath paths, cell values are too low, caused by a bug in sen2cor. &lt;br /&gt;
All cells that are bordering a NULL cell must be set to NULL. This step might need to be repeated twice.&lt;br /&gt;
&lt;br /&gt;
Because neighboring Sentinel tiles are overlapping each other, file sizes can be reduced by patching together neighboring tiles with &lt;br /&gt;
the same datatake sensing start time.&lt;br /&gt;
&lt;br /&gt;
Before the actual reprojection, the computational region must be set properly. In the original projection, &lt;br /&gt;
four 10 meter cells fall exactly into one 20 meter cell, and nine 20 meter cells fall exactly into one 60 meter cell. &lt;br /&gt;
This can be achieved by first setting the region to the input extents (obtained with {{cmd|r.proj}} -g), then &lt;br /&gt;
aligning the region to a resolution of 60 meter, after that setting the region's resolution to the actual resolution of &lt;br /&gt;
the input band, this time without alignment. Alternatively, a reference grid can be created and the region for the current &lt;br /&gt;
input can then be aligned to that reference grid.&lt;br /&gt;
&lt;br /&gt;
Now the data can be reprojected, preferably with method=bicubic_f or method=lanczos_f to avoid sawtooth patterns &lt;br /&gt;
of linear features which can appear with method=nearest (default).&lt;br /&gt;
&lt;br /&gt;
===Atmospheric correction with {{cmd|i.atcorr}}===&lt;br /&gt;
&lt;br /&gt;
Example here&lt;br /&gt;
&lt;br /&gt;
Alternative: [https://rsgislib.org/arcsi/ Atmospheric and Radiometric Correction of Satellite Imagery (ARCSI)]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
===Apply cloud mask===&lt;br /&gt;
Example here&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Estimate diverse indices===&lt;br /&gt;
&lt;br /&gt;
Given that Sentinel-2 MSI comes with 3 red edge bands, it allows to estimate several other vegetation indices, aside from the most classic ones. There is a quite exhaustive list at the [http://www.sentinel-hub.com/eotaxonomy/indices?page=1 Sentinel Hub] website.&lt;br /&gt;
&lt;br /&gt;
* EVI = 2.5*(B08 - B04) / (B08 + 6*B04 - 7.5*B02 + 1) &amp;lt;!-- [http://www.sentinel-hub.com/eoproducts/evi-enhanced-vegetation-index-0] --&amp;gt;&lt;br /&gt;
* ARVI = (B08 - (2*B04 - B02)) / (B08 + (2*B04 - B02)) &amp;lt;!-- [http://www.sentinel-hub.com/eoproducts/arvi] --&amp;gt;&lt;br /&gt;
* NDII = (B08 - B11) / (B08 + B11) &amp;lt;!-- [http://www.sentinel-hub.com/eoproducts/ndii] --&amp;gt;&lt;br /&gt;
* MSI = B11 / B08 &amp;lt;!-- [http://www.sentinel-hub.com/eoproducts/msi] --&amp;gt;&lt;br /&gt;
* PSRI-NIR = (B04 - B02) / B08 &amp;lt;!-- [http://www.sentinel-hub.com/eoproducts/psri-nir-plant-senescence-reflectance-index-near-infra-red] --&amp;gt;&lt;br /&gt;
* NDVI-GREEN = B03 * (B08 - B04) / (B08 + B04) &amp;lt;!-- [http://www.sentinel-hub.com/eoproducts/ndvi-green-normalized-difference-vegetation-index-green] --&amp;gt;&lt;br /&gt;
* MTCI = (B06 - B05) / (B05 - B04) &amp;lt;!-- [http://www.sentinel-hub.com/eoproducts/mtci-meris-terrestrial-chlorophyll-index] --&amp;gt;&lt;br /&gt;
* IRECI = (B07 - B04) * B06 / B05 &amp;lt;!-- [http://www.sentinel-hub.com/eoproducts/ireci-inverted-red-edge-chlorophyll-index] --&amp;gt;&lt;br /&gt;
* GRVI1 = (B04 - B03) / (B04 + B03) &amp;lt;!-- [http://www.sentinel-hub.com/eoproducts/grvi1-green-red-vegetation-index] --&amp;gt;&lt;br /&gt;
* GNDVI = (B08 - B03) / (B08 + B03) &amp;lt;!-- [http://www.sentinel-hub.com/eoproducts/gndvi-green-normalized-difference-vegetation-index] --&amp;gt;&lt;br /&gt;
* EVI2 = 2.5 * (B08 - B04) / (B08 + 2.4 * B04 + 1) &amp;lt;!-- [http://www.sentinel-hub.com/eoproducts/evi2-enhanced-vegetation-index-2] --&amp;gt;&lt;br /&gt;
* ChlRE = B05 / B08 &amp;lt;!-- [http://www.sentinel-hub.com/eoproducts/chl-red-edge-chlorophyll-red-edge] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Classification===&lt;br /&gt;
&lt;br /&gt;
Example here&lt;br /&gt;
&lt;br /&gt;
==Further reading==&lt;br /&gt;
IMAGICO.DE blog&lt;br /&gt;
* [http://blog.imagico.de/sentinel-2-having-a-first-look-at-the-data-part-1/ First look at Sentinel data]&lt;br /&gt;
* [http://blog.imagico.de/who-is-moving-the-cheese-again/ Who is moving the cheese again?]&lt;br /&gt;
&lt;br /&gt;
[[Category: Documentation]]&lt;br /&gt;
[[Category: Tutorial]]&lt;br /&gt;
[[Category: Image processing]]&lt;br /&gt;
[[Category: Sentinel]]&lt;/div&gt;</summary>
		<author><name>⚠️Sbl</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=SENTINEL&amp;diff=25005</id>
		<title>SENTINEL</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=SENTINEL&amp;diff=25005"/>
		<updated>2018-01-29T11:21:22Z</updated>

		<summary type="html">&lt;p&gt;⚠️Sbl: /* Data download */ link Martins new addon(s)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Sentinel 2= &lt;br /&gt;
&lt;br /&gt;
Sentinel-2 is an Earth observation mission developed by [https://en.wikipedia.org/wiki/European_Space_Agency ESA] as part of the [https://en.wikipedia.org/wiki/Copernicus_Programme Copernicus Programme] to perform terrestrial observations in support of services such as forest monitoring, land cover changes detection, and natural disaster management. It consists of two identical satellites, [https://en.wikipedia.org/wiki/Sentinel-2A Sentinel-2A] and [https://en.wikipedia.org/wiki/Sentinel-2B Sentinel-2B]. Details about the mission, user and technical guides as well as other documentation can be found at the ESA dedicated website [https://sentinel.esa.int/web/sentinel/missions/sentinel-2] and a number of other sites.&lt;br /&gt;
&lt;br /&gt;
==Overview of Sentinel-2 mission capabilities==&lt;br /&gt;
&lt;br /&gt;
Sentinel-2 mission has the following features:&lt;br /&gt;
* Multi-spectral data with ''13 bands'' in the visible, near infrared (NIR), and short wave infrared (SWIR).&lt;br /&gt;
* Systematic global coverage of land surfaces from 56° S to 84° N, coastal waters, and all of the Mediterranean Sea&lt;br /&gt;
* Revisiting every ''5 days'' under the same viewing angles. At high latitudes, Sentinel-2 swath overlaps and some regions are observed twice or more every 5 days, but with different viewing angles.&lt;br /&gt;
* Spatial resolutions of 10 m (Bands 2, 3, 4 and 8 - Blue, Green, Red and NIR), 20 m (Bands 5, 6 and 7 - Red Edge bands, Band 8A - Narrow infrared and Bands 11 and 12 - SWIR) and 60 m (Bands 1 - Coastal aerosol, Band 9 - Water vapour and Band 10 - SWIR/Cirrus)&lt;br /&gt;
* 290 km field of view&lt;br /&gt;
* Free and open data policy&lt;br /&gt;
&lt;br /&gt;
==Sentinel-2 products==&lt;br /&gt;
&lt;br /&gt;
* '''Level-1B''' product provides radiometrically corrected imagery in Top-Of-Atmosphere (TOA) radiance values and in sensor geometry. Level-1B product is composed of an ensemble of granules that are 25 km across track (AC) by 23 km along track (AL). Additionally, this product includes the refined geometry which is used to generate the Level-1C product. Level-1B pixel coordinates refer to the centre of each pixel.&lt;br /&gt;
&lt;br /&gt;
* '''Level-1C''' product is composed of 100 km² single tiles (ortho-images in UTM/WGS84 projection). The Level-1C product results from using a Digital Elevation Model (DEM) to project the image in cartographic coordinates. Per-pixel radiometric measurements are provided in TOA reflectances with all parameters to transform them into radiances. Level-1C products are resampled with a constant Ground Sampling Distance (GSD) of 10, 20 and 60 m depending on the native resolution of the different spectral bands. In Level-1C products, pixel coordinates refer to the upper left corner of the pixel. Before September 2016, Level-1C was delivered as multi-tile product.&lt;br /&gt;
&lt;br /&gt;
* '''Level-2A''' product provides Bottom Of Atmosphere (BOA) reflectance images derived from the associated Level-1C products. Therefore, each Level-2A product is also a 100 km² tile in cartographic geometry (UTM/WGS84 projection). BOA reflectances in Level-2A products are scaled by a factor of 10000.&lt;br /&gt;
&lt;br /&gt;
==Data download==&lt;br /&gt;
&lt;br /&gt;
Sentinel-2 data might be obtained from the [https://scihub.copernicus.eu/ Copernicus Open Access Hub], either by using the online interactive interface and browsing to your area of interest or by means of the API Hub. There are several other sites from which it is possible to download Sentinel-2 imagery as well. Here, some of them:&lt;br /&gt;
&lt;br /&gt;
* [http://apps.sentinel-hub.com/eo-browser/ Sentinel-app]&lt;br /&gt;
* [http://sentinel-pds.s3-website.eu-central-1.amazonaws.com/ Amazon S3]&lt;br /&gt;
* [https://code-de.org/ Copernicus Data and Exploitation Platform – Deutschland (CODE-DE)]&lt;br /&gt;
* [https://maps.mundialis.de/ mundialis]&lt;br /&gt;
* [https://remotepixel.ca/projects/satellitesearch.html RemotePixel]&lt;br /&gt;
* [https://lv.eosda.com Land Viewer]&lt;br /&gt;
&lt;br /&gt;
For those preferring or needing to download data via the API, there also exist several options: &lt;br /&gt;
&lt;br /&gt;
* [https://github.com/ibamacsr/sentinelsat/ sentinelsat]: Python utilities to access the API of Copernicus Sentinels Scientific Data Hub (useful for all Sentinel satellite imagery)&lt;br /&gt;
* [https://github.com/olivierhagolle/Sentinel-download/ Sentinel-download]: Automated download of Sentinel-2 L1C data from ESA (through wget)&lt;br /&gt;
&lt;br /&gt;
The probably most convenient way to download (and import) Sentinel data is to use the dedicated AddOn:&lt;br /&gt;
* [https://grass.osgeo.org/grass74/manuals/addons/r.sentinel.download.html r.sentinel.download]&lt;br /&gt;
It is build on top of the ''sentinelsat'' library (and also requires ''python-pandas'').&lt;br /&gt;
&lt;br /&gt;
==Data pre-processing==&lt;br /&gt;
&lt;br /&gt;
As from May 2017, ESA started to provide Level 2A products for Europe and they will reprocess the archive during this year (2017). However, it is (still) possible to download Level-1C products and customize the atmospheric correction by using different algorithms (i.e.: 6S, 6SV, [http://rsgislib.org/arcsi/ arcsi]) and/or a different DEM (Sen2Cor uses STRM 90m by default).&lt;br /&gt;
&lt;br /&gt;
==Sentinel-2 in GRASS GIS==&lt;br /&gt;
&lt;br /&gt;
To exemplify the handling of Sentinel-2 data with GRASS GIS, we will use S2 L1C scene from North Carolina (NC) from November 2016. Here are the details:&lt;br /&gt;
&lt;br /&gt;
 S2A_OPER_PRD_MSIL1C_PDMC_20161111T123605_R097_V20161110T160502_20161110T160502&lt;br /&gt;
 830f2a5a-9914-427c-b4e0-69c6c14c71d4&lt;br /&gt;
 2016-11-10T15:05:02Z&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
 S2A_OPER_PRD_MSIL1C_PDMC_20161001T232624_R097_V20161001T160052_20161001T160426&lt;br /&gt;
 44b7fb4c-d2d7-4739-9b8e-3639659505db&lt;br /&gt;
 2016-10-01T16:00:52.000Z&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the zipped folder delivered by ESA, the data itself is hidden under: &lt;br /&gt;
 S2A_OPER_PRD_MSIL1C_PDMC_20161111T123605_R097_V20161110T160502_20161110T160502.SAFE/GRANULE/S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_N02.04/IMG_DATA/&lt;br /&gt;
&lt;br /&gt;
 S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B01.jp2&lt;br /&gt;
 S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B02.jp2&lt;br /&gt;
 S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B03.jp2&lt;br /&gt;
 S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B04.jp2&lt;br /&gt;
 S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B05.jp2&lt;br /&gt;
 S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B06.jp2&lt;br /&gt;
 S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B07.jp2&lt;br /&gt;
 S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B08.jp2&lt;br /&gt;
 S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B09.jp2&lt;br /&gt;
 S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B10.jp2&lt;br /&gt;
 S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B11.jp2&lt;br /&gt;
 S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B12.jp2&lt;br /&gt;
 S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B8A.jp2&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- explain naming --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Import data===&lt;br /&gt;
&lt;br /&gt;
Sentinel-2 data comes in JPEG2000 format that can be easily imported into GRASS GIS either by means of {{cmd|r.in.gdal}} (in a UTM location) or using {{cmd|r.import}} that provides reprojection on the fly. In this example, we will use {{cmd|r.import}} to reproject and import into the NC sample location delivered with GRASS GIS. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for map in `ls *.jp2` ; do&lt;br /&gt;
 outmap=`basename $map .jp2`&lt;br /&gt;
 r.import input=$map output=$outmap&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you prefer shorter map names, then it is possible to use {{cmd|g.rename}} or the add-on {{AddonCmd|g.rename.many}}. The other option is editing the file names before importing with sed, for example. Let us keep the S2A, date and band number parts only:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for map in `ls *.jp2` ; do&lt;br /&gt;
 outmap1=`basename $map .jp2`&lt;br /&gt;
 outmap2=`echo $outmap1 | sed s/OPER_MSI_L1C_TL_MTI__//g | sed s/T210803_A007244_T17SPV//g`&lt;br /&gt;
 r.import input=$map output=$outmap2&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The output resolution estimated by {{cmd|r.import}} is slightly different than the nominal resolution of Sentinel-2 bands.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
r.info S2A_20161110_B08 -g | grep res&lt;br /&gt;
nsres=9.80178836938829&lt;br /&gt;
ewres=9.80224757766693&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We need to set the proper resolution at import by means of the resolution and resolution_value options in {{cmd|r.import}}.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for i in 02 03 04 08 ; do&lt;br /&gt;
 g.message message=&amp;quot;importing band ${i} with R 10m&amp;quot;&lt;br /&gt;
 r.import S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B${i}.jp2 out=S2A_20161110_B${i} resolution=value resolution_value=10 extent=input&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for i in 05 06 07 8A 11 12 ; do &lt;br /&gt;
  g.message message=&amp;quot;importing band ${i} with R 20m&amp;quot;&lt;br /&gt;
  r.import S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B${i}.jp2 out=S2A_20161110_B${i} resolution=value resolution_value=20 extent=input&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
for i in 01 09 10 ; do &lt;br /&gt;
 g.message message=&amp;quot;importing band ${i} with R 60m&amp;quot;&lt;br /&gt;
 r.import S2A_OPER_MSI_L1C_TL_MTI__20161110T210803_A007244_T17SPV_B${i}.jp2 out=S2A_20161110_B${i} resolution=value resolution_value=60 extent=input&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Unfortunately, nodata are not encoded in the Sentinel data and need to be set manually by replacing 0 with NULL. &lt;br /&gt;
This should be done in the original projection, before reprojecting the data.&lt;br /&gt;
&lt;br /&gt;
In L2A products, there are artefacts along edges of swath paths, cell values are too low, caused by a bug in sen2cor. &lt;br /&gt;
All cells that are bordering a NULL cell must be set to NULL. This step might need to be repeated twice.&lt;br /&gt;
&lt;br /&gt;
Because neighboring Sentinel tiles are overlapping each other, file sizes can be reduced by patching together neighboring tiles with &lt;br /&gt;
the same datatake sensing start time.&lt;br /&gt;
&lt;br /&gt;
Before the actual reprojection, the computational region must be set properly. In the original projection, &lt;br /&gt;
four 10 meter cells fall exactly into one 20 meter cell, and nine 20 meter cells fall exactly into one 60 meter cell. &lt;br /&gt;
This can be achieved by first setting the region to the input extents (obtained with {{cmd|r.proj}} -g), then &lt;br /&gt;
aligning the region to a resolution of 60 meter, after that setting the region's resolution to the actual resolution of &lt;br /&gt;
the input band, this time without alignment. Alternatively, a reference grid can be created and the region for the current &lt;br /&gt;
input can then be aligned to that reference grid.&lt;br /&gt;
&lt;br /&gt;
Now the data can be reprojected, preferably with method=bicubic_f or method=lanczos_f to avoid sawtooth patterns &lt;br /&gt;
of linear features which can appear with method=nearest (default).&lt;br /&gt;
&lt;br /&gt;
===Atmospheric correction with {{cmd|i.atcorr}}===&lt;br /&gt;
&lt;br /&gt;
Example here&lt;br /&gt;
&lt;br /&gt;
Alternative: [https://rsgislib.org/arcsi/ Atmospheric and Radiometric Correction of Satellite Imagery (ARCSI)]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
===Apply cloud mask===&lt;br /&gt;
Example here&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Estimate diverse indices===&lt;br /&gt;
&lt;br /&gt;
Given that Sentinel-2 MSI comes with 3 red edge bands, it allows to estimate several other vegetation indices, aside from the most classic ones. There is a quite exhaustive list at the [http://www.sentinel-hub.com/eotaxonomy/indices?page=1 Sentinel Hub] website.&lt;br /&gt;
&lt;br /&gt;
* EVI = 2.5*(B08 - B04) / (B08 + 6*B04 - 7.5*B02 + 1) &amp;lt;!-- [http://www.sentinel-hub.com/eoproducts/evi-enhanced-vegetation-index-0] --&amp;gt;&lt;br /&gt;
* ARVI = (B08 - (2*B04 - B02)) / (B08 + (2*B04 - B02)) &amp;lt;!-- [http://www.sentinel-hub.com/eoproducts/arvi] --&amp;gt;&lt;br /&gt;
* NDII = (B08 - B11) / (B08 + B11) &amp;lt;!-- [http://www.sentinel-hub.com/eoproducts/ndii] --&amp;gt;&lt;br /&gt;
* MSI = B11 / B08 &amp;lt;!-- [http://www.sentinel-hub.com/eoproducts/msi] --&amp;gt;&lt;br /&gt;
* PSRI-NIR = (B04 - B02) / B08 &amp;lt;!-- [http://www.sentinel-hub.com/eoproducts/psri-nir-plant-senescence-reflectance-index-near-infra-red] --&amp;gt;&lt;br /&gt;
* NDVI-GREEN = B03 * (B08 - B04) / (B08 + B04) &amp;lt;!-- [http://www.sentinel-hub.com/eoproducts/ndvi-green-normalized-difference-vegetation-index-green] --&amp;gt;&lt;br /&gt;
* MTCI = (B06 - B05) / (B05 - B04) &amp;lt;!-- [http://www.sentinel-hub.com/eoproducts/mtci-meris-terrestrial-chlorophyll-index] --&amp;gt;&lt;br /&gt;
* IRECI = (B07 - B04) * B06 / B05 &amp;lt;!-- [http://www.sentinel-hub.com/eoproducts/ireci-inverted-red-edge-chlorophyll-index] --&amp;gt;&lt;br /&gt;
* GRVI1 = (B04 - B03) / (B04 + B03) &amp;lt;!-- [http://www.sentinel-hub.com/eoproducts/grvi1-green-red-vegetation-index] --&amp;gt;&lt;br /&gt;
* GNDVI = (B08 - B03) / (B08 + B03) &amp;lt;!-- [http://www.sentinel-hub.com/eoproducts/gndvi-green-normalized-difference-vegetation-index] --&amp;gt;&lt;br /&gt;
* EVI2 = 2.5 * (B08 - B04) / (B08 + 2.4 * B04 + 1) &amp;lt;!-- [http://www.sentinel-hub.com/eoproducts/evi2-enhanced-vegetation-index-2] --&amp;gt;&lt;br /&gt;
* ChlRE = B05 / B08 &amp;lt;!-- [http://www.sentinel-hub.com/eoproducts/chl-red-edge-chlorophyll-red-edge] --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Classification===&lt;br /&gt;
&lt;br /&gt;
Example here&lt;br /&gt;
&lt;br /&gt;
==Further reading==&lt;br /&gt;
IMAGICO.DE blog&lt;br /&gt;
* [http://blog.imagico.de/sentinel-2-having-a-first-look-at-the-data-part-1/ First look at Sentinel data]&lt;br /&gt;
* [http://blog.imagico.de/who-is-moving-the-cheese-again/ Who is moving the cheese again?]&lt;br /&gt;
&lt;br /&gt;
[[Category: Documentation]]&lt;br /&gt;
[[Category: Tutorial]]&lt;br /&gt;
[[Category: Image processing]]&lt;br /&gt;
[[Category: Sentinel]]&lt;/div&gt;</summary>
		<author><name>⚠️Sbl</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_GIS_Community_Sprint_Bonn_2018&amp;diff=24926</id>
		<title>GRASS GIS Community Sprint Bonn 2018</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_GIS_Community_Sprint_Bonn_2018&amp;diff=24926"/>
		<updated>2017-12-22T14:08:44Z</updated>

		<summary type="html">&lt;p&gt;⚠️Sbl: Add Stefan&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{toc|right}}&lt;br /&gt;
&lt;br /&gt;
The '''GRASS GIS community''' will join the general '''OSGeo Code Sprint''' at BaseCamp in Bonn, following the annual FOSSGIS conference (German Speaking OSGeo Local Chapter conference in Bonn, Germany)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[File:GRASS_GIS_Code_Sprint_2018.png|320px]] &lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Timing, Venue  ==&lt;br /&gt;
&lt;br /&gt;
OSGeo Code Sprint: '''March 18 - 25, 2018 at BaseCamp. Bonn, Germany'''.&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
Please check more info on the Bonn Code Sprint 2018 [https://wiki.osgeo.org/wiki/OSGeo_Code_Sprint_2018 here].&lt;br /&gt;
&lt;br /&gt;
We also welcome direct '''financial contributions''' to help reducing travelling and accommodation expenses for GRASS developers with far arrival If you are interested to sponsor the GRASS Community Sprint, please read about&lt;br /&gt;
&lt;br /&gt;
:::'''sponsoring the GRASS project''' at '''[http://grass.osgeo.org/donations http://grass.osgeo.org/donations]'''&lt;br /&gt;
&lt;br /&gt;
Note that it is also possible to &amp;lt;b&amp;gt;buy a round of beer for the developers with a quick click&amp;lt;/b&amp;gt; using the PayPal &amp;quot;Buy [pizza/beer/...] Now&amp;quot; button [[Image:Btn_donate_SM.gif|center|link=http://grass.osgeo.org/donations/]]&lt;br /&gt;
&lt;br /&gt;
For any questions, please contact [[User:Neteler|Markus Neteler]] &amp;lt;tt&amp;gt;&amp;lt;neteler at osgeo.org&amp;gt;&amp;lt;/tt&amp;gt;. Any surplus at the end of the event will be turned over to the GRASS GIS project.&lt;br /&gt;
&lt;br /&gt;
This GRASS GIS Community Sprint is a great occasion for you to support the development of GRASS. With your contribution you'll enable more developers to meet. The community sprint is an important opportunity for the GRASS developers to discuss and collaboratively resolve bugs, plan the direction for the project and work on new features. Please see below for the more detailed agenda. The developers and contributors are donating their valuable time, so it would be great if in-kind funding can be made available from within the community to cover out-of-pocket expenses. All of the work that takes place at the community sprint will be directly contributed back into the GRASS project to the benefit of everyone who uses it.&lt;br /&gt;
This Bonn event is especially interesting since '''important OSGeo projects come together'''!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Agenda - What we plan to do ==&lt;br /&gt;
&lt;br /&gt;
=== Move to GIT ===&lt;br /&gt;
* Choose among different options: OSGeo Git, Github, GitLab&lt;br /&gt;
* Participants are invited to study GIT in advance :-)&lt;br /&gt;
&lt;br /&gt;
== Planned participation ==&lt;br /&gt;
&lt;br /&gt;
For organizational reasons, please '''additionally register''' at: https://wiki.osgeo.org/wiki/OSGeo_Code_Sprint_2018#Participants  &amp;lt;&amp;lt;--- important!&lt;br /&gt;
&lt;br /&gt;
=== In person ===&lt;br /&gt;
&lt;br /&gt;
Please add your name here or contact [[User:Lucadelu|Luca Delucchi]] &amp;lt;tt&amp;gt;&amp;lt;lucadeluge at gmail com&amp;gt;&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;   border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#edf9c7; font-size:95%; empty-cells:show;&amp;quot; &lt;br /&gt;
|width=50px|'''No'''&lt;br /&gt;
|width=130px|'''Participant '''&lt;br /&gt;
|width=100px|'''Country'''&lt;br /&gt;
|width=100px|'''Arrival'''&lt;br /&gt;
|width=100px|'''Departure'''&lt;br /&gt;
|'''Topic'''&lt;br /&gt;
|width=75px|'''T-Shirt'''&lt;br /&gt;
|'''Notes'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Neteler|Markus Neteler]]&lt;br /&gt;
|Germany&lt;br /&gt;
|18.3.&lt;br /&gt;
|25.3.&lt;br /&gt;
|Migration to git discussion, GRASS GIS 8&lt;br /&gt;
|M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:Ychemin|Yann Chemin]]&lt;br /&gt;
|France&lt;br /&gt;
|18.3.&lt;br /&gt;
|25.3.&lt;br /&gt;
|ISIS-GRASS, Planetary projections, i.ortho.photo, bundle blocks, GRASS GIS 8&lt;br /&gt;
|XL&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|[[User:Landa|Martin Landa]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
|18.3.&lt;br /&gt;
|25.3.&lt;br /&gt;
|Migration to git discussion, website discussion, GRASS GIS 8&lt;br /&gt;
|L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Stefan Blumentrath&lt;br /&gt;
|Germany/Norway&lt;br /&gt;
|??.??.&lt;br /&gt;
|25.3.&lt;br /&gt;
|Flexible&lt;br /&gt;
|L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|... &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Via IRC chat ===&lt;br /&gt;
&lt;br /&gt;
(IRC is a nice archaic chat system, see [[IRC]])&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;   border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#edf9c7; font-size:95%; empty-cells:show;&amp;quot; &lt;br /&gt;
|width=50px|'''No'''&lt;br /&gt;
|width=130px|'''Participant '''&lt;br /&gt;
|width=100px|'''Country'''&lt;br /&gt;
|-&lt;br /&gt;
|Add&lt;br /&gt;
|your&lt;br /&gt;
|self..&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Individual Preparation ==&lt;br /&gt;
&lt;br /&gt;
* Bring your own computer&lt;br /&gt;
* Bring [http://en.wikipedia.org/wiki/Mains_electricity_by_country your power connector adapter] if needed (photo: [https://en.wikipedia.org/wiki/File:Schuko_plug_and_socket.png Germany]). See also http://www.power-plugs-sockets.com/&lt;br /&gt;
* Install subversion and the compiler tools, and come with a working GRASS development environment if possible.&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
We have to remember to take at least one group photo! :-)&lt;br /&gt;
&lt;br /&gt;
== Reports ==&lt;br /&gt;
&lt;br /&gt;
See [[Talk:GRASS_Community_Sprint_Bonn_2018]]&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* ''Is the GRASS Community Sprint just a coding event?''&lt;br /&gt;
** It is mainly a coding and documentation event. It is a working session for people who are already participants in the GRASS project and/or are committed to improving the GRASS project.&lt;br /&gt;
** On demand we can do some presentations of current working GRASS implementation and new upcoming features to spread the idea of Open Source GIS software&lt;br /&gt;
* ''Is the GRASS Community Sprint for developers only?''&lt;br /&gt;
** No: anybody can help, with testing, checking out bugs and fixes, documentation and more.&lt;br /&gt;
* ''Where can I get help and more information about the community sprint?''&lt;br /&gt;
** Contact [[User:Lucadelu|Luca Delucchi]] &amp;lt;tt&amp;gt;&amp;lt;lucadeluge at gmail com&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Workshops]]&lt;br /&gt;
[[Category: Code Sprint]]&lt;br /&gt;
[[Category: 2018]]&lt;/div&gt;</summary>
		<author><name>⚠️Sbl</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_Community_Sprint_Bonn_2016&amp;diff=23501</id>
		<title>Talk:GRASS Community Sprint Bonn 2016</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_Community_Sprint_Bonn_2016&amp;diff=23501"/>
		<updated>2016-09-05T19:59:05Z</updated>

		<summary type="html">&lt;p&gt;⚠️Sbl: Stefans report&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Thoughts and impressions from the GRASS GIS Community Sprint at FOSS4G 2016 ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Last week we had the pleasure to attend the International FOSS4G 2016 Conference in Bonn. But not only that... Both, before and after &lt;br /&gt;
the conference, &amp;quot;Code Sprints&amp;quot; took place. What is a '''&amp;quot;Code Sprint&amp;quot;'''? Basically, it is a group of free and open source developers who (fueled with beer, coffee and snacks/pizza/sandwiches) gather to develop new stuff, enhance existing tools, perform bug fixing, translate and write documentation, discuss and decide the way to go with the software they contribute to (essentially the software they love we would say, it all comes to that). Anyway, in this context, also GRASS GIS developers gathered in what we usually call the '''&amp;quot;Community Sprints&amp;quot;''', since it's not only a meeting of developers but also of users, and other contributors - everybody is welcome and their help appreciated.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
So, what did we do at these two sprints?  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Well, first of all, '''we had a great time!''' It is always a great joy to meet again (or in some cases even for the first time) with those people that use to answer your emails in the mailing list(s), fix or enhance modules, help in so many ways... One feels at home :-) &lt;br /&gt;
&lt;br /&gt;
But we also worked a lot! The most important is that '''the last GRASS GIS 6 version''' was released on Sunday at 1:00 am or so [https://grass.osgeo.org/news/58/15/GRASS-GIS-6-4-6-released]. Also several other issues were discussed and addressed, i.e.: the next minor release of 7.0.5 - planned for mid of September, and the new major release of GRASS GIS 7.2.0, which is planned for 1st of October 2016. Furthermore, the styling of a new Web site for the GRASS GIS project was lively discussed. Moreover, the participants fixed a number of bugs, backported numerous features, cleaned outdated tickets, and added some new features. Even a new add-on was developed in these days. Eventually also some tutorials explaining how to work with time series and Sentinel-2 satellite data got written up. Last but not least, a member of the community provided a new [https://trac.osgeo.org/grass/browser/grass-promo/grassflyer/flyer_2016 flyer] for GRASS GIS. Please help us translating, improving and distributing it! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Oh! And by Sunday evening, also the PSC election 2016 time was over, and we got a '''new PSC''' (See results [https://trac.osgeo.org/grass/wiki/PSC/Election2016 here])! Congratulations!!! For the first time, users that have contributed to GRASS GIS project were formally invited to vote... Isn't that great? Therefore, Community Sprints, '''Community Spirit''' ;-) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Join and en-joy GRASS GIS!'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[File:Grass community sprint 2016.png|thumb|center|1000px]]&lt;br /&gt;
&lt;br /&gt;
== Participants and Reports ==&lt;br /&gt;
&lt;br /&gt;
=== Moritz ===&lt;br /&gt;
* OBIA Toolchain&lt;br /&gt;
** Cleaned up r.object.geometry and moved it to addons {{rev|69187}} + {{rev|69188}}, {{AddonCmd|r.object.geometry}}&lt;br /&gt;
** Modified {{AddonCmd|i.segment.stats}} to user.object.geometry instead of v.to.db&lt;br /&gt;
** Improved error handling in i.segment.stats and use temporary files on disk to reduce memory use&lt;br /&gt;
** Modified {{AddonCmd|i.segment.uspo}} to also allow testing new mean shift algorithm (currently only available in sandbox) {{rev|69236}}&lt;br /&gt;
** Tested mean shift algorithm&lt;br /&gt;
* Working on 6.4.6 release&lt;br /&gt;
** General bug triaging&lt;br /&gt;
** Backported fix of {{trac|1444}} to release_64&lt;br /&gt;
** Backported fix of {{trac|2558}} to release_64&lt;br /&gt;
* Scratched an old itch and implement a flag in {{Cmd|g.region}} to allow shell style output in flat (one line) style {{rev|69240}}&lt;br /&gt;
&lt;br /&gt;
*[https://trac.osgeo.org/grass/timeline?from=Aug+23%2C+2016&amp;amp;daysback=2&amp;amp;authors=mlennert&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;sfp_email=&amp;amp;sfph_mail=&amp;amp;update=Update Log overview]&lt;br /&gt;
&lt;br /&gt;
=== Markus Neteler ===&lt;br /&gt;
* assist CRO in cleaning PSC election voter email addresses (400 addresses reduced to 240 clean addresses)&lt;br /&gt;
* minor pseudo-mercator discussions&lt;br /&gt;
* major datum shift file discussions with Even Rouault (GDAL) and fellow GRASS sprinters: libproj cleanup of local copies of NAD and datum shift files which are indeed used from GDAL; extended documentation in README.txt ({{trac|2456}}, {{rev|2456}})&lt;br /&gt;
* GRASS GIS 6.4.6 release management&lt;br /&gt;
** tagging, packaging source code, upload&lt;br /&gt;
** writing announcement together with Milena, Vero and Moritz: https://trac.osgeo.org/grass/wiki/Release/6.4.6-News&lt;br /&gt;
* checking backports together with Martin Landa for GRASS GIS 7.0.5 and for the planned GRASS GIS 7.2.0&lt;br /&gt;
* written draft Sentinel-2 processing script for Vero&lt;br /&gt;
* backports: {{rev|69265}}, etc&lt;br /&gt;
&lt;br /&gt;
=== Anna Petrasova ===&lt;br /&gt;
* {{rev|69199}}: major backport of Adam's GSoC work to 7.2. (please test!)&lt;br /&gt;
* fix {{trac|3133}}, {{trac|2252}}&lt;br /&gt;
&lt;br /&gt;
=== Martin Landa ===&lt;br /&gt;
&lt;br /&gt;
* Fix {{trac|2480}}, {{trac|2765}}&lt;br /&gt;
* Bug reports for 7.0.5 milestone reviewed, outdated tickets closed&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Aug+28%2C+2016&amp;amp;daysback=7&amp;amp;authors=martinl&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;sfp_email=&amp;amp;sfph_mail=&amp;amp;update=Update Log overview]&lt;br /&gt;
&lt;br /&gt;
=== Vero ===&lt;br /&gt;
&lt;br /&gt;
* Tutorials (to be published soon): &lt;br /&gt;
# R-GRASS integration for raster time series handling/processing.&lt;br /&gt;
# Sentinel-2 processing chain in GRASS with Markus' help.&lt;br /&gt;
* Discussed with Stefan about new add-on design and helped testing (See {{rev|69294}}).&lt;br /&gt;
* Helped testing new pymodis.&lt;br /&gt;
* Wrote draft of announcement for GRASS 6.4.6 release along with Milena, Moritz and Markus.&lt;br /&gt;
&lt;br /&gt;
=== Nikos ===&lt;br /&gt;
&lt;br /&gt;
===== Done =====&lt;br /&gt;
&lt;br /&gt;
* CRO related tasks&lt;br /&gt;
* Patched [https://trac.osgeo.org/grass/changeset/69012/grass/trunk/imagery/i.atcorr/create_iwave.py create_iwave.py], see {{trac|3027}} -- mentored by Moritz. &lt;br /&gt;
* Rewrote {{Cmd|i.rgb.his}} to allow for 16-bit input data -- need to test more though.&lt;br /&gt;
* Corrected erroneous function in {{AddonCmd|i.landsat8.swlst}} -- thanks to Stefan Blumentrath!&lt;br /&gt;
&lt;br /&gt;
===== On-Going =====&lt;br /&gt;
&lt;br /&gt;
* Rewrite: {{Cmd|i.his.rgb}}  -- see {{trac|774}}!&lt;br /&gt;
&lt;br /&gt;
===== Ideas =====&lt;br /&gt;
&lt;br /&gt;
* Scratching a new version for `create_iwave.py` -- vision: one Class to rule them all.&lt;br /&gt;
* Reviewing options to fuse {{Cmd|i.pansharpen}} with/into {{AddonCmd|i.fusion.hpf}}&lt;br /&gt;
&lt;br /&gt;
=== Luca Delucchi ===&lt;br /&gt;
&lt;br /&gt;
* working mostly in pyModis sorry&lt;br /&gt;
* fixed {{trac|2864}}&lt;br /&gt;
* started to update r.modis&lt;br /&gt;
* discussed about new website&lt;br /&gt;
* submit and work on the new flyer created by Vincent Bain (https://svn.osgeo.org/grass/grass-promo/grassflyer/flyer_2016/)&lt;br /&gt;
* Translated the flyer in Italian&lt;br /&gt;
&lt;br /&gt;
=== Stefan Blumentrath ===&lt;br /&gt;
&lt;br /&gt;
* wrote v.in.pygbif addon (https://svn.osgeo.org/grass/grass-addons/grass7/vector/v.in.pygbif) for downloading species occurrence data from GBIF using pygbif (with kind support from Lucca, Vero and Helmut)&lt;/div&gt;</summary>
		<author><name>⚠️Sbl</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Bonn_2016&amp;diff=23425</id>
		<title>GRASS Community Sprint Bonn 2016</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Bonn_2016&amp;diff=23425"/>
		<updated>2016-08-17T21:09:15Z</updated>

		<summary type="html">&lt;p&gt;⚠️Sbl: stefan to do&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{toc|right}}&lt;br /&gt;
During the [http://2016.foss4g.org/ FOSS4G 2016] , 21-28 August 2016, [http://en.wikipedia.org/wiki/Bonn Bonn], [https://en.wikipedia.org/wiki/Germany Germany], the GRASS GIS project will join the code sprint&lt;br /&gt;
&lt;br /&gt;
'''Important dates:'''&lt;br /&gt;
&lt;br /&gt;
* CodeSprint I: Sun 21.08.2016 12:00 - Tue 23.08.2016 (open end) (see also [http://2016.foss4g.org/programme.html#code-sprints here])&lt;br /&gt;
* [http://2016.foss4g.org/#page9 FOSS4G 2016 Schedule]&lt;br /&gt;
* CodeSprint II: Sat 27.08.2016 - Sun 28.08.2016 12:00 a.m (see also [http://2016.foss4g.org/programme.html#code-sprints here])&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
Get together of GRASS GIS project members to take decisions and tackle small and larger problems.&lt;br /&gt;
&lt;br /&gt;
For this meeting, we welcome people committed to improving the GRASS GIS project. This includes developers, documenters, bug reporters, translators, and users!&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
If you are interested to sponsor the GRASS Community Sprint, please read about&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; '''sponsoring the GRASS project at [http://grass.osgeo.org/donations/ http://grass.osgeo.org/donations/]'''&amp;lt;br&amp;gt;&lt;br /&gt;
and, if needed, contact [[User:Neteler|Markus Neteler]] &amp;lt;tt&amp;gt;&amp;lt;neteler at osgeo.org&amp;gt;&amp;lt;/tt&amp;gt;. Any surplus at the end of the event will be turned over to the GRASS GIS project.&lt;br /&gt;
&lt;br /&gt;
The GRASS Community Sprint is a great occasion for you to support the development of GRASS. With your contribution you'll enable more developers to meet in Bonn. The community sprint is an important opportunity for the GRASS developers to discuss and collaboratively resolve bugs, plan the direction for the project and work on new features. Please see below for the more detailed agenda. The developers and contributors are donating their valuable time, so it would be great if in-kind funding can be made available from within the community to cover out-of-pocket expenses. All of the work that takes place at the community sprint will be directly contributed back into the GRASS project to the benefit of everyone who uses it.&lt;br /&gt;
&lt;br /&gt;
=== Thanks to our sponsors ===&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
&lt;br /&gt;
* Bonn, Germany: http://www.basecamp-bonn.de - 7.12316E 50.70763N ([http://www.openstreetmap.org/way/44335958#map=18/50.70763/7.12316| OpenStreetMap])&lt;br /&gt;
&lt;br /&gt;
== Accommodation and Costs ==&lt;br /&gt;
&lt;br /&gt;
* to be defined&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
* https://en.wikipedia.org/wiki/Bonn#Climate&lt;br /&gt;
&lt;br /&gt;
== Agenda - What we plan to do ==&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The program is generally open for your ideas. Please edit this wiki page!&lt;br /&gt;
&lt;br /&gt;
=== More core developers with SVN write access ===&lt;br /&gt;
* Develop a strategy to refresh the group with core SVN write access&lt;br /&gt;
&lt;br /&gt;
=== Web site ===&lt;br /&gt;
* Migrate the good old CMSMS to Wordpress&lt;br /&gt;
&lt;br /&gt;
=== Promo ===&lt;br /&gt;
* Finalize the new GRASS GIS flyer prepared by Vincent Bain&lt;br /&gt;
** needed: catchy time series screenshot&lt;br /&gt;
&lt;br /&gt;
=== New Releases ===&lt;br /&gt;
Minor releases:&lt;br /&gt;
* Release GRASS GIS 6.4.6:&lt;br /&gt;
** Coordination is done here: http://trac.osgeo.org/grass/wiki/Grass6Planning&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/6.4.6-News&lt;br /&gt;
* Release GRASS GIS 7.0.5: &lt;br /&gt;
** Coordination is done here: https://trac.osgeo.org/grass/wiki/Grass7Planning#a7.0.5tobebackported&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/7.0.5-News&lt;br /&gt;
&lt;br /&gt;
'''Major release''':&lt;br /&gt;
* Release GRASS GIS 7.2.0: &lt;br /&gt;
** Coordination is done here: https://trac.osgeo.org/grass/wiki/Grass7Planning#a7.2.0&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/7.2.0-News&lt;br /&gt;
&lt;br /&gt;
=== Documentation and translation ===&lt;br /&gt;
* Add examples to manual pages&lt;br /&gt;
* Translation of messages&lt;br /&gt;
* Translation of Wiki pages&lt;br /&gt;
&lt;br /&gt;
=== Source code Quality Assessment ===&lt;br /&gt;
* integrate &amp;quot;coverity scan&amp;quot; with Travis, https://scan.coverity.com/travis_ci&lt;br /&gt;
* check &amp;quot;coverity scan&amp;quot;: copy-paste errors, https://scan.coverity.com/projects/1038&lt;br /&gt;
&lt;br /&gt;
=== Bug squashing ===&lt;br /&gt;
* Open bugs concerning GRASS 7: https://trac.osgeo.org/grass/report/19&lt;br /&gt;
* {{trac|2864}}: Add link to source code in the documentation pages (almost done, let's finish it!)&lt;br /&gt;
&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
* improve r.modis addons &lt;br /&gt;
* integrate Google Summer of Code projects (where adequate)&lt;br /&gt;
* continue working on OBIA toolchain:&lt;br /&gt;
** Testing of mean shift in i.segment&lt;br /&gt;
** Finalization of r.object.geometry and its integration into i.segment.uspo&lt;br /&gt;
* add R-batch files to OSGeo4W-winGRASS7 see [https://trac.osgeo.org/osgeo4w/ticket/413 osgeo4w/ticket 413]&lt;br /&gt;
* Implement an optional session &amp;quot;kickstart&amp;quot; in GRASS with LatLong predefined, then open import wizard | switch projection inside (like most other GIS do!)&lt;br /&gt;
&lt;br /&gt;
=== Better integration of git into development ===&lt;br /&gt;
* since github/gitlab/bitbucket etc are a valuable and recognized source of new source code, we should be able to receive such contributions easily&lt;br /&gt;
** OSGeo currently deploys a self-hosted &amp;quot;gitlab&amp;quot; repo: https://lists.osgeo.org/pipermail/sac/2016-August/007345.html&lt;br /&gt;
&lt;br /&gt;
... YOUR IDEA HERE ...&lt;br /&gt;
&lt;br /&gt;
== Participation ==&lt;br /&gt;
&lt;br /&gt;
For organizational reasons, please '''additionally register''' at: https://wiki.osgeo.org/wiki/FOSS4G_2016_Code_Sprint&lt;br /&gt;
&lt;br /&gt;
=== In person ===&lt;br /&gt;
&lt;br /&gt;
Please add your name here or contact [[User:Lucadelu|Luca Delucchi]] &amp;lt;tt&amp;gt;&amp;lt;lucadeluge at gmail com&amp;gt;&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;   border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#edf9c7; font-size:95%; empty-cells:show;&amp;quot; &lt;br /&gt;
|width=50px|'''No'''&lt;br /&gt;
|width=130px|'''Participant '''&lt;br /&gt;
|width=100px|'''Country'''&lt;br /&gt;
|width=100px|'''Arrival'''&lt;br /&gt;
|width=100px|'''Departure'''&lt;br /&gt;
|'''Topic'''&lt;br /&gt;
|width=75px|'''T-Shirt'''&lt;br /&gt;
|'''Notes'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Lucadelu|Luca Delucchi]]&lt;br /&gt;
|Italy&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| &lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:Landa|Martin Landa]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| &lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|[[User:Neteler|Markus Neteler]]&lt;br /&gt;
|Italy&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| Releases, project coordination, bug hunting, getting more ppl involved&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|[[User:NikosA|Nikos Alexandris]]&lt;br /&gt;
|Switzerland&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| &lt;br /&gt;
| S or M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[User:Veroandreo|Veronica Andreo]]&lt;br /&gt;
|Argentina&lt;br /&gt;
| August 26&lt;br /&gt;
| August 28&lt;br /&gt;
|&lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|[[User:mlennert|Moritz Lennert]]&lt;br /&gt;
|Belgium&lt;br /&gt;
| August 21&lt;br /&gt;
| August 27&lt;br /&gt;
|&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|[[User:sbl|Stefan Blumentrath]]&lt;br /&gt;
|Norway&lt;br /&gt;
| August 26&lt;br /&gt;
| August 28&lt;br /&gt;
| Port some Addons to python? (or whatever you put me up to)&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|[[User:MilenaN|Milena Nowotarska]]&lt;br /&gt;
|Poland&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
|&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|[[User:annazanchetta|Anna Zanchetta]]&lt;br /&gt;
|Italy - Israel&lt;br /&gt;
| August 22&lt;br /&gt;
| August 27&lt;br /&gt;
| Implementing and improving some imagery modules, inshallah&lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Via IRC chat ===&lt;br /&gt;
&lt;br /&gt;
(IRC is a nice archaic chat system, see [[IRC]])&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;   border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#edf9c7; font-size:95%; empty-cells:show;&amp;quot; &lt;br /&gt;
|width=50px|'''No'''&lt;br /&gt;
|width=130px|'''Participant '''&lt;br /&gt;
|width=100px|'''Country'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Ychemin|Yann Chemin]]&lt;br /&gt;
|France&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:hellik|Helmut Kudrnovsky]]&lt;br /&gt;
|Austria &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Individual Preparation ==&lt;br /&gt;
&lt;br /&gt;
* Bring your own computer&lt;br /&gt;
* Bring [http://en.wikipedia.org/wiki/Mains_electricity_by_country your power connector adapter] if needed (photo: [https://en.wikipedia.org/wiki/File:Schuko_plug_and_socket.png Germany]). See also http://www.power-plugs-sockets.com/&lt;br /&gt;
* Install subversion and the compiler tools, and come with a working GRASS development environment if possible.&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
We have to remember to take at least one group photo! :-) &lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* ''Is the GRASS Community Sprint just a coding event?''&lt;br /&gt;
** It is mainly a coding and documentation event. It is a working session for people who are already participants in the GRASS project and/or are committed to improving the GRASS project.&lt;br /&gt;
** On demand we can do some presentations of current working GRASS implementation and new upcoming features to spread the idea of Open Source GIS software&lt;br /&gt;
* ''Is the GRASS Community Sprint for developers only?''&lt;br /&gt;
** No: anybody can help, with testing, checking out bugs and fixes, documentation and more.&lt;br /&gt;
* ''Where can I get help and more information about the community sprint?''&lt;br /&gt;
** Contact [[User:Lucadelu|Luca Delucchi]] &amp;lt;tt&amp;gt;&amp;lt;lucadeluge at gmail com&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Workshops]]&lt;br /&gt;
[[Category: Code Sprint]]&lt;br /&gt;
[[Category: 2016]]&lt;/div&gt;</summary>
		<author><name>⚠️Sbl</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Bonn_2016&amp;diff=23405</id>
		<title>GRASS Community Sprint Bonn 2016</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Bonn_2016&amp;diff=23405"/>
		<updated>2016-08-16T13:16:00Z</updated>

		<summary type="html">&lt;p&gt;⚠️Sbl: /* Sponsors */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{toc|right}}&lt;br /&gt;
During the [http://2016.foss4g.org/ FOSS4G 2016] , 21-28 August 2016, [http://en.wikipedia.org/wiki/Bonn Bonn], [https://en.wikipedia.org/wiki/Germany Germany], the GRASS GIS project will join the code sprint&lt;br /&gt;
&lt;br /&gt;
'''Important dates:'''&lt;br /&gt;
&lt;br /&gt;
* CodeSprint I: Sun 21.08.2016 12:00 - Tue 23.08.2016 (open end)&lt;br /&gt;
* [http://2016.foss4g.org/#page9 FOSS4G 2016 Schedule]&lt;br /&gt;
* CodeSprint II: Sat 27.08.2016 - Sun 28.08.2016 12:00 a.m&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
Get together of GRASS GIS project members to take decisions and tackle small and larger problems.&lt;br /&gt;
&lt;br /&gt;
For this meeting, we welcome people committed to improving the GRASS GIS project. This includes developers, documenters, bug reporters, translators, and users!&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
If you are interested to sponsor the GRASS Community Sprint, please read about&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; '''sponsoring the GRASS project at [http://grass.osgeo.org/donations/ http://grass.osgeo.org/donations/]'''&amp;lt;br&amp;gt;&lt;br /&gt;
and, if needed, contact [[User:Neteler|Markus Neteler]] &amp;lt;tt&amp;gt;&amp;lt;neteler at osgeo.org&amp;gt;&amp;lt;/tt&amp;gt;. Any surplus at the end of the event will be turned over to the GRASS GIS project.&lt;br /&gt;
&lt;br /&gt;
The GRASS Community Sprint is a great occasion for you to support the development of GRASS. With your contribution you'll enable more developers to meet in Bonn. The community sprint is an important opportunity for the GRASS developers to discuss and collaboratively resolve bugs, plan the direction for the project and work on new features. Please see below for the more detailed agenda. The developers and contributors are donating their valuable time, so it would be great if in-kind funding can be made available from within the community to cover out-of-pocket expenses. All of the work that takes place at the community sprint will be directly contributed back into the GRASS project to the benefit of everyone who uses it.&lt;br /&gt;
&lt;br /&gt;
=== Thanks to our sponsors ===&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
&lt;br /&gt;
* Bonn, Germany: http://www.basecamp-bonn.de&lt;br /&gt;
&lt;br /&gt;
== Accommodation and Costs ==&lt;br /&gt;
&lt;br /&gt;
* to be defined&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
* https://en.wikipedia.org/wiki/Bonn#Climate&lt;br /&gt;
&lt;br /&gt;
== Agenda - What we plan to do ==&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The program is generally open for your ideas. Please edit this wiki page!&lt;br /&gt;
&lt;br /&gt;
=== Web site ===&lt;br /&gt;
* Migrate the good old CMSMS to Wordpress&lt;br /&gt;
&lt;br /&gt;
=== Promo ===&lt;br /&gt;
* Finalize the new GRASS GIS flyer prepared by Vincent Bain&lt;br /&gt;
** needed: catchy time series screenshot&lt;br /&gt;
&lt;br /&gt;
=== New Releases ===&lt;br /&gt;
Minor releases:&lt;br /&gt;
* Release GRASS GIS 6.4.6:&lt;br /&gt;
** Coordination is done here: http://trac.osgeo.org/grass/wiki/Grass6Planning&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/6.4.6-News&lt;br /&gt;
* Release GRASS GIS 7.0.5: &lt;br /&gt;
** Coordination is done here: https://trac.osgeo.org/grass/wiki/Grass7Planning#a7.0.5tobebackported&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/7.0.5-News&lt;br /&gt;
&lt;br /&gt;
'''Major release''':&lt;br /&gt;
* Release GRASS GIS 7.2.0: &lt;br /&gt;
** Coordination is done here: https://trac.osgeo.org/grass/wiki/Grass7Planning#a7.2.0&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/7.2.0-News&lt;br /&gt;
&lt;br /&gt;
=== Documentation and translation ===&lt;br /&gt;
* Add examples to manual pages&lt;br /&gt;
* Translation of messages&lt;br /&gt;
* Translation of Wiki pages&lt;br /&gt;
&lt;br /&gt;
=== Bug squashing ===&lt;br /&gt;
* Open bugs concerning GRASS 7: https://trac.osgeo.org/grass/report/19&lt;br /&gt;
* {{trac|2864}}: Add link to source code in the documentation pages (almost done, let's finish it!)&lt;br /&gt;
&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
* improve r.modis addons &lt;br /&gt;
* integrate Google Summer of Code projects (where adequate)&lt;br /&gt;
* continue working on OBIA toolchain:&lt;br /&gt;
** Testing of mean shift in i.segment&lt;br /&gt;
** Finalization of r.object.geometry and its integration into i.segment.uspo&lt;br /&gt;
&lt;br /&gt;
=== Better integration of git into development ===&lt;br /&gt;
* since github/gitlab/bitbucket etc are a valuable and recognized source of new source code, we should be able to receive such contributions easily&lt;br /&gt;
&lt;br /&gt;
... YOUR IDEA HERE ...&lt;br /&gt;
&lt;br /&gt;
== Participation ==&lt;br /&gt;
&lt;br /&gt;
For organizational reasons, please '''additionally register''' at: https://wiki.osgeo.org/wiki/FOSS4G_2016_Code_Sprint&lt;br /&gt;
&lt;br /&gt;
=== In person ===&lt;br /&gt;
&lt;br /&gt;
Please add your name here or contact [[User:Lucadelu|Luca Delucchi]] &amp;lt;tt&amp;gt;&amp;lt;lucadeluge at gmail com&amp;gt;&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;   border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#edf9c7; font-size:95%; empty-cells:show;&amp;quot; &lt;br /&gt;
|width=50px|'''No'''&lt;br /&gt;
|width=130px|'''Participant '''&lt;br /&gt;
|width=100px|'''Country'''&lt;br /&gt;
|width=100px|'''Arrival'''&lt;br /&gt;
|width=100px|'''Departure'''&lt;br /&gt;
|'''Topic'''&lt;br /&gt;
|width=75px|'''T-Shirt'''&lt;br /&gt;
|'''Notes'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Lucadelu|Luca Delucchi]]&lt;br /&gt;
|Italy&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| &lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:Landa|Martin Landa]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| &lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|[[User:Neteler|Markus Neteler]]&lt;br /&gt;
|Italy&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| Releases, project coordination, bug hunting, getting more ppl involved&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|[[User:NikosA|Nikos Alexandris]]&lt;br /&gt;
|Switzerland&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| &lt;br /&gt;
| S or M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[User:Veroandreo|Veronica Andreo]]&lt;br /&gt;
|Argentina&lt;br /&gt;
| August 26&lt;br /&gt;
| August 28&lt;br /&gt;
|&lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|[[User:mlennert|Moritz Lennert]]&lt;br /&gt;
|Belgium&lt;br /&gt;
| August 21&lt;br /&gt;
| August 27&lt;br /&gt;
|&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|[[User:sbl|Stefan Blumentrath]]&lt;br /&gt;
|Norway&lt;br /&gt;
| August 26&lt;br /&gt;
| August 28&lt;br /&gt;
|&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Via IRC chat ===&lt;br /&gt;
&lt;br /&gt;
(IRC is a nice archaic chat system, see [[IRC]])&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;   border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#edf9c7; font-size:95%; empty-cells:show;&amp;quot; &lt;br /&gt;
|width=50px|'''No'''&lt;br /&gt;
|width=130px|'''Participant '''&lt;br /&gt;
|width=100px|'''Country'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Ychemin|Yann Chemin]]&lt;br /&gt;
|France&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Individual Preparation ==&lt;br /&gt;
&lt;br /&gt;
* Bring your own computer&lt;br /&gt;
* Bring [http://en.wikipedia.org/wiki/Mains_electricity_by_country your power connector adapter] if needed ([https://en.wikipedia.org/wiki/File:Schuko_plug_and_socket.png Germany])&lt;br /&gt;
* Install subversion and the compiler tools, and come with a working GRASS development environment if possible.&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
We have to remember to take at least one group photo! :-) &lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* ''Is the GRASS Community Sprint just a coding event?''&lt;br /&gt;
** It is mainly a coding and documentation event. It is a working session for people who are already participants in the GRASS project and/or are committed to improving the GRASS project.&lt;br /&gt;
** On demand we can do some presentations of current working GRASS implementation and new upcoming features to spread the idea of Open Source GIS software&lt;br /&gt;
* ''Is the GRASS Community Sprint for developers only?''&lt;br /&gt;
** No: anybody can help, with testing, checking out bugs and fixes, documentation and more.&lt;br /&gt;
* ''Where can I get help and more information about the community sprint?''&lt;br /&gt;
** Contact [[User:Lucadelu|Luca Delucchi]] &amp;lt;tt&amp;gt;&amp;lt;lucadeluge at gmail com&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Workshops]]&lt;br /&gt;
[[Category: Code Sprint]]&lt;br /&gt;
[[Category: 2016]]&lt;/div&gt;</summary>
		<author><name>⚠️Sbl</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Bonn_2016&amp;diff=23398</id>
		<title>GRASS Community Sprint Bonn 2016</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Bonn_2016&amp;diff=23398"/>
		<updated>2016-08-16T08:52:45Z</updated>

		<summary type="html">&lt;p&gt;⚠️Sbl: I am inn&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{toc|right}}&lt;br /&gt;
During the [http://2016.foss4g.org/ FOSS4G 2016] , 21-28 August 2016, [http://en.wikipedia.org/wiki/Bonn Bonn], [https://en.wikipedia.org/wiki/Germany Germany], the GRASS GIS project will join the code sprint&lt;br /&gt;
&lt;br /&gt;
'''Important dates:'''&lt;br /&gt;
&lt;br /&gt;
* CodeSprint I: Sun 21.08.2016 12:00 - Tue 23.08.2016 (open end)&lt;br /&gt;
* [http://2016.foss4g.org/#page9 FOSS4G 2016 Schedule]&lt;br /&gt;
* CodeSprint II: Sat 27.08.2016 - Sun 28.08.2016 12:00 a.m&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
Get together of GRASS GIS project members to take decisions and tackle small and larger problems.&lt;br /&gt;
&lt;br /&gt;
For this meeting, we welcome people committed to improving the GRASS GIS project. This includes developers, documenters, bug reporters, translators, and users!&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
If you are interested to sponsor the GRASS Community Sprint, please read about&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; '''sponsoring the GRASS project at [http://grass.osgeo.org/donations/ http://grass.osgeo.org/donations/]'''&amp;lt;br&amp;gt;&lt;br /&gt;
and, if needed, contact [[User:Neteler|Markus Neteler]] &amp;lt;tt&amp;gt;&amp;lt;neteler at osgeo.org&amp;gt;&amp;lt;/tt&amp;gt;. Any surplus at the end of the event will be turned over to the GRASS GIS project.&lt;br /&gt;
&lt;br /&gt;
The GRASS Community Sprint is a great occasion for you to support the development of GRASS. With your contribution you'll enable more developers to meet in Prague. The community sprint is an important opportunity for the GRASS developers to discuss and collaboratively resolve bugs, plan the direction for the project and work on new features. Please see below for the more detailed agenda. The developers and contributors are donating their valuable time, so it would be great if in-kind funding can be made available from within the community to cover out-of-pocket expenses. All of the work that takes place at the community sprint will be directly contributed back into the GRASS project to the benefit of everyone who uses it.&lt;br /&gt;
&lt;br /&gt;
=== Thanks to our sponsors ===&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
&lt;br /&gt;
* Bonn, Germany: http://www.basecamp-bonn.de&lt;br /&gt;
&lt;br /&gt;
== Accommodation and Costs ==&lt;br /&gt;
&lt;br /&gt;
* to be defined&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
* https://en.wikipedia.org/wiki/Bonn#Climate&lt;br /&gt;
&lt;br /&gt;
== Agenda - What we plan to do ==&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The program is generally open for your ideas. Please edit this wiki page!&lt;br /&gt;
&lt;br /&gt;
=== Web site ===&lt;br /&gt;
* Migrate the good old CMSMS to Wordpress&lt;br /&gt;
&lt;br /&gt;
=== New Releases ===&lt;br /&gt;
Minor releases:&lt;br /&gt;
* Release GRASS GIS 6.4.6:&lt;br /&gt;
** Coordination is done here: http://trac.osgeo.org/grass/wiki/Grass6Planning&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/6.4.6-News&lt;br /&gt;
* Release GRASS GIS 7.0.5: &lt;br /&gt;
** Coordination is done here: https://trac.osgeo.org/grass/wiki/Grass7Planning#a7.0.5tobebackported&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/7.0.5-News&lt;br /&gt;
&lt;br /&gt;
'''Major release''':&lt;br /&gt;
* Release GRASS GIS 7.2.0: &lt;br /&gt;
** Coordination is done here: https://trac.osgeo.org/grass/wiki/Grass7Planning#a7.2.0&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/7.2.0-News&lt;br /&gt;
&lt;br /&gt;
=== Documentation and translation ===&lt;br /&gt;
* Add examples to manual pages&lt;br /&gt;
* Translation of messages&lt;br /&gt;
* Translation of Wiki pages&lt;br /&gt;
&lt;br /&gt;
=== Bug squashing ===&lt;br /&gt;
* Open bugs concerning GRASS 7: https://trac.osgeo.org/grass/report/19&lt;br /&gt;
* {{trac|2864}}: Add link to source code in the documentation pages (almost done, let's finish it!)&lt;br /&gt;
&lt;br /&gt;
=== Improvement ===&lt;br /&gt;
* improve r.modis addons &lt;br /&gt;
* integrate Google Summer of Code projects (where adequate)&lt;br /&gt;
* continue working on OBIA toolchain:&lt;br /&gt;
** Testing of mean shift in i.segment&lt;br /&gt;
** Finalization of r.object.geometry and its integration into i.segment.uspo&lt;br /&gt;
&lt;br /&gt;
... YOUR IDEA HERE ...&lt;br /&gt;
&lt;br /&gt;
== Participation ==&lt;br /&gt;
&lt;br /&gt;
For organizational reasons, please '''additionally register''' at: https://wiki.osgeo.org/wiki/FOSS4G_2016_Code_Sprint&lt;br /&gt;
&lt;br /&gt;
=== In person ===&lt;br /&gt;
&lt;br /&gt;
Please add your name here or contact [[User:Lucadelu|Luca Delucchi]] &amp;lt;tt&amp;gt;&amp;lt;lucadeluge at gmail com&amp;gt;&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;   border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#edf9c7; font-size:95%; empty-cells:show;&amp;quot; &lt;br /&gt;
|width=50px|'''No'''&lt;br /&gt;
|width=130px|'''Participant '''&lt;br /&gt;
|width=100px|'''Country'''&lt;br /&gt;
|width=100px|'''Arrival'''&lt;br /&gt;
|width=100px|'''Departure'''&lt;br /&gt;
|'''Topic'''&lt;br /&gt;
|width=75px|'''T-Shirt'''&lt;br /&gt;
|'''Notes'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Lucadelu|Luca Delucchi]]&lt;br /&gt;
|Italy&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| &lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:Landa|Martin Landa]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| &lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|[[User:Neteler|Markus Neteler]]&lt;br /&gt;
|Italy&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| &lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|[[User:NikosA|Nikos Alexandris]]&lt;br /&gt;
|Switzerland&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| &lt;br /&gt;
| S or M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[User:Veroandreo|Veronica Andreo]]&lt;br /&gt;
|Argentina&lt;br /&gt;
| August 26&lt;br /&gt;
| August 28&lt;br /&gt;
|&lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|[[User:mlennert|Moritz Lennert]]&lt;br /&gt;
|Belgium&lt;br /&gt;
| August 21&lt;br /&gt;
| August 27&lt;br /&gt;
|&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|[[User:sbl|Stefan Blumentrath]]&lt;br /&gt;
|Norway&lt;br /&gt;
| August 26&lt;br /&gt;
| August 28&lt;br /&gt;
|&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Via IRC chat ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;   border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#edf9c7; font-size:95%; empty-cells:show;&amp;quot; &lt;br /&gt;
|width=50px|'''No'''&lt;br /&gt;
|width=130px|'''Participant '''&lt;br /&gt;
|width=100px|'''Country'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Ychemin|Yann Chemin]]&lt;br /&gt;
|France&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Individual Preparation ==&lt;br /&gt;
&lt;br /&gt;
* Bring your own computer&lt;br /&gt;
* Bring [http://en.wikipedia.org/wiki/Mains_electricity_by_country your power connector adapter] if needed ([https://en.wikipedia.org/wiki/File:Schuko_plug_and_socket.png Germany])&lt;br /&gt;
* Install subversion and the compiler tools, and come with a working GRASS development environment if possible.&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
We have to remember to take at least one group photo! :-) &lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* ''Is the GRASS Community Sprint just a coding event?''&lt;br /&gt;
** It is mainly a coding and documentation event. It is a working session for people who are already participants in the GRASS project and/or are committed to improving the GRASS project.&lt;br /&gt;
** On demand we can do some presentations of current working GRASS implementation and new upcoming features to spread the idea of Open Source GIS software&lt;br /&gt;
* ''Is the GRASS Community Sprint for developers only?''&lt;br /&gt;
** No: anybody can help, with testing, checking out bugs and fixes, documentation and more.&lt;br /&gt;
* ''Where can I get help and more information about the community sprint?''&lt;br /&gt;
** Contact [[User:Lucadelu|Luca Delucchi]] &amp;lt;tt&amp;gt;&amp;lt;lucadeluge at gmail com&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Workshops]]&lt;br /&gt;
[[Category: Code Sprint]]&lt;br /&gt;
[[Category: 2016]]&lt;/div&gt;</summary>
		<author><name>⚠️Sbl</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=LANDSAT&amp;diff=23104</id>
		<title>LANDSAT</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=LANDSAT&amp;diff=23104"/>
		<updated>2016-05-22T19:35:14Z</updated>

		<summary type="html">&lt;p&gt;⚠️Sbl: Added new modules&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Data Availability==&lt;br /&gt;
&lt;br /&gt;
Landsat imagery can be obtained from [http://landsat.usgs.gov/ USGS' LANDSAT archive]:&lt;br /&gt;
&lt;br /&gt;
* [http://glovis.usgs.gov USGS GloVis]&lt;br /&gt;
* [http://earthexplorer.usgs.gov/ EarthExplorer]&lt;br /&gt;
* [http://earthexplorer.usgs.gov/bulk/help Bulk Download Orders] using the [http://earthexplorer.usgs.gov/bulk/ Bulk Download Application]&lt;br /&gt;
* [http://landsatlook.usgs.gov/ LandsatLook Viewer]&lt;br /&gt;
&lt;br /&gt;
See also the [[Global datasets]] wiki page&lt;br /&gt;
&lt;br /&gt;
On 06/12/13, USGS [http://landsat.usgs.gov/about_LU_Vol_7_Issue_4.php announced] the availability of [http://landsat.usgs.gov/landsat8.php LANDSAT 8]. See also [http://landsat.usgs.gov/band_designations_landsat_satellites.php this page].&lt;br /&gt;
&lt;br /&gt;
== Modules overview ==&lt;br /&gt;
&lt;br /&gt;
GRASS GIS features a complete set of native modules and various add-ons for pre- and post-processing Landsat satellite imagery. The following lists offer an overview of related modules and add-ons.&lt;br /&gt;
&lt;br /&gt;
=== Generic modules applicable to Landsat ===&lt;br /&gt;
&lt;br /&gt;
* {{cmd|d.rgb}} → display 3-band data&lt;br /&gt;
* {{cmd|r.composite}} → flatten 3-bands of data into a single image (lossy, maybe used in combination with {{cmd|i.landsat.rgb|version=64}} (GRASS 6.x) | {{cmd|i.colors.enhance|version=70}} (GRASS 7.x)&lt;br /&gt;
* {{cmd|i.atcorr}} → correct top of atmosphere to surface reflectance - see also the [[Atmospheric correction]] wiki page&lt;br /&gt;
* {{cmd|i.topo.corr}} → used to topographically correct reflectance from imagery files, e.g. obtained with {{cmd|i.landsat.toar}}, using a sun illumination terrain model&lt;br /&gt;
* {{cmd|i.oif}} → calculate the 3 bands showing the greatest difference (for use as R,G,B bands)&lt;br /&gt;
* {{AddonCmd|i.histo.match}} (addon) → histogram matching of two or more raster maps (in grass 7) ''Note, the module works with integer values and does not accept the &amp;quot;.&amp;quot; character as part of the raster map's name!''&lt;br /&gt;
&lt;br /&gt;
=== Landsat specific modules ===&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.landsat.rgb|version=64}} (GRASS 6.x) | {{cmd|i.colors.enhance|version=70}} (GRASS 7.x) → auto-enhance colors&lt;br /&gt;
* {{cmd|i.landsat.toar}} → convert DN to top of atmosphere radiance&lt;br /&gt;
* {{cmd|i.landsat.acca}} → cloud cover assessment&lt;br /&gt;
* {{cmd|i.tasscap}} → Performs Tasseled Cap (Kauth Thomas) transformation&lt;br /&gt;
&lt;br /&gt;
=== Landsat specific GRASS AddOns ===&lt;br /&gt;
&lt;br /&gt;
* {{AddonCmd|i.landsat.trim|version=64}} → trims border fringes for each band separately or with the MASK where coverage exists for all bands&lt;br /&gt;
* {{AddonCmd|i.landsat.dehaze|version=64}} → haze removal&lt;br /&gt;
* {{AddonCmd|i.landsat8.qc|version=70}} → Reclass Landsat8 QA band according to acceptable pixel quality as defined by the user&lt;br /&gt;
* {{AddonCmd|i.landsat8.swlst|version=70}} → Practical split-window algorithm estimating Land Surface Temperature from Landsat 8 OLI/TIRS imagery &lt;br /&gt;
* {{AddonCmd|i.wi|version=70}} → Calculate different water indices &lt;br /&gt;
&lt;br /&gt;
== Pre-Processing ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
Typically, pre-processing Landsat imagery comprises the following steps:&lt;br /&gt;
&lt;br /&gt;
# '''import''' in the database → {{cmd|r.in.gdal}}&lt;br /&gt;
# geometrically &amp;amp; orthometrically correct imagery&lt;br /&gt;
#* already done for L1T products, read more at [http://landsat.usgs.gov//Landsat_Processing_Details.php USGS' Landsat Information Products] webpage&lt;br /&gt;
# optionally, automatically '''cut-off border fringes''' → {{AddonCmd|i.landsat.trim|version=64}}&lt;br /&gt;
#* of course one can use the official WRS2 Path/Row vector tiles to manually trim border fringes&lt;br /&gt;
# optionally, '''denoise''' for obvious/intensive salt &amp;amp; pepper effects, stripes, etc.&lt;br /&gt;
#* for example by applying Principal Components Analysis as a denoising technique → {{cmd|i.pca}} ''&amp;lt;&amp;lt;&amp;lt; Re-order this step?''&lt;br /&gt;
# '''convert''' the '''Digital Numbers''' (DNs) to '''Top-of-Atmosphere Radiances/Reflectances''' (ToARs) → {{cmd|i.landsat.toar}}&lt;br /&gt;
# optionally, '''correct for atmospheric effects''' → {{cmd|i.atcorr}}&lt;br /&gt;
#* that is, accounting for distorting atmospheric effects and estimating actual reflectances as they would have been measured on the ground&lt;br /&gt;
#* also described as conversion to Top-of-Canopy Reflectances (ToCRs)&lt;br /&gt;
# '''assessing cloud cover''' → {{cmd|i.landsat.acca}}&lt;br /&gt;
#* optionally, detect and remove clouds shadows as well&lt;br /&gt;
# '''topographically normalise''' imagery → {{cmd|i.topo.corr}}&lt;br /&gt;
#* also known as topographic correction, that is, accounting for illumination differences due to the acquisition's geometry&lt;br /&gt;
# '''radiometrically normalise''' → one approach via {{AddonCmd|i.histo.match}} (in '''grass 7''', addon), also known as relative radiometric normalisation -- one approach is the ''histogram matching'' technique of two or more raster maps&lt;br /&gt;
#* '''ToDo/More techniques?'''&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
* [http://courses.neteler.org/processing-landsat8-data-in-grass-gis-7/ Processing Landsat 8 data in GRASS GIS 7: Import and visualization]&lt;br /&gt;
&lt;br /&gt;
=== Importing data ===&lt;br /&gt;
&lt;br /&gt;
Importing Landsat spectral bands in GRASS GIS' data base can be done both from the Graphical User Interface or from the command line&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Open GRASS GIS, select ''Location Wizard'' in order to create a new location from georeferenced file&lt;br /&gt;
# Use the ''Import file tool'', or the {{cmd|r.in.gdal}} module, to import the GeoTIFF files into GRASS GIS.&lt;br /&gt;
&lt;br /&gt;
See also [http://grasswiki.osgeo.org/wiki/LANDSAT#Automated_data_import Automated data import] below.&lt;br /&gt;
&lt;br /&gt;
==== Notes ====&lt;br /&gt;
&lt;br /&gt;
# Most Landsat scenes are delivered in ''north-is-up'' orientation, hence the import process is straightforward.&lt;br /&gt;
# If you get &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;ERROR: Input map is rotated - cannot import.&amp;lt;/source&amp;gt;, the image must be first rotated externally, applying the rotation info stored in the metadata field of the raster image file. For example, the &amp;lt;code&amp;gt;gdalwarp&amp;lt;/code&amp;gt; software can be used to transform the map to North-up (note, there are several &amp;lt;code&amp;gt;gdalwarp&amp;lt;/code&amp;gt; parameters to select the resampling algorithm):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
  gdalwarp rotated.tif northup.tif&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Hint: Minimal disk space copies ====&lt;br /&gt;
&lt;br /&gt;
Here's a little trick using {{cmd|r.reclass}} to rename maps (for example, from ''L71074092_09220040924_B'''10''''' to ''L71074092_09220040924_B'''1''''') without touching the data or wasting disk space:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
BASE=L71074092_09220040924&lt;br /&gt;
&lt;br /&gt;
for BAND in 10 20 30 40 50 61 70 80; do&lt;br /&gt;
  BAND1st=`echo $BAND | sed -e 's/0$//'`&lt;br /&gt;
  r.reclass in=&amp;quot;${BASE}_B$BAND&amp;quot; out=$BASE.$BAND1st &amp;lt;&amp;lt; EOF&lt;br /&gt;
    * = *&lt;br /&gt;
EOF&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Automated data import ====&lt;br /&gt;
&lt;br /&gt;
The following ''Python'' script imports Landsat imagery into GRASS' data base. Specifically, the script&lt;br /&gt;
&lt;br /&gt;
* creates an independent Mapset for each Landsat scene&lt;br /&gt;
* imports and renames bands of a scene as &amp;lt;tt&amp;gt;B&amp;lt;id&amp;gt;&amp;lt;/tt&amp;gt;, e.g. B10, B20, ..., B80.&lt;br /&gt;
* additionaly sets up the timestamp based on MTL metadata file&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note,''' the (newest) official naming pattern for Landsat scenes -- explained in [https://lta.cr.usgs.gov/landsat_dictionary.html USGS' Landsat Data Dictionary] as the [https://lta.cr.usgs.gov/landsat_dictionary.html#entity_id Landsat Scene Identifier] -- and all individual bands that compose a scene -- bands have a suffix which is like _B10, _B20, _B30, etc. -- differ from what some Landsat specific modules expect. For example, the modules {{cmd|i.landsat.toar}} and {{cmd|i.landsat.acca}} expect the bands to follow a naming pattern such as &amp;quot;scenename.1, .2, .3&amp;quot;, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To use the script save it as &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;import_landsat.py&amp;lt;/source&amp;gt; file and make sure it is granted the execution permission.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
 &lt;br /&gt;
import os&lt;br /&gt;
import sys&lt;br /&gt;
import glob&lt;br /&gt;
import grass.script as grass&lt;br /&gt;
 &lt;br /&gt;
def get_timestamp(mapset):&lt;br /&gt;
    try:&lt;br /&gt;
        metafile = glob.glob(mapset + '/*MTL.txt')[0]&lt;br /&gt;
    except IndexError:&lt;br /&gt;
        return&lt;br /&gt;
 &lt;br /&gt;
    result = dict()&lt;br /&gt;
    try:&lt;br /&gt;
        fd = open(metafile)&lt;br /&gt;
        for line in fd.readlines():&lt;br /&gt;
            line = line.rstrip('\n')&lt;br /&gt;
            if len(line) == 0:&lt;br /&gt;
                continue&lt;br /&gt;
            if any(x in line for x in ('DATE_ACQUIRED', 'ACQUISITION_DATE')):&lt;br /&gt;
                result['date'] = line.strip().split('=')[1].strip()&lt;br /&gt;
    finally:&lt;br /&gt;
        fd.close()&lt;br /&gt;
 &lt;br /&gt;
    return result&lt;br /&gt;
 &lt;br /&gt;
def import_tifs(mapset):&lt;br /&gt;
    meta = get_timestamp(mapset)&lt;br /&gt;
    for file in os.listdir(mapset):&lt;br /&gt;
        if os.path.splitext(file)[-1] != '.TIF':&lt;br /&gt;
            continue&lt;br /&gt;
        ffile = os.path.join(mapset, file)&lt;br /&gt;
        if ('VCID') in ffile:&lt;br /&gt;
            name = &amp;quot;&amp;quot;.join((os.path.splitext(file)[0].split('_'))[1::2])&lt;br /&gt;
        else:&lt;br /&gt;
            name = os.path.splitext(file)[0].split('_')[-1]&lt;br /&gt;
        if len(name) == 3 and name[-1] == '0':&lt;br /&gt;
            band = int(name[1:2])&lt;br /&gt;
        elif len(name) == 3 and name[-1] != '0':&lt;br /&gt;
            band = int(name[1:3])&lt;br /&gt;
        else:&lt;br /&gt;
            band = int(name[-1:])&lt;br /&gt;
        grass.message('Importing %s -&amp;gt; %s@%s...' % (file, name, mapset))&lt;br /&gt;
        grass.run_command('g.mapset',&lt;br /&gt;
                          flags = 'c',&lt;br /&gt;
                          mapset = mapset,&lt;br /&gt;
                          quiet = True,&lt;br /&gt;
                          stderr = open(os.devnull, 'w'))&lt;br /&gt;
        grass.run_command('r.in.gdal',&lt;br /&gt;
                          input = ffile,&lt;br /&gt;
                          output = name,&lt;br /&gt;
                          quiet = True,&lt;br /&gt;
                          overwrite = True,&lt;br /&gt;
                          title = 'band %d' % band)&lt;br /&gt;
        if meta:&lt;br /&gt;
            year, month, day = meta['date'].split('-')&lt;br /&gt;
            if month == '01':&lt;br /&gt;
                month = 'jan'&lt;br /&gt;
            elif month == '02':&lt;br /&gt;
                month = 'feb'&lt;br /&gt;
            elif month == '03':&lt;br /&gt;
                month = 'mar'&lt;br /&gt;
            elif month == '04':&lt;br /&gt;
                month = 'apr'&lt;br /&gt;
            elif month == '05':&lt;br /&gt;
                month = 'may'&lt;br /&gt;
            elif month == '06':&lt;br /&gt;
                month = 'jun'&lt;br /&gt;
            elif month == '07':&lt;br /&gt;
                month = 'jul'&lt;br /&gt;
            elif month == '08':&lt;br /&gt;
                month = 'aug'&lt;br /&gt;
            elif month == '09':&lt;br /&gt;
                month = 'sep'&lt;br /&gt;
            elif month == '10':&lt;br /&gt;
                month = 'oct'&lt;br /&gt;
            elif month == '11':&lt;br /&gt;
                month = 'nov'&lt;br /&gt;
            elif month == '12':&lt;br /&gt;
                month = 'dec'&lt;br /&gt;
 &lt;br /&gt;
            grass.run_command('r.timestamp',&lt;br /&gt;
                              map = name,&lt;br /&gt;
                              date = ' '.join((day, month, year)))&lt;br /&gt;
 &lt;br /&gt;
def main():&lt;br /&gt;
    if len(sys.argv) == 1:&lt;br /&gt;
        for directory in filter(os.path.isdir, os.listdir(os.getcwd())):&lt;br /&gt;
            import_tifs(directory)&lt;br /&gt;
    else:&lt;br /&gt;
        import_tifs(sys.argv[1])&lt;br /&gt;
 &lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    main()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Example of usage'''&lt;br /&gt;
&lt;br /&gt;
After having collected the Landsat scenes of interest in one directory, the script can be used as follows:&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;source lang=&amp;quot;python&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;./import_landsat.py&amp;lt;/source&amp;gt; → the script will walk through a ''pool'' directory that contains unique Landsat scene directories (e.g. three directories named after the official naming pattern: LT51800342011158MOR00  LT51810352009079MTI00  LT51820352009326MTI00) and import all bands of each individual scene in their own Mapset&lt;br /&gt;
* &amp;lt;source lang=&amp;quot;python&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;./import_landsat.py LM41890261983200FFF03&amp;lt;/source&amp;gt; → the scrip will import only bands of the specified Landsat scene directory&lt;br /&gt;
&lt;br /&gt;
== Post-Processing ==&lt;br /&gt;
&lt;br /&gt;
=== Natural color composites ===&lt;br /&gt;
&lt;br /&gt;
Creating natural (also known as true-) color composites, can be done by&lt;br /&gt;
&lt;br /&gt;
a) using {{cmd|i.landsat.rgb|version=64}} (GRASS 6.x) | {{cmd|i.colors.enhance|version=70}} (GRASS 7.x) to automatically balance the colors for the Red, Green and Blue bands&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
b) equalizing the colors on each of the Red, Green and Blue bands&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
r.colors -e map=band1 color=grey&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Composites''' can then be produced with the {{cmd|r.composite}} module.&lt;br /&gt;
&lt;br /&gt;
'''Resetting the color tables''' of all bands back to normal greyscale can be done with a for loop:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
BASE=L71074092_09220040924&lt;br /&gt;
&lt;br /&gt;
for map in `g.mlist pat=&amp;quot;$BASE.[0-8]*&amp;quot;` ; do&lt;br /&gt;
  r.colors $map color=grey255&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also:&lt;br /&gt;
* [http://courses.neteler.org/processing-landsat-8-data-in-grass-gis-7-rgb-composites-and-pan-sharpening/ Processing Landsat 8 data in GRASS GIS 7: RGB composites and pan sharpening]&lt;br /&gt;
&lt;br /&gt;
=== Create a MASK to only show data where coverage exists for all bands ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
BASE=L71074092_09220040924&lt;br /&gt;
&lt;br /&gt;
g.region rast=$BASE.1&lt;br /&gt;
r.series in=`g.mlist pat=&amp;quot;$BASE.[0-8]*&amp;quot; sep=,` -n out=$BASE.thresh method=threshold thresh=1&lt;br /&gt;
r.mapcalc &amp;quot;$BASE.mask = if(isnull($BASE.thresh))&amp;quot;&lt;br /&gt;
g.remove $BASE.thresh&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Calculate Top-of-Atmosphere Reflectance and band-6 Temperature ===&lt;br /&gt;
&lt;br /&gt;
Calculate ''Top-of-Atmosphere'' reflectance and band-6 temperature using the {{cmd|i.landsat.toar}} module. For details, refer to USGS' [http://landsat.usgs.gov/Landsat_Metadata_Changes.php Landsat Filename and Metadata Changes] dedicated page. For Landsat 8, see also [http://landsat.usgs.gov/about_LU_Vol_7_Issue_4.php#3a here].&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 i.landsat.toar input_prefix=$BASE output_prefix=${BASE}_toar metfile=${BASE}_MTL.txt&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note, the resulting temperature map is in Kelvin:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 # convert to degree Celsius&lt;br /&gt;
 r.mapcalc &amp;quot;$BASE.temp_celsius = ${BASE}_toar.6 - 273.15&amp;quot;&lt;br /&gt;
 r.info -r $BASE.temp_celsius&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Haze removal ===&lt;br /&gt;
&lt;br /&gt;
Simple haze removal can be done with {{AddonCmd|i.landsat.dehaze|version=64}}. This addons applies a bandwise haze correction using tasscap4 (haze) and linear regression.&lt;br /&gt;
&lt;br /&gt;
During the 2000s, prior acquired Landsat data were reprocessed to LPGS (Level 1 Product Generation System). Seems that with this level of processing, haze effect in raw data was removed and now is sufficient to apply {{Cmd|i.colors.enhance}} to obtain a good image with high contrast.&lt;br /&gt;
&lt;br /&gt;
=== Atmospheric correction ===&lt;br /&gt;
&lt;br /&gt;
See [[Atmospheric correction]]&lt;br /&gt;
&lt;br /&gt;
=== Cloud identification ===&lt;br /&gt;
&lt;br /&gt;
Identify clouds in the image with {{cmd|i.landsat.acca}}:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;i.landsat.acca -f input_prefix=226_62_toar. output=226_62.acca_cloudmask&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mask out the clouds:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;r.mapcalc &amp;quot;MASK = if(isnull($BASE.acca_cloudmask))&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Download sample data ==&lt;br /&gt;
&lt;br /&gt;
=== Preprocessed Landsat-7 data for North Carolina ===&lt;br /&gt;
&lt;br /&gt;
The [[Sample_datasets|North Carolina 2008 sample dataset]] comes with 3 different Landsat scenes:&lt;br /&gt;
: (''Wake County -- path: 16  row: 35 for various dates'')&lt;br /&gt;
&lt;br /&gt;
The above import efforts are not needed since the data are already in a GRASS location.&lt;br /&gt;
&lt;br /&gt;
=== Landsat-5: Oct 14, 1987 ===&lt;br /&gt;
&lt;br /&gt;
;Glovis download: LT50160351987287XXX08&lt;br /&gt;
: http://edcsns17.cr.usgs.gov/cgi-bin/EarthExplorer/run-phtml/results/download.phtml?node=GV&amp;amp;ordered=LT50160351987287XXX08&amp;amp;dataset_name=LANDSAT_TM&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ??? or ETP016R35_5T19871014 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Provided metadata:&lt;br /&gt;
 IMAGE_ID=P016R35_5T871014&lt;br /&gt;
 PATH=16&lt;br /&gt;
 ROW=35&lt;br /&gt;
 DATE=10/14/87&lt;br /&gt;
 PLATFORM=LANDSAT5&lt;br /&gt;
&lt;br /&gt;
=== Landsat-7: Mar 31, 2000 ===&lt;br /&gt;
&lt;br /&gt;
;Glovis download: LE70160352000091EDC00&lt;br /&gt;
: http://edcsns17.cr.usgs.gov/cgi-bin/EarthExplorer/run-phtml/results/download.phtml?node=GV&amp;amp;ordered=LE70160352000091EDC00&amp;amp;dataset_name=LANDSAT_ETM&lt;br /&gt;
&lt;br /&gt;
Values in the metadata below indicate that the version provided with the NC 2008 dataset's production date was after July 1, 2000, and that the channel gains were &amp;lt;tt&amp;gt;HHHLHLHHL&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Convert DNs to radiance/temperatures:&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 GRASS&amp;gt; i.landsat.toar -v band=lsat7_2000 sensor=7 date=2000-03-31 \&lt;br /&gt;
    product_date=2000-07-02 solar_elevation=51.5246529 gain=HHHLHLHHL&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Provided metadata:&lt;br /&gt;
 SPACECRAFT_ID=Landsat7&lt;br /&gt;
 SENSOR_ID=ETM+&lt;br /&gt;
 '''ACQUISITION_DATE=2000-03-31'''&lt;br /&gt;
 WRS_PATH=16&lt;br /&gt;
 CPF_FILE_NAME=L7CPF20000101_20000331_12&lt;br /&gt;
 SUN_AZIMUTH=139.6033279&lt;br /&gt;
 '''SUN_ELEVATION=51.5246529'''&lt;br /&gt;
 LMAX_BAND1=191.600&lt;br /&gt;
 LMIN_BAND1=-6.200&lt;br /&gt;
 LMAX_BAND2=196.500&lt;br /&gt;
 LMIN_BAND2=-6.400&lt;br /&gt;
 LMAX_BAND3=152.900&lt;br /&gt;
 LMIN_BAND3=-5.000&lt;br /&gt;
 LMAX_BAND4=241.100&lt;br /&gt;
 LMIN_BAND4=-5.100&lt;br /&gt;
 LMAX_BAND5=31.060&lt;br /&gt;
 LMIN_BAND5=-1.000&lt;br /&gt;
 LMAX_BAND61=17.040&lt;br /&gt;
 LMIN_BAND61=0.000&lt;br /&gt;
 LMAX_BAND62=12.650&lt;br /&gt;
 LMIN_BAND62=3.200&lt;br /&gt;
 LMAX_BAND7=10.800&lt;br /&gt;
 LMIN_BAND7=-0.350&lt;br /&gt;
 LMAX_BAND8=243.100&lt;br /&gt;
 LMIN_BAND8=-4.700&lt;br /&gt;
 QCALMAX_BAND1=255.0&lt;br /&gt;
 QCALMIN_BAND1=1.0&lt;br /&gt;
 QCALMAX_BAND2=255.0&lt;br /&gt;
 QCALMIN_BAND2=1.0&lt;br /&gt;
 QCALMAX_BAND3=255.0&lt;br /&gt;
 QCALMIN_BAND3=1.0&lt;br /&gt;
 QCALMAX_BAND4=255.0&lt;br /&gt;
 QCALMIN_BAND4=1.0&lt;br /&gt;
 QCALMAX_BAND5=255.0&lt;br /&gt;
 QCALMIN_BAND5=1.0&lt;br /&gt;
 QCALMAX_BAND61=255.0&lt;br /&gt;
 QCALMIN_BAND61=1.0&lt;br /&gt;
 QCALMAX_BAND62=255.0&lt;br /&gt;
 QCALMIN_BAND62=1.0&lt;br /&gt;
 QCALMAX_BAND7=255.0&lt;br /&gt;
 QCALMIN_BAND7=1.0&lt;br /&gt;
 QCALMAX_BAND8=255.0&lt;br /&gt;
 QCALMIN_BAND8=1.0&lt;br /&gt;
&lt;br /&gt;
=== Landsat-7: May 24, 2002 ===&lt;br /&gt;
&lt;br /&gt;
;Glovis download: LE70160352002144EDC00&lt;br /&gt;
: http://edcsns17.cr.usgs.gov/cgi-bin/EarthExplorer/run-phtml/results/download.phtml?node=GV&amp;amp;ordered=LE70160352002144EDC00&amp;amp;dataset_name=LANDSAT_ETM&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ???&lt;br /&gt;
or ELP016R035_7T20020524&lt;br /&gt;
: http://edcsns17.cr.usgs.gov/helpdocs/download.cgi?file=lsatortho/etm/16/35/elp016r035_7t20020524.tar.gz&lt;br /&gt;
---&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Provided metadata: (`p016r035_7x20020524.met`)&lt;br /&gt;
 SPACECRAFT_ID=Landsat7&lt;br /&gt;
 SENSOR_ID=ETM+&lt;br /&gt;
 '''ACQUISITION_DATE=2002-05-24'''&lt;br /&gt;
 WRS_PATH=016&lt;br /&gt;
 WRS_ROW=035&lt;br /&gt;
 SUN_AZIMUTH=120.8810347&lt;br /&gt;
 '''SUN_ELEVATION=64.7730999'''&lt;br /&gt;
 QA_PERCENT_MISSING_DATA=0&lt;br /&gt;
 CLOUD_COVER=0&lt;br /&gt;
 CPF_FILE_NAME=L7CPF20020401_20020630_03&lt;br /&gt;
 LMAX_BAND1=191.600&lt;br /&gt;
 LMIN_BAND1=-6.200&lt;br /&gt;
 LMAX_BAND2=196.500&lt;br /&gt;
 LMIN_BAND2=-6.400&lt;br /&gt;
 LMAX_BAND3=152.900&lt;br /&gt;
 LMIN_BAND3=-5.000&lt;br /&gt;
 LMAX_BAND4=241.100&lt;br /&gt;
 LMIN_BAND4=-5.100&lt;br /&gt;
 LMAX_BAND5=31.060&lt;br /&gt;
 LMIN_BAND5=-1.000&lt;br /&gt;
 LMAX_BAND61=17.040&lt;br /&gt;
 LMIN_BAND61=0.000&lt;br /&gt;
 LMAX_BAND62=12.650&lt;br /&gt;
 LMIN_BAND62=3.200&lt;br /&gt;
 LMAX_BAND7=10.800&lt;br /&gt;
 LMIN_BAND7=-0.350&lt;br /&gt;
 LMAX_BAND8=243.100&lt;br /&gt;
 LMIN_BAND8=-4.700&lt;br /&gt;
 QCALMAX_BAND1=255.0&lt;br /&gt;
 QCALMIN_BAND1=1.0&lt;br /&gt;
 QCALMAX_BAND2=255.0&lt;br /&gt;
 QCALMIN_BAND2=1.0&lt;br /&gt;
 QCALMAX_BAND3=255.0&lt;br /&gt;
 QCALMIN_BAND3=1.0&lt;br /&gt;
 QCALMAX_BAND4=255.0&lt;br /&gt;
 QCALMIN_BAND4=1.0&lt;br /&gt;
 QCALMAX_BAND5=255.0&lt;br /&gt;
 QCALMIN_BAND5=1.0&lt;br /&gt;
 QCALMAX_BAND61=255.0&lt;br /&gt;
 QCALMIN_BAND61=1.0&lt;br /&gt;
 QCALMAX_BAND62=255.0&lt;br /&gt;
 QCALMIN_BAND62=1.0&lt;br /&gt;
 QCALMAX_BAND7=255.0&lt;br /&gt;
 QCALMIN_BAND7=1.0&lt;br /&gt;
 QCALMAX_BAND8=255.0&lt;br /&gt;
 QCALMIN_BAND8=1.0&lt;br /&gt;
&lt;br /&gt;
== LANDSAT Image classification ==&lt;br /&gt;
&lt;br /&gt;
See [[Image classification]]&lt;br /&gt;
&lt;br /&gt;
== Time series analysis ==&lt;br /&gt;
&lt;br /&gt;
See [[Time series]]&lt;br /&gt;
&lt;br /&gt;
== Sources ==&lt;br /&gt;
&lt;br /&gt;
* [http://landsat.usgs.gov/tools_access_all_faqs.php Frequently Asked Questions about the Landsat Missions]&lt;br /&gt;
* [https://landsat8portal.eo.esa.int/portal/ European LANDSAT 8 data in near-realtime]&lt;br /&gt;
* [http://courses.neteler.org/processing-landsat8-data-in-grass-gis-7/ Processing Landsat 8 data in GRASS GIS 7: Import and visualization]&lt;br /&gt;
* [http://courses.neteler.org/processing-landsat-8-data-in-grass-gis-7-rgb-composites-and-pan-sharpening/ Processing Landsat 8 data in GRASS GIS 7: RGB composites and pan sharpening]&lt;br /&gt;
&lt;br /&gt;
[[Category: Documentation]]&lt;br /&gt;
[[Category: FAQ]]&lt;br /&gt;
[[Category: Landsat]]&lt;br /&gt;
[[Category: Image processing]]&lt;br /&gt;
[[Category: Import]]&lt;br /&gt;
[[Category: Digital Numbers]]&lt;br /&gt;
[[Category: Radiance]]&lt;br /&gt;
[[Category: Reflectance]]&lt;br /&gt;
[[Category: Geodata]]&lt;/div&gt;</summary>
		<author><name>⚠️Sbl</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=ISO/INSPIRE_Metadata_Support&amp;diff=21805</id>
		<title>ISO/INSPIRE Metadata Support</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=ISO/INSPIRE_Metadata_Support&amp;diff=21805"/>
		<updated>2015-08-20T12:31:59Z</updated>

		<summary type="html">&lt;p&gt;⚠️Sbl: On ubuntu the installation instructions did not work out of the box. Hope I did not damage things for other OS...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&lt;br /&gt;
== ISO 19115:2003- Geographic information -- Metadata ==&lt;br /&gt;
[http://www.iso.org/iso/catalogue_detail.htm?csnumber=26020 ISO 19115:2003] defines the scheme required for description of geographic information and services. It provides information about the identification, the extent, the quality, the spatial and temporal scheme, spatial reference, and distribution of digital geographic data.&lt;br /&gt;
&lt;br /&gt;
== Catalogue Service for the Web ==&lt;br /&gt;
[http://www.opengeospatial.org/standards/cat]Catalogue services support the ability to publish and search collections of descriptive information (metadata) for data, services, and related information objects. Metadata in catalogues represent resource characteristics that can be queried and presented for evaluation and further processing by both humans and software. Catalogue services are required to support the discovery and binding to registered information resources within an information community. &lt;br /&gt;
&lt;br /&gt;
= About =&lt;br /&gt;
Wx.metadata which was developed during Google Summer of Code 2014/2015 is currently available in GRASS add-ons. &lt;br /&gt;
* Package for creating and editing metadata according to EN ISO 19115, described here, consists of few modules. Modules r.info.iso, v.info.iso and t.info.iso are command line based and support conversion from current native metadata management (r.info, v.info,t.info) into ISO based metadata. GUI based module - g.gui.metadata offers advanced tools for management of metadata. For &lt;br /&gt;
[[Image:Wxmetadata-editing.png|center|600px]]&lt;br /&gt;
&lt;br /&gt;
* Package also includs modue g.gui.cswbrowser for searching and browsing metadata catalog(csw). For advanced users there are few modeles for establishing and handling pycsw server:&lt;br /&gt;
 * db.csw.admin - module for administration of pycsw server&lt;br /&gt;
 * db.csw.run - module for starting server on localhost&lt;br /&gt;
 * db.csw.harvest - modul for harvesting metadata between two csw.&lt;br /&gt;
&lt;br /&gt;
= Requirements and installation =&lt;br /&gt;
* [http://grass.osgeo.org/download/software/#g71x GRASS GIS 7.1 ]&lt;br /&gt;
wx.metadata package has dependence on external libraries:&lt;br /&gt;
&lt;br /&gt;
* pycsw package - development version(OGC CSW server implementation written in Python):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone https://github.com/geopython/pycsw.git &amp;amp;&amp;amp; cd pycsw&lt;br /&gt;
sudo pip install -e . &amp;amp;&amp;amp; sudo pip install -r requirements-standalone.txt&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* owslib package - development version (OGC CSW client implementation written in Python):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone git://github.com/geopython/OWSLib.git&lt;br /&gt;
cd OWSLib &amp;amp;&amp;amp; sudo python setup.py install&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Jinja2 (one of the most used template engines for Python)&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
git clone https://github.com/mitsuhiko/jinja2.git&lt;br /&gt;
cd jinja2 &amp;amp;&amp;amp; sudo python setup.py install&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Creating and editing metadata =&lt;br /&gt;
== Naming of metadata files and storage ==&lt;br /&gt;
Default location for exported metadata files is ''metadata'' directory in the map's mapset. For raster maps, the prefix derived from the current nomenclature is ''cell'', for vector maps ''vector''. File ends with .xml suffix.&lt;br /&gt;
&lt;br /&gt;
For example default metadata file name for vector map &amp;quot;roads&amp;quot; is ''vector_roads.xml''.&lt;br /&gt;
&lt;br /&gt;
== Metadata profile ==&lt;br /&gt;
The metadata profile defines attributes, which can be edited in this editor. The editor offers the already mentioned two profiles(Basic and Inspire). Editor also supports loading of customized profiles. See Creation of custom ISO based profile.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;Currently there are three build-in ISO profiles available: &amp;lt;/big&amp;gt;&lt;br /&gt;
* '''The basic profile''' is substituted from intersection between items stored in GRASS native metadata format and INSPIRE profile. The intersect (subset) includes all available GRASS metadata. Metadata which cannot be assigned to ISO based attributes are stored in metadata attribute sabstractact. &lt;br /&gt;
&lt;br /&gt;
* '''The Inspire profile''' fulfills the criteria of INSPIRE profile. In case if is not possible to get the values from native GRASS metadata, these are filled with text string '$NULL'. This rule is applied for both profiles.&lt;br /&gt;
&lt;br /&gt;
* '''The temporal profile''' is based on the Grass basic profile and includes additional specific attributes for Temporal framework.&lt;br /&gt;
&lt;br /&gt;
== Modules r.info.iso, v.info.iso t.info.iso ==&lt;br /&gt;
Command line based modules implements  conversion of native GRASS metadata to ISO based XML metadata files. Identical configuration applies for both modules. Products of these modules differ partly in certain metadata attributes related  to differences between  raster (r.info) and vector (v.info) maps metadata. &lt;br /&gt;
&lt;br /&gt;
'''Parameters of modules:'''&lt;br /&gt;
* map - selection of map for metadata creation&lt;br /&gt;
* profile - selection of metadata profile (basic or inspire)&lt;br /&gt;
* output - path to output XML metadata file.  Default = according to naming&amp;amp;storage rules&lt;br /&gt;
	&lt;br /&gt;
== Module g.gui.metadata  ==&lt;br /&gt;
Metadata editor (editor) includes graphical interface for conversion metadata from r.info and v.info to ISO based metadata, editing metadata files and creating metadata templates. In addition, the graphical module allows validating of  INSPIRE and Basic profile.&lt;br /&gt;
&lt;br /&gt;
=== Information about metadata item ===&lt;br /&gt;
Tooltip function helps to fill in the form correctly.&lt;br /&gt;
[[Image:Wxmetadata-tooltip.png|center|350]]&lt;br /&gt;
&lt;br /&gt;
=== Creation of metadata ===&lt;br /&gt;
Editor offers two editing modes. The first one allows to create metadata from selected GRASS maps from an active location. The second one allows editing of external metadata file. &lt;br /&gt;
&lt;br /&gt;
=== Fetching values from database backand ===&lt;br /&gt;
Editor automaticaly fetch keywords from SQLite GRASS GIS backend. Three well know dictionaries are added by default. User can manualy add dictionaries by sql commands. &lt;br /&gt;
Dictionaries are stored in table ''metadata_themes''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ teble metadta_themes&lt;br /&gt;
! Attribut&lt;br /&gt;
| title&lt;br /&gt;
| keyword&lt;br /&gt;
| date_iso&lt;br /&gt;
| date_type&lt;br /&gt;
|-&lt;br /&gt;
! Date type&lt;br /&gt;
| TEXT || TEXT|| TEXT|| TEXT&lt;br /&gt;
|-&lt;br /&gt;
! Example&lt;br /&gt;
|Example || GEMET - Concepts, version || 2010-01-13 || publication&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Image:Keywords.png|center|350]]&lt;br /&gt;
&lt;br /&gt;
=== Exporting metadata reports to format PDF ===&lt;br /&gt;
This funciton allows to export metadata of GRASS maps to report in pdf format. The report template is based on INSPIRE profile. Unknown values of metadta atributes are filled by text $UNKNOWN.&lt;br /&gt;
[[Image:Pdfexp.png|center|350]]&lt;br /&gt;
&lt;br /&gt;
{{YouTube|V7tgOOuRyuA}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GRASS metadata map editor ===&lt;br /&gt;
[[Image:Wxmetadata-mapEdit.png|center|150px]]&lt;br /&gt;
&lt;br /&gt;
Combo box for selection of ISO profile:&lt;br /&gt;
* basic&lt;br /&gt;
* inspire&lt;br /&gt;
* load custom –  allows to load metadata profile from file. For example in case of using predefined template. The intersection of GRASS Basic profile(all available metadata for selected map) and loaded custom profile will proced with this selection.&lt;br /&gt;
&lt;br /&gt;
{{YouTube|7V5NyVdO05o}}&lt;br /&gt;
&lt;br /&gt;
=== External metadata editor ===&lt;br /&gt;
[[Image:Wxmetadata-externalEdit.png|center|150]]&lt;br /&gt;
This editor mode allows to load own template and xml file for editing. This option does not support any connection with GRASS maps metadata.&lt;br /&gt;
&lt;br /&gt;
{{YouTube|npMAavbwfi0}}&lt;br /&gt;
&lt;br /&gt;
=== Defining templates ===&lt;br /&gt;
This function allows to create pattern of metadata profile. In other words it support defining fixed values to template. With using created template, the editor does not initialize texts inputs of defined values. These attributes is able to see only in Tree Browser in editor. Direct link on this function is multiple editing mode (see below).&lt;br /&gt;
* If check-box of metadata attribute is checked, the OWSLib object in template will be replaced by value. Unchecked attributes will not change this 'part' of the template.&lt;br /&gt;
* The yellow background of text fields indicates metadata attributes, which are not possible get from GRASS map information.&lt;br /&gt;
[[Image:Wxmetadata-template.png|center|600px]]&lt;br /&gt;
&lt;br /&gt;
=== Usage ===&lt;br /&gt;
* If check-box of metadata attribute is checked, the OWSLib object in template will be replaced by value. Unchecked attributes will not change this 'part' of the template.&lt;br /&gt;
&lt;br /&gt;
example: Template result of attribute which is checked &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;gmd:dateStamp&amp;gt;&lt;br /&gt;
        &amp;lt;gco:Date&amp;gt;2013-01-01&amp;lt;/gco:Date&amp;gt;&lt;br /&gt;
    &amp;lt;/gmd:dateStamp&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
example: Template result of attribute which is unchecked &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;gmd:dateStamp&amp;gt;&lt;br /&gt;
        &amp;lt;gco:Date&amp;gt;{{ md.datestamp }}{# tag=&amp;quot;md.datestamp&amp;quot; , name=&amp;quot;Metadata date&amp;quot; ,\&lt;br /&gt;
 ref= &amp;quot;Part B 10.2&amp;quot; , desc= &amp;quot;Date that the metadata was created.&amp;quot;,type = &amp;quot;date&amp;quot; ,&lt;br /&gt;
 example = &amp;quot;2005-03-27&amp;quot; , multi= 0 , group= &amp;quot;Metadata&amp;quot; , multiline= False #}&amp;lt;/gco:Date&amp;gt;&lt;br /&gt;
    &amp;lt;/gmd:dateStamp&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Video shows record of simple practice of defining custom template&lt;br /&gt;
{{YouTube|Pu2sQoAJXfo}}&lt;br /&gt;
&lt;br /&gt;
=== Editing metadata of multiple map selection ===&lt;br /&gt;
Advantages of this editing mode is in work using of defined template. This option can be used by selection of multiple maps in data catalog.  &lt;br /&gt;
&lt;br /&gt;
=== Validation of metadata profile ===&lt;br /&gt;
On the right side of editor is a validator of metadata. Currently, validator is able to validate two build-in profiles. For selection of profile “Load custom” is set by default the inspire profile.&lt;br /&gt;
&lt;br /&gt;
=== Updating GRASS native metadata ===&lt;br /&gt;
The g.gui.metadata module allows updating native GRASS metadata with using modules r.support and v.support. The intersection between ISO based metadata and r|v.support is limited by available parameters for these modules.&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
* EPSG code must by added in url format. Information of projection is added only if EPSG code is known or if GDAL function for identifying from WKT is succesful.&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;gmd:referenceSystemInfo&amp;gt;&lt;br /&gt;
  &amp;lt;gmd:MD_ReferenceSystem&amp;gt;&lt;br /&gt;
    &amp;lt;gmd:referenceSystemIdentifier&amp;gt;&lt;br /&gt;
      &amp;lt;gmd:RS_Identifier&amp;gt;&lt;br /&gt;
        &amp;lt;gmd:code&amp;gt;&lt;br /&gt;
          &amp;lt;gco:CharacterString&amp;gt;http://www.opengis.net/def/crs/EPSG/0/3035&amp;lt;/gco:CharacterString&amp;gt;&lt;br /&gt;
        &amp;lt;/gmd:code&amp;gt;&lt;br /&gt;
        &amp;lt;gmd:codeSpace&amp;gt;&lt;br /&gt;
          &amp;lt;gco:CharacterString&amp;gt;INSPIRE RS registry&amp;lt;/gco:CharacterString&amp;gt;&lt;br /&gt;
        &amp;lt;/gmd:codeSpace&amp;gt;&lt;br /&gt;
      &amp;lt;/gmd:RS_Identifier&amp;gt;&lt;br /&gt;
    &amp;lt;/gmd:referenceSystemIdentifier&amp;gt;&lt;br /&gt;
  &amp;lt;/gmd:MD_ReferenceSystem&amp;gt;&lt;br /&gt;
&amp;lt;/gmd:referenceSystemInfo&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Tools for working with metadata catalogue (csw) =&lt;br /&gt;
== Browsing and searching -g.gui.cswbrowser ==&lt;br /&gt;
Module g.gui.cswbrowser(Browser) based graphical interface allows managing csw connections, setting filter and searching, browsing results and adding services to GRASS GIS.&lt;br /&gt;
=== Connection manager ===&lt;br /&gt;
Connection manager allows: &lt;br /&gt;
* adding&lt;br /&gt;
* removing&lt;br /&gt;
* loading list of connections from file. &lt;br /&gt;
By default the Browser is initialized by list of few well known csw providers of csw. Button &amp;quot;Service info&amp;quot; shows metadata of the service.&lt;br /&gt;
User can manage connection in two ways:&lt;br /&gt;
* First one is with using hidden storage provided by [http://wxpython.org/Phoenix/docs/html/ConfigBase.html ​wx.Config]. This case is without accessing default connection file.&lt;br /&gt;
* After prompt user also can add/remove connection from default .xml file.&lt;br /&gt;
[[File:ConnectionMgr.png|600px|Connection manager in g.gui.cswbrowser]]&lt;br /&gt;
&lt;br /&gt;
=== Searching ===&lt;br /&gt;
Before fetching data from selected csw server is proper to set up searching filter. Searching can be restricted by:&lt;br /&gt;
* DCMI Type (Collection , Dataset , Event , Image , InteractiveResource , MovingImage , PhysicalObject , Service , Software , Sound , StillImage , Text)&lt;br /&gt;
* Area(bounding box)&lt;br /&gt;
** current GRASS GIS computation region&lt;br /&gt;
** manually &lt;br /&gt;
* Keywords&lt;br /&gt;
** basic filter allows to use basic or advance keyword filtering. In the simple case user can define single keywords or multiple keywords with button &amp;quot;+&amp;quot;. Logic operator between keywords is AND(&amp;amp;).&lt;br /&gt;
** second, advanced is based on OGC list of expressions which means that can be set filter with logic relations between keywords or sets of keywords. Dialogue for settings keywords text string is under &amp;quot;Advanced&amp;quot; check-box. Syntax of constraints is based on python list syntax. Each keywords must be in braces&lt;br /&gt;
[[File:Find1.png|600px|g.gui.cswbrowser, searching page]]&lt;br /&gt;
==== Advanced keywords filtering ====&lt;br /&gt;
On the left panel of Browser is placed check-box named &amp;quot;Advance&amp;quot;. The keywords advanced dialogue allows to use basic bool operations.&lt;br /&gt;
&lt;br /&gt;
*OR condition&lt;br /&gt;
     a || b || c&lt;br /&gt;
     [&amp;quot;a&amp;quot;,&amp;quot;b&amp;quot;,&amp;quot;c&amp;quot;]&lt;br /&gt;
*AND condition&lt;br /&gt;
     a &amp;amp;&amp;amp; b &amp;amp;&amp;amp; c&lt;br /&gt;
     [ [&amp;quot;a&amp;quot;,&amp;quot;b&amp;quot;,&amp;quot;c&amp;quot;] ]&lt;br /&gt;
*composition&lt;br /&gt;
     (a &amp;amp;&amp;amp; b) || c || d || e&lt;br /&gt;
     [[&amp;quot;a&amp;quot;,&amp;quot;b&amp;quot;],[&amp;quot;c&amp;quot;],[&amp;quot;d&amp;quot;],[&amp;quot;e&amp;quot;]] or [[&amp;quot;a&amp;quot;,&amp;quot;b&amp;quot;],&amp;quot;c&amp;quot;,&amp;quot;d&amp;quot;,&amp;quot;e&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
=== Browsing results===&lt;br /&gt;
On the bottom of Browser is a controller for browsing results. The data from server are fetched by number of items per one transaction. Default is a 20 items. After selection of item in the result table, metadata of record should be displayed. Browser automatically enables buttons on the top of Browser if WMS, WCS or WFS services are available.&lt;br /&gt;
&lt;br /&gt;
== CSW server management ==&lt;br /&gt;
wx.metadata package includes tools for establishing and handling pycsw server. Pycsw stuff consist:&lt;br /&gt;
*db.csw.admin &lt;br /&gt;
*db.csw.run&lt;br /&gt;
*db.csw.harvest&lt;br /&gt;
=== Setting up csw server- db.csw.admin ===&lt;br /&gt;
&lt;br /&gt;
= Creation of custom ISO based profile =&lt;br /&gt;
Creation of own custom ISO based profile is with using  Jinja template syntax and some addition rules.&lt;br /&gt;
The main item of template is composite from two braces.&lt;br /&gt;
Both of them are fully according to syntax of Jinja template. First holds information about statements of loop or condition and also simple Python object.  Second braces according to Jinja template syntax is represented by comment {# #}. In this braces additional information for generating graphical interface of editor are stored. In addition also  information about individual metadata attributes (name, example, description, multiplicity, etc) is included.&lt;br /&gt;
&lt;br /&gt;
== The first braces ==&lt;br /&gt;
Contain object of OWSLib which holds the metadata value. This values can be object which is  describing  single variable or list of variables.  Value of some attribute can be defined￹￹ many times(according to ISO). This attributes must be defined in block of template with starting statements and ending mark of block. Only allowed loop statement is FOR(see jinja2 manual). The XML based text of block will by duplicated according to number of items in the list.&lt;br /&gt;
&lt;br /&gt;
== Initialize of OWSLib objects ==&lt;br /&gt;
Most object are initialized in configuration of file which is stored in wx.metadat/config/init_md.txt&lt;br /&gt;
example: Default configuration file for the build-in Basic and Inspire profile:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
self.md.identification = MD_DataIdentification() &lt;br /&gt;
self.md.dataquality = DQ_DataQuality() &lt;br /&gt;
self.md.distribution = MD_Distribution() &lt;br /&gt;
self.md.identification.extent = EX_Extent() &lt;br /&gt;
self.md.identification.extent.boundingBox = EX_GeographicBoundingBox()&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
# on the left side of equation is obligatory prefix 'self.md'. Postfix(name of variable) is open. On right side is  OWSLib object&lt;br /&gt;
&lt;br /&gt;
== Single element ==&lt;br /&gt;
In case if the value of metadata element is  declared only once: &lt;br /&gt;
example: Identifier&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{ md.identifier }}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
example: Lineage&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{{ md.dataquality.lineage }}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Loop or Condition statements ==&lt;br /&gt;
Loops and condition are defined in by starting braces  and ending braces '{%  -%}' .&lt;br /&gt;
Start of block:&lt;br /&gt;
&lt;br /&gt;
example: for statement&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{% for co in md.contact -%}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Editor allows to use Python 'zip' function and 'len' function. Note- in Jinja syntax is Python len(length) function defined specifically.&lt;br /&gt;
&lt;br /&gt;
example: zip&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{% for (u,d) in zip(md.identification.uom,md.identification.distance) -%}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
example: len&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{% if md.identification.denominators|length &amp;gt; 0 -%}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
End of block is defined by:&lt;br /&gt;
&lt;br /&gt;
example: if statement&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{% endif -%}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
example: for statement&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{% endfor -%}&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
== The second braces ==&lt;br /&gt;
The second braces(by Jinja syntax comment) contains these parameters:&lt;br /&gt;
* tag - just copy of string from first braces&lt;br /&gt;
* object – for reading and holding metadata in python objects is used OWSLib library.&lt;br /&gt;
&lt;br /&gt;
Most of object are initialized by configuration file wx.metadata/config/init_md.txt. Some metadata attributes are necessary initialized directly in this(object) parameter. Best example is the metadata contact object(organization,email)  which can be initialized for many times.&lt;br /&gt;
&lt;br /&gt;
example: responsible party&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{% for co in md.contact -%}{# object=&amp;quot;CI_ResponsibleParty()&amp;quot; #}&lt;br /&gt;
{{ co.organization }}{# object=&amp;quot;CI_ResponsibleParty()&amp;quot; #}&lt;br /&gt;
{{ co.email }}{# object=&amp;quot;CI_ResponsibleParty()&amp;quot; #}&lt;br /&gt;
{{ co.role }}{# object=&amp;quot;CI_ResponsibleParty()&amp;quot; #}&lt;br /&gt;
{% endfor -%}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* name – free text string describing the name of metadata item&lt;br /&gt;
* ref – free additional information. By default should be reference of ISO attributes&lt;br /&gt;
* type – data type characteristic. Input text field validator for 'email' and 'date' is implemented. &lt;br /&gt;
* desc – free text which should describe or define the characteristic of metadata item&lt;br /&gt;
* example – free text with example of the value for metadata item&lt;br /&gt;
* group- label of the notebook list(tab) in editor.&lt;br /&gt;
* inbox- label of the box which includes attributes from the block of Jinja template. All items from one block of Jinja template must be in same box(same name).&lt;br /&gt;
* multi- 0 or 1. In case 0, the item cannot be duplicated= text field widget does not contain  button for duplicating itself. Note that only OWSLib list based variables can be used with duplication button.&lt;br /&gt;
* inboxmulti- 0 or 1. In case 0, the items in box cannot be duplicated = box with items  not dispose with button for cloning self.   &lt;br /&gt;
* multiline – True = initialize text field with multilines editing. Suitable for longer texts input&lt;br /&gt;
&lt;br /&gt;
example of second braces:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{# tag=&amp;quot;md.dataquality.lineage&amp;quot; , name=&amp;quot;Lineage&amp;quot; , ref= &amp;quot;Part B 6.1&amp;quot; ,/&lt;br /&gt;
 desc= &amp;quot;General explanation of the data producers knowledge about the lineage of a dataset.&amp;quot;/&lt;br /&gt;
 ,example = &amp;quot;Product 1 scenes correspond to the path/row of the Landsat orbit..&amp;quot; ,/&lt;br /&gt;
 type =&amp;quot;string&amp;quot; , group= &amp;quot;Quality and Validity&amp;quot; ,  multiline= True #}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Syntax of Jinja template system and editor custom parser ==&lt;br /&gt;
* both of braces of one metadata element must be on same line&lt;br /&gt;
* after '{# ','{%' must be white space. Also before '#}' '-%}'&lt;br /&gt;
&lt;br /&gt;
== Examples of template ==&lt;br /&gt;
[http://trac.osgeo.org/grass/browser/grass-addons/grass7/gui/wxpython/wx.metadata/templates?order=date&amp;amp;desc=1 INSPIRE and Basic]&lt;br /&gt;
&lt;br /&gt;
Video tutorial shows practice of creation custom ISO profile.&lt;br /&gt;
{{YouTube|ahl41mFD5w0}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
* [[GRASS Metadata Management]]&lt;br /&gt;
* [http://trac.osgeo.org/grass/wiki/GSoC/2014/MetadataForGRASS Development page]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Metadata]]&lt;br /&gt;
[[Category:INSPIRE]]&lt;/div&gt;</summary>
		<author><name>⚠️Sbl</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS-QGIS_relevant_module_list&amp;diff=21804</id>
		<title>GRASS-QGIS relevant module list</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS-QGIS_relevant_module_list&amp;diff=21804"/>
		<updated>2015-08-19T07:57:58Z</updated>

		<summary type="html">&lt;p&gt;⚠️Sbl: r./v.import added&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= GRASS modules available in the QGIS toolbox =&lt;br /&gt;
* See [[Development#GRASS_and_QGIS|GRASS and QGIS]] and [[QGIS GRASS Cookbook]]&lt;br /&gt;
&lt;br /&gt;
== List of GRASS modules relevant to QGIS ==&lt;br /&gt;
&lt;br /&gt;
=== Status Templates ===&lt;br /&gt;
{| class=&amp;quot;wikitable1&amp;quot;&lt;br /&gt;
| Present in QGIS: &lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
|-&lt;br /&gt;
| Present in QGIS but shouldn't be&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| Not present in QGIS - High Priority: &lt;br /&gt;
| {{ModuleNotAvailable}}&lt;br /&gt;
|-&lt;br /&gt;
| Not present in QGIS - Low Priority: &lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|-&lt;br /&gt;
| Not relevant to QGIS:  &lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
|} &lt;br /&gt;
&lt;br /&gt;
* &amp;quot;Status&amp;quot; is for modules currently present in qgis source code dir src/plugins/grass/modules-*/&lt;br /&gt;
* Color coding indicates availability of module in the GRASS Toolbox&lt;br /&gt;
&lt;br /&gt;
=== Database modules ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ &amp;lt;font color=&amp;quot;darkgreen&amp;quot; size=&amp;quot;+1&amp;quot;&amp;gt;db.*&amp;lt;/font&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
! Module&lt;br /&gt;
! Status &lt;br /&gt;
! Icon&lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.columns}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
| Is this really useful? Seems better to use standard QGIS commands for this&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.connect}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| [[File:Db-connect.png]] [[File:Db-connect-schema.png]]&lt;br /&gt;
| login; generic, schema, which&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.copy}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| [[File:Db-copy.png]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.describe}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.drivers}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.dropcol}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.droptable}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.execute}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| [[File:Db-execute.png]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.in.ogr}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| [[File:Db-import.png]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.login}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| [[File:Db-login.png]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.out.ogr}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| [[File:Db-export.png]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.select}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| [[File:Data-select.png]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.tables}}&lt;br /&gt;
| {{ModuleNotAvailable}}&lt;br /&gt;
|&lt;br /&gt;
| To be realy useful, it should not be an additional command, but be added as an option to v.db.connect and similar commands (requires additional C++ coding)&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.test}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== General modules ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ &amp;lt;font color=&amp;quot;darkgreen&amp;quot; size=&amp;quot;+1&amp;quot;&amp;gt;g.*&amp;lt;/font&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
! Module&lt;br /&gt;
! Status &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.access}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| Not relevant&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.ask}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| Not relevant&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.copy}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| Not relevant&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.dirseps}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| Not relevant&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.extension}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| Not relevant&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.filename}}&lt;br /&gt;
|{{ModuleNotRelevant}}&lt;br /&gt;
| Not relevant&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.findetc}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| Not relevant&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.findfile}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| Not relevant&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.gisenv}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.gui}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| Not relevant&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.list}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| Handled in the Toolbox&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.manual}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.mapset}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| Not relevant&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.mapsets}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| Not relevant&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.message}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| Not relevant&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.mkfontcap}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| Not relevant&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.mlist}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| Handled in the Toolbox&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.mremove}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.parser}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| Not relevant&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.pnmcomp}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| Not relevant&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.proj}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| generic, ascii, geo, print, proj&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.region}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| save, zoom, multi-rast multi-vect&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.remove}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| Handled in the Toolbox&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.rename}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| Handled in the Toolbox&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.setproj}}&lt;br /&gt;
| {{ModuleNotAvailable|Lo}}&lt;br /&gt;
|Better to add it as an option to the &amp;quot;Create new location&amp;quot; wizard (requires additional C++ coding)&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.tempfile}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| Not relevant&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.transform}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.version}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| Not really relevant&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Imagery modules ===&lt;br /&gt;
&lt;br /&gt;
''Essentially these are raster modules that deal with satellite or aerial photography.''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ &amp;lt;font color=&amp;quot;darkgreen&amp;quot; size=&amp;quot;+1&amp;quot;&amp;gt;i.*&amp;lt;/font&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
! Module&lt;br /&gt;
! Status &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.atcorr}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|Seems too complicated to be added - help needed (comment: see [[Atmospheric correction|tutorial]])&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.cca}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.class}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.cluster}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.fft}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.fusion.brovey}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.gensig}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.gensigset}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.group}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.his.rgb}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.ifft}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.image.mosaic}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.in.spotvgt}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.landsat.rgb}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.maxlik}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.oif}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.ortho.photo}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| Not possible&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.pca}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.points}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| Not possible&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.rectify}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.rgb.his}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.smap}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.spectral}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.target}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.tasscap}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common x3&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.vpoints}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| Not possible&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.zc}}&lt;br /&gt;
|{{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous modules ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ &amp;lt;font color=&amp;quot;darkgreen&amp;quot; size=&amp;quot;+1&amp;quot;&amp;gt;m.*&amp;lt;/font&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
! Module&lt;br /&gt;
! Status &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|m.cogo}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|m.proj}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Paint modules ===&lt;br /&gt;
&lt;br /&gt;
''These have been abandoned in GRASS 6.''&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ &amp;lt;font color=&amp;quot;darkgreen&amp;quot; size=&amp;quot;+1&amp;quot;&amp;gt;p.*&amp;lt;/font&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
! Module&lt;br /&gt;
! Status &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|p.out.vrml}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| old &amp;amp; renamed; not for QGIS&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== PostScript modules ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ &amp;lt;font color=&amp;quot;darkgreen&amp;quot; size=&amp;quot;+2&amp;quot;&amp;gt;ps.*&amp;lt;/font&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
! Module&lt;br /&gt;
! Status &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|ps.map}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| QGIS has its own map composer, so this probably isn't needed.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Raster modules ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ &amp;lt;font color=&amp;quot;darkgreen&amp;quot; size=&amp;quot;+1&amp;quot;&amp;gt;r.*&amp;lt;/font&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
! Module&lt;br /&gt;
! Status &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.average}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.basins.fill}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.bilinear}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| modules-6.4 ''Please use &amp;quot;r.resamp.interp&amp;quot; instead.''&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.bitpattern}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.blend}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.buffer}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.carve}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.category}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.cats}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| Wrapper script for backwards compatibility.&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.circle}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.clump}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.coin}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.colors}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common x4, generic, rast, rules, table&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.colors.stddev}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| modules-6.4&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.composite}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.compress}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.contour}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common x2&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.cost}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.covar}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.cross}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.describe}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.digit}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| Not possible&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.distance}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.drain}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.external}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| modules-6.4 x3&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.fill.dir}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.fillnulls}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.flow}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.grow}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| 6.4/common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.grow.distance}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.gwflow}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| ground water flow modeling&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.his}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.horizon}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.import}}&lt;br /&gt;
| {{ModuleNotAvailable}}&lt;br /&gt;
|New since Community sprint in Como as a modified version of r.in.proj&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.arc}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.ascii}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.aster}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.bin}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.gdal}}&lt;br /&gt;
|{{ModuleAvailable}}&lt;br /&gt;
| common x4, generic, loc, qgis.loc, qgis&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.gridatb}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.mat}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.poly}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.srtm}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.wms}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common, somewhat brittle&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.xyz}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.info}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| Handled in the Toolbox&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.kappa}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.lake}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common x3, generic, seed, xy&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.le.setup}}&lt;br /&gt;
| {{ModuleNotAvailable}}&lt;br /&gt;
|Creates configuration for r.le.* analysis modules. Requires a dedicated GUI.&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.le.patch}}&lt;br /&gt;
| {{ModuleNotAvailable}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.le.pixel}}&lt;br /&gt;
| {{ModuleNotAvailable}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.le.trace}}&lt;br /&gt;
| {{ModuleNotAvailable}}&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.setup}}&lt;br /&gt;
| {{ModuleNotAvailable}}&lt;br /&gt;
|Creates configuration file for r.li.* analysis modules. Requires a dedicated GUI.&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.cwed}}&lt;br /&gt;
| {{ModuleNotAvailable}}&lt;br /&gt;
|Done, but needs r.li.setup.&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.dominance}}&lt;br /&gt;
| {{ModuleNotAvailable}}&lt;br /&gt;
|Done, but needs r.li.setup.&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.edgedensity}}&lt;br /&gt;
| {{ModuleNotAvailable}}&lt;br /&gt;
|Done, but needs r.li.setup.&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.mpa}}&lt;br /&gt;
| {{ModuleNotAvailable}}&lt;br /&gt;
|Done, but needs r.li.setup.&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.mps}}&lt;br /&gt;
| {{ModuleNotAvailable}}&lt;br /&gt;
|Done, but needs r.li.setup.&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.padcv}}&lt;br /&gt;
| {{ModuleNotAvailable}}&lt;br /&gt;
|Done, but needs r.li.setup.&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.padrange}}&lt;br /&gt;
| {{ModuleNotAvailable}}&lt;br /&gt;
|Done, but needs r.li.setup.&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.padsd}}&lt;br /&gt;
| {{ModuleNotAvailable}}&lt;br /&gt;
|Done, but needs r.li.setup.&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.patchdensity}}&lt;br /&gt;
| {{ModuleNotAvailable}}&lt;br /&gt;
|Done, but needs r.li.setup.&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.patchnum}}&lt;br /&gt;
| {{ModuleNotAvailable}}&lt;br /&gt;
|Done, but needs r.li.setup.&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.richness}}&lt;br /&gt;
| {{ModuleNotAvailable}}&lt;br /&gt;
|Done, but needs r.li.setup.&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.shannon}}&lt;br /&gt;
| {{ModuleNotAvailable}}&lt;br /&gt;
|Done, but needs r.li.setup.&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.shape}}&lt;br /&gt;
| {{ModuleNotAvailable}}&lt;br /&gt;
|Done, but needs r.li.setup.&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.simpson}}&lt;br /&gt;
| {{ModuleNotAvailable}}&lt;br /&gt;
|Done, but needs r.li.setup.&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.los}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.mapcalc}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.mapcalculator}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common, gui wrapper (need both?)&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.mask}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.median}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.mfilter}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.mfilter.fp}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.mode}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.neighbors}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.null}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common x4, null, to, val, r.to.null?&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.arc}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.ascii}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.bin}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.gdal}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common x2 generic, GeoTiff&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.gdal.sh}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| old full map extent version&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.gridatb}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.mat}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.mpeg}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.png}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common, important once transparency and Worldfile gets backported from 6.5svn&amp;lt;br&amp;gt;(for OpenLayers/KML tile source)&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.pov}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common POVray&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.ppm}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.ppm3}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.tiff}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common, ''visual'' RGB output, not data values (use r.out.gdal for that)&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.vrml}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.vtk}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.xyz}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.param.scale}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.patch}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.plane}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.profile}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| Python plugin available to find transect profile&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.proj}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.quant}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.quantile}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.random}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.random.cells}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.random.surface}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.reclass}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common x2, generic, file&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.reclass.area}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common x3, generic, greater, lesser&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.recode}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.region}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| Oversold?, common x6, generic, rast, vect, region, edge, alignTo&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.regression.line}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.report}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.resamp.interp}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.resamp.rst}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.resamp.stats}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.resample}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.rescale}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.rescale.eq}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.ros}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.series}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.shaded.relief}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.sim.sediment}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.sim.water}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.slope.aspect}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common x2, slope, aspect, '''but not others'''&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.spread}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.spreadpath}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.statistics}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.stats}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.sum}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.sun}}&lt;br /&gt;
| {{ModuleNotAvailable|Lo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.sunmask}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common x2, date_time, position&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.support}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.support.stats}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common, maybe not needed&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.surf.area}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.surf.contour}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.surf.fractal}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| 6.3/6.4&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.surf.gauss}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.surf.idw}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common, faster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.surf.idw2}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common, supports floating point&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.surf.random}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.terraflow}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.terraflow.short}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| Not needed&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.texture}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common x2, generic, bis&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.thin}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.tileset}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.timestamp}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.to.rast3}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.to.rast3elev}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.to.vect}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common x3, point, line, area&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.topidx}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.topmodel}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.transect}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.univar}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.univar.sh}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| Not needed&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.volume}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.walk}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.water.outlet}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.watershed}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.what}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| Handled in the QGIS GUI&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.what.color}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3D raster modules ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ &amp;lt;font color=&amp;quot;darkgreen&amp;quot; size=&amp;quot;+1&amp;quot;&amp;gt;r3.*&amp;lt;/font&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
! Module&lt;br /&gt;
! Status &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.cross.rast}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.gwflow}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.in.ascii}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.in.v5d}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.info}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.mapcalc}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.mapcalculator}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.mask}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.mkdspf}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.null}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.out.ascii}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.out.v5d}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.out.vtk}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.stats}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.timestamp}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.to.rast}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.univar}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Vector modules ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ &amp;lt;font color=&amp;quot;darkgreen&amp;quot; size=&amp;quot;+1&amp;quot;&amp;gt;v.*&amp;lt;/font&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
! Module&lt;br /&gt;
! Status &lt;br /&gt;
! Icon&lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.buffer}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| 6.3/6.4,  https://trac.osgeo.org/grass/ticket/994&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.build}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| see specific modules &lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.build.all}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.build.polylines}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.category}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common x4, add, del, sum, change&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.centroids}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.class}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| &lt;br /&gt;
| Fuctionality supplied in QGIS Vector symbology&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.clean}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common x13&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.colors}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| &lt;br /&gt;
| Fuctionality supplied in QGIS Vector symbology&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.convert}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| &lt;br /&gt;
| For loading in old GRASS 4/5 vector data format. Not needed by QGIS.&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.convert.all}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| &lt;br /&gt;
| For loading in old GRASS 4/5 vector data format. Not needed by QGIS.&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.addcol}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| [[File:Table-field-create.png]]&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.addtable}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| [[File:Table-create.png]]&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.connect}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| [[File:Db-connect.png‎]]&lt;br /&gt;
| common, v.db.sconnect? v.db.what.connect?&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.dropcol}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| [[File:Table-field-delete.png]]&lt;br /&gt;
| modules-6.4&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.droptable}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| [[File:Table-delete.png]]&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.join}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.reconnect.all}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.renamecol}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.select}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| 6.3/6.4 x2&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.univar}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.update}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common x4, const, op, op query, query&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.delaunay}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common x2, line, area&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.digit}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| &lt;br /&gt;
| Not possible&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.dissolve}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.distance}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.drape}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.edit}}&lt;br /&gt;
| {{ModuleNotAvailable}}&lt;br /&gt;
| &lt;br /&gt;
|Requires an ad hoc GUI (more C++ coding)&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.external}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.extract}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common, list, where&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.extrude}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.generalize}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common, complicated&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.hull}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.import}}&lt;br /&gt;
| {{ModuleNotAvailable}}&lt;br /&gt;
| &lt;br /&gt;
|New since Community sprint in Como as a modified version of v.in.proj&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.ascii}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
|Added in r14546&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.db}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.dxf}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common x2, generic, multi&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.e00}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.garmin}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common, only for old serial models&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.geonames}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| modules-6.4&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.gns}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| modules-6.4&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.gpsbabel}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.lines|version=65}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| Only in 6.5svn, new wrapper script around v.in.mapgen with more obvious name&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.mapgen}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.ogr}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common x7&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.region}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.sites}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| &lt;br /&gt;
| For loading in old GRASS 4/5 vector data format. Not needed by QGIS.&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.sites.all}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| &lt;br /&gt;
| For loading in old GRASS 4/5 vector data format. Not needed by QGIS.&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.wfs}}&lt;br /&gt;
| {{ModuleNotAvailable}}&lt;br /&gt;
| &lt;br /&gt;
|Requires curl (not always available); errors with some servers&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.info}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| &lt;br /&gt;
| Functionality supplied in Toolbox&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.kcv}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.kernel}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.krige.py}}&lt;br /&gt;
| {{ModuleNotAvailable|Lo}}&lt;br /&gt;
| &lt;br /&gt;
|Available only from GRASS 6.5&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.label}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| &lt;br /&gt;
| Functionality supplied in QGIS GUI&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.label.sa}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| &lt;br /&gt;
| Functionality supplied in QGIS GUI&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.lidar.correction}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.lidar.edgedetection}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.lidar.growing}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.lrs.create}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| &lt;br /&gt;
| Python plugin for Linear Referencing available&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.lrs.label}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.lrs.segment}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.lrs.where}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.mkgrid}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common, by region (by coord is a custom graticule creator)&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.neighbors}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.nodes}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.alloc}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.allpairs}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.bridge}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.centrality}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.components}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.connectivity}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.distance}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.flow}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.iso}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.path}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.salesman}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.spanningtree}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.steiner}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.timetable}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.visibility}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.normal}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.out.ascii}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.out.dxf}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.out.gpsbabel}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.out.ogr}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| 6.3/6.4/common x4, shapefile, generic, gml, mapinfo; 6.x: PostgreSQL&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.out.pov}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.out.svg}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.out.vtk}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.outlier}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.overlay}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common x4, and, or, not, xor&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.parallel}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.patch}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.perturb}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.proj}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.qcount}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.random}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.rast.stats}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.reclass}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common x2, attr, file&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.report}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.sample}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.segment}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.select}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common,  v.select.overlap&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.split}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.support}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.surf.bspline}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.surf.idw}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.surf.rst}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.to.3d}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.to.db}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| 6.3/6.4&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.to.points}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.to.rast}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common x2, attr, constant&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.to.rast3}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.transform}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.type}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common x4, b2l, l2b, c2p, p2c&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.univar}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.univar.sh}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| &lt;br /&gt;
| old, not needed&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.vol.rst}}&lt;br /&gt;
| {{ModuleNotAvailableLo}}&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.voronoi}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common x2, line, area; https://trac.osgeo.org/grass/ticket/957&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.what}}&lt;br /&gt;
| {{ModuleNotRelevant}}&lt;br /&gt;
| &lt;br /&gt;
| QGIS GUI supplies query at location function&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.what.rast}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.what.vect}}&lt;br /&gt;
| {{ModuleAvailable}}&lt;br /&gt;
| &lt;br /&gt;
| common&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== GUI and command modules ===&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|+ &amp;lt;font color=&amp;quot;darkgreen&amp;quot; size=&amp;quot;+1&amp;quot;&amp;gt;GUI modules&amp;lt;/font&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
! Module&lt;br /&gt;
! Status &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|gis.m}}&lt;br /&gt;
|  {{ModuleNotRelevant}}&lt;br /&gt;
| Not relevant&lt;br /&gt;
|- &lt;br /&gt;
| {{cmd|nviz}}&lt;br /&gt;
|  {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| shell&lt;br /&gt;
|  {{ModuleAvailable}}&lt;br /&gt;
| common&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|xganim}}&lt;br /&gt;
|  {{ModuleNotAvailableLo}}&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Display modules ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable &amp;quot;&lt;br /&gt;
|+ &amp;lt;font color=&amp;quot;darkgreen&amp;quot; size=&amp;quot;+1&amp;quot;&amp;gt;d.*&amp;lt;/font&amp;gt;&amp;lt;BR&amp;gt;&amp;lt;BR&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| '' None of the display modules will be relevant. Display functionality is handled in the QGIS GUI. ''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
! Module&lt;br /&gt;
! Priority&lt;br /&gt;
! Status &lt;br /&gt;
! Comments&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.ask}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.barscale}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.colorlist}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.colors}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.colortable}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.correlate}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.erase}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.extend}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.extract}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.font}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.font.freetype}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.frame}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.geodesic}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.graph}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.grid}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.his}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.histogram}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.info}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.labels}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.legend}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.linegraph}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.m}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.mapgraph}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.measure}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.menu}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.mon}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.monsize}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.mvmon}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.nviz}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.out.file}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.out.gpsdrive}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.out.png}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.paint.labels}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.path}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.polar}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.profile}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.rast}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.rast.arrow}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.rast.edit}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.rast.leg}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.rast.num}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.redraw}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.resize}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.rgb}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.rhumbline}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.save}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.shadedmap}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.slide.show}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.split}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.split.frame}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.text}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.text.freetype}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.thematic.area}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.title}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.vect}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.vect.chart}}&lt;br /&gt;
|&lt;br /&gt;
|sortable&amp;quot;&lt;br /&gt;
|+ &amp;lt;font color=&amp;quot;darkgreen&amp;quot; s&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.vect.thematic}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.what.rast}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.what.vect}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.where}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.zoom}}&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Development]]&lt;br /&gt;
[[Category: QGIS]]&lt;/div&gt;</summary>
		<author><name>⚠️Sbl</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=AddOns/GRASS7/vector&amp;diff=20829</id>
		<title>AddOns/GRASS7/vector</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=AddOns/GRASS7/vector&amp;diff=20829"/>
		<updated>2014-09-24T11:03:57Z</updated>

		<summary type="html">&lt;p&gt;⚠️Sbl: Added v.lidar.mcc addon&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{AddOns}}&lt;br /&gt;
See also&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass7/vector/&lt;br /&gt;
&lt;br /&gt;
==== v.area.weigh ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|vector|v.area.weigh|version=7}} creates a raster surface from vector areas using known cell weights and preserving the value of the area attribute. For example, if the selected area attribute is the population count, the sum of all pixel values in a given area is equal to the area's population count with the area's population concentrated on the known location of urban areas.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Markus Metz&lt;br /&gt;
&lt;br /&gt;
==== v.build.pg ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|vector|v.build.pg|version=7}} builds PostGIS topology for feature tables linked via v.external.&lt;br /&gt;
&lt;br /&gt;
==== v.centerpoint ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|vector|v.centerpoint|version=7}} calculates various center points for points, lines and areas: center of gravity, geometric median etc.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Markus Metz&lt;br /&gt;
&lt;br /&gt;
==== v.class.mlpy ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|vector|v.class.mlpy|version=7}} classifies vector features. It is an interface to the [http://mlpy.sourceforge.net mlpy library] (Machine Learning Python). Classification is supervised and based on attribute table data. Geometry is not used. A training dataset is always required.&lt;br /&gt;
&lt;br /&gt;
==== v.colors2 ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|vector|v.colors|version=7}} is much like r.colors, but may be used for vector maps.&lt;br /&gt;
&lt;br /&gt;
==== v.concave.hull ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|vector|v.concave.hull|version=7}} creates a concave hull describing the shape of point clouds.&lt;br /&gt;
&lt;br /&gt;
==== v.delaunay3d ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|vector|v.delaunay3d|version=7}} creates a 3D triangulation from an input vector map containing points or centroids.&lt;br /&gt;
&lt;br /&gt;
Requires [http://www.cgal.org CGAL library].&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Martin Landa&lt;br /&gt;
&lt;br /&gt;
==== v.external.all ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|vector|v.external.all|version=7}} creates (using v.external) in the current mapset new pseudo-vector maps for all OGR layers from given OGR datasource (dsn option).&lt;br /&gt;
&lt;br /&gt;
==== v.habitat.dem ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|vector|v.habitat.dem|version=7}} calculates DEM and solar derived characteristics of habitat polygons.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Helmut Kudrnovsky&lt;br /&gt;
&lt;br /&gt;
==== v.in.geopaparazzi ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|vector|v.in.geopaparazzi|version=7}} imports all elements saved into [http://code.google.com/p/geopaparazzi/ Geopaparazzi].&lt;br /&gt;
&lt;br /&gt;
==== v.in.ply ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|vector|v.in.ply|version=7}} is a C program that imports a PLY file and writes it as GRASS vector map.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Markus Metz&lt;br /&gt;
&lt;br /&gt;
==== v.in.redwg ====&lt;br /&gt;
&lt;br /&gt;
: [http://lists.gnu.org/archive/html/info-libredwg/2010-08/msg00000.html v.in.redwg imports DWG files into GRASS.], see also [https://svn.osgeo.org/grass/grass-addons/grass7/vector/v.in.redwg here]&lt;br /&gt;
&lt;br /&gt;
:'''Author:''' Rodrigo Rodrigues da Silva&lt;br /&gt;
&lt;br /&gt;
==== v.in.wfs2 ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|vector|v.in.wfs2|version=7}} imports OGC WFS maps (Web Feature Service) from external servers.&lt;br /&gt;
&lt;br /&gt;
==== v.lidar.mcc ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|vector|v.lidar.mcc|version=7}} applies a Multi Curvature Classification procedure on LiDAR point clouds e.g. for filtering vegetation returns. The module is also usable for discrete LiDAR.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Stefan Blumentrath&lt;br /&gt;
&lt;br /&gt;
==== v.median ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|vector|v.median|version=7}} create the median point of a cloud of point.&lt;br /&gt;
&lt;br /&gt;
==== v.net.salesman.opt ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|vector|v.net.salesman.opt|version=7}} estimates the optimal route to visit nodes on a vector network and optionally tries to improve the result.&lt;br /&gt;
&lt;br /&gt;
==== v.out.ply ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|vector|v.out.ply|version=7}} is a C program that exports a GRASS vector map as PLY file.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Markus Metz&lt;br /&gt;
&lt;br /&gt;
==== v.ply.rectify ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|vector|v.ply.rectify|version=7}} imports a PLY point cloud, georeferences and exports it. The first three vertex properties must be the x, y, z coordinates with property names &amp;quot;x&amp;quot;, &amp;quot;y&amp;quot;, &amp;quot;z&amp;quot;, in this order.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Markus Metz&lt;br /&gt;
&lt;br /&gt;
==== v.surf.icw ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|vector|v.surf.icw|version=7}}:&lt;br /&gt;
Inverse cost weighting is like inverse distance weighted (IDW) interpolation, but uses cost instead of shortest Euclidean distance. In this way solid barriers and molasses zones may be correctly taken into account.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== v.to.lines ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|vector|v.to.lines|version=7}}:&lt;br /&gt;
converts vector polygons (boundaries) to lines as well as vector points to lines via triangulations.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Luca Delucchi&lt;br /&gt;
&lt;br /&gt;
==== v.surf.mass ====&lt;br /&gt;
&lt;br /&gt;
{{AddonSrc|vector|v.surf.mass|version=7}} creates a raster surface from vector areas, preserving the value of the area attribute. For example, if the selected area attribute is the population count, the sum of all pixel values in a given area is equal to the area's population count. ([http://svn.osgeo.org/grass/grass-addons/grass7/vector/v.surf.mass/v.surf.mass.html manual page])&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Markus Metz&lt;/div&gt;</summary>
		<author><name>⚠️Sbl</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Portland_2014&amp;diff=20828</id>
		<title>GRASS Community Sprint Portland 2014</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Portland_2014&amp;diff=20828"/>
		<updated>2014-09-23T20:05:45Z</updated>

		<summary type="html">&lt;p&gt;⚠️Sbl: Update manual page status&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The GRASS GIS [[team]] will participate in the [http://wiki.osgeo.org/wiki/FOSS4G_2014_Code_Sprint Portland Code Sprint 2014] at FOSS4G 2014 in US. The sprint will be held the day after the main conference ('''Saturday, September 13th''' 2014).&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
This '''Portland FOSS4G Code Sprint 2014''' is a great occasion for folks to support the development by actively contributing to the source code, manuals or likewise. This code sprint is targeting members of OSGeo software projects.&lt;br /&gt;
&lt;br /&gt;
For this meeting, we welcome people committed to improving the '''GRASS GIS project''' and the interfaces to [[QGIS GRASS Cookbook|QGIS]], [[GDAL]], [[PostGIS]], [[R statistics]], [[GRASS and Sextante|Sextante, gvSIG]], OGC Services (esp. [[WPS]]) and more. This includes developers, documenters, bug reporters, translators and others. We'll try to make a major step forward towards a stable GRASS GIS 7 release.&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
We welcome inkind as well as direct '''financial contributions''' to help reducing travelling and accommodation expenses for GRASS developers with far arrival If you are interested to sponsor the GRASS Community Sprint, please read about&lt;br /&gt;
&lt;br /&gt;
:::'''sponsoring the GRASS project''' at '''[http://grass.osgeo.org/donations http://grass.osgeo.org/donations]'''&lt;br /&gt;
&lt;br /&gt;
Note that it is also possible to &amp;lt;b&amp;gt;buy a round of beer for the developers with a quick click&amp;lt;/b&amp;gt; using the PayPal &amp;quot;Buy [pizza/beer/...] Now&amp;quot; button [[Image:Btn_donate_SM.gif|center|link=http://grass.osgeo.org/donations/]]&lt;br /&gt;
&lt;br /&gt;
For any questions, please contact [[User:Neteler|Markus Neteler]] &amp;lt;tt&amp;gt;&amp;lt;neteler at osgeo.org&amp;gt;&amp;lt;/tt&amp;gt;. Any surplus at the end of the event will be turned over to the GRASS GIS project.&lt;br /&gt;
&lt;br /&gt;
This GRASS GIS Community Sprint is a great occasion for you to support the development of GRASS. With your contribution you'll enable more developers to meet. The community sprint is an important opportunity for the GRASS developers to discuss and collaboratively resolve bugs, plan the direction for the project and work on new features. Please see below for the more detailed agenda. The developers and contributors are donating their valuable time, so it would be great if in-kind funding can be made available from within the community to cover out-of-pocket expenses. All of the work that takes place at the community sprint will be directly contributed back into the GRASS project to the benefit of everyone who uses it.&lt;br /&gt;
&lt;br /&gt;
The Portland event is especially interesting since important OSGeo projects come together!&lt;br /&gt;
&lt;br /&gt;
=== Thanks to our sponsors ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--We are grateful for the support which we have received to organize this GRASS Community Sprint:--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We are greatful to the organizers of FOSS4G Portland and to the Eliot Center for hosting us!&lt;br /&gt;
&lt;br /&gt;
== Timing  ==&lt;br /&gt;
&lt;br /&gt;
'''When''': '''Saturday, September 13th''' 2014&lt;br /&gt;
&lt;br /&gt;
'''Duration''': One day&lt;br /&gt;
&lt;br /&gt;
WHEN: '''08:00 until 16:00''' (although the building will be open into the evening)&lt;br /&gt;
&lt;br /&gt;
WHERE: The sprint will be in the [http://eliotcenterportland.org Eliot Center] ([http://osm.org/go/WIDlUtpOQ-?m=&amp;amp;relation=186579 OSM]) along side [http://wherecamppdx.org WhereCampPDX].&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
&lt;br /&gt;
The sprint will be in the [http://eliotcenterportland.org Eliot Center] ([http://osm.org/go/WIDlUtpOQ-?m=&amp;amp;relation=186579 OSM]) along side [http://wherecamppdx.org WhereCampPDX].&lt;br /&gt;
&lt;br /&gt;
== Accommodation and Costs ==&lt;br /&gt;
&lt;br /&gt;
Please check on the [http://wiki.osgeo.org/wiki/FOSS4G_2014_Code_Sprint page of the sprint] more information about accommodation and cost. The participation is free of charge. However, participants should plan for the following costs:&lt;br /&gt;
&lt;br /&gt;
* Travel to Portland&lt;br /&gt;
* Accommodation&lt;br /&gt;
* Breakfast and dinner (partly) &lt;br /&gt;
&lt;br /&gt;
== Agenda - What we plan to do ==&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The program is generally open for your ideas. Please write an email to the [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developer list] to discuss your contribution or modify this wiki.&lt;br /&gt;
&lt;br /&gt;
Further details about the action items you '''find [[Talk:GRASS Community Sprint Portland 2014|here]]''' and below. Topics cover non-technical, semi-technical, and technical issues.&lt;br /&gt;
&lt;br /&gt;
=== Ideas ===&lt;br /&gt;
&lt;br /&gt;
Please edit this wiki page!&lt;br /&gt;
&lt;br /&gt;
==== GRASS GIS 7 release related ====&lt;br /&gt;
* http://trac.osgeo.org/grass/wiki/Grass7Planning&lt;br /&gt;
** Fix the few remaining http://trac.osgeo.org/grass/wiki/Grass7Planning#Blockers&lt;br /&gt;
** Decide an official sample dataset for TGRASS, see {{trac|2259}} (comment 4)&lt;br /&gt;
* ...&lt;br /&gt;
* Last call for options keys, values and flags consolidation, use {{trac|2409}} to coordinate&lt;br /&gt;
&lt;br /&gt;
==== Manual improvements ====&lt;br /&gt;
* Update the remaining &amp;quot;empty&amp;quot; manual pages (&amp;lt;&amp;lt;--- power users, please contribute!)&lt;br /&gt;
In order to coordinate efforts (also with people working from remote places) it would be helpful if volunteers sign up in the table below, for a manual they would feel comfortable to fill. Please feel free to add other modules which need a manual update or with missing manual pages... Regarding examples for the TGRASS modules see also discussion here: http://lists.osgeo.org/pipermail/grass-dev/2014-April/068556.html&lt;br /&gt;
And for &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Module with incomplete manual !! Who !! Status !! Link&lt;br /&gt;
|-&lt;br /&gt;
| t.rast.out.vtk ||  || TBD || http://grass.osgeo.org/grass71/manuals/t.rast.out.vtk.html&lt;br /&gt;
|-&lt;br /&gt;
| t.rast.to.rast3 ||  || TBD || http://grass.osgeo.org/grass71/manuals/t.rast.to.rast3.html&lt;br /&gt;
|-&lt;br /&gt;
| t.rast3d.extract ||  || TBD || http://grass.osgeo.org/grass71/manuals/t.rast3d.extract.html&lt;br /&gt;
|-&lt;br /&gt;
| t.rast3d.list || ? || {{done}} || http://grass.osgeo.org/grass71/manuals/t.rast3d.list.html&lt;br /&gt;
|-&lt;br /&gt;
| t.rast3d.mapcalc ||  || TBD || http://grass.osgeo.org/grass71/manuals/t.rast3d.mapcalc.html&lt;br /&gt;
|-&lt;br /&gt;
| t.rast3d.univar || ? || Check page || http://grass.osgeo.org/grass71/manuals/t.rast3d.univar.html&lt;br /&gt;
|-&lt;br /&gt;
| t.remove || Stefan B. || {{done}} || http://grass.osgeo.org/grass71/manuals/t.remove.html&lt;br /&gt;
|-&lt;br /&gt;
| t.sample ||  || TBD || http://grass.osgeo.org/grass71/manuals/t.sample.html&lt;br /&gt;
|-&lt;br /&gt;
| t.support ||  || TBD || http://grass.osgeo.org/grass71/manuals/t.support.html&lt;br /&gt;
|-&lt;br /&gt;
| t.topology ||  || TBD || http://grass.osgeo.org/grass71/manuals/t.topology.html&lt;br /&gt;
|-&lt;br /&gt;
| t.unregister || ? || {{done}} || http://grass.osgeo.org/grass71/manuals/t.unregister.html&lt;br /&gt;
|-&lt;br /&gt;
| t.vect.db.select ||  || TBD || http://grass.osgeo.org/grass71/manuals/t.vect.db.select.html&lt;br /&gt;
|-&lt;br /&gt;
| t.vect.export || Eric G. || {{done}} || http://grass.osgeo.org/grass71/manuals/t.vect.export.html&lt;br /&gt;
|-&lt;br /&gt;
| t.vect.extract || Stefan B. || TBD || http://grass.osgeo.org/grass71/manuals/t.vect.extract.html&lt;br /&gt;
|-&lt;br /&gt;
| t.vect.import || Eric G. || {{done}} || http://grass.osgeo.org/grass71/manuals/t.vect.import.html&lt;br /&gt;
|-&lt;br /&gt;
| t.vect.list || ? || {{done}} || http://grass.osgeo.org/grass71/manuals/t.vect.list.html&lt;br /&gt;
|-&lt;br /&gt;
| t.vect.observe.strds ||  || TBD || http://grass.osgeo.org/grass71/manuals/t.vect.observe.strds.html&lt;br /&gt;
|-&lt;br /&gt;
| t.vect.univar ||  || TBD || http://grass.osgeo.org/grass71/manuals/t.vect.univar.html&lt;br /&gt;
|-&lt;br /&gt;
| t.vect.what.strds ||  || TBD || http://grass.osgeo.org/grass71/manuals/t.vect.what.strds.html&lt;br /&gt;
|-&lt;br /&gt;
| More? ||  || || &lt;br /&gt;
|}&lt;br /&gt;
* add more examples to the manual which in turn can be used for the new [http://trac.osgeo.org/grass/wiki/GSoC/2014/TestingFrameworkForGRASS Testing framework for GRASS GIS]&lt;br /&gt;
* &amp;lt;strike&amp;gt;change TOC to collapse style with mouse-over expansion&amp;lt;/strike&amp;gt;: [http://grass.osgeo.org/grass71/manuals/ new manual style]&lt;br /&gt;
* clone http://grasswiki.osgeo.org/wiki/Quick_wxGUI_tutorial into new one for GRASS 7 (and replace therein &amp;quot;random surface&amp;quot; with WMS etc)&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
==== New funding model to facilitate payed GRASS GIS programming ====&lt;br /&gt;
* in order to get annoying/boring issues fixed, try a crowd funding approach, eg  Kickstarter&lt;br /&gt;
** identify GRASS issues to be fixed for cash&lt;br /&gt;
** discuss how to select the programmers&lt;br /&gt;
** example: http://zim-wiki.org/contribute.html --&amp;gt; Bounties&lt;br /&gt;
&lt;br /&gt;
==== Testing framework ====&lt;br /&gt;
* &amp;lt;strike&amp;gt;how to write tests for the new [http://trac.osgeo.org/grass/wiki/GSoC/2014/TestingFrameworkForGRASS testing framework] and general presentation&amp;lt;/strike&amp;gt;&lt;br /&gt;
* discuss relation to benchmarking (https://github.com/jachym/grass-performace)&lt;br /&gt;
* write closing Future work statement (TODO list) for related GSoC project&lt;br /&gt;
&lt;br /&gt;
==== Module fixes related ====&lt;br /&gt;
* &amp;lt;strike&amp;gt;get g.gui.rlisetup working for circular buffers &amp;lt;/strike&amp;gt; (see [http://lists.osgeo.org/pipermail/grass-user/2014-August/070799.html step-by-step example]) [need some testing] {{changeset|61866}} &lt;br /&gt;
* &amp;lt;strike&amp;gt;fix v.to.lines in Addons and move it to main GRASS GIS 7&amp;lt;/strike&amp;gt; {{changeset|61923}}&lt;br /&gt;
* &amp;lt;strike&amp;gt;fix r.li.daemon memory leak&amp;lt;/strike&amp;gt;: fixed in {{changeset|61812}} &amp;lt;&amp;lt;-- testing needed, use examples&lt;br /&gt;
* &amp;lt;strike&amp;gt;TGRASS: fix numbers in aggregate: tempmean_seasonal_9 --&amp;gt; tempmean_seasonal_0009 | see animation tool where it is solved&amp;lt;/strike&amp;gt; {{changeset|61888}}&lt;br /&gt;
* &amp;lt;strike&amp;gt;port grass64/raster/r.out.vrml/ to GRASS 7 for 3D printing:&amp;lt;/strike&amp;gt; it is {{cmd|r.out.vrml|version=70}}&lt;br /&gt;
* check wxGUI r.colors tool for integer maps (may show as FP maps): {{trac|2202}}&lt;br /&gt;
* check patch for *.colors.out {{trac|2399}}&lt;br /&gt;
* complete r.reclass.area improvements (LD + MN)&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
==== Web site: related ====&lt;br /&gt;
* simplify http://grass.osgeo.org/download/software/ms-windows/&lt;br /&gt;
* OSGeoREL: add parsable &amp;quot;GRASS GIS&amp;quot; tag to [http://wiki.osgeo.org/wiki/Edu_current_initiatives#Current_members_of_the_ICA-OSGeo_Network table of OSGeoREL labs] - then we could showcase them easily in the GRASS CMS&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
==== GDAL/OGR interface ====&lt;br /&gt;
&lt;br /&gt;
* Patch for GDAL-GRASS plugin for GRASS 7: fix patch in https://trac.osgeo.org/gdal/ticket/2953&lt;br /&gt;
&lt;br /&gt;
== Participation ==&lt;br /&gt;
&lt;br /&gt;
=== In person ===&lt;br /&gt;
Please fill the related table on the [http://wiki.osgeo.org/wiki/FOSS4G_2014_Code_Sprint#GRASS_GIS wiki page of the sprint].&lt;br /&gt;
&lt;br /&gt;
=== Via IRC chat or hangout===&lt;br /&gt;
&lt;br /&gt;
==== IRC ====&lt;br /&gt;
: [irc://freenode/grass #grass] on Freenode&lt;br /&gt;
&lt;br /&gt;
For details, see [[IRC]]&lt;br /&gt;
&lt;br /&gt;
==== Hangout/Videobridge ====&lt;br /&gt;
&lt;br /&gt;
There is the option to use Google+ Hangout, it is technically limited to 10 people and may require everyone to have G+ social media accounts to participate. More [http://www.google.com/+/learnmore/hangouts/ Information on G+ hangout].&lt;br /&gt;
&lt;br /&gt;
Similarly multi-video conference calls can be done with Skype if the conference call initiator is a paid-up commercial Skype customer.&lt;br /&gt;
&lt;br /&gt;
The FOSS [http://www.jitsi.org Jitsi] VoIP, IM, and video conferencing software produces a trivial to set up [https://jitsi.org/Projects/JitsiVideobridge VideoBridge] server software to the same. '''''New:''''' https://meet.jit.si -- zero-conf free no-accounts needed video conferencing; chat, etherpad, and prezi built in. (needs recent Opera or Chrome/Chromium with WebRTC support)&lt;br /&gt;
&lt;br /&gt;
Further discussion on the pros and cons of these can be found on the [[Talk:GRASS_Community_Sprint_Prague_2013|Talk side of this wiki page]].&lt;br /&gt;
&lt;br /&gt;
Please add yourself here below (please add also your gmail account for G+ hangout):&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== Individual Preparation ==&lt;br /&gt;
&lt;br /&gt;
* Bring your own computer&lt;br /&gt;
* Bring {{wikipedia|AC adapter|power connector adapter}} if needed (USA {{wikipedia|File:A_plug.jpg|(Type A)}} {{wikipedia|File:B_plug.jpg|(Type B)}})&lt;br /&gt;
* Install subversion and the compiler tools, and come with a working GRASS development environment if possible.&lt;br /&gt;
&lt;br /&gt;
== Broadcast &amp;amp; Video ==&lt;br /&gt;
&lt;br /&gt;
Perhas during the event :)&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* '''How was it last time?'''&lt;br /&gt;
** Very nice, see [[GRASS Community Sprint Vienna 2014]]!&lt;br /&gt;
* ''Is the GRASS Community Sprint just a coding event?''&lt;br /&gt;
** It is mainly a coding and documentation event. It is a working session for people who are already participants in the GRASS project and/or are committed to improving the GRASS project.&lt;br /&gt;
** On demand we can do some presentations of current working GRASS implementation and new upcoming features to spread the idea of Open Source GIS software&lt;br /&gt;
* ''Is the GRASS Community Sprint for developers only?''&lt;br /&gt;
** No: anybody can help, with testing, checking out bugs and fixes, documentation and more.&lt;br /&gt;
* ''Where can I get help and more information about the community sprint?''&lt;br /&gt;
** Contact [[User:Neteler|Markus Neteler]], ... (add)&lt;br /&gt;
&lt;br /&gt;
== Press Release ==&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
[[Category:Workshops]]&lt;/div&gt;</summary>
		<author><name>⚠️Sbl</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_Community_Sprint_Portland_2014&amp;diff=20807</id>
		<title>Talk:GRASS Community Sprint Portland 2014</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_Community_Sprint_Portland_2014&amp;diff=20807"/>
		<updated>2014-09-14T21:28:27Z</updated>

		<summary type="html">&lt;p&gt;⚠️Sbl: Individual report: Stefan Blumentrath&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reports ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[Image:Portland2014 grassgis7 code sprint.jpg|400px|GRASS GIS 7 sprint team at FOSS4G 2014, Portland (OR), USA]]&lt;br /&gt;
&lt;br /&gt;
GRASS GIS 7 sprint team at FOSS4G 2014, Portland (OR), USA&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Overall ===&lt;br /&gt;
&lt;br /&gt;
* heavy backporting to release_branch70 activity&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
=== Individual reports ===&lt;br /&gt;
==== Stefan Blumentrath (remote) ====&lt;br /&gt;
* attended such an event for the first time and had a great deal of fun!&lt;br /&gt;
* wrote manual page for t.remove (and started working on t.unregister)&lt;br /&gt;
* found out that writing manual pages can be very instructive and helps understanding details of the respective modules as well as it gives a deeper insight into the TGIS concept in general&lt;br /&gt;
* can recommend the experience to other users and is looking forward to a next occasion&lt;br /&gt;
* will continue working on the other manual pages as time permits&lt;br /&gt;
&lt;br /&gt;
==== Vaclav Petras ====&lt;br /&gt;
* Move r.los to GRASS Addons ({{trac|2342}})&lt;br /&gt;
* Change {{cmd|i.tasscap|version=70}} interface to more general one ({{trac|2407}})&lt;br /&gt;
* New [http://grass.osgeo.org/grass71/manuals/ GRASS GIS HTML 7 manual pages style] ({{changeset|61935}})&lt;br /&gt;
&lt;br /&gt;
==== Anna Petrasova ====&lt;br /&gt;
* attempts to fix blocker {{trac|1681}} in {{changeset|61897}}&lt;br /&gt;
* mainly backporting (d.what.rast/vect, v/r.in.lidar, ...)&lt;br /&gt;
* fix for {{trac|1954}}, in {{changeset|61938}}&lt;br /&gt;
&lt;br /&gt;
==== [[User:lucadelu|Luca Delucchi]] ====&lt;br /&gt;
* improved sphinx documentation for GUI and libs [{{changeset|61917}} {{changeset|61898}} {{changeset|61891}} {{changeset|61886}}]&lt;br /&gt;
* improvement in bug {{trac|2413}} [{{changeset|61862}}]&lt;br /&gt;
* fixed ''g.gui.rlisetup'' working for circular buffers [{{changeset|61866}}]&lt;br /&gt;
* fix ''v.to.lines'' in Addons and move it to main GRASS GIS 7 [{{changeset|61923}}]&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
==== Jarrett  Keifer ====&lt;br /&gt;
* PyGRASS vector documentation expanded [{{changeset|61941}}]&lt;br /&gt;
&lt;br /&gt;
==== [[User:Neteler|Markus Neteler]] ====&lt;br /&gt;
* r.viewshed test added for testsuite [{{changeset|61930}}]&lt;br /&gt;
* backport of i.modis.qc: Added Internal Climatology for MOD09CMG and MYD09CMG [{{changeset|61937}}]&lt;br /&gt;
&lt;br /&gt;
==== Eric Goddard ====&lt;br /&gt;
* manual pages for t.vect.import/export&lt;br /&gt;
&lt;br /&gt;
==== [[User:hellik|Helmut Kudrnovsky]] (remote) ====&lt;br /&gt;
* winGRASS: MS runtime installation - investigation why it fails [{{changeset|61911}}]&lt;br /&gt;
&lt;br /&gt;
== Overall Code Sprint page ==&lt;br /&gt;
&lt;br /&gt;
See http://wiki.osgeo.org/wiki/FOSS4G_2014_Code_Sprint&lt;br /&gt;
&lt;br /&gt;
== Press release ==&lt;br /&gt;
&lt;br /&gt;
...&lt;/div&gt;</summary>
		<author><name>⚠️Sbl</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Portland_2014&amp;diff=20770</id>
		<title>GRASS Community Sprint Portland 2014</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Portland_2014&amp;diff=20770"/>
		<updated>2014-09-11T12:05:03Z</updated>

		<summary type="html">&lt;p&gt;⚠️Sbl: manual pages which could be filled by Stefan B.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The GRASS GIS [[team]] will participate in the [http://wiki.osgeo.org/wiki/FOSS4G_2014_Code_Sprint Portland Code Sprint 2014] at FOSS4G 2014 in US. The sprint will be held the day after the main conference ('''Saturday, September 13th''' 2014).&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
This '''Portland FOSS4G Code Sprint 2014''' is a great occasion for folks to support the development by actively contributing to the source code, manuals or likewise. This code sprint is targeting members of OSGeo software projects.&lt;br /&gt;
&lt;br /&gt;
For this meeting, we welcome people committed to improving the '''GRASS GIS project''' and the interfaces to [[QGIS GRASS Cookbook|QGIS]], [[GDAL]], [[PostGIS]], [[R statistics]], [[GRASS and Sextante|Sextante, gvSIG]], OGC Services (esp. [[WPS]]) and more. This includes developers, documenters, bug reporters, translators and others. We'll try to make a major step forward towards a stable GRASS GIS 7 release.&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
We welcome inkind as well as direct '''financial contributions''' to help reducing travelling and accommodation expenses for GRASS developers with far arrival If you are interested to sponsor the GRASS Community Sprint, please read about&lt;br /&gt;
&lt;br /&gt;
:::'''sponsoring the GRASS project''' at '''[http://grass.osgeo.org/donations http://grass.osgeo.org/donations]'''&lt;br /&gt;
&lt;br /&gt;
Note that it is also possible to &amp;lt;b&amp;gt;buy a round of beer for the developers with a quick click&amp;lt;/b&amp;gt; using the PayPal &amp;quot;Buy [pizza/beer/...] Now&amp;quot; button [[Image:Btn_donate_SM.gif|center|link=http://grass.osgeo.org/donations/]]&lt;br /&gt;
&lt;br /&gt;
For any questions, please contact [[User:Neteler|Markus Neteler]] &amp;lt;tt&amp;gt;&amp;lt;neteler at osgeo.org&amp;gt;&amp;lt;/tt&amp;gt;. Any surplus at the end of the event will be turned over to the GRASS GIS project.&lt;br /&gt;
&lt;br /&gt;
This GRASS GIS Community Sprint is a great occasion for you to support the development of GRASS. With your contribution you'll enable more developers to meet. The community sprint is an important opportunity for the GRASS developers to discuss and collaboratively resolve bugs, plan the direction for the project and work on new features. Please see below for the more detailed agenda. The developers and contributors are donating their valuable time, so it would be great if in-kind funding can be made available from within the community to cover out-of-pocket expenses. All of the work that takes place at the community sprint will be directly contributed back into the GRASS project to the benefit of everyone who uses it.&lt;br /&gt;
&lt;br /&gt;
The Portland event is especially interesting since important OSGeo projects come together!&lt;br /&gt;
&lt;br /&gt;
=== Thanks to our sponsors ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--We are grateful for the support which we have received to organize this GRASS Community Sprint:--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Timing  ==&lt;br /&gt;
&lt;br /&gt;
'''When''': '''Saturday, September 13th''' 2014&lt;br /&gt;
&lt;br /&gt;
'''Duration''': One day&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
&lt;br /&gt;
The sprint will be in the [http://eliotcenterportland.org Eliot Center] ([http://osm.org/go/WIDlUtpOQ-?m=&amp;amp;relation=186579 OSM]) along side [http://wherecamppdx.org WhereCampPDX].&lt;br /&gt;
&lt;br /&gt;
== Accommodation and Costs ==&lt;br /&gt;
&lt;br /&gt;
Please check on the [http://wiki.osgeo.org/wiki/FOSS4G_2014_Code_Sprint page of the sprint] more information about accommodation and cost. The participation is free of charge. However, participants should plan for the following costs:&lt;br /&gt;
&lt;br /&gt;
* Travel to Portland&lt;br /&gt;
* Accommodation&lt;br /&gt;
* Breakfast and dinner (partly) &lt;br /&gt;
&lt;br /&gt;
== Agenda - What we plan to do ==&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The program is generally open for your ideas. Please write an email to the [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developer list] to discuss your contribution or modify this wiki.&lt;br /&gt;
&lt;br /&gt;
Further details about the action items you '''find [[Talk:GRASS Community Sprint Portland 2014|here]]''' and below. Topics cover non-technical, semi-technical, and technical issues.&lt;br /&gt;
&lt;br /&gt;
=== Ideas ===&lt;br /&gt;
&lt;br /&gt;
Please edit this wiki page!&lt;br /&gt;
&lt;br /&gt;
==== GRASS GIS 7 release related ====&lt;br /&gt;
* http://trac.osgeo.org/grass/wiki/Grass7Planning&lt;br /&gt;
** Fix the few remaining http://trac.osgeo.org/grass/wiki/Grass7Planning#Blockers&lt;br /&gt;
** Decide an official sample dataset for TGRASS, see {{trac|2259}} (comment 4)&lt;br /&gt;
* ...&lt;br /&gt;
* Last call for options keys, values and flags consolidation, use {{trac|2409}} to coordinate&lt;br /&gt;
&lt;br /&gt;
==== Manual improvements ====&lt;br /&gt;
* Update the remaining &amp;quot;empty&amp;quot; manual pages (&amp;lt;&amp;lt;--- power users, please contribute!)&lt;br /&gt;
In order to coordinate efforts (also with people working from remote places) it would be helpful if volunteers sign up in the table below, for a manual they would feel comfortable to fill. Please feel free to add other modules which need a manual update or with missing manual pages... Regarding examples for the TGRASS modules see also discussion here: http://lists.osgeo.org/pipermail/grass-dev/2014-April/068556.html&lt;br /&gt;
And for &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Module with incomplete manual !! Who !! Status !! Link&lt;br /&gt;
|-&lt;br /&gt;
| t.rast.out.vtk ||  || TBD || http://grass.osgeo.org/grass70/manuals/t.rast.out.vtk.html&lt;br /&gt;
|-&lt;br /&gt;
| t.rast.to.rast3 ||  || TBD || http://grass.osgeo.org/grass70/manuals/t.rast.to.rast3.html&lt;br /&gt;
|-&lt;br /&gt;
| t.rast3d.extract ||  || TBD || http://grass.osgeo.org/grass70/manuals/t.rast3d.extract.html&lt;br /&gt;
|-&lt;br /&gt;
| t.rast3d.list ||  || TBD || http://grass.osgeo.org/grass70/manuals/t.rast3d.list.html&lt;br /&gt;
|-&lt;br /&gt;
| t.rast3d.mapcalc ||  || TBD || http://grass.osgeo.org/grass70/manuals/t.rast3d.mapcalc.html&lt;br /&gt;
|-&lt;br /&gt;
| t.rast3d.univar ||  || TBD || http://grass.osgeo.org/grass70/manuals/t.rast3d.univar.html&lt;br /&gt;
|-&lt;br /&gt;
| t.remove || Stefan B. || TBD || http://grass.osgeo.org/grass70/manuals/t.remove.html&lt;br /&gt;
|-&lt;br /&gt;
| t.sample ||  || TBD || http://grass.osgeo.org/grass70/manuals/t.sample.html&lt;br /&gt;
|-&lt;br /&gt;
| t.support ||  || TBD || http://grass.osgeo.org/grass70/manuals/t.support.html&lt;br /&gt;
|-&lt;br /&gt;
| t.topology ||  || TBD || http://grass.osgeo.org/grass70/manuals/t.topology.html&lt;br /&gt;
|-&lt;br /&gt;
| t.unregister || Stefan B. || TBD || http://grass.osgeo.org/grass70/manuals/t.unregister.html&lt;br /&gt;
|-&lt;br /&gt;
| t.vect.db.select ||  || TBD || http://grass.osgeo.org/grass70/manuals/t.vect.db.select.html&lt;br /&gt;
|-&lt;br /&gt;
| t.vect.export ||  || TBD || http://grass.osgeo.org/grass70/manuals/t.vect.export.html&lt;br /&gt;
|-&lt;br /&gt;
| t.vect.extract || Stefan B. || TBD || http://grass.osgeo.org/grass70/manuals/t.vect.extract.html&lt;br /&gt;
|-&lt;br /&gt;
| t.vect.import ||  || TBD || http://grass.osgeo.org/grass70/manuals/t.vect.import.html&lt;br /&gt;
|-&lt;br /&gt;
| t.vect.list ||  ||  || http://grass.osgeo.org/grass70/manuals/t.vect.list.html&lt;br /&gt;
|-&lt;br /&gt;
| t.vect.observe.strds ||  || TBD || http://grass.osgeo.org/grass70/manuals/t.vect.observe.strds.html&lt;br /&gt;
|-&lt;br /&gt;
| t.vect.univar ||  || TBD || http://grass.osgeo.org/grass70/manuals/t.vect.univar.html&lt;br /&gt;
|-&lt;br /&gt;
| t.vect.what.strds ||  || TBD || http://grass.osgeo.org/grass70/manuals/t.vect.what.strds.html&lt;br /&gt;
|-&lt;br /&gt;
| More? ||  || || &lt;br /&gt;
|}&lt;br /&gt;
* add more examples to the manual which in turn can be used for the new [http://trac.osgeo.org/grass/wiki/GSoC/2014/TestingFrameworkForGRASS Testing framework for GRASS GIS]&lt;br /&gt;
* change TOC to collapse style with mouse-over expansion&lt;br /&gt;
* clone http://grasswiki.osgeo.org/wiki/Quick_wxGUI_tutorial into new one for GRASS 7 (and replace therein &amp;quot;random surface&amp;quot; with WMS etc)&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
==== New funding model to facilitate payed GRASS GIS programming ====&lt;br /&gt;
* in order to get nasty annoying issues fixed, try a crowd funding approach, eg  Kickstarter&lt;br /&gt;
** identify GRASS issues to be fixed for cash&lt;br /&gt;
** discuss how to select the programmers&lt;br /&gt;
&lt;br /&gt;
==== Testing framework ====&lt;br /&gt;
* how to write tests and general presentation&lt;br /&gt;
* discuss relation to benchmarking (https://github.com/jachym/grass-performace)&lt;br /&gt;
* write closing Future work statement (TODO list) for related GSoC project&lt;br /&gt;
&lt;br /&gt;
==== Module fixes related ====&lt;br /&gt;
* get g.gui.rlisetup working for circular buffers (see [http://lists.osgeo.org/pipermail/grass-user/2014-August/070799.html step-by-step example])&lt;br /&gt;
* fix v.to.lines in Addons and move it to main GRASS GIS 7&lt;br /&gt;
* &amp;lt;strike&amp;gt;fix r.li.daemon memory leak&amp;lt;/strike&amp;gt; test fixed in {{changeset|61812}} &amp;lt;&amp;lt;-- testing needed, use examples&lt;br /&gt;
* fix potential v.generalize memory leak (add such tests to [http://trac.osgeo.org/grass/wiki/GSoC/2014/TestingFrameworkForGRASS testsuite])&lt;br /&gt;
* check wxGUI r.colors tool for integer maps (may show as FP maps?)&lt;br /&gt;
* complete r.reclass.area improvements (LD + MN)&lt;br /&gt;
* TGRASS: fix numbers in aggregate: tempmean_seasonal_9 --&amp;gt; tempmean_seasonal_0009 | see animation tool where it is solved&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
==== Web site: related ====&lt;br /&gt;
* simplify http://grass.osgeo.org/download/software/ms-windows/&lt;br /&gt;
* OSGeoREL: add parsable &amp;quot;GRASS GIS&amp;quot; tag to [http://wiki.osgeo.org/wiki/Edu_current_initiatives#Current_members_of_the_ICA-OSGeo_Network table of OSGeoREL labs] - then we could showcase them easily in the GRASS CMS&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
==== GDAL/OGR interface ===&lt;br /&gt;
&lt;br /&gt;
* Patch for GDAL-GRASS plugin for GRASS 7: fix patch in https://trac.osgeo.org/gdal/ticket/2953&lt;br /&gt;
&lt;br /&gt;
== Participation ==&lt;br /&gt;
&lt;br /&gt;
=== In person ===&lt;br /&gt;
Please fill the related table on the [http://wiki.osgeo.org/wiki/FOSS4G_2014_Code_Sprint#GRASS_GIS wiki page of the sprint].&lt;br /&gt;
&lt;br /&gt;
=== Via IRC chat or hangout===&lt;br /&gt;
&lt;br /&gt;
==== IRC ====&lt;br /&gt;
: [irc://freenode/grass #grass] on Freenode&lt;br /&gt;
&lt;br /&gt;
For details, see [[IRC]]&lt;br /&gt;
&lt;br /&gt;
==== Hangout/Videobridge ====&lt;br /&gt;
&lt;br /&gt;
There is the option to use Google+ Hangout, it is technically limited to 10 people and may require everyone to have G+ social media accounts to participate. More [http://www.google.com/+/learnmore/hangouts/ Information on G+ hangout].&lt;br /&gt;
&lt;br /&gt;
Similarly multi-video conference calls can be done with Skype if the conference call initiator is a paid-up commercial Skype customer.&lt;br /&gt;
&lt;br /&gt;
The FOSS [http://www.jitsi.org Jitsi] VoIP, IM, and video conferencing software produces a trivial to set up [https://jitsi.org/Projects/JitsiVideobridge VideoBridge] server software to the same. '''''New:''''' https://meet.jit.si -- zero-conf free no-accounts needed video conferencing; chat, etherpad, and prezi built in. (needs recent Opera or Chrome/Chromium with WebRTC support)&lt;br /&gt;
&lt;br /&gt;
Further discussion on the pros and cons of these can be found on the [[Talk:GRASS_Community_Sprint_Prague_2013|Talk side of this wiki page]].&lt;br /&gt;
&lt;br /&gt;
Please add yourself here below (please add also your gmail account for G+ hangout):&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== Individual Preparation ==&lt;br /&gt;
&lt;br /&gt;
* Bring your own computer&lt;br /&gt;
* Bring {{wikipedia|AC adapter|power connector adapter}} if needed (USA {{wikipedia|File:A_plug.jpg|(Type A)}} {{wikipedia|File:B_plug.jpg|(Type B)}})&lt;br /&gt;
* Install subversion and the compiler tools, and come with a working GRASS development environment if possible.&lt;br /&gt;
&lt;br /&gt;
== Broadcast &amp;amp; Video ==&lt;br /&gt;
&lt;br /&gt;
Perhas during the event :)&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* '''How was it last time?'''&lt;br /&gt;
** Very nice, see [[GRASS Community Sprint Vienna 2014]]!&lt;br /&gt;
* ''Is the GRASS Community Sprint just a coding event?''&lt;br /&gt;
** It is mainly a coding and documentation event. It is a working session for people who are already participants in the GRASS project and/or are committed to improving the GRASS project.&lt;br /&gt;
** On demand we can do some presentations of current working GRASS implementation and new upcoming features to spread the idea of Open Source GIS software&lt;br /&gt;
* ''Is the GRASS Community Sprint for developers only?''&lt;br /&gt;
** No: anybody can help, with testing, checking out bugs and fixes, documentation and more.&lt;br /&gt;
* ''Where can I get help and more information about the community sprint?''&lt;br /&gt;
** Contact [[User:Neteler|Markus Neteler]], ... (add)&lt;br /&gt;
&lt;br /&gt;
== Press Release ==&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
[[Category:Workshops]]&lt;/div&gt;</summary>
		<author><name>⚠️Sbl</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Portland_2014&amp;diff=20754</id>
		<title>GRASS Community Sprint Portland 2014</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Portland_2014&amp;diff=20754"/>
		<updated>2014-09-06T22:02:13Z</updated>

		<summary type="html">&lt;p&gt;⚠️Sbl: Added list over modules with incomplete manuals&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The GRASS GIS [[team]] will participate in the [http://wiki.osgeo.org/wiki/FOSS4G_2014_Code_Sprint Portland Code Sprint 2014] at FOSS4G 2014 in US. The sprint will be held the day after the main conference ('''Saturday, September 13th''' 2014).&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
This '''Portland FOSS4G Code Sprint 2014''' is a great occasion for folks to support the development by actively contributing to the source code, manuals or likewise. This code sprint is targeting members of OSGeo software projects.&lt;br /&gt;
&lt;br /&gt;
For this meeting, we welcome people committed to improving the '''GRASS GIS project''' and the interfaces to [[QGIS GRASS Cookbook|QGIS]], [[GDAL]], [[PostGIS]], [[R statistics]], [[GRASS and Sextante|Sextante, gvSIG]], OGC Services (esp. [[WPS]]) and more. This includes developers, documenters, bug reporters, translators and others. We'll try to make a major step forward towards a stable GRASS GIS 7 release.&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
We welcome inkind as well as direct '''financial contributions''' to help reducing travelling and accommodation expenses for GRASS developers with far arrival If you are interested to sponsor the GRASS Community Sprint, please read about&lt;br /&gt;
&lt;br /&gt;
:::'''sponsoring the GRASS project''' at '''[http://grass.osgeo.org/donations http://grass.osgeo.org/donations]'''&lt;br /&gt;
&lt;br /&gt;
Note that it is also possible to &amp;lt;b&amp;gt;buy a round of beer for the developers with a quick click&amp;lt;/b&amp;gt; using the PayPal &amp;quot;Buy [pizza/beer/...] Now&amp;quot; button [[Image:Btn_donate_SM.gif|center|link=http://grass.osgeo.org/donations/]]&lt;br /&gt;
&lt;br /&gt;
For any questions, please contact [[User:Neteler|Markus Neteler]] &amp;lt;tt&amp;gt;&amp;lt;neteler at osgeo.org&amp;gt;&amp;lt;/tt&amp;gt;. Any surplus at the end of the event will be turned over to the GRASS GIS project.&lt;br /&gt;
&lt;br /&gt;
This GRASS GIS Community Sprint is a great occasion for you to support the development of GRASS. With your contribution you'll enable more developers to meet. The community sprint is an important opportunity for the GRASS developers to discuss and collaboratively resolve bugs, plan the direction for the project and work on new features. Please see below for the more detailed agenda. The developers and contributors are donating their valuable time, so it would be great if in-kind funding can be made available from within the community to cover out-of-pocket expenses. All of the work that takes place at the community sprint will be directly contributed back into the GRASS project to the benefit of everyone who uses it.&lt;br /&gt;
&lt;br /&gt;
The Portland event is especially interesting since important OSGeo projects come together!&lt;br /&gt;
&lt;br /&gt;
=== Thanks to our sponsors ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--We are grateful for the support which we have received to organize this GRASS Community Sprint:--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Timing  ==&lt;br /&gt;
&lt;br /&gt;
'''When''': '''Saturday, September 13th''' 2014&lt;br /&gt;
&lt;br /&gt;
'''Duration''': One day&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
&lt;br /&gt;
The sprint will be in the [http://eliotcenterportland.org Eliot Center] ([http://osm.org/go/WIDlUtpOQ-?m=&amp;amp;relation=186579 OSM]) along side [http://wherecamppdx.org WhereCampPDX].&lt;br /&gt;
&lt;br /&gt;
== Accommodation and Costs ==&lt;br /&gt;
&lt;br /&gt;
Please check on the [http://wiki.osgeo.org/wiki/FOSS4G_2014_Code_Sprint page of the sprint] more information about accommodation and cost. The participation is free of charge. However, participants should plan for the following costs:&lt;br /&gt;
&lt;br /&gt;
* Travel to Portland&lt;br /&gt;
* Accommodation&lt;br /&gt;
* Breakfast and dinner (partly) &lt;br /&gt;
&lt;br /&gt;
== Agenda - What we plan to do ==&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The program is generally open for your ideas. Please write an email to the [http://lists.osgeo.org/mailman/listinfo/grass-dev GRASS developer list] to discuss your contribution or modify this wiki.&lt;br /&gt;
&lt;br /&gt;
Further details about the action items you '''find [[Talk:GRASS Community Sprint Portland 2014|here]]''' and below. Topics cover non-technical, semi-technical, and technical issues.&lt;br /&gt;
&lt;br /&gt;
=== Ideas ===&lt;br /&gt;
&lt;br /&gt;
Please edit this wiki page!&lt;br /&gt;
&lt;br /&gt;
'''GRASS GIS 7 release related:'''&lt;br /&gt;
* http://trac.osgeo.org/grass/wiki/Grass7Planning&lt;br /&gt;
** Fix the few remaining http://trac.osgeo.org/grass/wiki/Grass7Planning#Blockers&lt;br /&gt;
** Decide an official sample dataset for TGRASS, see {{trac|2259}} (comment 4)&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
'''Manual related:'''&lt;br /&gt;
* Update the remaining &amp;quot;empty&amp;quot; manual pages (&amp;lt;&amp;lt;--- power users, please contribute!)&lt;br /&gt;
In order to coordinate efforts (also with people working from remote places) it would be helpful if volunteers sign up in the table below, for a manual they would feel comfortable to fill. Please feel free to add other modules which need a manual update or with missing manual pages... Regarding examples for the TGRASS modules see also discussion here: http://lists.osgeo.org/pipermail/grass-dev/2014-April/068556.html&lt;br /&gt;
And for &lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Module with incomplete manual !! Who !! Status !! Link&lt;br /&gt;
|-&lt;br /&gt;
| t.rast.out.vtk ||  ||  || http://grass.osgeo.org/grass70/manuals/t.rast.out.vtk.html&lt;br /&gt;
|-&lt;br /&gt;
| t.rast.to.rast3 ||  ||  || http://grass.osgeo.org/grass70/manuals/t.rast.to.rast3.html&lt;br /&gt;
|-&lt;br /&gt;
| t.rast3d.extract ||  ||  || http://grass.osgeo.org/grass70/manuals/t.rast3d.extract.html&lt;br /&gt;
|-&lt;br /&gt;
| t.rast3d.list ||  ||  || http://grass.osgeo.org/grass70/manuals/t.rast3d.list.html&lt;br /&gt;
|-&lt;br /&gt;
| t.rast3d.mapcalc ||  ||  || http://grass.osgeo.org/grass70/manuals/t.rast3d.mapcalc.html&lt;br /&gt;
|-&lt;br /&gt;
| t.rast3d.univar ||  ||  || http://grass.osgeo.org/grass70/manuals/t.rast3d.univar.html&lt;br /&gt;
|-&lt;br /&gt;
| t.remove ||  ||  || http://grass.osgeo.org/grass70/manuals/t.remove.html&lt;br /&gt;
|-&lt;br /&gt;
| t.sample ||  ||  || http://grass.osgeo.org/grass70/manuals/t.sample.html&lt;br /&gt;
|-&lt;br /&gt;
| t.support ||  ||  || http://grass.osgeo.org/grass70/manuals/t.support.html&lt;br /&gt;
|-&lt;br /&gt;
| t.topology ||  ||  || http://grass.osgeo.org/grass70/manuals/t.topology.html&lt;br /&gt;
|-&lt;br /&gt;
| t.unregister ||  ||  || http://grass.osgeo.org/grass70/manuals/t.unregister.html&lt;br /&gt;
|-&lt;br /&gt;
| t.vect.db.select ||  ||  || http://grass.osgeo.org/grass70/manuals/t.vect.db.select.html&lt;br /&gt;
|-&lt;br /&gt;
| t.vect.export ||  ||  || http://grass.osgeo.org/grass70/manuals/t.vect.export.html&lt;br /&gt;
|-&lt;br /&gt;
| t.vect.extract ||  ||  || http://grass.osgeo.org/grass70/manuals/t.vect.extract.html&lt;br /&gt;
|-&lt;br /&gt;
| t.vect.import ||  ||  || http://grass.osgeo.org/grass70/manuals/t.vect.import.html&lt;br /&gt;
|-&lt;br /&gt;
| t.vect.list ||  ||  || http://grass.osgeo.org/grass70/manuals/t.vect.list.html&lt;br /&gt;
|-&lt;br /&gt;
| t.vect.observe.strds ||  ||  || http://grass.osgeo.org/grass70/manuals/t.vect.observe.strds.html&lt;br /&gt;
|-&lt;br /&gt;
| t.vect.univar ||  ||  || http://grass.osgeo.org/grass70/manuals/t.vect.univar.html&lt;br /&gt;
|-&lt;br /&gt;
| t.vect.what.strds ||  ||  || http://grass.osgeo.org/grass70/manuals/t.vect.what.strds.html&lt;br /&gt;
|-&lt;br /&gt;
| More? ||  || || &lt;br /&gt;
|}&lt;br /&gt;
* add more examples to the manual which in turn can be used for the new [http://trac.osgeo.org/grass/wiki/GSoC/2014/TestingFrameworkForGRASS Testing framework for GRASS GIS]&lt;br /&gt;
* change TOC to collapse style with mouse-over expansion&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
'''Design portal (?) for payed GRASS GIS programming:'''&lt;br /&gt;
* in order to get nasty annoying issues fixed, try a crowd funding approach&lt;br /&gt;
** identify GRASS issues to be fixed for cash&lt;br /&gt;
** discuss how to select the programmers&lt;br /&gt;
&lt;br /&gt;
'''Modules related:'''&lt;br /&gt;
* get g.gui.rlisetup working for circular buffers&lt;br /&gt;
* fix v.to.lines in Addons and move it to main GRASS GIS 7&lt;br /&gt;
* &amp;lt;strike&amp;gt;fix r.li.daemon memory leak&amp;lt;/strike&amp;gt; test fix in {{changeset|61812}}&lt;br /&gt;
* fix potential v.generalize memory leak (add such tests to [http://trac.osgeo.org/grass/wiki/GSoC/2014/TestingFrameworkForGRASS testsuite])&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
'''Web site: related:'''&lt;br /&gt;
* simplify http://grass.osgeo.org/download/software/ms-windows/&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== Participation ==&lt;br /&gt;
&lt;br /&gt;
=== In person ===&lt;br /&gt;
Please fill the related table on the [http://wiki.osgeo.org/wiki/FOSS4G_2014_Code_Sprint#GRASS_GIS wiki page of the sprint].&lt;br /&gt;
&lt;br /&gt;
=== Via IRC chat or hangout===&lt;br /&gt;
&lt;br /&gt;
==== IRC ====&lt;br /&gt;
: [irc://freenode/grass #grass] on Freenode&lt;br /&gt;
&lt;br /&gt;
For details, see [[IRC]]&lt;br /&gt;
&lt;br /&gt;
==== Hangout/Videobridge ====&lt;br /&gt;
&lt;br /&gt;
There is the option to use Google+ Hangout, it is technically limited to 10 people and may require everyone to have G+ social media accounts to participate. More [http://www.google.com/+/learnmore/hangouts/ Information on G+ hangout].&lt;br /&gt;
&lt;br /&gt;
Similarly multi-video conference calls can be done with Skype if the conference call initiator is a paid-up commercial Skype customer.&lt;br /&gt;
&lt;br /&gt;
The FOSS [http://www.jitsi.org Jitsi] VoIP, IM, and video conferencing software produces a trivial to set up [https://jitsi.org/Projects/JitsiVideobridge VideoBridge] server software to the same. '''''New:''''' https://meet.jit.si -- zero-conf free no-accounts needed video conferencing; chat, etherpad, and prezi built in. (needs recent Opera or Chrome/Chromium with WebRTC support)&lt;br /&gt;
&lt;br /&gt;
Further discussion on the pros and cons of these can be found on the [[Talk:GRASS_Community_Sprint_Prague_2013|Talk side of this wiki page]].&lt;br /&gt;
&lt;br /&gt;
Please add yourself here below (please add also your gmail account for G+ hangout):&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== Individual Preparation ==&lt;br /&gt;
&lt;br /&gt;
* Bring your own computer&lt;br /&gt;
* Bring {{wikipedia|AC adapter|power connector adapter}} if needed (USA {{wikipedia|File:A_plug.jpg|(Type A)}} {{wikipedia|File:B_plug.jpg|(Type B)}})&lt;br /&gt;
* Install subversion and the compiler tools, and come with a working GRASS development environment if possible.&lt;br /&gt;
&lt;br /&gt;
== Broadcast &amp;amp; Video ==&lt;br /&gt;
&lt;br /&gt;
Perhas during the event :)&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* '''How was it last time?'''&lt;br /&gt;
** Very nice, see [[GRASS Community Sprint Vienna 2014]]!&lt;br /&gt;
* ''Is the GRASS Community Sprint just a coding event?''&lt;br /&gt;
** It is mainly a coding and documentation event. It is a working session for people who are already participants in the GRASS project and/or are committed to improving the GRASS project.&lt;br /&gt;
** On demand we can do some presentations of current working GRASS implementation and new upcoming features to spread the idea of Open Source GIS software&lt;br /&gt;
* ''Is the GRASS Community Sprint for developers only?''&lt;br /&gt;
** No: anybody can help, with testing, checking out bugs and fixes, documentation and more.&lt;br /&gt;
* ''Where can I get help and more information about the community sprint?''&lt;br /&gt;
** Contact [[User:Neteler|Markus Neteler]], ... (add)&lt;br /&gt;
&lt;br /&gt;
== Press Release ==&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
[[Category:Workshops]]&lt;/div&gt;</summary>
		<author><name>⚠️Sbl</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Working_with_GRASS_without_starting_it_explicitly&amp;diff=20667</id>
		<title>Working with GRASS without starting it explicitly</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Working_with_GRASS_without_starting_it_explicitly&amp;diff=20667"/>
		<updated>2014-08-17T20:12:23Z</updated>

		<summary type="html">&lt;p&gt;⚠️Sbl: /* Bash examples (GNU/Linux) - added variables for the temporal modules*/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;GRASS modules and imports of GRASS Python packages works only in a specific environmental settings (GRASS session). This settings is ensured by starting GRASS GIS application which prepares this GRASS session for you. It is possible to set up you system in the way GRASS session will be always active (GRASS is not running, just the environmental settings is ready). People often prefer to set up the GRASS environment in their script or program and this is what this article discuss. However, it must be noted that the the generally preferred (and easy) way is to create scripts and programs as GRASS modules which means that your don't have to bother with setting up the environment since the GRASS module should be always invoked only in GRASS session.&lt;br /&gt;
&lt;br /&gt;
== GRASS sessions ==&lt;br /&gt;
&lt;br /&gt;
It is possible to access GRASS modules without explicitly starting a &amp;quot;GRASS session&amp;quot;. GRASS libraries require certain [http://grass.osgeo.org/grass70/manuals/variables.html environment variables] to be set. In fact a &amp;quot;GRASS session&amp;quot; is just a set of processes (e.g. a shell and/or GUI) which have the necessary environment settings, specifically:&lt;br /&gt;
&lt;br /&gt;
* '''GISBASE''' needs to be set to the top-level directory of the GRASS installation.&lt;br /&gt;
* '''GISRC''' needs to contain the absolute path to a file containing settings for '''GISDBASE''', '''LOCATION_NAME''' and '''MAPSET'''.&lt;br /&gt;
* '''PATH''' needs to include '''$GISBASE/bin''' and '''$GISBASE/scripts'''.&lt;br /&gt;
&lt;br /&gt;
If the GRASS libraries are shared libraries, the loader needs to be able to find them. This normally means that '''LD_LIBRARY_PATH''' (Linux, Solaris), '''DYLD_LIBRARY_PATH''' (MacOSX) or '''PATH''' (Windows) need to contain '''$GISBASE/lib''', although there are other means to the same end (e.g. on Linux, putting $GISBASE/lib (with $GISBASE replaced by its actual value) into /etc/ld.so.conf then running ldconfig).&lt;br /&gt;
&lt;br /&gt;
Some libraries and modules use other variables. More information for most of them is available in the file ''$GISBASE/docs/html/variables.html''. The display libraries used by ''d.*'' commands use additional variables, which are documented along with the individual drivers.&lt;br /&gt;
&lt;br /&gt;
=== Batch jobs ===&lt;br /&gt;
&lt;br /&gt;
You can run GRASS scripts non-interactively from outside of a GRASS session with the GRASS_BATCH_JOB environment variable. When GRASS is started with this environment variable set it will automatically run the contents of the script given in the variable, then close the GRASS session when complete. In this way full lock-checking, GRASS variables setup, and temporary file cleaning tasks are still performed.&lt;br /&gt;
&lt;br /&gt;
See the [[GRASS_and_Shell#GRASS_Batch_jobs|Batch jobs]] section of the GRASS shell-help wiki page for details.&lt;br /&gt;
&lt;br /&gt;
=== Accessing GRASS modules without starting a GRASS session ===&lt;br /&gt;
&lt;br /&gt;
==== Python examples ====&lt;br /&gt;
&lt;br /&gt;
See also [[GRASS Python Scripting Library]]&lt;br /&gt;
&lt;br /&gt;
===== Python: GRASS GIS 7 =====&lt;br /&gt;
&lt;br /&gt;
The script initializes the session and lists available raster and vector maps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
#!/usr/bin/env python&lt;br /&gt;
&lt;br /&gt;
import os&lt;br /&gt;
import sys&lt;br /&gt;
import subprocess&lt;br /&gt;
&lt;br /&gt;
# some predefined variables, name of the GRASS launch script + location/mapset&lt;br /&gt;
#grass7bin = 'C:\Program Files (x86)\GRASS GIS 7.0.svn\grass70svn.bat'&lt;br /&gt;
grass7bin = 'grass71'&lt;br /&gt;
location = &amp;quot;nc_spm_08_grass7&amp;quot;&lt;br /&gt;
mapset   = &amp;quot;user1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
########### SOFTWARE&lt;br /&gt;
# query GRASS 7 itself for its GISBASE&lt;br /&gt;
# we assume that GRASS GIS' start script is available and in the PATH&lt;br /&gt;
startcmd = grass7bin + ' --config path'&lt;br /&gt;
p = subprocess.Popen(startcmd, shell=True, &lt;br /&gt;
                     stdout=subprocess.PIPE, stderr=subprocess.PIPE)&lt;br /&gt;
out, err = p.communicate()&lt;br /&gt;
if p.returncode != 0:&lt;br /&gt;
    print &amp;gt;&amp;gt;sys.stderr, &amp;quot;ERROR: Cannot find GRASS GIS 7 start script (%s)&amp;quot; % startcmd&lt;br /&gt;
    sys.exit(-1)&lt;br /&gt;
gisbase = out.strip('\n')&lt;br /&gt;
&lt;br /&gt;
# Set GISBASE environment variable&lt;br /&gt;
os.environ['GISBASE'] = gisbase&lt;br /&gt;
# define GRASS-Python environment&lt;br /&gt;
gpydir = os.path.join(gisbase, &amp;quot;etc&amp;quot;, &amp;quot;python&amp;quot;)&lt;br /&gt;
sys.path.append(gpydir)&lt;br /&gt;
&lt;br /&gt;
########### DATA&lt;br /&gt;
# define GRASS DATABASE&lt;br /&gt;
gisdb = os.path.join(os.path.expanduser(&amp;quot;~&amp;quot;), &amp;quot;grassdata&amp;quot;)&lt;br /&gt;
# Set GISDBASE environment variable&lt;br /&gt;
os.environ['GISDBASE'] = gisdb&lt;br /&gt;
&lt;br /&gt;
# import GRASS Python bindings (see also pygrass)&lt;br /&gt;
import grass.script as gscript&lt;br /&gt;
import grass.script.setup as gsetup&lt;br /&gt;
&lt;br /&gt;
###########&lt;br /&gt;
# launch session&lt;br /&gt;
gsetup.init(gisbase,&lt;br /&gt;
            gisdb, location, mapset)&lt;br /&gt;
 &lt;br /&gt;
gscript.message('Current GRASS GIS 7 environment:')&lt;br /&gt;
print gscript.gisenv()&lt;br /&gt;
 &lt;br /&gt;
gscript.message('Available raster maps:')&lt;br /&gt;
for rast in gscript.list_strings(type = 'rast'):&lt;br /&gt;
    print rast&lt;br /&gt;
&lt;br /&gt;
gscript.message('Available vector maps:')&lt;br /&gt;
for vect in gscript.list_strings(type = 'vect'):&lt;br /&gt;
    print vect&lt;br /&gt;
&lt;br /&gt;
sys.exit(0)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Python: GRASS GIS 6 =====&lt;br /&gt;
&lt;br /&gt;
The script initializes the session and lists available raster maps:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
import os&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
gisbase = os.environ['GISBASE'] = &amp;quot;/usr/local/src/grass_trunk/dist.x86_64-unknown-linux-gnu&amp;quot;&lt;br /&gt;
&lt;br /&gt;
gisdbase = os.path.join(os.environ['HOME'], &amp;quot;grassdata&amp;quot;)&lt;br /&gt;
location = &amp;quot;nc_spm_08&amp;quot;&lt;br /&gt;
mapset   = &amp;quot;user1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
sys.path.append(os.path.join(os.environ['GISBASE'], &amp;quot;etc&amp;quot;, &amp;quot;python&amp;quot;))&lt;br /&gt;
import grass.script as grass&lt;br /&gt;
import grass.script.setup as gsetup&lt;br /&gt;
&lt;br /&gt;
gsetup.init(gisbase,&lt;br /&gt;
            gisdbase, location, mapset)&lt;br /&gt;
&lt;br /&gt;
print grass.gisenv()&lt;br /&gt;
&lt;br /&gt;
grass.message('Raster maps:')&lt;br /&gt;
for rast in grass.list_strings(type = 'rast'):&lt;br /&gt;
    print rast&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Bash examples (GNU/Linux) ====&lt;br /&gt;
&lt;br /&gt;
Below an example of a '''~/.bash_profile''' script to set the required settings in order to access GRASS commands outside of a GRASS-session. Specifically it is for GRASS 7 (commented parts for GRASS 6.4.2):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# example for GRASS 7&lt;br /&gt;
export GISBASE=/usr/local/grass-7.0.svn&lt;br /&gt;
# example for GRASS 6.4.2&lt;br /&gt;
### export GISBASE=/usr/local/grass-6.4.2svn&lt;br /&gt;
&lt;br /&gt;
# GRASS 7&lt;br /&gt;
export GRASS_VERSION=&amp;quot;7.0.svn&amp;quot;&lt;br /&gt;
# GRASS 6.4.2&lt;br /&gt;
### export GRASS_VERSION=&amp;quot;6.4.2svn&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#generate GISRCRC&lt;br /&gt;
MYGISDBASE=$HOME/grassdata&lt;br /&gt;
MYLOC=nc_spm_08&lt;br /&gt;
MYMAPSET=user1&lt;br /&gt;
&lt;br /&gt;
# Set the global grassrc file to individual file name&lt;br /&gt;
MYGISRC=&amp;quot;$HOME/.grassrc.$GRASS_VERSION.$$&amp;quot;&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;GISDBASE: $MYGISDBASE&amp;quot; &amp;gt; &amp;quot;$MYGISRC&amp;quot;&lt;br /&gt;
echo &amp;quot;LOCATION_NAME: $MYLOC&amp;quot; &amp;gt;&amp;gt; &amp;quot;$MYGISRC&amp;quot;&lt;br /&gt;
echo &amp;quot;MAPSET: $MYMAPSET&amp;quot; &amp;gt;&amp;gt; &amp;quot;$MYGISRC&amp;quot;&lt;br /&gt;
echo &amp;quot;GRASS_GUI: text&amp;quot; &amp;gt;&amp;gt; &amp;quot;$MYGISRC&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# path to GRASS settings file&lt;br /&gt;
export GISRC=$MYGISRC&lt;br /&gt;
export GRASS_PYTHON=python&lt;br /&gt;
export GRASS_MESSAGE_FORMAT=plain&lt;br /&gt;
export GRASS_TRUECOLOR=TRUE&lt;br /&gt;
export GRASS_TRANSPARENT=TRUE&lt;br /&gt;
export GRASS_PNG_AUTO_WRITE=TRUE&lt;br /&gt;
export GRASS_GNUPLOT='gnuplot -persist'&lt;br /&gt;
export GRASS_WIDTH=640&lt;br /&gt;
export GRASS_HEIGHT=480&lt;br /&gt;
export GRASS_HTML_BROWSER=firefox&lt;br /&gt;
export GRASS_PAGER=cat&lt;br /&gt;
export GRASS_WISH=wish&lt;br /&gt;
        &lt;br /&gt;
export PATH=&amp;quot;$GISBASE/bin:$GISBASE/scripts:$PATH&amp;quot;&lt;br /&gt;
export LD_LIBRARY_PATH=&amp;quot;$GISBASE/lib&amp;quot;&lt;br /&gt;
export GRASS_LD_LIBRARY_PATH=&amp;quot;$LD_LIBRARY_PATH&amp;quot;&lt;br /&gt;
export PYTHONPATH=&amp;quot;$GISBASE/etc/python:$PYTHONPATH&amp;quot;&lt;br /&gt;
export MANPATH=$MANPATH:$GISBASE/man&lt;br /&gt;
&lt;br /&gt;
#For the temporal modules&lt;br /&gt;
export TGISDB_DRIVER=sqlite&lt;br /&gt;
export TGISDB_DATABASE=$MYGISDBASE/$MYLOC/PERMANENT/tgis/sqlite.db&lt;br /&gt;
&lt;br /&gt;
# test a command&lt;br /&gt;
g.list rast&lt;br /&gt;
&lt;br /&gt;
######### below not needed ########&lt;br /&gt;
# GRASS 7&lt;br /&gt;
tmp=/tmp/grass7-&amp;quot;`whoami`&amp;quot;-$GIS_LOCK&lt;br /&gt;
# GRASS 6.4.2&lt;br /&gt;
### tmp=/tmp/grass6-&amp;quot;`whoami`&amp;quot;-$GIS_LOCK&lt;br /&gt;
&lt;br /&gt;
export GISRC=&amp;quot;$tmp/rc&amp;quot;&lt;br /&gt;
mkdir &amp;quot;$tmp&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# GRASS 7&lt;br /&gt;
cp ~/.grass7/rc &amp;quot;$GISRC&amp;quot;&lt;br /&gt;
# GRASS 6.4.2&lt;br /&gt;
### cp ~/.grassrc6 &amp;quot;$GISRC&amp;quot;&lt;br /&gt;
######### END below not needed ########&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The above script will allow GRASS commands to be used anywhere. Furthermore, if the '''~/.Xsession''' sources the bash startup scripts, the settings aren't limited to interactive shells, but also work for e.g. M-! in XEmacs). Each interactive shell gets a separate &amp;quot;session&amp;quot; (i.e. a separate $GISRC file), while GUI programs share a common session.&lt;br /&gt;
&lt;br /&gt;
Note, however, that '''~/.bash_profile''' is a personal initialization startup script and, thus, read during the login process. Any modifications to it will be read after (re-)login or explicitly sourcing it.&lt;br /&gt;
&lt;br /&gt;
At the end of the ~/.bash_profile file, the following lines can be added to ensure no duplication of entries in the PATH variable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 PATH=`awk -F: '{for(i=1;i&amp;lt;=NF;i++){if(!($i in a)){a[$i];printf s$i;s=&amp;quot;:&amp;quot;}}}'&amp;lt;&amp;lt;&amp;lt;$PATH`&lt;br /&gt;
 PYTHONPATH=`awk -F: '{for(i=1;i&amp;lt;=NF;i++){if(!($i in a)){a[$i];printf s$i;s=&amp;quot;:&amp;quot;}}}'&amp;lt;&amp;lt;&amp;lt;$PYTHONPATH`&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Important notes ===&lt;br /&gt;
&lt;br /&gt;
Launching a grassXY session could still permit access on GRASS modules of the version that is set with the above script. The reason being is that grassXY scripts (e.g.: grass64, grass65, grass70) prepend the GRASS directories to '''PATH''', '''LD_LIBRARY_PATH''', etc. They won't remove any entries which are already there. A solution to this is to ''switch'' between GRASS versions by using a script like the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
        strippath()&lt;br /&gt;
        {&lt;br /&gt;
            (&lt;br /&gt;
            oldpath=&amp;quot;$1&amp;quot;&lt;br /&gt;
            newpath=&lt;br /&gt;
            IFS=:&lt;br /&gt;
            for dir in $oldpath ; do&lt;br /&gt;
                case &amp;quot;${dir}&amp;quot; in&lt;br /&gt;
                *grass*)&lt;br /&gt;
                        ;;&lt;br /&gt;
                *)&lt;br /&gt;
                        newpath=&amp;quot;$newpath:$dir&amp;quot;&lt;br /&gt;
                        ;;&lt;br /&gt;
                esac&lt;br /&gt;
            done&lt;br /&gt;
            echo &amp;quot;${newpath#:}&amp;quot;&lt;br /&gt;
            )&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        PATH=`strippath $PATH`&lt;br /&gt;
        &lt;br /&gt;
        export GISBASE=$PWD/dist.i686-pc-linux-gnu&lt;br /&gt;
        export PATH=&amp;quot;$GISBASE/bin:$GISBASE/scripts:$PATH&amp;quot;&lt;br /&gt;
        export LD_LIBRARY_PATH=&amp;quot;$GISBASE/lib&amp;quot;&lt;br /&gt;
        export PYTHONPATH=&amp;quot;$GISBASE/etc/python&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Note: the above script needs to be &amp;quot;source&amp;quot;d; executing it won't work. It might also require some adjustments (e.g. the ''GISBASE'' variable).'''&lt;br /&gt;
&lt;br /&gt;
Using normal grass sessions commands are recorded in '''$GISDBASE/$LOCATION_NAME/$MAPSET/.bash_history'''. While working with &amp;quot;pure&amp;quot; bash, shell entries go in '''~/.bash_history'''. Merging existing &amp;quot;grass-bash_history(-ies)&amp;quot; with the bash history log, would probably be not a good idea. Perhaps it is wise(r) to use normal GRASS sessions when working on real projects. Nevertheless, it is upon the users preferences and expertise level to decide what is best.&lt;br /&gt;
&lt;br /&gt;
=== References ===&lt;br /&gt;
* Instructions and discussion on ''how to access GRASS mapsets outside of a GRASS session'' in the grass-user mailing list [http://n2.nabble.com/can-I-access-mapset-outside-of-grass-by-using-python-td3405902.html#a3405902].&lt;br /&gt;
* removing duplicate entries in $PATH taken from [http://chunchung.blogspot.com/2007/11/remove-duplicate-paths-from-path-in.html]&lt;br /&gt;
&lt;br /&gt;
== GRASS databases ==&lt;br /&gt;
&lt;br /&gt;
(project file structure)&lt;br /&gt;
&lt;br /&gt;
=== Minimal mapsets ===&lt;br /&gt;
&lt;br /&gt;
within a functional LOCATION (see below) the minimal mapset is a subdirectory of the MAPSET's name, containing a WIND file. The WIND file can simply be copied from PERMANENT/DEFAULT_WIND. Optionally you can put a VAR file in there too to define the default database driver to use.&lt;br /&gt;
&lt;br /&gt;
* You can create a new mapset when starting GRASS with the -c flag. e.g.&lt;br /&gt;
 grass64 -c /path/to/location/new_mapset_name&lt;br /&gt;
&lt;br /&gt;
=== Minimal locations ===&lt;br /&gt;
&lt;br /&gt;
Within the GISDATABASE (which is simply a subdirectory some where), the minimum LOCATION consists of a directory giving the LOCATION its name, which in turn contains a PERMANENT subdirectory for the PERMANENT mapset. The PERMANENT mapset contains a few special files that regular mapsets don't. These are:&lt;br /&gt;
; PROJ_INFO: contains the location's projection information&lt;br /&gt;
; PROJ_UNITS: contains the location's map units definition&lt;br /&gt;
; DEFAULT_WIND: the default region (WINDow file). The format is identical to the WIND files created by g.region&lt;br /&gt;
; WIND: (optional?)&lt;br /&gt;
&lt;br /&gt;
* see also {{src|demolocation}} in the GRASS source code&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* [[GRASS_and_Shell#GRASS_Batch_jobs|GRASS Batch jobs]]&lt;br /&gt;
&lt;br /&gt;
[[Category: FAQ]]&lt;br /&gt;
[[Category: Linking to other languages]]&lt;br /&gt;
[[Category: bash]]&lt;br /&gt;
[[Category:Scripting]]&lt;br /&gt;
[[Category: Python]]&lt;/div&gt;</summary>
		<author><name>⚠️Sbl</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Global_datasets&amp;diff=20206</id>
		<title>Global datasets</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Global_datasets&amp;diff=20206"/>
		<updated>2014-02-26T22:00:16Z</updated>

		<summary type="html">&lt;p&gt;⚠️Sbl: Add a section on CSW and links to European Services&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Raster data =&lt;br /&gt;
&lt;br /&gt;
== Elevation data ==&lt;br /&gt;
&lt;br /&gt;
=== ASTER topography (GDEM V1) ===&lt;br /&gt;
&lt;br /&gt;
Improved ASTER GDEM 1 from 2009:&lt;br /&gt;
&lt;br /&gt;
GDEM global 30m elevation calculated from stereo-pair images collected by the Terra satellite.&lt;br /&gt;
''&amp;quot;This is the most complete, consistent global digital elevation data yet made available to the world.&amp;quot;''&lt;br /&gt;
This is a very new dataset, at version 1  (treat as ''experimental''). Accuracy will be improved in forthcoming versions (validation with SRTM, etc.; [http://blog.neteler.org/aster-gdem-30m-quality-assessment/ see assessment here] and [http://www.viewfinderpanoramas.org/reviews.html#aster here]).&lt;br /&gt;
&lt;br /&gt;
* ''[https://lpdaac.usgs.gov/lpdaac/about/news_archive/monday_june_22_20092 pre-release announcement]''&lt;br /&gt;
* [http://www.nasa.gov/home/hqnews/2009/jun/HQ_09-150_ASTER_Topographic_Map.html NASA press release]&lt;br /&gt;
* [https://wist.echo.nasa.gov/~wist/api/imswelcome/ Warehouse Inventory Search Tool] or [http://www.gdem.aster.ersdac.or.jp/search.jsp Easy search tool] (Data download)&lt;br /&gt;
&lt;br /&gt;
'''Tutorial:''' [[ASTER topography]]&lt;br /&gt;
&lt;br /&gt;
''See also: [http://blog.neteler.org/aster-gdem-30m-quality-assessment/ ASTER GDEM 30m quality assessment]''&lt;br /&gt;
&lt;br /&gt;
=== ASTER topography (GDEM V2) ===&lt;br /&gt;
&lt;br /&gt;
Improved ASTER GDEM 2 from 2011:&lt;br /&gt;
* https://lpdaac.usgs.gov/products/aster_products_table/astgtm&lt;br /&gt;
&lt;br /&gt;
The ASTER GDEM covers land surfaces between 83°N and 83°S and is comprised of 22,702 tiles.  Tiles that contain at least 0.01% land area are included.  The ASTER GDEM is distributed as Geographic Tagged Image File Format (GeoTIFF) files with geographic coordinates (latitude, longitude).  The data are posted on a '''1 arc-second''' (approximately '''30–m at the equator''') grid and referenced to the 1984 World Geodetic System (WGS84)/ 1996 Earth Gravitational Model (EGM96) geoid. &lt;br /&gt;
&lt;br /&gt;
'''Notes:''' this DEM can be rather well filtered and smoothed with the [http://personalpages.manchester.ac.uk/staff/neil.mitchell/mdenoise/ Sun's denoising algorithm] (using GDAL and free / open source program &amp;lt;mdenoise&amp;gt; or simply GRASS add-on {{AddonCmd|r.denoise}}.&lt;br /&gt;
&lt;br /&gt;
Experiments showed that the best smoothing of ASTER GDEM 2 is reached with such parameters of &amp;lt;mdenoise&amp;gt;:&lt;br /&gt;
* threshold = 0.8&lt;br /&gt;
* iterations = 10-20&lt;br /&gt;
&lt;br /&gt;
Also filtering with {{cmd|r.neighbors}} by &amp;quot;average&amp;quot; method and window size &amp;gt;=5 is quite useful to remove some noise from DEM.&lt;br /&gt;
&lt;br /&gt;
''See also: [http://www.isprs2012.org/abstract/299.asp Validation of the ASTER Global Digital Elevation Model Version 2 over the Conterminous United States]''&lt;br /&gt;
&lt;br /&gt;
=== ACE2 ===&lt;br /&gt;
&lt;br /&gt;
The ACE2 Global Digital Elevation Model is available at 3&amp;quot;, 30&amp;quot; and 5' spatial resolutions.&lt;br /&gt;
&lt;br /&gt;
* http://tethys.eaprs.cse.dmu.ac.uk/ACE2/&lt;br /&gt;
&lt;br /&gt;
Import example:&lt;br /&gt;
  r.in.bin -f input=&amp;quot;00N105E_3S.ACE2&amp;quot; output=&amp;quot;ACE2_00N105E&amp;quot; bytes=4 \&lt;br /&gt;
           order=&amp;quot;native&amp;quot; north=15 south=0 east=120 west=105 \&lt;br /&gt;
           rows=18000 cols=18000&lt;br /&gt;
&lt;br /&gt;
=== CleanTOPO2 (DEM) ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.shadedrelief.com/cleantopo2/ CleanTOPO2 download]: Edited SRTM30 Plus World Elevation Data&lt;br /&gt;
&lt;br /&gt;
Import in GRASS:&lt;br /&gt;
  r.in.gdal CleanTOPO2.tif out=cleanTOPO2.tmp -l -o&lt;br /&gt;
  g.region rast=cleanTOPO2  -p -g&lt;br /&gt;
  # rescale from odd integer values to true world values&lt;br /&gt;
  r.rescale cleanTOPO2.tmp out=cleanTOPO2 to=-10701,8248&lt;br /&gt;
  r.colors cleanTOPO2_final col=terrain&lt;br /&gt;
&lt;br /&gt;
[[Image:CleanTOPO2_map.png|thumb|center|300px|Rescaled ClearTOPO2 map]]&lt;br /&gt;
&lt;br /&gt;
=== EGM2008 Geoid Data (Earth Gravitational Model) ===&lt;br /&gt;
&lt;br /&gt;
Global 2.5 Minute Geoid Undulations:&lt;br /&gt;
* download GIS Format at http://earth-info.nga.mil/GandG/wgs84/gravitymod/egm2008/egm08_gis.html&lt;br /&gt;
&lt;br /&gt;
[[Image:Trentino_egm2008_map_5m_resampled.jpg|thumb|center|300px|Geoid undulations in Trentino, Italy]]&lt;br /&gt;
&lt;br /&gt;
Verifications of points can be done with the http://geographiclib.sourceforge.net/cgi-bin/GeoidEval&lt;br /&gt;
&lt;br /&gt;
=== ETOPO (DEM) ===&lt;br /&gt;
&lt;br /&gt;
The ETOPO datasets provide global topography and bathymetry at 1', 2', and 5' per-cell resolutions.&lt;br /&gt;
&lt;br /&gt;
==== ETOPO1 (DEM) ====&lt;br /&gt;
&lt;br /&gt;
* http://www.ngdc.noaa.gov/mgg/global/&lt;br /&gt;
&lt;br /&gt;
* '''The ''cell registered'' version can be loaded directly into a lat/lon location'''. GRASS raster data is cell registered (see the [[GRASS raster semantics]] page)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Special care must be taken with the ''grid registered'' version. It can not be loaded directly into a lat/lon location as the parameters found in the .hdr file exceed the limits of polar coordinate space: they have N,S rows which go 1/2 a cell beyond 90 latitude, when considered in the ''cell registered'' convention.&lt;br /&gt;
: So the data needs to have those 90deg N,S rows cropped away, and while we're at it we crop away a redundant overlapping column at 180 longitude. To do this we have to first tell the GIS a little fib during import to squeeze the data into lat/lon space, then crop away the spurious rows and column, then finally reset the resulting map's bounds to its true extent.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 # Import grid registered binary float, fibbing about its true extent&lt;br /&gt;
 r.in.bin -f in=etopo1_bed_g.flt out=etopo1_bed_g.raw \&lt;br /&gt;
    n=90 s=-90 e=180 w=-180 rows=10801 cols=21601 anull=-9999&lt;br /&gt;
 &lt;br /&gt;
 # reduce the working region by 1 cell&lt;br /&gt;
 g.region rast=etopo1_bed_g.raw&lt;br /&gt;
 eval `g.region -g`&lt;br /&gt;
 g.region n=n-$nsres s=s+$nsres e=e-$ewres -p&lt;br /&gt;
 &lt;br /&gt;
 # save smaller raster and remove original&lt;br /&gt;
 r.mapcalc &amp;quot;etopo1_bed_g.crop = etopo1_bed_g.raw&amp;quot;&lt;br /&gt;
 g.remove etopo1_bed_g.raw&lt;br /&gt;
&lt;br /&gt;
 # re-establish the correct bounds, now that they'll fit&lt;br /&gt;
 r.region etopo1_bed_g.crop n=89:59:30N s=89:59:30S w=179:59:30E e=179:59:30E&lt;br /&gt;
 g.region rast=etopo1_bed_g.crop&lt;br /&gt;
&lt;br /&gt;
 # check that N,S,E,W and Res are all nice and clean:&lt;br /&gt;
 r.info etopo1_bed_g.crop&lt;br /&gt;
&lt;br /&gt;
 # looks good, so accept the results by resetting the map name&lt;br /&gt;
 g.rename etopo1_bed_g.crop,etopo1_bed_g&lt;br /&gt;
&lt;br /&gt;
 # set to use appropriate color rules&lt;br /&gt;
 r.colors etopo1_bed_g color=etopo2&lt;br /&gt;
&lt;br /&gt;
 # set the 'units' metadata field (for elevation data contained within the map)&lt;br /&gt;
 r.support etopo1_bed_g units=meters&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* For the problematic ''grid registered'' version, the resulting {{cmd|r.info}} report should look like:&lt;br /&gt;
 |   Rows:         10799                                                      |&lt;br /&gt;
 |   Columns:      21600                                                      |&lt;br /&gt;
 |   Total Cells:  233258400                                                  |&lt;br /&gt;
 |        Projection: Latitude-Longitude                                      |&lt;br /&gt;
 |            N:  89:59:30N    S:  89:59:30S   Res:  0:01                     |&lt;br /&gt;
 |            E: 179:59:30E    W: 179:59:30E   Res:  0:01                     |&lt;br /&gt;
 |   Range of data:    min = -10898  max = 8271                               |&lt;br /&gt;
(the east and west bounds of the map touch 1/2 a cell west of 180 longitude)&lt;br /&gt;
&lt;br /&gt;
* For the problematic ''grid registered'' version, since the data's grid is 1/2 a cell shifted from nicely rounded 1 arc-minutes (0:01), you'll need to ensure that the mapset's region preserves that alignment after zooming or panning:&lt;br /&gt;
 g.region align=etopo1_bed_g -p&lt;br /&gt;
: (or oversample and set the region resolution to 1/2 arc-minutes (0:00:30), which will be four times as slow)&lt;br /&gt;
&lt;br /&gt;
==== ETOPO2 (DEM) ====&lt;br /&gt;
&lt;br /&gt;
* See the ETOPO2 (2' global) article by M.H. Bowman in the [http://grass.osgeo.org/newsletter/GRASSNews_vol1.pdf GRASS Newsletter, 1:8-11, August 2004].&lt;br /&gt;
: [http://www.ngdc.noaa.gov/mgg/fliers/01mgg04.html ETOPO2v2 data download] (take for example the ETOPO2v2g_f4_LSB.flt file)&lt;br /&gt;
&lt;br /&gt;
=== GTOPO30 (DEM) ===&lt;br /&gt;
&lt;br /&gt;
* Data [http://eros.usgs.gov/#/Find_Data/Products_and_Data_Available/gtopo30_info download] - Import with {{cmd|r.in.gdal}}.&lt;br /&gt;
&lt;br /&gt;
''Note:'' To avoid that the GTOPO30 data are read incorrectly, you can add a new line &amp;quot;PIXELTYPE SIGNEDINT&amp;quot; in the .HDR to force interpretation of the file as signed rather than unsigned integers. Then the .DEM file can be imported. Finally, e.g. the 'terrain' color table can be assigned to the imported map with r.colors.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Global Multi-resolution Terrain Elevation Data 2010 (GMTED2010) ===&lt;br /&gt;
&lt;br /&gt;
* Data [https://lta.cr.usgs.gov/GMTED2010 download] - Import with {{cmd|r.in.gdal}}.&lt;br /&gt;
&lt;br /&gt;
Import of GMTED2010 tiles in GRASS GIS:&lt;br /&gt;
&lt;br /&gt;
  r.in.gdal 30N000E_20101117_gmted_mea075.tif out=gmted2010_30N000E_20101117&lt;br /&gt;
  r.colors gmted2010_30N000E_20101117 color=elevation&lt;br /&gt;
  g.region rast=gmted2010_30N000E_20101117&lt;br /&gt;
  r.shaded.relief gmted2010_30N000E_20101117 units=meters&lt;br /&gt;
  d.mon x0&lt;br /&gt;
  d.rast gmted2010_30N000E_20101117.shade&lt;br /&gt;
  d.grid 1 color=red textcolor=red&lt;br /&gt;
&lt;br /&gt;
[[Image:Gmted2010_30N000E_20101117_shaded.png|thumb|center|300px|GMTED2010 example: Trento - Garda Lake - Verona area (Northern Italy)]]&lt;br /&gt;
&lt;br /&gt;
=== GEBCO Bathymetric Chart ===&lt;br /&gt;
&lt;br /&gt;
* The General Bathymetric Chart of the Oceans (original 1' release 2003, new 1' and 30&amp;quot; releases 2008)&lt;br /&gt;
: http://www.gebco.net/data_and_products/gridded_bathymetry_data/&lt;br /&gt;
: http://www.bodc.ac.uk/data/online_delivery/gebco/&lt;br /&gt;
&lt;br /&gt;
{{cmd|r.in.gdal}} can be used to import the GMT netCDF files directly, or if that doesn't work you can use GMT tools to convert to an old-style native GMT format and import that with {{cmd|r.in.bin}}.&lt;br /&gt;
: example:  (GEBCO 2003 1' data)&lt;br /&gt;
&lt;br /&gt;
 # convert to an old style GMT binary .grd using grdreformat&lt;br /&gt;
 $ grdreformat 3n24s47w14w.grd 3n24s47w14w_Native.grd=bs&lt;br /&gt;
 &lt;br /&gt;
 # then import into GRASS,&lt;br /&gt;
 GRASS&amp;gt; r.in.bin -h -s bytes=2 in=3n24s47w14w_Native.grd out=3n24s47w14w&lt;br /&gt;
 &lt;br /&gt;
 # and set some nice colors&lt;br /&gt;
 GRASS&amp;gt; r.colors 3n24s47w14w rules=- &amp;lt;&amp;lt; EOF&lt;br /&gt;
 nv magenta&lt;br /&gt;
 0% black&lt;br /&gt;
 -7740 0:0:168&lt;br /&gt;
 0 84:176:248&lt;br /&gt;
 0 40:124:0&lt;br /&gt;
 522 68:148:24&lt;br /&gt;
 1407 148:228:108&lt;br /&gt;
 1929 232:228:108&lt;br /&gt;
 2028 232:228:92&lt;br /&gt;
 2550 228:160:32&lt;br /&gt;
 2724 216:116:8&lt;br /&gt;
 2730 grey&lt;br /&gt;
 2754 grey&lt;br /&gt;
 2760 252:252:252&lt;br /&gt;
 2874 252:252:252&lt;br /&gt;
 2883 192:192:192&lt;br /&gt;
 2913 192:192:192&lt;br /&gt;
 100% 252:252:252&lt;br /&gt;
 EOF&lt;br /&gt;
&lt;br /&gt;
=== Global Multi-Resolution Topography (GMRT DEM) ===&lt;br /&gt;
: ''From Columbia University's Lamont-Doherty Earth Observatory''&lt;br /&gt;
(it is reported that this is what Google Maps uses for their global bathymetry)&lt;br /&gt;
&lt;br /&gt;
* Global ~1 arc-second (~90 m) topography using multi-beam and satellite data in the oceans combined with SRTM on land.&lt;br /&gt;
* Full information at: http://www.marine-geo.org/portals/gmrt/&lt;br /&gt;
* Accessible via [http://www.geomapapp.org/ GeoMapApp] or [http://www.virtualocean.org/ Virtual Ocean] software.&lt;br /&gt;
* Very convenient to download into GRASS via wget:&lt;br /&gt;
&lt;br /&gt;
  export `g.region -g`&lt;br /&gt;
  wget &amp;quot;http://www.marine-geo.org/cgi-bin/getgridB?west=${w}&amp;amp;east=${e}&amp;amp;south=${s}&amp;amp;north=${n}&amp;amp;resolution=1&amp;quot; -O /tmp/test.grd&lt;br /&gt;
  r.in.gdal /tmp/test.grd output=GMRT -o&lt;br /&gt;
  rm /tmp/test.grd&lt;br /&gt;
&lt;br /&gt;
* Note: Downloaded file contains no projection information, but is EPSG:4326 (WGS84 Geographic).  The file size is limited, but lower resolution (resolution=2,4,8) data can be downloaded for larger areas.&lt;br /&gt;
&lt;br /&gt;
=== Smith and Sandwell DEM ===&lt;br /&gt;
&lt;br /&gt;
* Merge info here from the [[Marine Science]] wiki page&lt;br /&gt;
&lt;br /&gt;
=== SRTM DEM ===&lt;br /&gt;
&lt;br /&gt;
[http://www2.jpl.nasa.gov/srtm/ Space Shuttle Radar Topography Mission]&lt;br /&gt;
* see [[HOWTO import SRTM elevation data]]&lt;br /&gt;
&lt;br /&gt;
=== SRTM30plus data DEM ===&lt;br /&gt;
&lt;br /&gt;
SRTM30plus data consists of 33 files of global topography in the same format as the SRTM30 products distributed by the USGS EROS data center. The grid resolution is 30 second which is roughly one kilometer.&lt;br /&gt;
&lt;br /&gt;
Land data are based on the 1-km averages of topography derived from the USGS SRTM30 grided DEM data product created with data from the NASA Shuttle Radar Topography Mission. GTOPO30 data are used for high latitudes where SRTM data are not available.&lt;br /&gt;
&lt;br /&gt;
Ocean data are based on the Smith and Sandwell global 2-minute grid between latitudes +/- 72 degrees. Higher resolution grids have been added from the LDEO Ridge Multibeam Synthesis Project and the NGDC Coastal Relief Model. Arctic bathymetry is from the International Bathymetric Chart of the Oceans (IBCAO).&lt;br /&gt;
&lt;br /&gt;
All data are derived from public domain sources and these data are also in the public domain.&lt;br /&gt;
&lt;br /&gt;
GRASS 6 script &amp;lt;code&amp;gt;r.in.srtm&amp;lt;/code&amp;gt; described in GRASSNews vol. 3 won't work with this dataset (as it was made for the original SRTM HGT files). But you can import SRTM30plus tiles into GRASS this way:&lt;br /&gt;
&lt;br /&gt;
 r.in.bin -sb input=e020n40.Bathmetry.srtm output=e020n40_topex bytes=2 north=40 south=-10 east=60 west=20 r=6000 c=4800&lt;br /&gt;
 r.colors e020n40_topex rules=etopo2&lt;br /&gt;
&lt;br /&gt;
; Source&lt;br /&gt;
: GRASS Users Mailing List http://lists.osgeo.org/pipermail/grass-user/2005-August/030063.html&lt;br /&gt;
; Getting as SRTM30plus tiles: ftp://topex.ucsd.edu/pub/srtm30_plus/srtm30/data/&lt;br /&gt;
; Getting as SRTM30plus huge file: ftp://topex.ucsd.edu/pub/srtm30_plus/topo30/&lt;br /&gt;
; SRTMPLUS WCS server: http://svn.osgeo.org/gdal/trunk/autotest/gdrivers/data/srtmplus.wcs (read with {{cmd|r.external}}&lt;br /&gt;
&lt;br /&gt;
== Soil data ==&lt;br /&gt;
&lt;br /&gt;
=== Harmonized World Soil Database (HWSD Database) ===&lt;br /&gt;
&lt;br /&gt;
Download: http://webarchive.iiasa.ac.at/Research/LUC/External-World-soil-database/HTML/&lt;br /&gt;
&lt;br /&gt;
[http://webarchive.iiasa.ac.at/Research/LUC/External-World-soil-database/HTML/DataDesc.html?sb=12 Spatial reference system:] [http://spatialreference.org/ref/epsg/4326/ EPSG:4326] (LatLong WGS84)&lt;br /&gt;
&lt;br /&gt;
Import:&lt;br /&gt;
 grass70 -c EPSG:4326 ~/grassdata/hwsd&lt;br /&gt;
 # -e: expand location to dataset; -o: override (missing) projection in input dataset:&lt;br /&gt;
 r.in.gdal input=hwsd.bil output=hwSoil -e -o&lt;br /&gt;
 g.region rast=hwSoil -p&lt;br /&gt;
 r.category hwSoil&lt;br /&gt;
&lt;br /&gt;
The data is distributed with an MSAccess .mdb which contains additional data for each of the categories in the raster file. Opening the file in access, the data is found in the query &amp;quot;HWSD_Q&amp;quot;. Save this query in .csv format (with a name like &amp;quot;HWSD_Q.csv&amp;quot;) so that it may then be imported into GRASS. Before you can import it, you also need a file &amp;quot;HWSD_Q.csvt&amp;quot;, which contains a single line listing the type for each column in the database:&lt;br /&gt;
 &amp;quot;Integer&amp;quot;,&amp;quot;String&amp;quot;,&amp;quot;Integer&amp;quot;,&amp;quot;Integer&amp;quot;,&amp;quot;Integer&amp;quot;,&amp;quot;String&amp;quot;,&amp;quot;Integer&amp;quot;,&amp;quot;Integer&amp;quot;,&amp;quot;Real&amp;quot;,&amp;quot;Integer&amp;quot;,&amp;quot;String&amp;quot;,&amp;quot;Integer&amp;quot;,&amp;quot;String&amp;quot;,&amp;quot;Integer&amp;quot;,&amp;quot;String&amp;quot;,&amp;quot;Integer&amp;quot;,&amp;quot;Integer&amp;quot;,&amp;quot;Integer&amp;quot;,&amp;quot;Integer&amp;quot;,&amp;quot;Integer&amp;quot;,&amp;quot;Integer&amp;quot;,&amp;quot;Integer&amp;quot;,&amp;quot;Integer&amp;quot;,&amp;quot;Integer&amp;quot;,&amp;quot;Integer&amp;quot;,&amp;quot;Integer&amp;quot;,&amp;quot;Integer&amp;quot;,&amp;quot;Integer&amp;quot;,&amp;quot;Integer&amp;quot;,&amp;quot;Integer&amp;quot;,&amp;quot;Integer&amp;quot;,&amp;quot;Real&amp;quot;,&amp;quot;Real&amp;quot;,&amp;quot;Real&amp;quot;,&amp;quot;Real&amp;quot;,&amp;quot;Real&amp;quot;,&amp;quot;Real&amp;quot;,&amp;quot;Real&amp;quot;,&amp;quot;Real&amp;quot;,&amp;quot;Real&amp;quot;,&amp;quot;Real&amp;quot;,&amp;quot;Real&amp;quot;,&amp;quot;Real&amp;quot;,&amp;quot;Integer&amp;quot;,&amp;quot;Integer&amp;quot;,&amp;quot;Integer&amp;quot;,&amp;quot;Integer&amp;quot;,&amp;quot;Integer&amp;quot;,&amp;quot;Real&amp;quot;,&amp;quot;Real&amp;quot;,&amp;quot;Real&amp;quot;,&amp;quot;Real&amp;quot;,&amp;quot;Real&amp;quot;,&amp;quot;Real&amp;quot;,&amp;quot;Real&amp;quot;,&amp;quot;Real&amp;quot;,&amp;quot;Real&amp;quot;,&amp;quot;Real&amp;quot;,&amp;quot;Real&amp;quot;,&amp;quot;Real&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With both the .csv and the .csvt file in the same directory, you can then import them into GRASS:&lt;br /&gt;
 db.in.ogr dsn=~/grassdata/hwsd/HWSD_Q.csv output=hwsdData&lt;br /&gt;
&lt;br /&gt;
The data cannot be connected directly to the raster, it must be converted to a vector first:&lt;br /&gt;
 g.region rast=hwSoil&lt;br /&gt;
 r.to.vect -v in=hwSoil out=hwSoil feature=area&lt;br /&gt;
 v.db.droptable hwSoil&lt;br /&gt;
 db.droptable -f hwSoil # delete the table completely&lt;br /&gt;
 &lt;br /&gt;
Now we can connect the map and the table:&lt;br /&gt;
 v.db.connect -o map=hwSoil table=hwsdData driver=sqlite key=MU_GLOBAL&lt;br /&gt;
&lt;br /&gt;
To create a new raster map taking the values from the table:&lt;br /&gt;
 g.region rast=hwSoil  ## make sure we get the whole map&lt;br /&gt;
 v.to.rast in=hwSoil out=T_SAND col=T_SAND&lt;br /&gt;
  &lt;br /&gt;
== Imagery ==&lt;br /&gt;
&lt;br /&gt;
=== AVHRR ===&lt;br /&gt;
&lt;br /&gt;
* see the [[AVHRR]] wiki page&lt;br /&gt;
&lt;br /&gt;
=== Blue Marble imagery ===&lt;br /&gt;
&lt;br /&gt;
NASA's Blue Marble is a 500m-8 degree per-cell world wide visual image of the Earth from space, with the clouds removed.&lt;br /&gt;
&lt;br /&gt;
* see the [[Blue Marble]] wiki page&lt;br /&gt;
&lt;br /&gt;
=== EO-1 imagery ===&lt;br /&gt;
&lt;br /&gt;
(Earth Observing-1)&lt;br /&gt;
* &amp;quot;''Advanced Land Imager (ALI) provides image data from ten spectral bands (band designations). The instrument operates in a pushbroom fashion, with a spatial resolution of 30 meters for the multispectral bands and 10 meters for the panchromatic band.''&amp;quot;&lt;br /&gt;
:-- http://eros.usgs.gov/products/satellite/eo1.php&lt;br /&gt;
* On-board Atmospheric Corrections&lt;br /&gt;
&lt;br /&gt;
=== Global Land Cover Characteristics ===&lt;br /&gt;
&lt;br /&gt;
USGS ''et al.'' generated dataset at 1km resolution. Provides global landcover characteristics.&lt;br /&gt;
&lt;br /&gt;
* see the [[Global Land Cover Characteristics]] wiki page&lt;br /&gt;
&lt;br /&gt;
=== LANDSAT imagery ===&lt;br /&gt;
&lt;br /&gt;
Since October 1, 2008 all Landsat 7 ETM+ scenes held in the [http://landsat.usgs.gov/ USGS EROS archive] are available for download at no charge.&lt;br /&gt;
* Download via the [http://glovis.usgs.gov/ Glovis] online search tool (req. Java)&lt;br /&gt;
* Download via the USGS's [http://edcsns17.cr.usgs.gov/EarthExplorer/ EarthExplorer] interface&lt;br /&gt;
&lt;br /&gt;
==== Import Modules ====&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.in.gdal}} - Main import tool for complete multiband scenes&lt;br /&gt;
* {{cmd|r.in.wms}} - Download data covering current map region via WMS server&lt;br /&gt;
* [[GRASS_AddOns#r.in.onearth|r.in.onearth]] - WMS frontend for NASA's OnEarth Global Landsat Mosaic&lt;br /&gt;
* {{cmd|i.landsat.rgb}} - Color balancing/enhancement tool&lt;br /&gt;
&lt;br /&gt;
==== See also ====&lt;br /&gt;
&lt;br /&gt;
* Processing tips can be found on the [[LANDSAT]] wiki page&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
&lt;br /&gt;
==== Data sources ====&lt;br /&gt;
&lt;br /&gt;
* Some datasource links: http://www.ruf.rice.edu/~ben/gmt.html&lt;br /&gt;
* [http://www.geotorrent.org/browse.php Geotorrent.org]&lt;br /&gt;
&lt;br /&gt;
==== Import Modules ====&lt;br /&gt;
* The {{cmd|r.in.gdal}} modules may be used to import data of [http://www.gdal.org/formats_list.html many formats], including GMT netCDF&lt;br /&gt;
* The {{cmd|r.in.bin}} module may be used to import raw binary files&lt;br /&gt;
&lt;br /&gt;
=== MODIS imagery ===&lt;br /&gt;
&lt;br /&gt;
* see the [[MODIS]] wiki page&lt;br /&gt;
&lt;br /&gt;
=== Natural Earth imagery ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.naturalearthdata.com/ Natural Earth II]:  World environment map in natural color. GeoTIFF (use the {{cmd|r.in.gdal}} module)&lt;br /&gt;
* see also 1:10 million, 1:50 million and 1:110million scale maps from  http://www.naturalearthdata.com/&lt;br /&gt;
&lt;br /&gt;
=== Orthoimagery ===&lt;br /&gt;
&lt;br /&gt;
* [http://worldwindcentral.com/wiki/Sources_of_free_orthoimagery Sources of free orthoimagery]&lt;br /&gt;
&lt;br /&gt;
=== Pathfinder AVHRR SST imagery ===&lt;br /&gt;
&lt;br /&gt;
* see the Pathfinder [[AVHRR]] SST wiki page&lt;br /&gt;
&lt;br /&gt;
=== QuickBird imagery ===&lt;br /&gt;
&lt;br /&gt;
* See the [[QuickBird]] wiki page&lt;br /&gt;
&lt;br /&gt;
=== SeaWiFS imagery ===&lt;br /&gt;
&lt;br /&gt;
* see the [[SeaWiFS]] wiki page&lt;br /&gt;
&lt;br /&gt;
=== SPOT Vegetation imagery ===&lt;br /&gt;
&lt;br /&gt;
SPOT Vegetation (1km) global: NDVI data sets&lt;br /&gt;
&lt;br /&gt;
* [http://free.vgt.vito.be/ SPOT Vegetation (1km, global) NDVI data set server]&lt;br /&gt;
* for import, see {{cmd|i.in.spotvgt}}&lt;br /&gt;
&lt;br /&gt;
=== True Marble imagery ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.unearthedoutdoors.net/global_data/true_marble/download True Marble]: 250m world wide visual image of the Earth from space, with the clouds removed. GeoTIFF (use the {{cmd|r.in.gdal}} module)&lt;br /&gt;
&lt;br /&gt;
== Climatic data ==&lt;br /&gt;
&lt;br /&gt;
=== OGC WCS - Albedo example ===&lt;br /&gt;
&lt;br /&gt;
TODO: update this example e.g. to http://demo.mapserver.org/cgi-bin/wcs?SERVICE=wcs&amp;amp;VERSION=1.0.0&amp;amp;REQUEST=GetCapabilities&lt;br /&gt;
&lt;br /&gt;
GRASS imports OGC Web Coverage Service data. Example server (please suggest a better one!)&lt;br /&gt;
  &amp;lt;WCS_GDAL&amp;gt;&lt;br /&gt;
  &amp;lt;ServiceURL&amp;gt;http://laits.gmu.edu/cgi-bin/NWGISS/NWGISS?&amp;lt;/ServiceURL&amp;gt;&lt;br /&gt;
  &amp;lt;CoverageName&amp;gt;AUTUMN.hdf&amp;lt;/CoverageName&amp;gt;&lt;br /&gt;
  &amp;lt;Timeout&amp;gt;90&amp;lt;/Timeout&amp;gt;&lt;br /&gt;
  &amp;lt;Resample&amp;gt;nearest&amp;lt;/Resample&amp;gt;&lt;br /&gt;
  &amp;lt;/WCS_GDAL&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Save this as albedo.xml. Import into a LatLong WGS84 location:&lt;br /&gt;
  r.in.gdal albedo.xml out=albedo&lt;br /&gt;
&lt;br /&gt;
Unfortunately this server sends out the map shifted by 0.5 pixel. This requires a fix to the map boundary coordinates:&lt;br /&gt;
  r.region albedo n=90 s=-90 w=-180 e=180&lt;br /&gt;
&lt;br /&gt;
Now apply color table and look at the map:&lt;br /&gt;
  r.colors albedo color=byr&lt;br /&gt;
  d.mon x0&lt;br /&gt;
  d.rast albedo&lt;br /&gt;
&lt;br /&gt;
=== SNODAS maps ===&lt;br /&gt;
&lt;br /&gt;
[http://nsidc.org/data/docs/noaa/g02158_snodas_snow_cover_model/index.html Snow Data Assimilation System] data that support hydrological modeling and analysis. First download the data, and untar them (once for each month, and once for each day), and you should get pairs of “.dat” and “.Hdr” files. The data files are stored in flat 16-bit binary format, so assuming that “snowdas_in.dat” is the name of the input file, at the GRASS prompt:&lt;br /&gt;
&lt;br /&gt;
   r.in.bin -bs bytes=2 rows=3351 cols=6935 north=52.874583333332339 \&lt;br /&gt;
   south=24.949583333333454 east=-66.942083333334011 west=-124.733749999998366 \&lt;br /&gt;
   anull=-9999 input=snowdas_input.dat output=snowdas&lt;br /&gt;
&lt;br /&gt;
=== WorldClim maps ===&lt;br /&gt;
&lt;br /&gt;
[http://www.worldclim.org/ WorldClim] is a set of global climate layers (climate grids) with a spatial resolution of a square kilometer.&lt;br /&gt;
* Load into a Lat/Lon WGS84 location (EPSG:4326)&lt;br /&gt;
* Import with {{cmd|r.in.bin}} or {{cmd|r.in.gdal}}&lt;br /&gt;
* {{cmd|r.in.gdal}} will read .BIL format, see the {{cmd|r.in.srtm}} shell script for hints&lt;br /&gt;
* binary format is 2 byte integer. Multiply by 10 using {{cmd|r.mapcalc}} to convert units. See http://www.worldclim.org/format.htm for more information and the [[MODIS]] help page for example of converting raw to data units.&lt;br /&gt;
&lt;br /&gt;
== Population maps ==&lt;br /&gt;
&lt;br /&gt;
=== Gridded Population of the World ===&lt;br /&gt;
&lt;br /&gt;
* http://sedac.ciesin.columbia.edu/gpw/global.jsp&lt;br /&gt;
&lt;br /&gt;
Import with {{cmd|r.in.gdal}}, assign population color table with {{cmd|r.colors}}&lt;br /&gt;
&lt;br /&gt;
== Topographic maps ==&lt;br /&gt;
=== Soviet topographic maps ===&lt;br /&gt;
&lt;br /&gt;
* [http://en.poehali.org/maps Soviet topographic maps] as geocoded GeoTIFFs&lt;br /&gt;
&lt;br /&gt;
= Vector data =&lt;br /&gt;
&lt;br /&gt;
=== CDC Geographic Boundary and Public Health Maps ===&lt;br /&gt;
&lt;br /&gt;
* http://www.cdc.gov/epiinfo/maps.htm&lt;br /&gt;
&lt;br /&gt;
=== Global Administrative Areas ===&lt;br /&gt;
&lt;br /&gt;
* GADM is a database of the location of the world's administrative areas (boundaries) available in shapefiles.&lt;br /&gt;
: http://gadm.org (extracted by country [http://gadm.org/country here])&lt;br /&gt;
&lt;br /&gt;
* World Borders Dataset including ISO 3166-1 Country codes available in shapefiles.&lt;br /&gt;
: http://thematicmapping.org/downloads/world_borders.php&lt;br /&gt;
* Free GIS data from Mapping Hacks&lt;br /&gt;
: http://mappinghacks.com/data/&lt;br /&gt;
&lt;br /&gt;
=== GSHHS World Coastline ===&lt;br /&gt;
&lt;br /&gt;
GSHHS is a high resolution shoreline dataset. It is derived from data in the public domain and licensed as GPL. The shorelines are constructed entirely from hierarchically arranged closed polygons. It is closely linked to the [[GMT]] project.&lt;br /&gt;
&lt;br /&gt;
==== Availability ====&lt;br /&gt;
&lt;br /&gt;
* Download the original data set from http://www.soest.hawaii.edu/pwessel/gshhg/index.html. Also available at http://www.ngdc.noaa.gov/mgg/shorelines/data/gshhg/latest/.&lt;br /&gt;
&lt;br /&gt;
* The data set, or parts from it, can be extracted from [http://www.ngdc.noaa.gov/mgg/shorelines/shorelines.html NOAA's shoreline extractor].&lt;br /&gt;
:For GRASS 6 you can download 1:250,000 shoreline data from NOAA's site in Mapgen format, which can be imported with the {{cmd|v.in.mapgen}} module.&lt;br /&gt;
&lt;br /&gt;
* '''ESRI Shapefiles''' of the latest version are available at http://www.ngdc.noaa.gov/mgg/shorelines/data/gshhg/latest/. The old 1.6 version is available at ftp://ftp.ihg.uni-duisburg.de/GIS/GISData/GSHHS/.&lt;br /&gt;
&lt;br /&gt;
==== Import ====&lt;br /&gt;
&lt;br /&gt;
* Import with the GRASS6 add-on module {{AddonCmd|v.in.gshhs}}&lt;br /&gt;
&lt;br /&gt;
=== OpenStreetMap ===&lt;br /&gt;
&lt;br /&gt;
See the [[OpenStreetMap]] wiki page.&lt;br /&gt;
&lt;br /&gt;
=== SALB ===&lt;br /&gt;
&lt;br /&gt;
Second Administrative Level Boundaries: ''&amp;quot;The SALB dataset is a global digital dataset consisting of digital maps and codes that can be downloaded on a country by country basis.&amp;quot;''&lt;br /&gt;
&lt;br /&gt;
* http://www.who.int/whosis/database/gis/salb/salb_home.htm&lt;br /&gt;
&lt;br /&gt;
=== VMap0 ===&lt;br /&gt;
&lt;br /&gt;
1:1 million vector data. Formerly known as ''Digital Chart of the World''&lt;br /&gt;
&lt;br /&gt;
* see the two articles in [http://grass.osgeo.org/newsletter/index.php ''GRASS Newsletter vol. 3 (June 2005)'']&lt;br /&gt;
&lt;br /&gt;
Check the [http://en.wikipedia.org/wiki/Vector_Map Wikipedia page] on VMAP, see the links at the bottom of that article to shapefile versions of VMAP0 and VMAP1.  Those look like the versions that were, several years ago, on a NIMA (predecessor to NGA, and successor to the Defense Mapping Agency that managed the Digital Chart of the World and VMAP project) Website.  Many GRASS users may prefer the shapefiles to the original Vector Product Format data.&lt;br /&gt;
&lt;br /&gt;
* [http://gis-lab.info/qa/vmap0-eng.html VMap0 data in ESRI shape format]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
&lt;br /&gt;
* [http://spatial-analyst.net/wiki/index.php?title=Global_datasets Global datasets] list by T. Hengl (with dataset download)&lt;br /&gt;
* http://freegisdata.rtwilson.com/&lt;br /&gt;
* The FreeGIS.org database:  http://www.freegis.org/database/&lt;br /&gt;
* http://finder.geocommons.com/&lt;br /&gt;
* http://wiki.openstreetmap.org/wiki/Potential_Datasources&lt;br /&gt;
* http://www.geonames.org/data-sources.html&lt;br /&gt;
* [http://ckan.net/tag/read/geo Open Knowledge Foundation link collection]&lt;br /&gt;
* [http://openweathermap.org/ Open Weather Map]  free weather data and forecast API suitable for any cartographic services like web and smartphones applications. Ideology is inspired by OpenStreetMap and Wikipedia that make information free and available for everybody. &lt;br /&gt;
&lt;br /&gt;
=== Metadata Catalogues ===&lt;br /&gt;
Catalog Service for the Web (CSW) is an OGC standard for offering access to catalogues of geospatial information over the Internet (HTTP). CSW allow for discovering, browsing, and querying metadata about data, services, and similar resources. A list of Metadata Catalogues / CSW services from member states of the European Union can be found here:&amp;lt;br /&amp;gt;&lt;br /&gt;
* [http://inspire-geoportal.ec.europa.eu/INSPIRERegistry/ http://inspire-geoportal.ec.europa.eu/INSPIRERegistry/]&amp;lt;br /&amp;gt;&lt;br /&gt;
And here: [http://inspire-geoportal.ec.europa.eu/discovery/ http://inspire-geoportal.ec.europa.eu/discovery/] one can search European Metadata Catalogues online.&lt;br /&gt;
&lt;br /&gt;
=== European datasets ===&lt;br /&gt;
&lt;br /&gt;
* [[European datasets]]&lt;br /&gt;
* [http://preview.grid.unep.ch/index3.php?preview=data&amp;amp;lang=eng Global Risk Data Platform]&lt;br /&gt;
* [http://open-data.europa.eu/open-data/data/ European Commission Opendata Portal]: 5800+ datasets&lt;br /&gt;
* [http://eca.knmi.nl/download/ensembles/download.php E-OBS] This is the download page for the ENSEMBLES daily gridded observational dataset for precipitation, temperature and sea level pressure in Europe&lt;br /&gt;
* [http://mars.jrc.ec.europa.eu/mars/About-us/AGRI4CAST/Data-distribution MARS @ JRC] Temperature, vapour pressure, rainfall, relative humidity, cloud cover, solar radiation, wind speed.&lt;br /&gt;
* [http://www.efas.eu/ EFAS @ JRC] is a High resolution pan-European dataset for hydrologic modelling.&lt;br /&gt;
&lt;br /&gt;
=== National datasets ===&lt;br /&gt;
&lt;br /&gt;
* [http://asdd.ga.gov.au/asdd/tech/zap/basic.html Australian Spatial Data Directory]&lt;br /&gt;
* [http://wiki.gfoss.it/index.php/GIS_Open_Data Italian Geodata collection]&lt;br /&gt;
* [http://koordinates.com/ New Zealand] data from Koordinates.com&lt;br /&gt;
* United States from NOAA/USGSs data portal (FIXME: link?)&lt;br /&gt;
* [http://geodata.gov.gr/geodata/ Greek Public Geodata] (in Greek)&lt;br /&gt;
&lt;br /&gt;
=== Various datasets worldwide ===&lt;br /&gt;
&lt;br /&gt;
* [http://geospatial.edublogs.org/ GEOSPATIAL DATA REPORT]: Finding and Using GIS Data&lt;br /&gt;
* [http://www.edenextdata.com/?q=data Edenext data portal]: Land Cover, Transport networks, Elevation, Orthoimagery, Human health and safety, Species Distribution, Atmospheric Conditions and Meteorological Geographical Features, Training Program Presentations and Data, Utility and governmental services, Hydrography, Soil, Bio geographical regions, Population distribution and Demographics&lt;br /&gt;
* [http://gdex.cr.usgs.gov/gdex/ Global Data Explorer USGS]: ASTER, SRTM, GTOPO etc&lt;br /&gt;
* [http://www.landcover.org/ landcover]&lt;br /&gt;
* [http://www.gripweb.org/gripweb/?q=data-information GRIPWEB’s Data &amp;amp; Informational Portal]: hazard &amp;amp; risk&lt;br /&gt;
* [http://sedac.ciesin.columbia.edu/data/sets/browse SEDAC]: Agriculture, Climate, Conservation, Framework Data, Governance, Hazards, Health, Infrastructure, Land Use, Marine and Coastal, Population, Poverty, Remote Sensing, Sustainability, Urban, Water&lt;br /&gt;
* [http://www.preventionweb.net/english/professional/maps/?pid:6&amp;amp;pih:2 Prevention Web]: hazard &amp;amp; risk&lt;br /&gt;
* [http://data.un.org/Default.aspx UNdata]: UN database&lt;br /&gt;
* [http://www.undp.org/content/undp/en/home.html UNDP home page]&lt;br /&gt;
* [http://www.cgiar-csi.org/data global climatic data]&lt;br /&gt;
* [http://csi.cgiar.org/cgiargeospatialtools.asp cosortium for spatial information CGIAR-CSI GeoSpatial Toolkits]&lt;br /&gt;
* [http://freegisdata.rtwilson.com/ inks to over 300 sites providing freely available geographic datasets]&lt;br /&gt;
* [http://www.diva-gis.org/Data Free Spatial Data]&lt;br /&gt;
* [http://edc2.usgs.gov/glcc/globe_int.php Global Land Cover Characteristics Data Base Version 2.0]&lt;br /&gt;
* [http://opentopo.sdsc.edu/gridsphere/gridsphere?cid=datasets A Portal to High-Resolution Topography Data and Tools]&lt;br /&gt;
* [http://www.metoffice.gov.uk/hadobs/hadghcnd/ HadGHCND] is a gridded daily temperature dataset based upon near-surface maximum (TX) and minimum (TN) temperature observations.&lt;br /&gt;
&lt;br /&gt;
=== WMS servers ===&lt;br /&gt;
&lt;br /&gt;
* See [[WMS]] page&lt;br /&gt;
&lt;br /&gt;
=== River discharge data ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.bafg.de/GRDC/EN/Home/homepage_node.html Global Runoff Data Centre]&lt;br /&gt;
* [http://www.sage.wisc.edu/riverdata/ Global River Discharge Database]&lt;br /&gt;
* [http://csdms.colorado.edu/wiki/River_discharge_data CSDMS]&lt;br /&gt;
&lt;br /&gt;
[[Category: Geodata]]&lt;br /&gt;
[[Category: Import]]&lt;/div&gt;</summary>
		<author><name>⚠️Sbl</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=WCS&amp;diff=20085</id>
		<title>WCS</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=WCS&amp;diff=20085"/>
		<updated>2014-01-04T22:55:11Z</updated>

		<summary type="html">&lt;p&gt;⚠️Sbl: /* Using WCS in GRASS GIS, limit to BB */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
This page is about support of OGC web coverage services (WCS) in GRASS GIS.&lt;br /&gt;
&lt;br /&gt;
== Metasites and collections of WCS servers ==&lt;br /&gt;
&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== Using WCS in GRASS GIS ==&lt;br /&gt;
&lt;br /&gt;
One option is to register the WCS service via {{cmd|r.external|version=70}}.&lt;br /&gt;
&lt;br /&gt;
First create ASCII file with this content, named e.g. &amp;quot;wcs_geoserver_LL.wcs&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;xml&amp;quot;&amp;gt; &lt;br /&gt;
&amp;lt;WCS_GDAL&amp;gt;&lt;br /&gt;
  &amp;lt;ServiceURL&amp;gt;http://demo.opengeo.org/geoserver/wcs?&amp;lt;/ServiceURL&amp;gt;&lt;br /&gt;
  &amp;lt;CoverageName&amp;gt;Img_Sample&amp;lt;/CoverageName&amp;gt;&lt;br /&gt;
&amp;lt;/WCS_GDAL&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or simply download this file from [http://svn.osgeo.org/gdal/trunk/autotest/gdrivers/data/geoserver.wcs here].&lt;br /&gt;
&lt;br /&gt;
Start GRASS in a latlong location (EPSG 4326), then register the WCS file:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt; &lt;br /&gt;
r.external input=wcs_geoserver_LL.wcs output=wcs_data&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then you can look at the map in the wxGUI map display:&lt;br /&gt;
&lt;br /&gt;
[[Image:WCS import with r external.png|thumb|center|400px|Import of WCS via r.external, display with RGB viewer]]&lt;br /&gt;
&lt;br /&gt;
In order to limit the WCS to a bounding box (e.g. from current region) a GDAL vrt file can be created from the WCS ASCII file using gdalbuildvrt:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt; &lt;br /&gt;
gdalbuildvrt wcs_geoserver_LL_BB.vrt wcs_geoserver_LL.wcs -te xmin ymin xmax ymax&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.gdal.org/frmt_wcs.html WCS_GDAL - OGC Web Coverage Service support]&lt;br /&gt;
&lt;br /&gt;
[[Category: Documentation]]&lt;br /&gt;
[[Category: FAQ]]&lt;br /&gt;
[[Category: Geodata]]&lt;br /&gt;
[[Category: OGC]]&lt;br /&gt;
[[Category: Raster]]&lt;/div&gt;</summary>
		<author><name>⚠️Sbl</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=AddOns&amp;diff=16382</id>
		<title>AddOns</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=AddOns&amp;diff=16382"/>
		<updated>2012-08-31T13:21:01Z</updated>

		<summary type="html">&lt;p&gt;⚠️Sbl: r.connectivity.* addons added&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;
== 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 https://svn.osgeo.org/grass/grass-addons&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.4 and newer you can use the {{cmd|g.extension}} 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;
=== How to obtain write-access ===&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;
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;
=== Coding standards ===&lt;br /&gt;
&lt;br /&gt;
Please have a look at our {{src|SUBMITTING}} for C-programs, {{src|SUBMITTING_PYTHON}} for Python scripts or {{src|SUBMITTING_SCRIPTS|branch=branches/develbranch_6}} for Bash scripts coding standards before submitting here.&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 {{cmd|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/grass6/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;
&lt;br /&gt;
* [http://www.wgug.org/index.php?option=com_content&amp;amp;view=article&amp;amp;id=56&amp;amp;Itemid=9 ann.*] is the set of GRASS modules (in python) which implements artificial neural network using FANN library. The package requires Fast Artificial Neural Network Library ([http://leenissen.dk/fann/wp/ FANN]) v2.x. &amp;lt;BR&amp;gt;'''Author:''' Pawel Netzel&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://trac.osgeo.org/grass/browser/grass-addons/tools/csv_dequote.pl csv_dequote.pl] is a Perl script to convert comma separated .csv files (including &amp;quot;quoted&amp;quot; text strings containing commas) into a form ready for {{Cmd|v.in.ascii}}. Comma separators are converted to pipes (|), commas in quoted strings are preserved, and &amp;quot;quotes&amp;quot; are removed where it is appropriate to do so. It doesn't need GRASS to run, but it does need the Text::CSV Perl Module (&amp;lt;tt&amp;gt;apt-get install libtext-csv-perl&amp;lt;/tt&amp;gt;).&amp;lt;BR&amp;gt;'''Author''': Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
== GRASS 6.x (current) ==&lt;br /&gt;
* todo: move this content to [[AddOns/GRASS6]]&lt;br /&gt;
: (requires an update of the mediawiki AddOnCmd macro to be more like the versioned html doc macro)&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/&lt;br /&gt;
&lt;br /&gt;
=== Vector add-ons ===&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/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 or {{cmd|g.extension}}:&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/vector/adehabitat&lt;br /&gt;
&lt;br /&gt;
==== v.append ====&lt;br /&gt;
&lt;br /&gt;
: [http://web.archive.org/web/20060914172621/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;
: ''Note'': also module ''v.patch'' can be used for this task. &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/grass6/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/grass6/vector/v.in.gama&lt;br /&gt;
&lt;br /&gt;
==== v.in.geodesic ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/vector/v.in.geodesic v.in.geodesic] is a shell script which will create a new vector map containing a great circle line. The user may either define a beginning and end coordinate, or define a starting coordinate along with initial azimuth and desired line length.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== v.in.geoplot ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/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/grass6/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/grass6/vector/v.in.gshhs v.in.gshhs] imports [http://www.soest.hawaii.edu/pwessel/gshhs/index.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.marxan ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/vector/v.in.marxan v.in.marxan] is a python script that imports Marxan output data for display in a vector grid file prepared using v.out.marxan. &lt;br /&gt;
: ''see also the [http://www.uq.edu.au/marxan/ Marxan] &lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Trevor Wiens&lt;br /&gt;
&lt;br /&gt;
==== v.in.mbsys_fnv ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/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. See also the [[#v.in.p190]] addon.&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/grass6/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.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/grass6/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.in.p190 ====&lt;br /&gt;
&lt;br /&gt;
: [https://trac.osgeo.org/grass/browser/grass-addons/grass6/vector/v.in.p190 v.in.p190] is a shell script that imports 'Centre of Source' &amp;quot;S&amp;quot; navigation data from seismic P1/90 (UKOOA) data files and writes it either GRASS vector points or vector lines format. Optionally it will export the navigation data into .csv text files as well. ''Currently in the functional prototype stage, some assembly is required. See inside the shell script for details.'' For working with SEG-Y data, see also the [[#v.in.mbsys_fnv]] addon.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== v.in.ply ====&lt;br /&gt;
&lt;br /&gt;
* GRASS 6: [https://trac.osgeo.org/grass/browser/grass-addons/grass6/vector/v.in.ply v.in.ply] is a shell script that imports a PLY file and writes it as GRASS vector points. For a much more advanced version, see the GRASS 7 version.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Markus Neteler&lt;br /&gt;
&lt;br /&gt;
* GRASS 7: [https://trac.osgeo.org/grass/browser/grass-addons/grass7/vector/v.in.ply v.in.ply] is a C program that imports a PLY file and writes it as GRASS vector map.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Markus Metz&lt;br /&gt;
&lt;br /&gt;
==== v.in.postgis ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/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.redwg ====&lt;br /&gt;
&lt;br /&gt;
: [http://lists.gnu.org/archive/html/info-libredwg/2010-08/msg00000.html v.in.redwg imports DWG files into GRASS.]&lt;br /&gt;
:'''Author:''' Rodrigo Rodrigues da Silva&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/vector/v.in.redwg&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.py ====&lt;br /&gt;
* '''Spatial Analysis Tools'''&lt;br /&gt;
&lt;br /&gt;
: [http://www.public.asu.edu/~cmbarton/files/grass_scripts/v.lda.py v.lda.py] is a Python script for calculating Ian Johnson's (U. Sidney) Local Density Analysis values. This can be used in two ways. When only one vector points file is entered, it serves to measure clustering of point data at different neighborhood radii. When two different point files are entered, it measures the the co-occurence of the points from the two files. There is an option to export the data into a cvs format file for easy plotting in a spreadsheet or statistical program like R.&lt;br /&gt;
&lt;br /&gt;
==== v.nn.py ====&lt;br /&gt;
* '''Spatial Analysis Tools'''&lt;br /&gt;
&lt;br /&gt;
: [http://www.public.asu.edu/~cmbarton/files/grass_scripts/v.nn.py v.nn.py] is a Python script for calculating the nearest neighbor coefficient of a single vector points file--as an index of clustering--or of two points files--to provide an index of the correspondence between the points in one file and points in a different file.&lt;br /&gt;
&lt;br /&gt;
==== v.ldm ====&lt;br /&gt;
:[https://raw.github.com/amuriy/GRASS-scripts/master/v.ldm v.ldm] Shell script to compute &amp;quot;Linear Directional Mean&amp;quot; of vector lines, to display LDM graphics on the graphic monitor, and optionally to save it to vector line and update attribute table with LDM parameters.&lt;br /&gt;
:See [http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/How_Linear_Directional_Mean_works/005p0000001r000000/ this link] for full LDM description.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Alexander Muriy&lt;br /&gt;
&lt;br /&gt;
Available via SVN or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
svn co https://svn.osgeo.org/grass/grass-addons/grass6/vector/v.ldm/&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://web.archive.org/web/20060827192321/http://ngeo.de/grassstuff/v.lmeasure v.lmeasure] and [http://web.archive.org/web/20060827060303/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.mainchannel ====&lt;br /&gt;
&lt;br /&gt;
: [https://svn.osgeo.org/grass/grass-addons/grass6/vector/v.strahler/v.mainchannel.html v.mainchannel] is a shell script which finds the main channel of a basin starting from the vector file of the stream network.&lt;br /&gt;
: '''Author:''' Ivan Marchesini, Annalisa Minelli&lt;br /&gt;
&lt;br /&gt;
Available via SVN or {{cmd|g.extension}}:&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/vector/v.strahler/v.mainchannel.sh&lt;br /&gt;
&lt;br /&gt;
==== v.mk_circle ====&lt;br /&gt;
&lt;br /&gt;
: [http://tekmap.ns.ca/blog/grass_mk_circle v.mk_circle] is a program to create a closed vector at a user defined location and size. The program supports output of different shapes, open boundaries and closed centroids, and will accept multiple locations and sizes from an ASCII file or standard input. GRASS 7 version is also available.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Bob Covill&lt;br /&gt;
&lt;br /&gt;
==== v.mkhexgrid ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/vector/v.mkhexgrid v.mkhexgrid] is a python script that creates a hexagonal grid the size of the selected region using user specified side lengths or areas. This has been updated 2011-09-14. &lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Trevor Wiens&lt;br /&gt;
&lt;br /&gt;
==== v.out.ascii.db ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/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/grass6/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.geoserver ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.wgug.org/index.php?option=com_content&amp;amp;view=article&amp;amp;id=56&amp;amp;Itemid=9 v.out.geoserver] is a shell script for exporting vector data to [http://geoserver.org GeoServer] directly. It uses: v.out.ogr, curl, zip and GeoServer REST interface.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Pawel Netzel&lt;br /&gt;
&lt;br /&gt;
==== v.out.gmt ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/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.marxan ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/vector/v.out.marxan v.out.marxan] is a python script that prepares vector layers and exports GRASS vector attributes and adjacency information as Marxan input files. Output from Marxan simulations can be imported using v.in.marxan. &lt;br /&gt;
: ''see also the [http://www.uq.edu.au/marxan/ Marxan] &lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Trevor Wiens&lt;br /&gt;
&lt;br /&gt;
==== v.out.ply ====&lt;br /&gt;
&lt;br /&gt;
: [https://trac.osgeo.org/grass/browser/grass-addons/grass6/vector/v.out.ply v.out.ply] is a shell script that exports a GRASS vector points cloud into a PLY file.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Markus Neteler&lt;br /&gt;
&lt;br /&gt;
==== v.out.svg ====&lt;br /&gt;
&lt;br /&gt;
: [http://svg.cc/assvg/grass.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/grass6/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/grass6/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/grass6/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/grass6/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/grass6/raster/r.univar.zonal r.univar.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 ====&lt;br /&gt;
* ''Currently unavailable. Being re-written in python. Target for inclusion in addons svn is January 2011''&lt;br /&gt;
''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/grass6/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/grass6/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 or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/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/grass6/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/grass6/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.transects ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/vector/v.transects v.transects] is a python script that creates a set of equidistant lines (transects) that are perpendicular to an input vector line file. Points and quadrilateral areas are alternative outputs. &lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Eric Hardin&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.triangle ====&lt;br /&gt;
: [https://raw.github.com/amuriy/GRASS-scripts/a7df12d996abfe6461f509fce6feb6c869af2d5e/v.triangle v.triangle] -- front-end for &amp;lt;Triangle&amp;gt; utility (http://www.cs.cmu.edu/~quake/triangle.html) of J.R. Shewchuk. &lt;br /&gt;
&lt;br /&gt;
Makes exact Delaunay triangulations, constrained Delaunay triangulations, conforming Delaunay triangulations and high-quality triangular meshes. In GIS terminology, it produces 2D TIN, optionally with &amp;quot;breaklines&amp;quot;. &lt;br /&gt;
For more details see GRASS-wiki page [http://grass.osgeo.org/wiki/TIN_with_breaklines TIN with breaklines].&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Alexander Muriy&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;
Available via SVN or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
svn co https://svn.osgeo.org/grass/grass-addons/grass6/vector/v.trimesh/&lt;br /&gt;
&lt;br /&gt;
==== v.to.averline ====&lt;br /&gt;
&lt;br /&gt;
: [https://raw.github.com/amuriy/GRASS-scripts/a7df12d996abfe6461f509fce6feb6c869af2d5e/v.to.averline v.to.averline] is a shell script to find &amp;quot;average&amp;quot; line(s) of input vector map. It works with simple algorithm stated [http://forums.arcgis.com/threads/26757-quot-Averaging-quot-lines?p=88781&amp;amp;viewfull=1#post88781 here] (2 methods -- average distance to vectors sampling or average number of vectors segments).     &lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Alexander Muriy&lt;br /&gt;
&lt;br /&gt;
==== v.to.equidist ====&lt;br /&gt;
&lt;br /&gt;
: [https://raw.github.com/amuriy/GRASS-scripts/master/v.to.equidist v.to.equidist] is a shell script that generates vector points or line segments along a given vector line(s) with the equal distances (uses v.segment)   &lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Alexander Muriy&lt;br /&gt;
&lt;br /&gt;
==== v.what.rast.buffer ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/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 ====&lt;br /&gt;
* [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;
==== v.vect.stats ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/vector/v.vect.stats v.vect.stats] counts the number of points falling into each polygon and optionally calculates statistics from numeric point attributes for each polygon. v.vect.stats is a C module for GRASS 6.4 and 6.5 (see enclosed patch for 6.5, applies also to 6.4.2) and included in GRASS 7.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Markus Metz&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 http://svn.osgeo.org/grass/grass-addons/grass6/raster&lt;br /&gt;
&lt;br /&gt;
==== Raplat ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GRASS-RaPlaT: The Radio Planning Tool for GRASS GIS system developed by support of Slovenian largest mobile operator Mobitel. It is especially designed for radio coverage calculation of GSM/UMTS systems, but can be applied also to other wireless systems in the frequency range 400 MHz – 2.4 GHz (e.g. TETRA, WiFi). Its structure is modular and characterized by high level of flexibility and adaptability. &lt;br /&gt;
&lt;br /&gt;
 * Documentation: http://commsys.ijs.si/en/component/content/article/54-software/149-user-manual&lt;br /&gt;
 * Software: http://commsys.ijs.si/en/software/grass-raplat&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Department of Communication Systems, Jozef Stefan Institue, Jamova 39, SI-1000 Ljubljana, Slovenia&lt;br /&gt;
&lt;br /&gt;
==== r.area ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/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.basin ====&lt;br /&gt;
&lt;br /&gt;
: [http://svn.osgeo.org/grass/grass-addons/grass6/raster/r.basin/ r.basin] Generates the main morphometric parameters of the basin starting from the digital elevation model and the coordinates of the basin's closing section (see [http://grass.osgeo.org/wiki/R.basin wiki] for howto).&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Margherita Di Leo, Massimo Di Stefano&lt;br /&gt;
&lt;br /&gt;
Available via SVN or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/raster/r.basin/&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). Dependence: v.strahler package.&lt;br /&gt;
: '''Authors:''' Ivan Marchesini, Annalisa Minelli&lt;br /&gt;
&lt;br /&gt;
Available via SVN or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/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 or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/raster/r.boxcount/&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/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/grass6/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/grass6/raster/r.burn.frict&lt;br /&gt;
&lt;br /&gt;
==== r.clump2 ====&lt;br /&gt;
&lt;br /&gt;
: [https://trac.osgeo.org/grass/browser/grass-addons/grass6/raster/r.clump2 r.clump2] is a C module similar to r.clump. Differences are: diagonally adjacent cells are also clumped but can be excluded, NULL (nodata) cells are always excluded, and selective clumping with start coordinates is supported.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Markus Metz&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/raster/r.clump2&lt;br /&gt;
&lt;br /&gt;
==== r.colors.out_sld ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/raster/r.colors.out_sld r.colors.out_sld] is a shell script used to export the color table associated with a raster map layer to an OGC [http://docs.geoserver.org/latest/en/user/styling/sld-cookbook/rasters.html SLD] XML file, for use with [[GeoServer]] and the ilk.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== r.colors.out_vtk ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/raster/r.colors.out_vtk r.colors.out_vtk] is a shell script used to export the color table associated with a raster map layer to a {{wikipedia|VTK}} XML file. (see also [[Help with 3D]])&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== r.colors.quantiles ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/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.connectivity.distance ====&lt;br /&gt;
&lt;br /&gt;
: [http://svn.osgeo.org/grass/grass-addons/grass6/raster/r.connectivity.distance r.connectivity.distance] is a shell script, which is - as a part of the r.connectivity.* tool-chain - intended to make connectivity analysis based on graph-theory more easily available to conservation planning. r.connectivity.distance computes the (cost) distance between all habitat patches of an input vector map within a user defined euclidean distance threshold.&amp;lt;BR&amp;gt;See also [[#r.connectivity.network]] and  [[#r.connectivity.corridors]]&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Stefan Blumentrath, [http://www.nina.no NINA]&lt;br /&gt;
&lt;br /&gt;
Available via SVN or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/raster/r.connectivity.distance/&lt;br /&gt;
&lt;br /&gt;
==== r.connectivity.network ====&lt;br /&gt;
&lt;br /&gt;
: [http://svn.osgeo.org/grass/grass-addons/grass6/raster/r.connectivity.network r.connectivity.network] is a shell script, which is - as a part of the r.connectivity.* tool-chain - intended to make connectivity analysis based on graph-theory more easily available to conservation planning. r.connectivity.network performs the (core) network analysis and computes connectivity measures for a set of habitat patches based on graph-theory (usig the igraph-package in R).&amp;lt;BR&amp;gt;See also [[#r.connectivity.distance]] and  [[#r.connectivity.corridors]]&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Stefan Blumentrath, [http://www.nina.no NINA]&lt;br /&gt;
&lt;br /&gt;
Available via SVN or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/raster/r.connectivity.network/&lt;br /&gt;
&lt;br /&gt;
==== r.connectivity.corridors ====&lt;br /&gt;
&lt;br /&gt;
: [http://svn.osgeo.org/grass/grass-addons/grass6/raster/r.connectivity.corridors r.connectivity.corridors] is a shell script, which is - as a part of the r.connectivity.* tool-chain - intended to make connectivity analysis based on graph-theory more easily available to conservation planning. r.connectivity.corridors computes corridors between habitat patches for edges from r.connectivity.network based on (cost) distance raster maps from r.connectivity.distance and assigns user defined weight to the corridors.&amp;lt;BR&amp;gt;See also [[#r.connectivity.distance]] and  [[#r.connectivity.network]]&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Stefan Blumentrath, [http://www.nina.no NINA]&lt;br /&gt;
&lt;br /&gt;
Available via SVN or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/raster/r.connectivity.corridors/&lt;br /&gt;
&lt;br /&gt;
==== r.convergence ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/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/grass6/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;
: [https://svn.osgeo.org/grass/grass-addons/grass6/raster/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;
Available via SVN or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
  svn co https://svn.osgeo.org/grass/grass-addons/grass6/raster/r.cva/&lt;br /&gt;
&lt;br /&gt;
==== r.denoise ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/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://trac.osgeo.org/grass/browser/grass-addons/grass6/raster/r.denoise/description.html manual pages] for details.  Further information on Sun's denoising algorithm, including an example, is available [http://personalpages.manchester.ac.uk/staff/neil.mitchell/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/grass6/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.diversity ====&lt;br /&gt;
: [http://svn.osgeo.org/grass/grass-addons/grass6/raster/r.diversity/ r.diversity] calculates selected diversity indices by calling various r.li commands.This script uses the [http://grass.osgeo.org/grass64/manuals/html64_user/r.li.pielou.html Pielou], [http://grass.osgeo.org/grass64/manuals/html64_user/r.li.renyi.html Renyi], [http://grass.osgeo.org/grass64/manuals/html64_user/r.li.shannon.html Shannon] and [http://grass.osgeo.org/grass64/manuals/html64_user/r.li.simpson.html Simpson] indices. The output is a map for each index. &lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Luca Delucchi, Duccio Rocchini&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.forestfrag ====&lt;br /&gt;
&lt;br /&gt;
: [http://dl.dropbox.com/u/10445979/r.forestfrag.sh r.forestfrag.sh] creates forest fragmentation index from a GRASS raster map (where forest=1, non-forest=0) based on a method developed by Riitters et. al (2000). So far only running/tested on GRASS 6.4 and only with 3x3 moving window (shell-script has to be adjusted for other window-sizes)&lt;br /&gt;
: '''Author:''' Maning Sambale, Stefan Sylla&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/grass6/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/grass6/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/grass6/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/grass6/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/grass6/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.hazard.flood ====&lt;br /&gt;
&lt;br /&gt;
: [http://svn.osgeo.org/grass/grass-addons/grass6/raster/r.hazard.flood/ r.hazard.flood] 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;
Available via SVN or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/raster/r.hazard.flood/&lt;br /&gt;
&lt;br /&gt;
==== r.hydrdem ====&lt;br /&gt;
&lt;br /&gt;
'''r.hydrodem''' 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 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;
Available via SVN or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass7/raster/r.hydrodem/&lt;br /&gt;
&lt;br /&gt;
==== r.in.ign ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/raster/r.in.ign/ r.in.ign] imports raster data from [http://api.ign.fr IGN WMS-C stream service]. Yet an uncompleted version, briefly documented [http://grass.osgeo.org/wiki/IGN_wms-c_stream here].&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Vincent Bain&lt;br /&gt;
&lt;br /&gt;
Available via SVN or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/raster/r.in.ign/&lt;br /&gt;
&lt;br /&gt;
==== r.in.mb ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.tekmap.ns.ca/blog/multibeam_import 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. Options for restricting data according to line length, speed, acrosstrack width, beam number and survey mode (Simrad only). The default is to import bathymetry data, but optionally amplitude or sidescan sonar data can be loaded instead. GRASS 7 version is also available.&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://trac.osgeo.org/grass/browser/grass-addons/grass6/raster/r.in.onearth r.in.onearth] &amp;lt;!-- old version: [http://www-pool.math.tu-berlin.de/~soeren/grass/modules/ r.in.onearth] --&amp;gt; for download and import satellite images direct from the NASA OnEarth WMS server into GRASS.&lt;br /&gt;
&lt;br /&gt;
: '''Authors:''' Soeren Gebbert, Markus Neteler, Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== r.in.srtm.region ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass7/raster/r.in.srtm.region r.in.srtm.region] 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.swisstopo ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/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 or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/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.in.xyz.auto ====&lt;br /&gt;
&lt;br /&gt;
: [https://trac.osgeo.org/grass/browser/grass-addons/grass6/raster/r.in.xyz.auto r.in.xyz.auto] runs the {{Cmd|r.in.xyz}} module, automatically setting up the region extent for you. ''For useful output it is strongly recommended to manually set the region resolution and bounds yourself instead of using this script.''&lt;br /&gt;
&lt;br /&gt;
: '''Author:'''  Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== r3.in.xyz ====&lt;br /&gt;
&lt;br /&gt;
: [https://trac.osgeo.org/grass/browser/grass-addons/grass6/raster3d/r3.in.xyz r3.in.xyz] creates a 3D raster map from an assemblage of many coordinates using univariate statistics. It is the 3D version of {{Cmd|r.in.xyz}}.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== r.inund.fluv ====&lt;br /&gt;
&lt;br /&gt;
: [https://svn.osgeo.org/grass/grass-addons/grass6/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/grass6/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.ipso ====&lt;br /&gt;
&lt;br /&gt;
: [http://svn.osgeo.org/grass/grass-addons/grass6/raster/r.ipso/ r.ipso] Produces the ipsometric and ipsographic curve related to a digital elevation model and prints the percentiles&lt;br /&gt;
&lt;br /&gt;
: '''Authors:''' Margherita Di Leo, Massimo Di Stefano, Francesco Di Stefano&lt;br /&gt;
&lt;br /&gt;
Available via SVN or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/raster/r.ipso/&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;
==== r.maxent.lambdas ====&lt;br /&gt;
&lt;br /&gt;
: [http://svn.osgeo.org/grass/grass-addons/grass6/raster/r.maxent.lambdas r.maxent.lambdas] is a shell script to compute raw and/or logistic prediction maps from a lambdas file produced with MaxEnt 3.3.3e.&amp;lt;BR&amp;gt;See also [[#r.out.maxent_swd]]&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Stefan Blumentrath, [http://www.nina.no NINA]&lt;br /&gt;
&lt;br /&gt;
Available via SVN or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/raster/r.maxent.lambdas/&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 or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/raster/mcda/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== r.modis ====&lt;br /&gt;
&lt;br /&gt;
: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;
Available via SVN or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass7/raster/r.modis/&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.colorbar ====&lt;br /&gt;
&lt;br /&gt;
: [http://tekmap.ns.ca/blog/colorbar_out r.out.colorbar] is an export program for saving GRASS raster colorbars to an image. The program uses GTK+ and cairographics. Supported export formats are PNG, PDF, and EPS. &lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Bob Covill&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.geoserver ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.wgug.org/index.php?option=com_content&amp;amp;view=article&amp;amp;id=56&amp;amp;Itemid=9 r.out.geoserver] exports GRASS raster layer to [http://geoserver.org GeoServer] and publishes it using WMS. The modul is a shell script. It uses: r.out.gdal, curl, xmlstarlet and GeoServer REST interface.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Pawel Netzel&lt;br /&gt;
&lt;br /&gt;
==== r.out.gmap ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/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/grass6/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/grass6/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.kap_template ====&lt;br /&gt;
&lt;br /&gt;
: [https://trac.osgeo.org/grass/browser/grass-addons/grass6/raster/r.out.kap_template r.out.kap_template] is a shell script that exports a raster map into a GeoTiff and a metadata text file suitable for use with KAP (BSB) raster nautical chart converter programs such as &amp;lt;tt&amp;gt;tif2bsb&amp;lt;/tt&amp;gt; (after verifying that you are legally entitled to use such a tool).&lt;br /&gt;
: '''''This is EXPERIMENTAL software. NOT FOR NAVIGATIONAL USE.'''''&lt;br /&gt;
: For an easy to use data viewer, see also the [http://www.opencpn.org OpenCPN] free navigational software.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== r.out.kml ====&lt;br /&gt;
&lt;br /&gt;
: [https://trac.osgeo.org/grass/browser/grass-addons/grass6/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.out.maxent_swd ====&lt;br /&gt;
&lt;br /&gt;
: [http://svn.osgeo.org/grass/grass-addons/grass6/raster/r.out.maxent_swd r.out.maxent_swd] is a shell script to produce a set of SWD files as input to MaxEnt 3.3.3e using r.stats.&amp;lt;BR&amp;gt;See also [[#r.maxent.lambdas]]&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Stefan Blumentrath, [http://www.nina.no NINA]&lt;br /&gt;
&lt;br /&gt;
Available via SVN or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/raster/r.out.maxent_swd/&lt;br /&gt;
&lt;br /&gt;
==== r.pack ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/raster/r.pack r.pack] and [http://trac.osgeo.org/grass/browser/grass-addons/grass6/raster/r.unpack r.unpack] are two GRASS scripts for transferring raster maps to another computer as a single compressed file including color table etc.&lt;br /&gt;
: An earlier version has been renamed as [http://trac.osgeo.org/grass/browser/grass-addons/grass6/raster/r.pack/experiment r.pack.mat] and [http://trac.osgeo.org/grass/browser/grass-addons/grass6/raster/r.unpack/experiment r.unpack.mat].&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== r.pi ====&lt;br /&gt;
&lt;br /&gt;
: [https://svn.osgeo.org/grass/grass-addons/grass6/raster/r.pi/ r.pi] (raster patch index) provides various functions to analyse spatial attributes of a landscape. It has a focus on patch-based indices but delivers class-based indices as well. r.le and its successor r.li provide landscape indices.&lt;br /&gt;
&lt;br /&gt;
: '''Authors:''' Programming: Elshad Shirinov, Scientific concept: Dr. Martin Wegmann&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 or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/raster/r.prominence/&lt;br /&gt;
&lt;br /&gt;
==== r.refine ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.bowdoin.edu/~ltoma/research.html r.refine]: reduces a DEM to a TIN (takes as input a grid DEM and an error margin and simplifies it to the desired accuracy into a TIN)&lt;br /&gt;
Available via the source code repository [https://github.com/jonrtodd/r.refine]&lt;br /&gt;
: '''Authors:''' Laura Toma and Jonathan Todd&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/grass6/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/grass6/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/grass6/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/grass6/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 or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/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 or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/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 with improvements via SVN:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/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 or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/raster/r.soils.texture/&lt;br /&gt;
&lt;br /&gt;
====r.split.line====&lt;br /&gt;
&lt;br /&gt;
: [https://raw.github.com/amuriy/GRASS-scripts/master/r.split.line r.split.line] is a shell script to split raster into parts with vector line(s).&lt;br /&gt;
&lt;br /&gt;
:'''Author:''' Alexander Muriy&lt;br /&gt;
&lt;br /&gt;
==== r.stack ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/raster/r.stack r.stack] is a shell script used to patch all the raster maps in a time series (or burst 3D raster) together into a vertical stack, to aid multi-map analyses in modules where group input is not yet available.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== r.stream.angle ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/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 network 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 or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/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/grass6/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 or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/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/grass6/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 or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/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/grass6/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 or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/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/grass6/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 or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/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/grass6/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 or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/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/grass6/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 or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/raster/r.stream.pos&lt;br /&gt;
&lt;br /&gt;
==== r.stream.preview ====&lt;br /&gt;
&lt;br /&gt;
: In order to find a value of upslope area to be used as input to extract the river network using r.stream.extract or r.watershed, it is common to proceed by tentatives. [http://trac.osgeo.org/grass/browser/grass-addons/grass6/raster/r.stream.preview r.stream.preview] is useful for quickly display results for various tentatives of threshold values.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Margherita Di Leo&lt;br /&gt;
&lt;br /&gt;
Available via SVN or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/raster/r.stream.preview/&lt;br /&gt;
&lt;br /&gt;
==== r.stream.stats ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/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 or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/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/grass6/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 or {{cmd|g.extension}}:&lt;br /&gt;
  svn co https://svn.osgeo.org/grass/grass-addons/grass6/raster/r.terracost&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== r.threshold ====&lt;br /&gt;
&lt;br /&gt;
[http://svn.osgeo.org/grass/grass-addons/grass6/raster/r.threshold/ r.threshold] Finds a first tentative value of upslope area to be used as input to extract the river network using r.stream.extract or r.watershed.&lt;br /&gt;
&lt;br /&gt;
Available via SVN or {{cmd|g.extension}}:&lt;br /&gt;
  svn co https://svn.osgeo.org/grass/grass-addons/grass6/raster/r.threshold&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.to.vect.lines ====&lt;br /&gt;
&lt;br /&gt;
: [https://trac.osgeo.org/grass/browser/grass-addons/grass6/raster/r.to.vect.lines r.to.vect.lines] is a module to sample raster rows at regular intervals and turn them into 3D lines. e.g. to display in [[NVIZ]] as a wiggle plot.&lt;br /&gt;
: It demonstrates the use of [[Python_Ctypes_Examples|ctypes]] to access the GRASS C libraries from within a Python script. (treat as a work in progress)&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&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;
Note: This addon is only needed for GRASS 6.3, its functionality has been added to r.univar in 6.4+ and 7.&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/raster/r.univar.zonal r.univar.zonal] is similar to {{cmd|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 or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/raster/r.univar.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 or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/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.wf ====&lt;br /&gt;
&lt;br /&gt;
: [http://svn.osgeo.org/grass/grass-addons/grass6/raster/r.wf/ r.wf] produces the Width Function of a basin. The Width Function W(x) gives the number of the cells in a basin at a flow distance x from the outlet (it is also referred as distance-area function). The distance is not the euclidean one, but it is measured along the flowpath towards the outlet.&lt;br /&gt;
&lt;br /&gt;
: '''Authors:''' Margherita Di Leo, Massimo Di Stefano, Francesco Di Stefano&lt;br /&gt;
&lt;br /&gt;
Available via SVN or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass6/raster/r.wf/&lt;br /&gt;
&lt;br /&gt;
==== r.xtent ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/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/grass6/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/grass6/imagery/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/grass6/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 or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
   svn co https://svn.osgeo.org/grass/grass-addons/grass6/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;
==== Compare GRASS maps ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass7/general/g.compare.md5 g.compare.md5] Script to check if two GRASS maps are identical&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Luca Delucchi&lt;br /&gt;
&lt;br /&gt;
==== GRASS create location scripts ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/general/grass_create_location grass_create_location.sh] Script to generate a new GRASS location from GIS file (e.g. geoTIFF or SHAPE), wktfile or EPSG code.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Markus Neteler&lt;br /&gt;
&lt;br /&gt;
==== g.laptop.sh ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.gbd-consult.de/dassau/grass/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;
==== 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/grass6/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/grass6/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/grass6/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/grass6/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;
==== g.region.ll ====&lt;br /&gt;
&lt;br /&gt;
: [https://bitbucket.org/afrigeri/grass-addons g.region.ll] sets the region in a projected location using longitudes and latitudes.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Alessandro Frigeri&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/grass6/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.despeckle ====&lt;br /&gt;
&lt;br /&gt;
Applies SAR Speckle Filter to a raster power map.  Currently LEE, KUAN, Enhanced Lee and GAMMA filter are implemented.&lt;br /&gt;
&lt;br /&gt;
   g.extension i.despeckle&lt;br /&gt;
&lt;br /&gt;
==== i.histo.match ====&lt;br /&gt;
&lt;br /&gt;
Performs histogram matching on the given input images.&lt;br /&gt;
&lt;br /&gt;
svn co https://svn.osgeo.org/grass/grass-addons/grass7/imagery/i.histo.match&lt;br /&gt;
&lt;br /&gt;
: '''Authors:''' Laura Zampa (PERL version), rewritten and updated by Luca Delucchi, Italy&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/grass6/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/grass6/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.dehaze ====&lt;br /&gt;
&lt;br /&gt;
Bandwise haze correction using tasscap4 (haze) and linear regression of a Landsat scene.&lt;br /&gt;
&lt;br /&gt;
svn co https://svn.osgeo.org/grass/grass-addons/grass6/imagery/i.landsat.dehaze&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Markus Neteler&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;
Available also in GRASS 7 and GRASS 6.5.&lt;br /&gt;
&lt;br /&gt;
svn co https://svn.osgeo.org/grass/grass-addons/grass6/imagery/i.landsat.toar&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' E. Jorge Tizado&lt;br /&gt;
&lt;br /&gt;
==== i.landsat.acca ====&lt;br /&gt;
&lt;br /&gt;
Implements the Automated Cloud-Cover Assessment (ACCA) Algorithm from Irish (2000) with the constant values for pass filter one from Irish et al. (2006). To do this, it needs Landsat band numbers 2, 3, 4, 5, and 6 (or band 61 for Landsat-7 ETM+) which have already been processed from DN into reflectance and band-6 temperature with i.landsat.toar). &lt;br /&gt;
&lt;br /&gt;
Available also in GRASS 7.&lt;br /&gt;
&lt;br /&gt;
svn co https://svn.osgeo.org/grass/grass-addons/grass6/imagery/i.landsat.acca&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/grass6/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/grass6/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 or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
   svn co https://svn.osgeo.org/grass/grass-addons/grass6/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 or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
   svn co https://svn.osgeo.org/grass/grass-addons/grass6/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 or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
   svn co https://svn.osgeo.org/grass/grass-addons/grass6/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;
  --&amp;gt; the module has been included in main GRASS (GRASS 6.4 and later)&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/grass6/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 http://svn.osgeo.org/grass/grass-addons/grass6/display&lt;br /&gt;
&lt;br /&gt;
==== d.barb ====&lt;br /&gt;
&lt;br /&gt;
[http://trac.osgeo.org/grass/browser/grass-addons/grass6/display/d.barb d.barb] is a C module that will draw wind barbs, straw plots, and arrow plots from raster array or sparse vector point data. It can use either direction + magnitude, or u + v components as the input, and can produce a legend key. (''work in progress, but it's mostly there'')&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== d.edit.rast ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/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/grass6/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.frontline ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/grass6/display/d.frontline d.frontline] is a shell script that draws frontlines on the graphics monitor using ''d.graph'' module and different types of symbols. Also it optionally saves frontline graphics to ''d.graph'' commands file and/or ''ps.map'' file (for later use with the &amp;quot;read&amp;quot; ''ps.map'' instruction)   &lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Alexander Muriy&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/grass6/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/grass6/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/grass6/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/grass6/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;
==== d.zoom.keys ====&lt;br /&gt;
&lt;br /&gt;
[https://raw.github.com/amuriy/GRASS-scripts/master/d.zoom.keys d.zoom.keys] is a shell (+awk) script that allows to change the current geographic region settings interactively, with a keyboard. Can use navigation in X-monitor (requires &amp;lt;xev&amp;gt; and &amp;lt;xdotool&amp;gt;) or terminal.&lt;br /&gt;
&lt;br /&gt;
NOTE: tested normally only on Linux (Ubuntu 10.04), on other systems &amp;lt;awk&amp;gt; and other tools may behave differently. &lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Alexander Muriy&lt;br /&gt;
&lt;br /&gt;
Also available via SVN or {{cmd|g.extension}}:&lt;br /&gt;
&lt;br /&gt;
https://svn.osgeo.org/grass/grass-addons/grass6/display/d.zoom.keys/&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;
&lt;br /&gt;
==== p.in.labels ====&lt;br /&gt;
&lt;br /&gt;
: [http://tekmap.ns.ca/blog/import_label p.in.labels] is a program to import ASCII xyz (where z is a label) files as GRASS labels. Reads from stdin or existing file. &lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Bob Covill&lt;br /&gt;
&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/grass6/postscript/ps.output ps.output] is much like {{cmd|ps.map}} but with advanced decorations and ability for translucency. Here you can find a [[Ps.output|tutorial]].&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;
=== wxGUI add-ons ===&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 7.x (in development)==&lt;br /&gt;
&lt;br /&gt;
* See [[AddOns/GRASS7]]&lt;br /&gt;
&lt;br /&gt;
==GRASS 5.x (old)==&lt;br /&gt;
&lt;br /&gt;
See also&lt;br /&gt;
 http://grass.osgeo.org/outgoing/&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/grass5/&lt;br /&gt;
&lt;br /&gt;
=== Sites addons ===&lt;br /&gt;
&lt;br /&gt;
* [http://www.tigers.ru/grass_docs/progs/DESCRIPTION.html Parallelized s.surf.idw] using MPI. ([http://babelfish.yahoo.com/translate_url?doit=done&amp;amp;tt=url&amp;amp;intl=1&amp;amp;fr=bf-home&amp;amp;trurl=http%3A%2F%2Fwww.tigers.ru%2Fgrass_docs%2Fprogs%2FDESCRIPTION.html&amp;amp;lp=ru_en&amp;amp;btnTrUrl=Translate babelfish translation])&lt;br /&gt;
: '''Author''': Alexei Popov, Russia.&lt;br /&gt;
&lt;br /&gt;
=== Raster addons ===&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 or {{cmd|g.extension}}:&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>⚠️Sbl</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=AddOns&amp;diff=13943</id>
		<title>AddOns</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=AddOns&amp;diff=13943"/>
		<updated>2011-08-17T13:10:38Z</updated>

		<summary type="html">&lt;p&gt;⚠️Sbl: script r.out.maxent_swd added&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.4 and newer you can use the {{cmd|g.extension}} 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;
&lt;br /&gt;
* [http://www.wgug.org/index.php?option=com_content&amp;amp;view=article&amp;amp;id=56&amp;amp;Itemid=9 ann.*] is the set of GRASS modules (in python) which implements artificial neural network using FANN library. The package requires Fast Artificial Neural Network Library ([http://leenissen.dk/fann/wp/ FANN]) v2.x. &amp;lt;BR&amp;gt;'''Author:''' Pawel Netzel &lt;br /&gt;
&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://web.archive.org/web/20060914172621/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;
: ''Note'': also module ''v.patch'' can be used for this task. &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.redwg ====&lt;br /&gt;
&lt;br /&gt;
: v.in.redwg imports DWG files into GRASS.&lt;br /&gt;
&lt;br /&gt;
:'''Author:''' Rodrigo Rodrigues da Silva&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/vector/v.in.redwg&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.geodesic ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/vector/v.in.geodesic v.in.geodesic] is a shell script which will create a new vector map containing a great circle line. The user may either define a beginning and end coordinate, or define a starting coordinate along with initial azimuth and desired line length.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&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/pwessel/gshhs/index.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.marxan ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/vector/v.in.marxan v.in.marxan] is a python script that imports Marxan output data for display in a vector grid file prepared using v.out.marxan. &lt;br /&gt;
: ''see also the [http://www.uq.edu.au/marxan/ Marxan] &lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Trevor Wiens&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. See also the [[#v.in.p190]] addon.&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.in.p190 ====&lt;br /&gt;
&lt;br /&gt;
: [https://trac.osgeo.org/grass/browser/grass-addons/vector/v.in.p190 v.in.p190] is a shell script that imports 'Centre of Source' &amp;quot;S&amp;quot; navigation data from seismic P1/90 (UKOOA) data files and writes it either GRASS vector points or vector lines format. Optionally it will export the navigation data into .csv text files as well. ''Currently in the functional prototype stage, some assembly is required. See inside the shell script for details.'' For working with SEG-Y data, see also the [[#v.in.mbsys_fnv]] addon.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&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;
==== Spatial Analysis Tools ====&lt;br /&gt;
&lt;br /&gt;
     ===== v.lda.py =====&lt;br /&gt;
&lt;br /&gt;
: [http://www.public.asu.edu/~cmbarton/files/grass_scripts/v.lda.py v.lda.py] is a Python script for calculating Ian Johnson's (U. Sidney) Local Density Analysis values. This can be used in two ways. When only one vector points file is entered, it serves to measure clustering of point data at different neighborhood radii. When two different point files are entered, it measures the the co-occurence of the points from the two files. There is an option to export the data into a cvs format file for easy plotting in a spreadsheet or statistical program like R.&lt;br /&gt;
&lt;br /&gt;
     ===== v.nn.py =====&lt;br /&gt;
: [http://www.public.asu.edu/~cmbarton/files/grass_scripts/v.nn.py v.nn.py] is a Python script for calculating the nearest neighbor coefficient of a single vector points file--as an index of clustering--or of two points files--to provide an index of the correspondence between the points in one file and points in a different file.&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://web.archive.org/web/20060827192321/http://ngeo.de/grassstuff/v.lmeasure v.lmeasure] and [http://web.archive.org/web/20060827060303/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.mkhexgrid ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/vector/v.mkhexgrid v.mkhexgrid] is a python script that creates a hexagonal grid the size of the selected region using user specified side lengths. &lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Trevor Wiens&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.marxan ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/vector/v.out.marxan v.out.marxan] is a python script that prepares vector layers and exports GRASS vector attributes and adjacency information as Marxan input files. Output from Marxan simulations can be imported using v.in.marxan. &lt;br /&gt;
: ''see also the [http://www.uq.edu.au/marxan/ Marxan] &lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Trevor Wiens&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.univar.zonal r.univar.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 [Currently unavailable. Being re-written in python. Target for inclusion in addons svn is January 2011]====&lt;br /&gt;
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;
==== 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;
==== v.vect.stats ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/vector/v.vect.stats v.vect.stats] counts the number of points falling into each polygon and optionally calculates statistics from numeric point attributes for each polygon. v.vect.stats is a C module and works with GRASS 6.4 and higher (see enclosed patches for 6.5 and 7.0).&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Markus Metz&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;
==== Raplat ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GRASS-RaPlaT: The Radio Planning Tool for GRASS GIS system developed by support of Slovenian largest mobile operator Mobitel. It is especially designed for radio coverage calculation of GSM/UMTS systems, but can be applied also to other wireless systems in the frequency range 400 MHz – 2.4 GHz (e.g. TETRA, WiFi). Its structure is modular and characterized by high level of flexibility and adaptability. &lt;br /&gt;
&lt;br /&gt;
 * Documentation: http://commsys.ijs.si/en/component/content/article/54-software/149-user-manual&lt;br /&gt;
 * Software: http://commsys.ijs.si/en/software/grass-raplat&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Department of Communication Systems, Jozef Stefan Institue, Jamova 39, SI-1000 Ljubljana, Slovenia&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.basin ====&lt;br /&gt;
&lt;br /&gt;
: [http://svn.osgeo.org/grass/grass-addons/raster/r.basin/ r.basin] 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;
Available via SVN:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/raster/r.basin/&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.clump2 ====&lt;br /&gt;
&lt;br /&gt;
: [https://trac.osgeo.org/grass/browser/grass-addons/raster/r.clump2 r.clump2] is a C module similar to r.clump. Differences are: diagonally adjacent cells are also clumped but can be excluded, NULL (nodata) cells are always excluded, and selective clumping with start coordinates is supported.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Markus Metz&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/raster/r.clump2&lt;br /&gt;
&lt;br /&gt;
==== r.colors.out_vtk ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.colors.out_vtk r.colors.out_vtk] is a shell script used to export the color table associated with a raster map layer to a {{wikipedia|VTK}} XML file. (see also [[Help with 3D]])&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&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;
: [https://svn.osgeo.org/grass/grass-addons/raster/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.diversity ====&lt;br /&gt;
: [http://svn.osgeo.org/grass/grass-addons/raster/r.diversity/ r.diversity] calculates selected diversity indices by calling various r.li commands.This script uses the [http://grass.osgeo.org/grass64/manuals/html64_user/r.li.pielou.html Pielou], [http://grass.osgeo.org/grass64/manuals/html64_user/r.li.renyi.html Renyi], [http://grass.osgeo.org/grass64/manuals/html64_user/r.li.shannon.html Shannon] and [http://grass.osgeo.org/grass64/manuals/html64_user/r.li.simpson.html Simpson] indices. The output is a map for each index. &lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Luca Delucchi, Duccio Rocchini&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.hazard.flood ====&lt;br /&gt;
&lt;br /&gt;
: [http://svn.osgeo.org/grass/grass-addons/raster/r.hazard.flood/ r.hazard.flood] 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;
Available via SVN:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/raster/r.hazard.flood/&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.ipso ====&lt;br /&gt;
&lt;br /&gt;
: [http://svn.osgeo.org/grass/grass-addons/raster/r.ipso/ r.ipso] Produces the ipsometric and ipsographic curve related to a digital elevation model and prints the percentiles&lt;br /&gt;
&lt;br /&gt;
: '''Authors:''' Margherita Di Leo, Massimo Di Stefano, Francesco Di Stefano&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.ipso/&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;
==== r.maxent.lambdas ====&lt;br /&gt;
&lt;br /&gt;
: [http://svn.osgeo.org/grass/grass-addons/raster/r.maxent.lambdas r.maxent.lambdas] is a shell script to compute raw and/or logistic prediction maps from a lambdas file produced with MaxEnt 3.3.3e.&amp;lt;BR&amp;gt;See also [[#r.out.maxent_swd]]&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Stefan Blumentrath, [http://www.nina.no NINA]&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.maxent.lambdas/&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.geoserver ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.wgug.org/index.php?option=com_content&amp;amp;view=article&amp;amp;id=56&amp;amp;Itemid=9 r.out.geoserver] exports GRASS raster layer to [http://geoserver.org GeoServer] and publishes it using WMS. The modul is a shell script. It uses: r.out.gdal, curl, xmlstarlet and GeoServer REST interface.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Pawel Netzel&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.kap_template ====&lt;br /&gt;
&lt;br /&gt;
: [https://trac.osgeo.org/grass/browser/grass-addons/raster/r.out.kap_template r.out.kap_template] is a shell script that exports a raster map into a GeoTiff and a metadata text file suitable for use with KAP (BSB) raster nautical chart converter programs such as &amp;lt;tt&amp;gt;tif2bsb&amp;lt;/tt&amp;gt; (after verifying that you are legally entitled to use such a tool).&lt;br /&gt;
: '''''This is EXPERIMENTAL software. NOT FOR NAVIGATIONAL USE.'''''&lt;br /&gt;
: For an easy to use data viewer, see also the [http://www.opencpn.org OpenCPN] free navigational software.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&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.out.maxent_swd ====&lt;br /&gt;
&lt;br /&gt;
: [http://svn.osgeo.org/grass/grass-addons/raster/r.out.maxent_swd r.out.maxent_swd] is a shell script to produce a set of SWD files as input to MaxEnt 3.3.3e using r.stats.&amp;lt;BR&amp;gt;See also [[#r.maxent.lambdas]]&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Stefan Blumentrath, [http://www.nina.no NINA]&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.out.maxent_swd/&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 [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.unpack r.unpack] are two GRASS scripts for transferring raster maps to another computer as a single compressed file including color table etc.&lt;br /&gt;
: An earlier version has been renamed as [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.pack/experiment r.pack.mat] and [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.unpack/experiment r.unpack.mat].&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== r.pi ====&lt;br /&gt;
&lt;br /&gt;
: [https://svn.osgeo.org/grass/grass-addons/raster/r.pi/ r.pi] (raster patch index) provides various functions to analyse spatial attributes of a landscape. It has a focus on patch-based indices but delivers class-based indices as well. r.le and its successor r.li provide landscape indices.&lt;br /&gt;
&lt;br /&gt;
: '''Authors:''' Programming: Elshad Shirinov, Scientific concept: Dr. Martin Wegmann&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.refine ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.bowdoin.edu/~ltoma/research.html r.refine]: reduces a DEM to a TIN (takes as input a grid DEM and an error margin and simplifies it to the desired accuracy into a TIN)&lt;br /&gt;
Available via the source code repository [https://github.com/jonrtodd/r.refine]&lt;br /&gt;
: '''Authors:''' Laura Toma and Jonathan Todd&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 with improvements 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.stack ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.stack r.stack] is a shell script used to patch all the raster maps in a time series (or burst 3D raster) together into a vertical stack, to aid mutli-map analyses in modules where group input is not yet available.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&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 network 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.univar.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. This addon is only needed for GRASS 6.4, its functionality has been added to r.univar in 6.5 and 7.&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.univar.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.wf ====&lt;br /&gt;
&lt;br /&gt;
: [http://svn.osgeo.org/grass/grass-addons/raster/r.wf/ r.wf] produces the Width Function of a basin. The Width Function W(x) gives the number of the cells in a basin at a flow distance x from the outlet (it is also referred as distance-area function). The distance is not the euclidean one, but it is measured along the flowpath towards the outlet.&lt;br /&gt;
&lt;br /&gt;
: '''Authors:''' Margherita Di Leo, Massimo Di Stefano, Francesco Di Stefano&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.wf/&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/imagery/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;
==== GRASS create location scripts ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/general/grass_create_location grass_create_location.sh] Script to generate a new GRASS location from GIS file (e.g. geoTIFF or SHAPE), wktfile or EPSG code.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Markus Neteler&lt;br /&gt;
&lt;br /&gt;
==== g.laptop.sh ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.gbd-consult.de/dassau/grass/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;
==== 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;
Available also in GRASS 7.&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.landsat.acca ====&lt;br /&gt;
&lt;br /&gt;
Implements the Automated Cloud-Cover Assessment (ACCA) Algorithm from Irish (2000) with the constant values for pass filter one from Irish et al. (2006). To do this, it needs Landsat band numbers 2, 3, 4, 5, and 6 (or band 61 for Landsat-7 ETM+) which have already been processed from DN into reflectance and band-6 temperature with i.landsat.toar). &lt;br /&gt;
&lt;br /&gt;
Available also in GRASS 7.&lt;br /&gt;
&lt;br /&gt;
svn co https://svn.osgeo.org/grass/grass-addons/imagery/i.landsat.acca&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;
&lt;br /&gt;
==== d.barb ====&lt;br /&gt;
&lt;br /&gt;
[http://trac.osgeo.org/grass/browser/grass-addons/display/d.barb d.barb] is a C module that will draw wind barbs, straw plots, and arrow plots from raster array or sparse vector point data. It can use either direction + magnitude, or u + v components as the input, and can produce a legend key. (''work in progress, but it's mostly there'')&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&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.frontline ====&lt;br /&gt;
&lt;br /&gt;
: [http://cloud.github.com/downloads/amuriy/GRASS-scripts/d.frontline d.frontline] is a shell script that draws frontlines on the graphics monitor using ''d.graph'' module and different types of symbols. Also it optionally saves frontline graphics to ''d.graph'' commands file and/or ''ps.map'' file (for later use with the &amp;quot;read&amp;quot; ''ps.map'' instruction)   &lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Alexander Muriy&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. Here you can find a [[Ps.output|tutorial]].&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;
=== wxGUI add-ons ===&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>⚠️Sbl</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=AddOns&amp;diff=13942</id>
		<title>AddOns</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=AddOns&amp;diff=13942"/>
		<updated>2011-08-17T13:05:58Z</updated>

		<summary type="html">&lt;p&gt;⚠️Sbl: added script r.maxent.lambdas&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.4 and newer you can use the {{cmd|g.extension}} 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;
&lt;br /&gt;
* [http://www.wgug.org/index.php?option=com_content&amp;amp;view=article&amp;amp;id=56&amp;amp;Itemid=9 ann.*] is the set of GRASS modules (in python) which implements artificial neural network using FANN library. The package requires Fast Artificial Neural Network Library ([http://leenissen.dk/fann/wp/ FANN]) v2.x. &amp;lt;BR&amp;gt;'''Author:''' Pawel Netzel &lt;br /&gt;
&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://web.archive.org/web/20060914172621/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;
: ''Note'': also module ''v.patch'' can be used for this task. &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.redwg ====&lt;br /&gt;
&lt;br /&gt;
: v.in.redwg imports DWG files into GRASS.&lt;br /&gt;
&lt;br /&gt;
:'''Author:''' Rodrigo Rodrigues da Silva&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/vector/v.in.redwg&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.geodesic ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/vector/v.in.geodesic v.in.geodesic] is a shell script which will create a new vector map containing a great circle line. The user may either define a beginning and end coordinate, or define a starting coordinate along with initial azimuth and desired line length.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&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/pwessel/gshhs/index.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.marxan ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/vector/v.in.marxan v.in.marxan] is a python script that imports Marxan output data for display in a vector grid file prepared using v.out.marxan. &lt;br /&gt;
: ''see also the [http://www.uq.edu.au/marxan/ Marxan] &lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Trevor Wiens&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. See also the [[#v.in.p190]] addon.&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.in.p190 ====&lt;br /&gt;
&lt;br /&gt;
: [https://trac.osgeo.org/grass/browser/grass-addons/vector/v.in.p190 v.in.p190] is a shell script that imports 'Centre of Source' &amp;quot;S&amp;quot; navigation data from seismic P1/90 (UKOOA) data files and writes it either GRASS vector points or vector lines format. Optionally it will export the navigation data into .csv text files as well. ''Currently in the functional prototype stage, some assembly is required. See inside the shell script for details.'' For working with SEG-Y data, see also the [[#v.in.mbsys_fnv]] addon.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&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;
==== Spatial Analysis Tools ====&lt;br /&gt;
&lt;br /&gt;
     ===== v.lda.py =====&lt;br /&gt;
&lt;br /&gt;
: [http://www.public.asu.edu/~cmbarton/files/grass_scripts/v.lda.py v.lda.py] is a Python script for calculating Ian Johnson's (U. Sidney) Local Density Analysis values. This can be used in two ways. When only one vector points file is entered, it serves to measure clustering of point data at different neighborhood radii. When two different point files are entered, it measures the the co-occurence of the points from the two files. There is an option to export the data into a cvs format file for easy plotting in a spreadsheet or statistical program like R.&lt;br /&gt;
&lt;br /&gt;
     ===== v.nn.py =====&lt;br /&gt;
: [http://www.public.asu.edu/~cmbarton/files/grass_scripts/v.nn.py v.nn.py] is a Python script for calculating the nearest neighbor coefficient of a single vector points file--as an index of clustering--or of two points files--to provide an index of the correspondence between the points in one file and points in a different file.&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://web.archive.org/web/20060827192321/http://ngeo.de/grassstuff/v.lmeasure v.lmeasure] and [http://web.archive.org/web/20060827060303/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.mkhexgrid ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/vector/v.mkhexgrid v.mkhexgrid] is a python script that creates a hexagonal grid the size of the selected region using user specified side lengths. &lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Trevor Wiens&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.marxan ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/vector/v.out.marxan v.out.marxan] is a python script that prepares vector layers and exports GRASS vector attributes and adjacency information as Marxan input files. Output from Marxan simulations can be imported using v.in.marxan. &lt;br /&gt;
: ''see also the [http://www.uq.edu.au/marxan/ Marxan] &lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Trevor Wiens&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.univar.zonal r.univar.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 [Currently unavailable. Being re-written in python. Target for inclusion in addons svn is January 2011]====&lt;br /&gt;
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;
==== 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;
==== v.vect.stats ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/vector/v.vect.stats v.vect.stats] counts the number of points falling into each polygon and optionally calculates statistics from numeric point attributes for each polygon. v.vect.stats is a C module and works with GRASS 6.4 and higher (see enclosed patches for 6.5 and 7.0).&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Markus Metz&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;
==== Raplat ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
GRASS-RaPlaT: The Radio Planning Tool for GRASS GIS system developed by support of Slovenian largest mobile operator Mobitel. It is especially designed for radio coverage calculation of GSM/UMTS systems, but can be applied also to other wireless systems in the frequency range 400 MHz – 2.4 GHz (e.g. TETRA, WiFi). Its structure is modular and characterized by high level of flexibility and adaptability. &lt;br /&gt;
&lt;br /&gt;
 * Documentation: http://commsys.ijs.si/en/component/content/article/54-software/149-user-manual&lt;br /&gt;
 * Software: http://commsys.ijs.si/en/software/grass-raplat&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Department of Communication Systems, Jozef Stefan Institue, Jamova 39, SI-1000 Ljubljana, Slovenia&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.basin ====&lt;br /&gt;
&lt;br /&gt;
: [http://svn.osgeo.org/grass/grass-addons/raster/r.basin/ r.basin] 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;
Available via SVN:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/raster/r.basin/&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.clump2 ====&lt;br /&gt;
&lt;br /&gt;
: [https://trac.osgeo.org/grass/browser/grass-addons/raster/r.clump2 r.clump2] is a C module similar to r.clump. Differences are: diagonally adjacent cells are also clumped but can be excluded, NULL (nodata) cells are always excluded, and selective clumping with start coordinates is supported.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Markus Metz&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/raster/r.clump2&lt;br /&gt;
&lt;br /&gt;
==== r.colors.out_vtk ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.colors.out_vtk r.colors.out_vtk] is a shell script used to export the color table associated with a raster map layer to a {{wikipedia|VTK}} XML file. (see also [[Help with 3D]])&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&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;
: [https://svn.osgeo.org/grass/grass-addons/raster/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.diversity ====&lt;br /&gt;
: [http://svn.osgeo.org/grass/grass-addons/raster/r.diversity/ r.diversity] calculates selected diversity indices by calling various r.li commands.This script uses the [http://grass.osgeo.org/grass64/manuals/html64_user/r.li.pielou.html Pielou], [http://grass.osgeo.org/grass64/manuals/html64_user/r.li.renyi.html Renyi], [http://grass.osgeo.org/grass64/manuals/html64_user/r.li.shannon.html Shannon] and [http://grass.osgeo.org/grass64/manuals/html64_user/r.li.simpson.html Simpson] indices. The output is a map for each index. &lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Luca Delucchi, Duccio Rocchini&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.hazard.flood ====&lt;br /&gt;
&lt;br /&gt;
: [http://svn.osgeo.org/grass/grass-addons/raster/r.hazard.flood/ r.hazard.flood] 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;
Available via SVN:&lt;br /&gt;
&lt;br /&gt;
 svn co https://svn.osgeo.org/grass/grass-addons/raster/r.hazard.flood/&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.ipso ====&lt;br /&gt;
&lt;br /&gt;
: [http://svn.osgeo.org/grass/grass-addons/raster/r.ipso/ r.ipso] Produces the ipsometric and ipsographic curve related to a digital elevation model and prints the percentiles&lt;br /&gt;
&lt;br /&gt;
: '''Authors:''' Margherita Di Leo, Massimo Di Stefano, Francesco Di Stefano&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.ipso/&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;
==== r.maxent.lambdas ====&lt;br /&gt;
&lt;br /&gt;
: [http://svn.osgeo.org/grass/grass-addons/raster/r.maxent.lambdas r.maxent.lambdas] is a shell script to compute raw and/or logistic prediction maps from a lambdas file produced with MaxEnt 3.3.3e.)]&amp;lt;BR&amp;gt;See also [[#r.out.maxent_swd]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Stefan Blumentrath, [http://www.nina.no NINA]&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.maxent.lambdas/&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.geoserver ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.wgug.org/index.php?option=com_content&amp;amp;view=article&amp;amp;id=56&amp;amp;Itemid=9 r.out.geoserver] exports GRASS raster layer to [http://geoserver.org GeoServer] and publishes it using WMS. The modul is a shell script. It uses: r.out.gdal, curl, xmlstarlet and GeoServer REST interface.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Pawel Netzel&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.kap_template ====&lt;br /&gt;
&lt;br /&gt;
: [https://trac.osgeo.org/grass/browser/grass-addons/raster/r.out.kap_template r.out.kap_template] is a shell script that exports a raster map into a GeoTiff and a metadata text file suitable for use with KAP (BSB) raster nautical chart converter programs such as &amp;lt;tt&amp;gt;tif2bsb&amp;lt;/tt&amp;gt; (after verifying that you are legally entitled to use such a tool).&lt;br /&gt;
: '''''This is EXPERIMENTAL software. NOT FOR NAVIGATIONAL USE.'''''&lt;br /&gt;
: For an easy to use data viewer, see also the [http://www.opencpn.org OpenCPN] free navigational software.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&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 [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.unpack r.unpack] are two GRASS scripts for transferring raster maps to another computer as a single compressed file including color table etc.&lt;br /&gt;
: An earlier version has been renamed as [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.pack/experiment r.pack.mat] and [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.unpack/experiment r.unpack.mat].&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&lt;br /&gt;
&lt;br /&gt;
==== r.pi ====&lt;br /&gt;
&lt;br /&gt;
: [https://svn.osgeo.org/grass/grass-addons/raster/r.pi/ r.pi] (raster patch index) provides various functions to analyse spatial attributes of a landscape. It has a focus on patch-based indices but delivers class-based indices as well. r.le and its successor r.li provide landscape indices.&lt;br /&gt;
&lt;br /&gt;
: '''Authors:''' Programming: Elshad Shirinov, Scientific concept: Dr. Martin Wegmann&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.refine ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.bowdoin.edu/~ltoma/research.html r.refine]: reduces a DEM to a TIN (takes as input a grid DEM and an error margin and simplifies it to the desired accuracy into a TIN)&lt;br /&gt;
Available via the source code repository [https://github.com/jonrtodd/r.refine]&lt;br /&gt;
: '''Authors:''' Laura Toma and Jonathan Todd&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 with improvements 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.stack ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/raster/r.stack r.stack] is a shell script used to patch all the raster maps in a time series (or burst 3D raster) together into a vertical stack, to aid mutli-map analyses in modules where group input is not yet available.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&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 network 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.univar.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. This addon is only needed for GRASS 6.4, its functionality has been added to r.univar in 6.5 and 7.&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.univar.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.wf ====&lt;br /&gt;
&lt;br /&gt;
: [http://svn.osgeo.org/grass/grass-addons/raster/r.wf/ r.wf] produces the Width Function of a basin. The Width Function W(x) gives the number of the cells in a basin at a flow distance x from the outlet (it is also referred as distance-area function). The distance is not the euclidean one, but it is measured along the flowpath towards the outlet.&lt;br /&gt;
&lt;br /&gt;
: '''Authors:''' Margherita Di Leo, Massimo Di Stefano, Francesco Di Stefano&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.wf/&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/imagery/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;
==== GRASS create location scripts ====&lt;br /&gt;
&lt;br /&gt;
: [http://trac.osgeo.org/grass/browser/grass-addons/general/grass_create_location grass_create_location.sh] Script to generate a new GRASS location from GIS file (e.g. geoTIFF or SHAPE), wktfile or EPSG code.&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Markus Neteler&lt;br /&gt;
&lt;br /&gt;
==== g.laptop.sh ====&lt;br /&gt;
&lt;br /&gt;
: [http://www.gbd-consult.de/dassau/grass/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;
==== 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;
Available also in GRASS 7.&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.landsat.acca ====&lt;br /&gt;
&lt;br /&gt;
Implements the Automated Cloud-Cover Assessment (ACCA) Algorithm from Irish (2000) with the constant values for pass filter one from Irish et al. (2006). To do this, it needs Landsat band numbers 2, 3, 4, 5, and 6 (or band 61 for Landsat-7 ETM+) which have already been processed from DN into reflectance and band-6 temperature with i.landsat.toar). &lt;br /&gt;
&lt;br /&gt;
Available also in GRASS 7.&lt;br /&gt;
&lt;br /&gt;
svn co https://svn.osgeo.org/grass/grass-addons/imagery/i.landsat.acca&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;
&lt;br /&gt;
==== d.barb ====&lt;br /&gt;
&lt;br /&gt;
[http://trac.osgeo.org/grass/browser/grass-addons/display/d.barb d.barb] is a C module that will draw wind barbs, straw plots, and arrow plots from raster array or sparse vector point data. It can use either direction + magnitude, or u + v components as the input, and can produce a legend key. (''work in progress, but it's mostly there'')&lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Hamish Bowman&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.frontline ====&lt;br /&gt;
&lt;br /&gt;
: [http://cloud.github.com/downloads/amuriy/GRASS-scripts/d.frontline d.frontline] is a shell script that draws frontlines on the graphics monitor using ''d.graph'' module and different types of symbols. Also it optionally saves frontline graphics to ''d.graph'' commands file and/or ''ps.map'' file (for later use with the &amp;quot;read&amp;quot; ''ps.map'' instruction)   &lt;br /&gt;
&lt;br /&gt;
: '''Author:''' Alexander Muriy&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. Here you can find a [[Ps.output|tutorial]].&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;
=== wxGUI add-ons ===&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>⚠️Sbl</name></author>
	</entry>
</feed>