<?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%8FHuhabla</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%8FHuhabla"/>
	<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/wiki/Special:Contributions/%E2%9A%A0%EF%B8%8FHuhabla"/>
	<updated>2026-04-21T12:42:16Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_GIS_Community_Sprint_Berlin_2019&amp;diff=25804</id>
		<title>Talk:GRASS GIS Community Sprint Berlin 2019</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_GIS_Community_Sprint_Berlin_2019&amp;diff=25804"/>
		<updated>2019-05-24T06:25:58Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Sponsors &amp;amp; Supporters =&lt;br /&gt;
&lt;br /&gt;
The GRASS Community sprint was kindly sponsored by FOSSGIS e.V. and coorganized by DIW Berlin, which provided the venue.&lt;br /&gt;
 &lt;br /&gt;
= Participants and Reports =&lt;br /&gt;
&lt;br /&gt;
Summarizing '''press release''': TODO&lt;br /&gt;
&lt;br /&gt;
[[File:grassgis 2019 berlin sprint group photo.jpg|400px|center|GRASS GIS community sprinters at DIW Berlin, 2019]]&lt;br /&gt;
&lt;br /&gt;
== Peter Loewe ==&lt;br /&gt;
&lt;br /&gt;
[[File:Community-Sprint 2019 Zenodo high level view.jpg|thumb|right|Community-Sprint 2019 Zenodo high level view]]&lt;br /&gt;
&lt;br /&gt;
* Discussion about Zenodo / GitHub integration&lt;br /&gt;
* Set up of Wikipage about the [https://grasswiki.osgeo.org/wiki/GitHub-Zenodo_linkage Zenodo-GitHuB integration] with all known facts and necessary steps tp dp this.&lt;br /&gt;
* Investigating [https://grass.osgeo.org/grass7/manuals/addons/v.surf.mass.html v.surf.mass] for social sciences and economic research.&lt;br /&gt;
* Preparation of OSGeo as a software commons for upcoming FOSS4G in Bucarest.&lt;br /&gt;
* Provision of Sprint infrastructure (coffee machine, vittle, display of holy GRASS relics, etc.)&lt;br /&gt;
&lt;br /&gt;
== Markus Neteler ==&lt;br /&gt;
&lt;br /&gt;
* creation of all new Github repos&lt;br /&gt;
** GRASS GIS core: https://github.com/OSGeo/grass (GRASS GIS &amp;gt;= 7.x)&lt;br /&gt;
** GRASS GIS legacy: https://github.com/OSGeo/grass-legacy (GRASS GIS 3.x, 4.x, 5.x, 6.x - 1987 - 2016)&lt;br /&gt;
** GRASS GIS addons: https://github.com/OSGeo/grass-addons&lt;br /&gt;
** GRASS GIS promotional material: https://github.com/OSGeo/grass-promo&lt;br /&gt;
** Upcoming new web site: https://github.com/OSGeo/grass-website&lt;br /&gt;
* Testing of new Github repo at: https://github.com/OSGeo/grass/&lt;br /&gt;
* Github teams created - different roles for read/write/admin access&lt;br /&gt;
** grass-committers: GRASS GIS developers team  (read/write)&lt;br /&gt;
** grass-admin: GRASS GIS GitHub admin team (all)&lt;br /&gt;
** grass-docker-homebrew-users: users for automated dockerhub and homebrew builds (read-only)&lt;br /&gt;
* New Github users added upon email communication&lt;br /&gt;
* Draft version of https://trac.osgeo.org/grass/wiki/HowToGit&lt;br /&gt;
* (briefly) discussed image collections in GRASS GIS (needed for H2020 [http://openEO.org openEO.org])&lt;br /&gt;
* First PR :-) {{github_pr|8}}&lt;br /&gt;
* aftermath cleanup: tracked in https://trac.osgeo.org/grass/wiki/GitMigration#Aftermathcleanup&lt;br /&gt;
&lt;br /&gt;
== Nicolas Bozon ==&lt;br /&gt;
&lt;br /&gt;
* Presentation via video call of a first glance at the [[Website migration plan 2019|upcoming new GRASS GIS web site]] based on Hugo&lt;br /&gt;
&lt;br /&gt;
[[File:grass2019_berlin_sprint_new_website.jpg|thumb|right|Upcoming new GRASS GIS web site]]&lt;br /&gt;
&lt;br /&gt;
== Martin Landa ==&lt;br /&gt;
&lt;br /&gt;
* Working on GitHub migration&lt;br /&gt;
** finalize source code migration to GitHub ({{trac|3722}})&lt;br /&gt;
*** Targets:&lt;br /&gt;
**** https://github.com/OSGeo/grass&lt;br /&gt;
**** https://github.com/OSGeo/grass-addons,&lt;br /&gt;
**** https://github.com/OSGeo/grass-promo,&lt;br /&gt;
**** https://github.com/OSGeo/grass-legacy&lt;br /&gt;
*** svn2git migration dump and logs: https://grass.osgeo.org/svn2git_archive/&lt;br /&gt;
* Update/Fix WinGRASS build procedure to work with Git&lt;br /&gt;
* {{github_pr|9}}&lt;br /&gt;
* Discussed GRASS support for image collection with Soeren&lt;br /&gt;
&lt;br /&gt;
== Ondřej Pešek ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|g.gui.gmodeler}}: Working on PyWPS export (see [https://github.com/ctu-yfsg/2017-d-grass-modeler-pywps/compare/master@%7B17/05/2019%7D...master@%7B21/05/2019%7D github commits] overview)&lt;br /&gt;
* Research and discussions about ANN-fueled semantic segmentation modules for GRASS GIS&lt;br /&gt;
* Watching Sören's screenings of Mandelbrot's fractals&lt;br /&gt;
&lt;br /&gt;
== Anna Petrasova and Vaclav Petras ==&lt;br /&gt;
&lt;br /&gt;
* video call from sprint to sprint: Minneapolis OSGeo sprint &amp;lt;--&amp;gt; Berlin GRASS GIS community sprint&lt;br /&gt;
** discussing GitHub migration and HowToGit document&lt;br /&gt;
&lt;br /&gt;
== Veronica Andreo ==&lt;br /&gt;
&lt;br /&gt;
* video call from Argentina&lt;br /&gt;
** learning and testing with HowToGit document&lt;br /&gt;
** discussion about progress of the new website&lt;br /&gt;
&lt;br /&gt;
== Anne Ghisla aka aghisla ==&lt;br /&gt;
&lt;br /&gt;
* Discuss with Peter about archiving of source code in Zenodo (one DOI per GRASS release, connection with git)&lt;br /&gt;
* Follow closely the svn2git migration and the design of the new commit/push workflow&lt;br /&gt;
* Start working on the HTML man pages, so that they refer to git for source code and last edit timestamp ({{github_pr|11}}, work in progress)&lt;br /&gt;
* Investigate a clean way of dropping Python 2.x support, to be done before 2020 (official EOL of Python 2.x)&lt;br /&gt;
* Check with MarkusM how to update g.extension to use git - maybe the Debian Python Team's way can be of inspiration https://salsa.debian.org/python-team/tools/python-modules&lt;br /&gt;
&lt;br /&gt;
== Markus Metz ==&lt;br /&gt;
&lt;br /&gt;
* Help with git migration and documentation https://trac.osgeo.org/grass/wiki/HowToGit&lt;br /&gt;
* Fix basic GIS functionality: r.contour ({{trac|3846}}, {{github_pr|6}})&lt;br /&gt;
* Help on polishing github profile&lt;br /&gt;
* discussions with the other participants on best practice and future plans (git, python3, proj6)&lt;br /&gt;
&lt;br /&gt;
== Sören Gebbert ==&lt;br /&gt;
&lt;br /&gt;
* Discussion with Martin about the implementation of image collections in GRASS GIS&lt;br /&gt;
* Coding module [https://github.com/huhabla/t_rast_udf t.rast.udf] that implements the [https://github.com/Open-EO/openeo-udf openEO UDF Python API]  to be used in GRASS GIS with space-time raster datasets&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_GIS_Community_Sprint_Berlin_2019&amp;diff=25803</id>
		<title>Talk:GRASS GIS Community Sprint Berlin 2019</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_GIS_Community_Sprint_Berlin_2019&amp;diff=25803"/>
		<updated>2019-05-24T06:16:01Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Sören Gebbert */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Sponsors &amp;amp; Supporters =&lt;br /&gt;
&lt;br /&gt;
The GRASS Community sprint was kindly sponsored by FOSSGIS e.V. and coorganized by DIW Berlin, which provided the venue.&lt;br /&gt;
 &lt;br /&gt;
= Participants and Reports =&lt;br /&gt;
&lt;br /&gt;
Summarizing '''press release''': TODO&lt;br /&gt;
&lt;br /&gt;
[[File:grassgis 2019 berlin sprint group photo.jpg|400px|center|GRASS GIS community sprinters at DIW Berlin, 2019]]&lt;br /&gt;
&lt;br /&gt;
== Peter Loewe ==&lt;br /&gt;
&lt;br /&gt;
[[File:Community-Sprint 2019 Zenodo high level view.jpg|thumb|right|Community-Sprint 2019 Zenodo high level view]]&lt;br /&gt;
&lt;br /&gt;
* Discussion about Zenodo / GitHub integration&lt;br /&gt;
* Set up of Wikipage about the [https://grasswiki.osgeo.org/wiki/GitHub-Zenodo_linkage Zenodo-GitHuB integration] with all known facts and necessary steps tp dp this.&lt;br /&gt;
* Investigating [https://grass.osgeo.org/grass7/manuals/addons/v.surf.mass.html v.surf.mass] for social sciences and economic research.&lt;br /&gt;
* Preparation of OSGeo as a software commons for upcoming FOSS4G in Bucarest.&lt;br /&gt;
* Provision of Sprint infrastructure (coffee machine, vittle, display of holy GRASS relics, etc.)&lt;br /&gt;
&lt;br /&gt;
== Markus Neteler ==&lt;br /&gt;
&lt;br /&gt;
* creation of all new Github repos&lt;br /&gt;
** GRASS GIS core: https://github.com/OSGeo/grass (GRASS GIS &amp;gt;= 7.x)&lt;br /&gt;
** GRASS GIS legacy: https://github.com/OSGeo/grass-legacy (GRASS GIS 3.x, 4.x, 5.x, 6.x - 1987 - 2016)&lt;br /&gt;
** GRASS GIS addons: https://github.com/OSGeo/grass-addons&lt;br /&gt;
** GRASS GIS promotional material: https://github.com/OSGeo/grass-promo&lt;br /&gt;
** Upcoming new web site: https://github.com/OSGeo/grass-website&lt;br /&gt;
* Testing of new Github repo at: https://github.com/OSGeo/grass/&lt;br /&gt;
* Github teams created - different roles for read/write/admin access&lt;br /&gt;
** grass-committers: GRASS GIS developers team  (read/write)&lt;br /&gt;
** grass-admin: GRASS GIS GitHub admin team (all)&lt;br /&gt;
** grass-docker-homebrew-users: users for automated dockerhub and homebrew builds (read-only)&lt;br /&gt;
* New Github users added upon email communication&lt;br /&gt;
* Draft version of https://trac.osgeo.org/grass/wiki/HowToGit&lt;br /&gt;
* (briefly) discussed image collections in GRASS GIS (needed for H2020 [http://openEO.org openEO.org])&lt;br /&gt;
* First PR :-) {{github_pr|8}}&lt;br /&gt;
* aftermath cleanup: tracked in https://trac.osgeo.org/grass/wiki/GitMigration#Aftermathcleanup&lt;br /&gt;
&lt;br /&gt;
== Nicolas Bozon ==&lt;br /&gt;
&lt;br /&gt;
* Presentation via video call of a first glance at the [[Website migration plan 2019|upcoming new GRASS GIS web site]] based on Hugo&lt;br /&gt;
&lt;br /&gt;
[[File:grass2019_berlin_sprint_new_website.jpg|thumb|right|Upcoming new GRASS GIS web site]]&lt;br /&gt;
&lt;br /&gt;
== Martin Landa ==&lt;br /&gt;
&lt;br /&gt;
* Working on GitHub migration&lt;br /&gt;
** finalize source code migration to GitHub ({{trac|3722}})&lt;br /&gt;
*** Targets:&lt;br /&gt;
**** https://github.com/OSGeo/grass&lt;br /&gt;
**** https://github.com/OSGeo/grass-addons,&lt;br /&gt;
**** https://github.com/OSGeo/grass-promo,&lt;br /&gt;
**** https://github.com/OSGeo/grass-legacy&lt;br /&gt;
*** svn2git migration dump and logs: https://grass.osgeo.org/svn2git_archive/&lt;br /&gt;
* Update/Fix WinGRASS build procedure to work with Git&lt;br /&gt;
* {{github_pr|9}}&lt;br /&gt;
* Discussed GRASS support for image collection with Soeren&lt;br /&gt;
&lt;br /&gt;
== Ondřej Pešek ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|g.gui.gmodeler}}: Working on PyWPS export (see [https://github.com/ctu-yfsg/2017-d-grass-modeler-pywps/compare/master@%7B17/05/2019%7D...master@%7B21/05/2019%7D github commits] overview)&lt;br /&gt;
* Research and discussions about ANN-fueled semantic segmentation modules for GRASS GIS&lt;br /&gt;
* Watching Sören's screenings of Mandelbrot's fractals&lt;br /&gt;
&lt;br /&gt;
== Anna Petrasova and Vaclav Petras ==&lt;br /&gt;
&lt;br /&gt;
* video call from sprint to sprint: Minneapolis OSGeo sprint &amp;lt;--&amp;gt; Berlin GRASS GIS community sprint&lt;br /&gt;
** discussing GitHub migration and HowToGit document&lt;br /&gt;
&lt;br /&gt;
== Veronica Andreo ==&lt;br /&gt;
&lt;br /&gt;
* video call from Argentina&lt;br /&gt;
** learning and testing with HowToGit document&lt;br /&gt;
** discussion about progress of the new website&lt;br /&gt;
&lt;br /&gt;
== Anne Ghisla aka aghisla ==&lt;br /&gt;
&lt;br /&gt;
* Discuss with Peter about archiving of source code in Zenodo (one DOI per GRASS release, connection with git)&lt;br /&gt;
* Follow closely the svn2git migration and the design of the new commit/push workflow&lt;br /&gt;
* Start working on the HTML man pages, so that they refer to git for source code and last edit timestamp ({{github_pr|11}}, work in progress)&lt;br /&gt;
* Investigate a clean way of dropping Python 2.x support, to be done before 2020 (official EOL of Python 2.x)&lt;br /&gt;
* Check with MarkusM how to update g.extension to use git - maybe the Debian Python Team's way can be of inspiration https://salsa.debian.org/python-team/tools/python-modules&lt;br /&gt;
&lt;br /&gt;
== Markus Metz ==&lt;br /&gt;
&lt;br /&gt;
* Help with git migration and documentation https://trac.osgeo.org/grass/wiki/HowToGit&lt;br /&gt;
* Fix basic GIS functionality: r.contour ({{trac|3846}}, {{github_pr|6}})&lt;br /&gt;
* Help on polishing github profile&lt;br /&gt;
* discussions with the other participants on best practice and future plans (git, python3, proj6)&lt;br /&gt;
&lt;br /&gt;
== Sören Gebbert ==&lt;br /&gt;
&lt;br /&gt;
* Discussion with Martin about the implementation of image collections in GRASS GIS&lt;br /&gt;
* Coding module [https://github.com/huhabla/t_rast_udf t.rast.udf] that implements the [https://github.com/Open-EO/openeo-udfopenEO UDF Python API]  to be used in GRASS GIS with space-time raster datasets&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_GIS_Community_Sprint_Berlin_2019&amp;diff=25802</id>
		<title>Talk:GRASS GIS Community Sprint Berlin 2019</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_GIS_Community_Sprint_Berlin_2019&amp;diff=25802"/>
		<updated>2019-05-24T06:15:10Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Sponsors &amp;amp; Supporters =&lt;br /&gt;
&lt;br /&gt;
The GRASS Community sprint was kindly sponsored by FOSSGIS e.V. and coorganized by DIW Berlin, which provided the venue.&lt;br /&gt;
 &lt;br /&gt;
= Participants and Reports =&lt;br /&gt;
&lt;br /&gt;
Summarizing '''press release''': TODO&lt;br /&gt;
&lt;br /&gt;
[[File:grassgis 2019 berlin sprint group photo.jpg|400px|center|GRASS GIS community sprinters at DIW Berlin, 2019]]&lt;br /&gt;
&lt;br /&gt;
== Peter Loewe ==&lt;br /&gt;
&lt;br /&gt;
[[File:Community-Sprint 2019 Zenodo high level view.jpg|thumb|right|Community-Sprint 2019 Zenodo high level view]]&lt;br /&gt;
&lt;br /&gt;
* Discussion about Zenodo / GitHub integration&lt;br /&gt;
* Set up of Wikipage about the [https://grasswiki.osgeo.org/wiki/GitHub-Zenodo_linkage Zenodo-GitHuB integration] with all known facts and necessary steps tp dp this.&lt;br /&gt;
* Investigating [https://grass.osgeo.org/grass7/manuals/addons/v.surf.mass.html v.surf.mass] for social sciences and economic research.&lt;br /&gt;
* Preparation of OSGeo as a software commons for upcoming FOSS4G in Bucarest.&lt;br /&gt;
* Provision of Sprint infrastructure (coffee machine, vittle, display of holy GRASS relics, etc.)&lt;br /&gt;
&lt;br /&gt;
== Markus Neteler ==&lt;br /&gt;
&lt;br /&gt;
* creation of all new Github repos&lt;br /&gt;
** GRASS GIS core: https://github.com/OSGeo/grass (GRASS GIS &amp;gt;= 7.x)&lt;br /&gt;
** GRASS GIS legacy: https://github.com/OSGeo/grass-legacy (GRASS GIS 3.x, 4.x, 5.x, 6.x - 1987 - 2016)&lt;br /&gt;
** GRASS GIS addons: https://github.com/OSGeo/grass-addons&lt;br /&gt;
** GRASS GIS promotional material: https://github.com/OSGeo/grass-promo&lt;br /&gt;
** Upcoming new web site: https://github.com/OSGeo/grass-website&lt;br /&gt;
* Testing of new Github repo at: https://github.com/OSGeo/grass/&lt;br /&gt;
* Github teams created - different roles for read/write/admin access&lt;br /&gt;
** grass-committers: GRASS GIS developers team  (read/write)&lt;br /&gt;
** grass-admin: GRASS GIS GitHub admin team (all)&lt;br /&gt;
** grass-docker-homebrew-users: users for automated dockerhub and homebrew builds (read-only)&lt;br /&gt;
* New Github users added upon email communication&lt;br /&gt;
* Draft version of https://trac.osgeo.org/grass/wiki/HowToGit&lt;br /&gt;
* (briefly) discussed image collections in GRASS GIS (needed for H2020 [http://openEO.org openEO.org])&lt;br /&gt;
* First PR :-) {{github_pr|8}}&lt;br /&gt;
* aftermath cleanup: tracked in https://trac.osgeo.org/grass/wiki/GitMigration#Aftermathcleanup&lt;br /&gt;
&lt;br /&gt;
== Nicolas Bozon ==&lt;br /&gt;
&lt;br /&gt;
* Presentation via video call of a first glance at the [[Website migration plan 2019|upcoming new GRASS GIS web site]] based on Hugo&lt;br /&gt;
&lt;br /&gt;
[[File:grass2019_berlin_sprint_new_website.jpg|thumb|right|Upcoming new GRASS GIS web site]]&lt;br /&gt;
&lt;br /&gt;
== Martin Landa ==&lt;br /&gt;
&lt;br /&gt;
* Working on GitHub migration&lt;br /&gt;
** finalize source code migration to GitHub ({{trac|3722}})&lt;br /&gt;
*** Targets:&lt;br /&gt;
**** https://github.com/OSGeo/grass&lt;br /&gt;
**** https://github.com/OSGeo/grass-addons,&lt;br /&gt;
**** https://github.com/OSGeo/grass-promo,&lt;br /&gt;
**** https://github.com/OSGeo/grass-legacy&lt;br /&gt;
*** svn2git migration dump and logs: https://grass.osgeo.org/svn2git_archive/&lt;br /&gt;
* Update/Fix WinGRASS build procedure to work with Git&lt;br /&gt;
* {{github_pr|9}}&lt;br /&gt;
* Discussed GRASS support for image collection with Soeren&lt;br /&gt;
&lt;br /&gt;
== Ondřej Pešek ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|g.gui.gmodeler}}: Working on PyWPS export (see [https://github.com/ctu-yfsg/2017-d-grass-modeler-pywps/compare/master@%7B17/05/2019%7D...master@%7B21/05/2019%7D github commits] overview)&lt;br /&gt;
* Research and discussions about ANN-fueled semantic segmentation modules for GRASS GIS&lt;br /&gt;
* Watching Sören's screenings of Mandelbrot's fractals&lt;br /&gt;
&lt;br /&gt;
== Anna Petrasova and Vaclav Petras ==&lt;br /&gt;
&lt;br /&gt;
* video call from sprint to sprint: Minneapolis OSGeo sprint &amp;lt;--&amp;gt; Berlin GRASS GIS community sprint&lt;br /&gt;
** discussing GitHub migration and HowToGit document&lt;br /&gt;
&lt;br /&gt;
== Veronica Andreo ==&lt;br /&gt;
&lt;br /&gt;
* video call from Argentina&lt;br /&gt;
** learning and testing with HowToGit document&lt;br /&gt;
** discussion about progress of the new website&lt;br /&gt;
&lt;br /&gt;
== Anne Ghisla aka aghisla ==&lt;br /&gt;
&lt;br /&gt;
* Discuss with Peter about archiving of source code in Zenodo (one DOI per GRASS release, connection with git)&lt;br /&gt;
* Follow closely the svn2git migration and the design of the new commit/push workflow&lt;br /&gt;
* Start working on the HTML man pages, so that they refer to git for source code and last edit timestamp ({{github_pr|11}}, work in progress)&lt;br /&gt;
* Investigate a clean way of dropping Python 2.x support, to be done before 2020 (official EOL of Python 2.x)&lt;br /&gt;
* Check with MarkusM how to update g.extension to use git - maybe the Debian Python Team's way can be of inspiration https://salsa.debian.org/python-team/tools/python-modules&lt;br /&gt;
&lt;br /&gt;
== Markus Metz ==&lt;br /&gt;
&lt;br /&gt;
* Help with git migration and documentation https://trac.osgeo.org/grass/wiki/HowToGit&lt;br /&gt;
* Fix basic GIS functionality: r.contour ({{trac|3846}}, {{github_pr|6}})&lt;br /&gt;
* Help on polishing github profile&lt;br /&gt;
* discussions with the other participants on best practice and future plans (git, python3, proj6)&lt;br /&gt;
&lt;br /&gt;
== Sören Gebbert ==&lt;br /&gt;
&lt;br /&gt;
* Diskussion with Martin about the implementation of image collections in GRASS GIS&lt;br /&gt;
* Implementing the module [https://github.com/huhabla/t_rast_udf t.rast.udf] that implements the [https://github.com/Open-EO/openeo-udfopenEO UDF Python API]  to be used in GRASS GIS with space-time raster datasets&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_GIS_Community_Sprint_Berlin_2019&amp;diff=25801</id>
		<title>Talk:GRASS GIS Community Sprint Berlin 2019</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_GIS_Community_Sprint_Berlin_2019&amp;diff=25801"/>
		<updated>2019-05-24T06:11:49Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Sponsors &amp;amp; Supporters =&lt;br /&gt;
&lt;br /&gt;
The GRASS Community sprint was kindly sponsored by FOSSGIS e.V. and coorganized by DIW Berlin, which provided the venue.&lt;br /&gt;
 &lt;br /&gt;
= Participants and Reports =&lt;br /&gt;
&lt;br /&gt;
Summarizing '''press release''': TODO&lt;br /&gt;
&lt;br /&gt;
[[File:grassgis 2019 berlin sprint group photo.jpg|400px|center|GRASS GIS community sprinters at DIW Berlin, 2019]]&lt;br /&gt;
&lt;br /&gt;
== Peter Loewe ==&lt;br /&gt;
&lt;br /&gt;
[[File:Community-Sprint 2019 Zenodo high level view.jpg|thumb|right|Community-Sprint 2019 Zenodo high level view]]&lt;br /&gt;
&lt;br /&gt;
* Discussion about Zenodo / GitHub integration&lt;br /&gt;
* Set up of Wikipage about the [https://grasswiki.osgeo.org/wiki/GitHub-Zenodo_linkage Zenodo-GitHuB integration] with all known facts and necessary steps tp dp this.&lt;br /&gt;
* Investigating [https://grass.osgeo.org/grass7/manuals/addons/v.surf.mass.html v.surf.mass] for social sciences and economic research.&lt;br /&gt;
* Preparation of OSGeo as a software commons for upcoming FOSS4G in Bucarest.&lt;br /&gt;
* Provision of Sprint infrastructure (coffee machine, vittle, display of holy GRASS relics, etc.)&lt;br /&gt;
&lt;br /&gt;
== Markus Neteler ==&lt;br /&gt;
&lt;br /&gt;
* creation of all new Github repos&lt;br /&gt;
** GRASS GIS core: https://github.com/OSGeo/grass (GRASS GIS &amp;gt;= 7.x)&lt;br /&gt;
** GRASS GIS legacy: https://github.com/OSGeo/grass-legacy (GRASS GIS 3.x, 4.x, 5.x, 6.x - 1987 - 2016)&lt;br /&gt;
** GRASS GIS addons: https://github.com/OSGeo/grass-addons&lt;br /&gt;
** GRASS GIS promotional material: https://github.com/OSGeo/grass-promo&lt;br /&gt;
** Upcoming new web site: https://github.com/OSGeo/grass-website&lt;br /&gt;
* Testing of new Github repo at: https://github.com/OSGeo/grass/&lt;br /&gt;
* Github teams created - different roles for read/write/admin access&lt;br /&gt;
** grass-committers: GRASS GIS developers team  (read/write)&lt;br /&gt;
** grass-admin: GRASS GIS GitHub admin team (all)&lt;br /&gt;
** grass-docker-homebrew-users: users for automated dockerhub and homebrew builds (read-only)&lt;br /&gt;
* New Github users added upon email communication&lt;br /&gt;
* Draft version of https://trac.osgeo.org/grass/wiki/HowToGit&lt;br /&gt;
* (briefly) discussed image collections in GRASS GIS (needed for H2020 [http://openEO.org openEO.org])&lt;br /&gt;
* First PR :-) {{github_pr|8}}&lt;br /&gt;
* aftermath cleanup: tracked in https://trac.osgeo.org/grass/wiki/GitMigration#Aftermathcleanup&lt;br /&gt;
&lt;br /&gt;
== Nicolas Bozon ==&lt;br /&gt;
&lt;br /&gt;
* Presentation via video call of a first glance at the [[Website migration plan 2019|upcoming new GRASS GIS web site]] based on Hugo&lt;br /&gt;
&lt;br /&gt;
[[File:grass2019_berlin_sprint_new_website.jpg|thumb|right|Upcoming new GRASS GIS web site]]&lt;br /&gt;
&lt;br /&gt;
== Martin Landa ==&lt;br /&gt;
&lt;br /&gt;
* Working on GitHub migration&lt;br /&gt;
** finalize source code migration to GitHub ({{trac|3722}})&lt;br /&gt;
*** Targets:&lt;br /&gt;
**** https://github.com/OSGeo/grass&lt;br /&gt;
**** https://github.com/OSGeo/grass-addons,&lt;br /&gt;
**** https://github.com/OSGeo/grass-promo,&lt;br /&gt;
**** https://github.com/OSGeo/grass-legacy&lt;br /&gt;
*** svn2git migration dump and logs: https://grass.osgeo.org/svn2git_archive/&lt;br /&gt;
* Update/Fix WinGRASS build procedure to work with Git&lt;br /&gt;
* {{github_pr|9}}&lt;br /&gt;
* Discussed GRASS support for image collection with Soeren&lt;br /&gt;
&lt;br /&gt;
== Ondřej Pešek ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|g.gui.gmodeler}}: Working on PyWPS export (see [https://github.com/ctu-yfsg/2017-d-grass-modeler-pywps/compare/master@%7B17/05/2019%7D...master@%7B21/05/2019%7D github commits] overview)&lt;br /&gt;
* Research and discussions about ANN-fueled semantic segmentation modules for GRASS GIS&lt;br /&gt;
* Watching Sören's screenings of Mandelbrot's fractals&lt;br /&gt;
&lt;br /&gt;
== Anna Petrasova and Vaclav Petras ==&lt;br /&gt;
&lt;br /&gt;
* video call from sprint to sprint: Minneapolis OSGeo sprint &amp;lt;--&amp;gt; Berlin GRASS GIS community sprint&lt;br /&gt;
** discussing GitHub migration and HowToGit document&lt;br /&gt;
&lt;br /&gt;
== Veronica Andreo ==&lt;br /&gt;
&lt;br /&gt;
* video call from Argentina&lt;br /&gt;
** learning and testing with HowToGit document&lt;br /&gt;
** discussion about progress of the new website&lt;br /&gt;
&lt;br /&gt;
== Anne Ghisla aka aghisla ==&lt;br /&gt;
&lt;br /&gt;
* Discuss with Peter about archiving of source code in Zenodo (one DOI per GRASS release, connection with git)&lt;br /&gt;
* Follow closely the svn2git migration and the design of the new commit/push workflow&lt;br /&gt;
* Start working on the HTML man pages, so that they refer to git for source code and last edit timestamp ({{github_pr|11}}, work in progress)&lt;br /&gt;
* Investigate a clean way of dropping Python 2.x support, to be done before 2020 (official EOL of Python 2.x)&lt;br /&gt;
* Check with MarkusM how to update g.extension to use git - maybe the Debian Python Team's way can be of inspiration https://salsa.debian.org/python-team/tools/python-modules&lt;br /&gt;
&lt;br /&gt;
== Markus Metz ==&lt;br /&gt;
&lt;br /&gt;
* Help with git migration and documentation https://trac.osgeo.org/grass/wiki/HowToGit&lt;br /&gt;
* Fix basic GIS functionality: r.contour ({{trac|3846}}, {{github_pr|6}})&lt;br /&gt;
* Help on polishing github profile&lt;br /&gt;
* discussions with the other participants on best practice and future plans (git, python3, proj6)&lt;br /&gt;
&lt;br /&gt;
== Sören Gebbert ==&lt;br /&gt;
&lt;br /&gt;
* Diskussion with Martin about the implementation of image collections in GRASS GIS&lt;br /&gt;
* Implementing the module t.rast.udf that implements the openEO UDF Python API to be used in GRASS GIS with space-time raster datasets&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_GIS_Community_Sprint_Berlin_2019&amp;diff=25800</id>
		<title>Talk:GRASS GIS Community Sprint Berlin 2019</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_GIS_Community_Sprint_Berlin_2019&amp;diff=25800"/>
		<updated>2019-05-24T06:11:33Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Sponsors &amp;amp; Supporters =&lt;br /&gt;
&lt;br /&gt;
The GRASS Community sprint was kindly sponsored by FOSSGIS e.V. and coorganized by DIW Berlin, which provided the venue.&lt;br /&gt;
 &lt;br /&gt;
= Participants and Reports =&lt;br /&gt;
&lt;br /&gt;
Summarizing '''press release''': TODO&lt;br /&gt;
&lt;br /&gt;
[[File:grassgis 2019 berlin sprint group photo.jpg|400px|center|GRASS GIS community sprinters at DIW Berlin, 2019]]&lt;br /&gt;
&lt;br /&gt;
== Peter Loewe ==&lt;br /&gt;
&lt;br /&gt;
[[File:Community-Sprint 2019 Zenodo high level view.jpg|thumb|right|Community-Sprint 2019 Zenodo high level view]]&lt;br /&gt;
&lt;br /&gt;
* Discussion about Zenodo / GitHub integration&lt;br /&gt;
* Set up of Wikipage about the [https://grasswiki.osgeo.org/wiki/GitHub-Zenodo_linkage Zenodo-GitHuB integration] with all known facts and necessary steps tp dp this.&lt;br /&gt;
* Investigating [https://grass.osgeo.org/grass7/manuals/addons/v.surf.mass.html v.surf.mass] for social sciences and economic research.&lt;br /&gt;
* Preparation of OSGeo as a software commons for upcoming FOSS4G in Bucarest.&lt;br /&gt;
* Provision of Sprint infrastructure (coffee machine, vittle, display of holy GRASS relics, etc.)&lt;br /&gt;
&lt;br /&gt;
== Markus Neteler ==&lt;br /&gt;
&lt;br /&gt;
* creation of all new Github repos&lt;br /&gt;
** GRASS GIS core: https://github.com/OSGeo/grass (GRASS GIS &amp;gt;= 7.x)&lt;br /&gt;
** GRASS GIS legacy: https://github.com/OSGeo/grass-legacy (GRASS GIS 3.x, 4.x, 5.x, 6.x - 1987 - 2016)&lt;br /&gt;
** GRASS GIS addons: https://github.com/OSGeo/grass-addons&lt;br /&gt;
** GRASS GIS promotional material: https://github.com/OSGeo/grass-promo&lt;br /&gt;
** Upcoming new web site: https://github.com/OSGeo/grass-website&lt;br /&gt;
* Testing of new Github repo at: https://github.com/OSGeo/grass/&lt;br /&gt;
* Github teams created - different roles for read/write/admin access&lt;br /&gt;
** grass-committers: GRASS GIS developers team  (read/write)&lt;br /&gt;
** grass-admin: GRASS GIS GitHub admin team (all)&lt;br /&gt;
** grass-docker-homebrew-users: users for automated dockerhub and homebrew builds (read-only)&lt;br /&gt;
* New Github users added upon email communication&lt;br /&gt;
* Draft version of https://trac.osgeo.org/grass/wiki/HowToGit&lt;br /&gt;
* (briefly) discussed image collections in GRASS GIS (needed for H2020 [http://openEO.org openEO.org])&lt;br /&gt;
* First PR :-) {{github_pr|8}}&lt;br /&gt;
* aftermath cleanup: tracked in https://trac.osgeo.org/grass/wiki/GitMigration#Aftermathcleanup&lt;br /&gt;
&lt;br /&gt;
== Nicolas Bozon ==&lt;br /&gt;
&lt;br /&gt;
* Presentation via video call of a first glance at the [[Website migration plan 2019|upcoming new GRASS GIS web site]] based on Hugo&lt;br /&gt;
&lt;br /&gt;
[[File:grass2019_berlin_sprint_new_website.jpg|thumb|right|Upcoming new GRASS GIS web site]]&lt;br /&gt;
&lt;br /&gt;
== Martin Landa ==&lt;br /&gt;
&lt;br /&gt;
* Working on GitHub migration&lt;br /&gt;
** finalize source code migration to GitHub ({{trac|3722}})&lt;br /&gt;
*** Targets:&lt;br /&gt;
**** https://github.com/OSGeo/grass&lt;br /&gt;
**** https://github.com/OSGeo/grass-addons,&lt;br /&gt;
**** https://github.com/OSGeo/grass-promo,&lt;br /&gt;
**** https://github.com/OSGeo/grass-legacy&lt;br /&gt;
*** svn2git migration dump and logs: https://grass.osgeo.org/svn2git_archive/&lt;br /&gt;
* Update/Fix WinGRASS build procedure to work with Git&lt;br /&gt;
* {{github_pr|9}}&lt;br /&gt;
* Discussed GRASS support for image collection with Soeren&lt;br /&gt;
&lt;br /&gt;
== Ondřej Pešek ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|g.gui.gmodeler}}: Working on PyWPS export (see [https://github.com/ctu-yfsg/2017-d-grass-modeler-pywps/compare/master@%7B17/05/2019%7D...master@%7B21/05/2019%7D github commits] overview)&lt;br /&gt;
* Research and discussions about ANN-fueled semantic segmentation modules for GRASS GIS&lt;br /&gt;
* Watching Sören's screenings of Mandelbrot's fractals&lt;br /&gt;
&lt;br /&gt;
== Anna Petrasova and Vaclav Petras ==&lt;br /&gt;
&lt;br /&gt;
* video call from sprint to sprint: Minneapolis OSGeo sprint &amp;lt;--&amp;gt; Berlin GRASS GIS community sprint&lt;br /&gt;
** discussing GitHub migration and HowToGit document&lt;br /&gt;
&lt;br /&gt;
== Veronica Andreo ==&lt;br /&gt;
&lt;br /&gt;
* video call from Argentina&lt;br /&gt;
** learning and testing with HowToGit document&lt;br /&gt;
** discussion about progress of the new website&lt;br /&gt;
&lt;br /&gt;
== Anne Ghisla aka aghisla ==&lt;br /&gt;
&lt;br /&gt;
* Discuss with Peter about archiving of source code in Zenodo (one DOI per GRASS release, connection with git)&lt;br /&gt;
* Follow closely the svn2git migration and the design of the new commit/push workflow&lt;br /&gt;
* Start working on the HTML man pages, so that they refer to git for source code and last edit timestamp ({{github_pr|11}}, work in progress)&lt;br /&gt;
* Investigate a clean way of dropping Python 2.x support, to be done before 2020 (official EOL of Python 2.x)&lt;br /&gt;
* Check with MarkusM how to update g.extension to use git - maybe the Debian Python Team's way can be of inspiration https://salsa.debian.org/python-team/tools/python-modules&lt;br /&gt;
&lt;br /&gt;
== Markus Metz ==&lt;br /&gt;
&lt;br /&gt;
* Help with git migration and documentation https://trac.osgeo.org/grass/wiki/HowToGit&lt;br /&gt;
* Fix basic GIS functionality: r.contour ({{trac|3846}}, {{github_pr|6}})&lt;br /&gt;
* Help on polishing github profile&lt;br /&gt;
* discussions with the other participants on best practice and future plans (git, python3, proj6)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sören Gebbert ==&lt;br /&gt;
&lt;br /&gt;
* Diskussion with Martin about the implementation of image collections in GRASS GIS&lt;br /&gt;
* Implementing the module t.rast.udf that implements the openEO UDF Python API to be used in GRASS GIS with space-time raster datasets&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_GIS_Community_Sprint_Berlin_2019&amp;diff=25656</id>
		<title>GRASS GIS Community Sprint Berlin 2019</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_GIS_Community_Sprint_Berlin_2019&amp;diff=25656"/>
		<updated>2019-04-25T09:43:37Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: Added Soeren Gebbert&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{toc|right}}&lt;br /&gt;
&lt;br /&gt;
== Timing, Venue  ==&lt;br /&gt;
&lt;br /&gt;
'''May 17 (Fri) - May 20 (Mon), 2019 at DIW Berlin, Berlin, Germany'''.&lt;br /&gt;
&lt;br /&gt;
Location: Mohrenstraße 58, 10117 Berlin ([https://www.openstreetmap.org/node/358106189 OSM Map])&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
DIW Berlin: Free provision of meeting rooms and internet access.&lt;br /&gt;
&lt;br /&gt;
Donation from OSGeo. Please check more info [[GRASS GIS Budget 2019]].&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''' via our [https://www.paypal.com/pools/c/86YKZiIEPV Paypal money pool]&lt;br /&gt;
&lt;br /&gt;
[[Image:Btn_donate_SM.gif|center|link=http://grass.osgeo.org/donations/]]&lt;br /&gt;
&lt;br /&gt;
For any questions, please contact [[User:Landa|Martin Landa]]. 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;
== Agenda - What we plan to do ==&lt;br /&gt;
&lt;br /&gt;
* Discuss scientific citation of GRASS code and changes to the metadata of man-pages. (PL)&lt;br /&gt;
&lt;br /&gt;
=== New website ===&lt;br /&gt;
&lt;br /&gt;
== Planned participation ==&lt;br /&gt;
&lt;br /&gt;
For organizational reasons. &lt;br /&gt;
&lt;br /&gt;
=== In person ===&lt;br /&gt;
&lt;br /&gt;
Please add your name here:&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;
|'''Topics'''&lt;br /&gt;
|width=75px|'''T-Shirt'''&lt;br /&gt;
|'''Notes'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Landa|Martin Landa]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
|17/18&lt;br /&gt;
|20&lt;br /&gt;
|&lt;br /&gt;
|L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:Neteler|Markus Neteler]]&lt;br /&gt;
|Germany&lt;br /&gt;
|?&lt;br /&gt;
|?&lt;br /&gt;
| completion of git/github migration&lt;br /&gt;
|M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|[[User:peter.loewe|Peter Loewe]]&lt;br /&gt;
|Germany&lt;br /&gt;
|17&lt;br /&gt;
|20&lt;br /&gt;
| Integration of gut/github migration with the Zenodo data repository / strategic planning for extensions of g.citation module&lt;br /&gt;
|XL&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|[[User:mmetz|Markus Metz]]&lt;br /&gt;
|Germany&lt;br /&gt;
|17&lt;br /&gt;
|20&lt;br /&gt;
|&lt;br /&gt;
|L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[User:pesekon2|Ondřej Pešek]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
|17/18&lt;br /&gt;
|20&lt;br /&gt;
|&lt;br /&gt;
|M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|[[User:huhabla|Sören Gebbert]]&lt;br /&gt;
|Germany&lt;br /&gt;
|17&lt;br /&gt;
|19&lt;br /&gt;
| Image collections in GRASS GIS&lt;br /&gt;
|XL&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|x&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Accomodation ==&lt;br /&gt;
&lt;br /&gt;
There are several Hotels etc. in walking distance.&lt;br /&gt;
&lt;br /&gt;
=== Backpackers ===&lt;br /&gt;
[https://www.cityhostel-berlin.com/ City-Hostel Berlin]&lt;br /&gt;
=== Hotels ===&lt;br /&gt;
tbd&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
==== Address ====&lt;br /&gt;
DIW Berlin, Mohrenstrasse 58, 10117 Berlin ([https://www.openstreetmap.org/node/358106189 OSM Map])&lt;br /&gt;
&lt;br /&gt;
==== Public transport  ====&lt;br /&gt;
&lt;br /&gt;
See: https://fahrinfo.bvg.de/barrierefrei/bin/query.bin/en&lt;br /&gt;
&lt;br /&gt;
===== Subway / U-Bahn =====&lt;br /&gt;
* stations &amp;quot;Mohrenstraße&amp;quot;, &amp;quot;Stadtmitte&amp;quot; or &amp;quot;Französische Straße&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===== Light rail / S-Bahn =====&lt;br /&gt;
* Friedrichstraße station (10mins walk from there)&lt;br /&gt;
&lt;br /&gt;
==== Rooms ====&lt;br /&gt;
&lt;br /&gt;
* Friday, May 17: 5.2.8 / 5.2.011&lt;br /&gt;
* Saturday, May 18 (fifth floor)&lt;br /&gt;
* Sunday, May 19 (fifth floor)&lt;br /&gt;
* Monday, May 20: 5.2.8 / 5.2.011&lt;br /&gt;
&lt;br /&gt;
=== Pre-event tasks ===&lt;br /&gt;
&lt;br /&gt;
==== Remaining tasks ====&lt;br /&gt;
&lt;br /&gt;
* Provide information about lodging options (hotels, backpackers, etc)&lt;br /&gt;
&lt;br /&gt;
* Provide information about what's up in Berlin&lt;br /&gt;
* Provide information about restaurants&lt;br /&gt;
* Plan/order catering&lt;br /&gt;
* Discuss swag (t-shirts ? mugs ?)&lt;br /&gt;
* Discuss BBQ event or similar for saturday night&lt;br /&gt;
* @DIW-IT: Prepare WLAN-access tix.&lt;br /&gt;
* consider whatsapp(or similar) channel for last minute communication&lt;br /&gt;
* consider side events: &lt;br /&gt;
** [https://sdtb.de/museum-of-technology/623/ Museum of Technology](they have an ancient Zuse computer on display)&lt;br /&gt;
** [http://www.computerspielemuseum.de/1210_Home.htm Video game museum]&lt;br /&gt;
** Group picture at the Brandenburg Gate ?&lt;br /&gt;
** Fancy dinner (or breakfast!) at the [https://tv-turm.de/en/bar-restaurant/ revolving restaurant] up on the tv tower ? (Sponsors???) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Completed tasks ====&lt;br /&gt;
* {{done}}: Reserve rooms at DIW for 21 - 22 May&lt;br /&gt;
* {{done}}: Rooms at DIW have been reserved for May 18-21 and May 23 (May 18 + 21: office room(s); May 19/20/23: meeting room)&lt;br /&gt;
* {{done}}: provide information about the venue and how to get there&lt;br /&gt;
* {{done}}: Provide information about public transport&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;
|'''Note'''&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;
== 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, '''git''', 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;
== Reports ==&lt;br /&gt;
&lt;br /&gt;
See [[Talk:GRASS_Community_Sprint_Berlin_2019]]&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 Martin Landa &amp;lt;tt&amp;gt;landa.martin gmail.com&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Workshops]]&lt;br /&gt;
[[Category: Code Sprint]]&lt;br /&gt;
[[Category: 2019]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_Community_Sprint_Prague_2013&amp;diff=19199</id>
		<title>Talk:GRASS Community Sprint Prague 2013</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_Community_Sprint_Prague_2013&amp;diff=19199"/>
		<updated>2013-07-16T15:47:40Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Sören Gebbert aka huhabla */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Participant comments and plans ==&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Joint efforts ===&lt;br /&gt;
&lt;br /&gt;
(see [[GRASS_Community_Sprint_Prague_2013#In_person|here]] for participants' names)&lt;br /&gt;
&lt;br /&gt;
* Creating 3D vector test data (for 3D interpolation) - ES, SG, MN&lt;br /&gt;
* Added [[Image_processing#General_introduction|General introduction]] (based on manual of G7/i.vi by Yann Chemin) - MN, MN, YC&lt;br /&gt;
* Discussions on Bundle Block Adjustments - YC, ST&lt;br /&gt;
* wxGUI refactoring - AP, VP&lt;br /&gt;
* Presentation of state of image processing in GRASS 7 - YC, MN&lt;br /&gt;
* Presentation of state of Temporal GIS Algebra in GRASS 7 - SG, TL&lt;br /&gt;
* ISIS-GRASS bridge port to GRASS7 - YC, VP, ML, MN&lt;br /&gt;
* Discussions on potential integration of Rasdaman software as raster data backend - SG, YC, and Jachym (virtually)&lt;br /&gt;
* Presentation on vector conflation - TF with discussion&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
=== Individual Reports ===&lt;br /&gt;
&lt;br /&gt;
Here the (very incomplete) list of individual efforts:&lt;br /&gt;
&lt;br /&gt;
==== Martin Landa ====&lt;br /&gt;
&lt;br /&gt;
* Community Sprint organization&lt;br /&gt;
* OSGeo4W GRASS 6.4.3RC4 package published&lt;br /&gt;
* Fix {{cmd|v.pack|version=70}} on MS Windows, {{rev|57117}}&lt;br /&gt;
* Fix {{cmd|v.unpack|version=70}} on MS Windows, {{rev|57121}}&lt;br /&gt;
&lt;br /&gt;
==== Markus Neteler ====&lt;br /&gt;
&lt;br /&gt;
* Community Sprint Budget management (available on request)&lt;br /&gt;
* r.wf Addon fixed: {{rev|57075}} and {{rev|57076}}&lt;br /&gt;
* r.ipso Addon fixed: {{rev|57077}}&lt;br /&gt;
* Draft Doxygen'iation of the CDHC [http://grass.osgeo.org/programming7/cdhclib.html library for testing normality &amp;amp; exponentiality]&lt;br /&gt;
* Added [[Image_processing#General_introduction|General introduction]] (based on manual of G7/i.vi by Yann Chemin) - MN, MN, YC&lt;br /&gt;
&lt;br /&gt;
==== Yann Chemin ====&lt;br /&gt;
&lt;br /&gt;
* ISIS-GRASS bridge port to GRASS7 (with Vaclav, Martin and MarkusN)&lt;br /&gt;
  If ISIS (http://isis.astrogeology.usgs.gov) is installed, &lt;br /&gt;
  GRASS will load it in the background,&lt;br /&gt;
  the banner and prompt will change to ISIS-GRASS.&lt;br /&gt;
  Both ISIS and GRASS commands are available at the ISIS-GRASS prompt.&lt;br /&gt;
&lt;br /&gt;
* g.isis3mt exports a ISIS3 template from current location, ported into GRASS 7&lt;br /&gt;
&lt;br /&gt;
* Tested direct access of ISIS3 data into G7, r.in.gdal and r.external both work (tested Mars MOLA and Dawn test_datasets)&lt;br /&gt;
&lt;br /&gt;
* Discussed with Soeren, Vaclav and Jachym about Rasdaman, Voxel lib and Raster handling in Grass 8, we agreed on investigating handling, interfaces and performances.&lt;br /&gt;
&lt;br /&gt;
* Went through the Bundle Block Adjustment files with Stepan&lt;br /&gt;
&lt;br /&gt;
* Landsat 7 chain processing using pyGRASS goes in testing mode with MarkusN and Soeren&lt;br /&gt;
&lt;br /&gt;
* Worked more on r.crater&lt;br /&gt;
&lt;br /&gt;
==== Margherita Di Leo ====&lt;br /&gt;
&lt;br /&gt;
* r.basin ported to G7 {{rev|57091}}, {{rev|57096}}&lt;br /&gt;
* r.basin html fixed {{rev|57110}}&lt;br /&gt;
&lt;br /&gt;
==== Markus Metz ====&lt;br /&gt;
&lt;br /&gt;
* r.stream.* modules: clean up before moving from addons to trunk {{rev|57151}}, {{rev|57152}}&lt;br /&gt;
* GRASS wiki image processing update (MM, MN, YC)&lt;br /&gt;
* standardizing options for v.db.* and db.* modules, updating respective manuals&lt;br /&gt;
&lt;br /&gt;
==== Anne Ghisla aka aghisla ====&lt;br /&gt;
&lt;br /&gt;
* Google Summer of Code live discussions&lt;br /&gt;
* v.krige fixed in G7 {{rev|57146}} and following&lt;br /&gt;
&lt;br /&gt;
==== Sören Gebbert aka huhabla ====&lt;br /&gt;
&lt;br /&gt;
* Google Summer of Code Temporal Algebra presentation and implementation support&lt;br /&gt;
* Discussion of RASDAMAN GRASS integration&lt;br /&gt;
* Discussion and implementation of the new temporal module t.rast.accumulate and the use of a modified version of r.gdd (implemented by Markus Metz) instead of r.mapcalc&lt;br /&gt;
* Writing and updating of many temporal modules manual pages&lt;br /&gt;
* Implementing a prototype that uses Python multiprocessing and a new display C-library function derived from g.pnmcomp to speedup the image composition in the wx GUI&lt;br /&gt;
&lt;br /&gt;
==== Stepan Turek ====&lt;br /&gt;
&lt;br /&gt;
* Working on Google Summer of Code project &lt;br /&gt;
* Went through the Bundle Block Adjustment files with Yann&lt;br /&gt;
* Released source code of scatter plot backend  to baclend {{rev|57180}} and turns backend {{rev|57179}}&lt;br /&gt;
* Discussed GSoC with Martin and Soren&lt;br /&gt;
&lt;br /&gt;
==== Thomas Leppelt ====&lt;br /&gt;
&lt;br /&gt;
* Working on GSoC Project: Temporal Algebra &lt;br /&gt;
* Implementing functions for if-statements in the temporal algebra&lt;br /&gt;
&lt;br /&gt;
==== Milena Nowotarska ====&lt;br /&gt;
&lt;br /&gt;
* GUI translation to Polish&lt;br /&gt;
&lt;br /&gt;
==== Anna Petrasova ====&lt;br /&gt;
&lt;br /&gt;
* attempts to compile wxPython with wxGTK3/Broadway (HTML5) backend, so far not successfull, see [http://wxpython-users.1045709.n5.nabble.com/wxPython-with-wxGTK3-Broadway-HTML5-based-backend-td5718030.html discussion]&lt;br /&gt;
* wxGUI refactoring&lt;br /&gt;
* wxGUI design&lt;br /&gt;
* toolboxes: discussion, adding &amp;lt;addons&amp;gt; tag&lt;br /&gt;
&lt;br /&gt;
==== Vaclav Petras ====&lt;br /&gt;
&lt;br /&gt;
* compiling wxPython with wxGTK3/Broadway with Anna&lt;br /&gt;
* discussion of Rasdaman GRASS integration&lt;br /&gt;
* wxGUI refactoring&lt;br /&gt;
* wxGUI design&lt;br /&gt;
* toolboxes: discussion&lt;br /&gt;
* ISIS-GRASS bridge port to GRASS7 with Yann&lt;br /&gt;
&lt;br /&gt;
==== Eva Stopková ====&lt;br /&gt;
* debug of plotting variogram output in module v.kriging (not published yet)&lt;br /&gt;
* discussion about kriging methods in GRASS GIS with Anne&lt;br /&gt;
* discussion about optimalization and testing modules (not published yet) v.kriging (2D/3D kriging) and v.nna (2D/3D Nearest Neighbour Analysis) with Marcus N. and Soeren G.&lt;br /&gt;
* improving and debugging other functions of module v.kriging&lt;br /&gt;
* numerical testing of v.kriging&lt;br /&gt;
&lt;br /&gt;
==== Tereza Fiedlerová ====&lt;br /&gt;
* learning something about GRASS GIS vector modules &lt;br /&gt;
* discussion about own QGIS plugin and C++ library for vector conflation and its possible implementation to GRASS&lt;br /&gt;
* beginning to write C API for vector conflation library (needed for GRASS implementation)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Video-conferencing options ==&lt;br /&gt;
&lt;br /&gt;
Q: is Google Hangouts smartphones only?&lt;br /&gt;
: ''not sure, but I'm pretty sure you can get a web browser plugin for all major desktop OSs''&lt;br /&gt;
&lt;br /&gt;
Q: do you have to be signed up with a Google+ social media account?&lt;br /&gt;
: ''in theory no, but in practice they strongly funnel you that way''&lt;br /&gt;
&lt;br /&gt;
Q:  is Jitsi on a desktop computer compatible with G+?&lt;br /&gt;
: ''at the text chat level, yes. video and voice via Google Talk, reported to work with Voice, not sure about video''&lt;br /&gt;
&lt;br /&gt;
; [http://www.jitsi.org Jitsi]&lt;br /&gt;
: ''It is compatible with GoogleTalk instant messaging (and most other instant messaging including the XMPP RFC like Facebook; Skype is the notable one that it doesn't work with), not sure about GoogleTalk's voice calls, I'd give that a 80% chance of working.&lt;br /&gt;
: An interesting side-project Jisti offers its own work-alike free multi-person video chat for XMPP(Jabber compatibles) which is not limited to 10 people: [https://jitsi.org/Projects/JitsiVideobridge VideoBridge]. Given enough bandwidth and a modern desktop CPU acting as the bridge server, you can have someone in a G+ hangout share their desktop to pass through the other members of the video hangout.&lt;br /&gt;
: Also there's a functional alpha-release Android client.&lt;br /&gt;
: For Jitsi &amp;lt;-&amp;gt; Jitsi video you may need a valid XMPP account. Many (federated in a single grid) providers for that, so it doesn't matter much who. Jitsi run a simple registry at  http://jit.si&lt;br /&gt;
: All quite interesting possiblies and the development is quite active -- but is it there yet? I'm not sure, probably a not far away &amp;quot;almost&amp;quot;; if so, perhaps we could run the bridge on Adhoc for a few days (can run as an unprivilidged user, needs Java 6, chat &amp;quot;host&amp;quot; user needs shell access to set magic pass word and get the assigned port numbers to plug into their client), or perhaps host it at fsv.cvut.cz? (i.e. locate it at the shortest hop to max number of participants using it) --HB''&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_Community_Sprint_Prague_2013&amp;diff=19178</id>
		<title>Talk:GRASS Community Sprint Prague 2013</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_Community_Sprint_Prague_2013&amp;diff=19178"/>
		<updated>2013-07-15T15:51:20Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Individual Reports */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Participant comments and plans ==&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
=== Joint efforts ===&lt;br /&gt;
&lt;br /&gt;
(see [[GRASS_Community_Sprint_Prague_2013#In_person|here]] for participants' names)&lt;br /&gt;
&lt;br /&gt;
* Creating 3D vector test data (for 3D interpolation) - ES, SG, MN&lt;br /&gt;
* Added [[Image_processing#General_introduction|General introduction]] (based on manual of G7/i.vi by Yann Chemin) - MN, MN, YC&lt;br /&gt;
* Discussions on Bundle Block Adjustments - YC, ST&lt;br /&gt;
* wxGUI refactoring - AP, VP&lt;br /&gt;
* Presentation of state of image processing in GRASS 7 - YC, MN&lt;br /&gt;
* Presentation of state of Temporal GIS Algebra in GRASS 7 - SG, TL&lt;br /&gt;
* ISIS-GRASS bridge port to GRASS7 - YC, VP, ML, MN&lt;br /&gt;
* Discussions on potential integration of Rasdaman software as raster data backend - SG, YC, and Jachym (virtually)&lt;br /&gt;
* Presentation on vector conflation - TF with discussion&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
=== Individual Reports ===&lt;br /&gt;
&lt;br /&gt;
Here the (very incomplete) list of individual efforts:&lt;br /&gt;
&lt;br /&gt;
==== Martin Landa ====&lt;br /&gt;
&lt;br /&gt;
* Community Sprint organization&lt;br /&gt;
* OSGeo4W GRASS 6.4.3RC4 package published&lt;br /&gt;
* Fix {{cmd|v.pack|version=70}} on MS Windows, {{rev|57117}}&lt;br /&gt;
* Fix {{cmd|v.unpack|version=70}} on MS Windows, {{rev|57121}}&lt;br /&gt;
&lt;br /&gt;
==== Markus Neteler ====&lt;br /&gt;
&lt;br /&gt;
* Community Sprint Budget management (available on request)&lt;br /&gt;
* r.wf Addon fixed: {{rev|57075}} and {{rev|57076}}&lt;br /&gt;
* r.ipso Addon fixed: {{rev|57077}}&lt;br /&gt;
* Draft Doxygen'iation of the CDHC [http://grass.osgeo.org/programming7/cdhclib.html library for testing normality &amp;amp; exponentiality]&lt;br /&gt;
* Added [[Image_processing#General_introduction|General introduction]] (based on manual of G7/i.vi by Yann Chemin) - MN, MN, YC&lt;br /&gt;
&lt;br /&gt;
==== Yann Chemin ====&lt;br /&gt;
&lt;br /&gt;
* ISIS-GRASS bridge port to GRASS7 (with Vaclav, Martin and MarkusN)&lt;br /&gt;
  If ISIS (http://isis.astrogeology.usgs.gov) is installed, &lt;br /&gt;
  GRASS will load it in the background,&lt;br /&gt;
  the banner and prompt will change to ISIS-GRASS.&lt;br /&gt;
  Both ISIS and GRASS commands are available at the ISIS-GRASS prompt.&lt;br /&gt;
&lt;br /&gt;
* g.isis3mt exports a ISIS3 template from current location, ported into GRASS 7&lt;br /&gt;
&lt;br /&gt;
* Tested direct access of ISIS3 data into G7, r.in.gdal and r.external both work (tested Mars MOLA and Dawn test_datasets)&lt;br /&gt;
&lt;br /&gt;
* Discussed with Soeren, Vaclav and Jachym about Rasdaman, Voxel lib and Raster handling in Grass 8, we agreed on investigating handling, interfaces and performances.&lt;br /&gt;
&lt;br /&gt;
* Went through the Bundle Block Adjustment files with Stepan&lt;br /&gt;
&lt;br /&gt;
* Worked more on r.crater&lt;br /&gt;
&lt;br /&gt;
==== Margherita Di Leo ====&lt;br /&gt;
&lt;br /&gt;
* r.basin ported to G7 {{rev|57091}}, {{rev|57096}}&lt;br /&gt;
* r.basin html fixed {{rev|57110}}&lt;br /&gt;
&lt;br /&gt;
==== Markus Metz ====&lt;br /&gt;
&lt;br /&gt;
* r.stream.* modules: clean up before moving from addons to trunk {{rev|57151}}, {{rev|57152}}&lt;br /&gt;
* GRASS wiki image processing update (MM, MN, YC)&lt;br /&gt;
&lt;br /&gt;
==== Anne Ghisla aka aghisla ====&lt;br /&gt;
&lt;br /&gt;
* Google Summer of Code live discussions&lt;br /&gt;
* v.krige fixed in G7 {{rev|57146}} and following&lt;br /&gt;
&lt;br /&gt;
==== Sören Gebbert aka huhabla ====&lt;br /&gt;
&lt;br /&gt;
* Google Summer of Code Temporal Algebra presentation and implementation support&lt;br /&gt;
* Discussion of RASDAMAN GRASS integration&lt;br /&gt;
* Discussion and implementation of the new temporal module t.rast.accumulate and the use of a modified version of r.gdd (implemented by Markus Metz) instead of r.mapcalc&lt;br /&gt;
* Writing and updating of many temporal modules manual pages&lt;br /&gt;
&lt;br /&gt;
==== Stepan Turek ====&lt;br /&gt;
&lt;br /&gt;
* Working on Google Summer of Code project &lt;br /&gt;
* Went through the Bundle Block Adjustment files with Yann&lt;br /&gt;
&lt;br /&gt;
== Video-conferencing options ==&lt;br /&gt;
&lt;br /&gt;
Q: is Google Hangouts smartphones only?&lt;br /&gt;
: ''not sure, but I'm pretty sure you can get a web browser plugin for all major desktop OSs''&lt;br /&gt;
&lt;br /&gt;
Q: do you have to be signed up with a Google+ social media account?&lt;br /&gt;
: ''in theory no, but in practice they strongly funnel you that way''&lt;br /&gt;
&lt;br /&gt;
Q:  is Jitsi on a desktop computer compatible with G+?&lt;br /&gt;
: ''at the text chat level, yes. video and voice via Google Talk, reported to work with Voice, not sure about video''&lt;br /&gt;
&lt;br /&gt;
; [http://www.jitsi.org Jitsi]&lt;br /&gt;
: ''It is compatible with GoogleTalk instant messaging (and most other instant messaging including the XMPP RFC like Facebook; Skype is the notable one that it doesn't work with), not sure about GoogleTalk's voice calls, I'd give that a 80% chance of working.&lt;br /&gt;
: An interesting side-project Jisti offers its own work-alike free multi-person video chat for XMPP(Jabber compatibles) which is not limited to 10 people: [https://jitsi.org/Projects/JitsiVideobridge VideoBridge]. Given enough bandwidth and a modern desktop CPU acting as the bridge server, you can have someone in a G+ hangout share their desktop to pass through the other members of the video hangout.&lt;br /&gt;
: Also there's a functional alpha-release Android client.&lt;br /&gt;
: For Jitsi &amp;lt;-&amp;gt; Jitsi video you may need a valid XMPP account. Many (federated in a single grid) providers for that, so it doesn't matter much who. Jitsi run a simple registry at  http://jit.si&lt;br /&gt;
: All quite interesting possiblies and the development is quite active -- but is it there yet? I'm not sure, probably a not far away &amp;quot;almost&amp;quot;; if so, perhaps we could run the bridge on Adhoc for a few days (can run as an unprivilidged user, needs Java 6, chat &amp;quot;host&amp;quot; user needs shell access to set magic pass word and get the assigned port numbers to plug into their client), or perhaps host it at fsv.cvut.cz? (i.e. locate it at the shortest hop to max number of participants using it) --HB''&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Prague_2013&amp;diff=19079</id>
		<title>GRASS Community Sprint Prague 2013</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Prague_2013&amp;diff=19079"/>
		<updated>2013-07-03T09:23:12Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* In person */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{toc|right}}&lt;br /&gt;
The GRASS GIS [[team]] will organize the '''4th GRASS Developer and Power User Meeting, aka 'GRASS GIS Community Sprint'''' from '''July 12 to July 18, 2013'''. The sprint is following the [http://geoinformatics.fsv.cvut.cz/gwiki/Geoinformatics_FCE_CTU_2013 Geoinformatics conference], 11-12 July 2013, Czech Technical University in {{wikipedia|Prague}}, {{wikipedia|Czech Republic}}.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
[[Image:community_sprint_prague2012.png|center|640px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
Our logo &amp;amp;mdash; Let's call the dog [http://books.google.com/books?id=sfQuAAAAIAAJ Dashenka]&lt;br /&gt;
&lt;br /&gt;
'''[http://grass.osgeo.org/announces/community_sprint_prague2012.html Press release]'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Important dates:'''&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;11 (Thursday) - 12 (Friday) July 2013: [http://geoinformatics.fsv.cvut.cz/gwiki/Geoinformatics_FCE_CTU_2013 Geoinformatics conference]&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''12 (Friday) - 18 (Thursday) July 2013: GRASS GIS Community Sprint''' @ [http://www.fsv.cvut.cz/ FCE CTU]&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
This fourth edition of the GRASS GIS Community Sprint 2013 is a great occasion for folks to support the development by actively contributing to the source code, manuals or likewise. The '''community''' sprint is a get-together for GRASS project members and supporters and related [http://www.osgeo.org OSGeo] projects to make decisions and tackle larger problems. 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.&lt;br /&gt;
&lt;br /&gt;
For this meeting, we welcome people committed to improving the GRASS GIS and related projects. This includes developers, document writers, wish and bug reporters, translators etc.&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
We welcome '''financial contributions''' to support the meeting and we are looking for sponsors to cover costs such as meals or 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;
For 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 fourth 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. 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;
We are grateful for the support which we have received to organize this GRASS Community Sprint:&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* remainder from the 2012 edition of the Community Sprint and small donations (via [http://www.gfoss.it/ GFOSS.it], the Italian OSGeo chapter) - 1400 Euro &lt;br /&gt;
* [http://www.osgeo.org/ Open Source Geospatial Foundation] (OSGeo) - 1000 Euro&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Timing  ==&lt;br /&gt;
&lt;br /&gt;
'''When''': 12-18 July, 2013&lt;br /&gt;
&lt;br /&gt;
Of course you are invited to join or leave the community sprint whenever you want.&lt;br /&gt;
&lt;br /&gt;
'''Duration''': tbd&lt;br /&gt;
&lt;br /&gt;
* Friday (12. July) is day of arrival&lt;br /&gt;
** First meeting in the afternoon (after the [http://geoinformatics.fsv.cvut.cz/gwiki/Geoinformatics_FCE_CTU_2013 Geoinformatics conference]) to define the agenda&lt;br /&gt;
* Saturday to Wednesday&lt;br /&gt;
** Full days&lt;br /&gt;
* Thursday (18. July) is day of departure&lt;br /&gt;
** Probably hacking for people with a flight later in the evening&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
[[Image:logo_cvut.jpg|130px|left]]&lt;br /&gt;
Department of Mapping and Cartography&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.fsv.cvut.cz Faculty of Civil Engineering]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.cvut.cz Czech Technical University in Prague], {{wikipedia|Czech Republic}}&amp;lt;br&amp;gt;&lt;br /&gt;
[http://geoinformatics.fsv.cvut.cz/gwiki/Room_B367 Room B367] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[http://geoinformatics.fsv.cvut.cz/gwiki/Where_you_can_find_us Location &amp;amp; Transportations]'''&lt;br /&gt;
&lt;br /&gt;
Prague has an international [http://www.prg.aero/en/ airport] and is also reachable by train, bus or car.&lt;br /&gt;
&lt;br /&gt;
== Accommodation and Costs ==&lt;br /&gt;
&lt;br /&gt;
Participants should plan for the following costs:&lt;br /&gt;
&lt;br /&gt;
* The participation is free of charge&lt;br /&gt;
* Travel to Prague, variable depending on where you come from&lt;br /&gt;
* Accommodation and meals (with the donated sponsorship money we will try to cover some expenses of the participants)&lt;br /&gt;
'''Please note''': The currency in Czech Republic is {{wikipedia|Czech crown}} (CZK, koruna, Kč). 100 Czech crowns are about 4 Euros (see [http://www.cnb.cz/en/financial_markets/foreign_exchange_market/exchange_rate_fixing/daily.jsp current rates]).&lt;br /&gt;
&lt;br /&gt;
'''[http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague Accommodation in Prague]'''&lt;br /&gt;
&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Masarykova_Kolej_Hotel Masarykova Kolej Hotel]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_DAP Hotel DAP]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_Krystal Hotel Krystal]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Pension_Hanspaulka Pension Hanspaulka]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_Silenzio Hotel Silenzio]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Student_hostels_.28CTU.29 Student hostels (CTU)]&lt;br /&gt;
:* Special offer: ''sleeping for free in the kindergarten'' (30min by city urban mass transportation from the university campus, sleeping bag required, kitchen and WC available, no showers, in working days available only from 8 p.m. to 8 a.m.), contact [[User:Landa|Martin Landa]] for details&lt;br /&gt;
:* See also http://www.hotel.cz/praha-6/accommodation/&lt;br /&gt;
&lt;br /&gt;
Please let us know your time of arrival and leaving, so we can book for the accommodations and organize the logistics.&lt;br /&gt;
&lt;br /&gt;
Financial support: (partial) travel grants can be payed upon request thanks to our sponsors!&lt;br /&gt;
&lt;br /&gt;
== Weather and Common Item Prices ==&lt;br /&gt;
&lt;br /&gt;
* In July the weather in Prague is usually warm ([http://www.prague-spot.com/climate 20 or more degrees by day])&lt;br /&gt;
* A espresso coffee is about 25 CZK (1 euro), a beer (half of liter) in a common pub is around 30 CZK (1 euro 20 cents), can be more in special pubs. In Prague you can have a full meal (see {{wikipedia|Czech cuisine}} for details) for 100 - 150 CZK (4 - 6 euros), but beware of tourist restaurants, the price can easily rise. It's quite easy to find in Prague also Italian or Chinese restaurants.&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.&lt;br /&gt;
&lt;br /&gt;
Further details about the action items you '''find [[Talk:GRASS Community Sprint Prague 2013|here]]''' and below. Topics cover non-technical, semi-technical, and technical issues.&lt;br /&gt;
&lt;br /&gt;
=== Timeline ===&lt;br /&gt;
&lt;br /&gt;
==== Friday, 12 July ====&lt;br /&gt;
* ''(time to be defined)'': Kick-off in the Faculty of Civil Engineering, building B, room 367 (3rd floor, [http://geoinformatics.fsv.cvut.cz/gwiki/Where_you_can_find_us map])&lt;br /&gt;
* Participants presentation&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.budvarkadejvice.cz Budvarka] near the university, see the [http://www.openstreetmap.org/?mlat=50.09824&amp;amp;mlon=14.3962&amp;amp;zoom=15&amp;amp;layers=M map]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Saturday, 13 July ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
&amp;lt;!--* 20:00: Dinner at restaurant [http://www.restaurant-uglaubicu.cz/ U Glaubiců] in the city center, see the [http://www.openstreetmap.org/?mlat=50.0876&amp;amp;mlon=14.4035&amp;amp;zoom=16&amp;amp;layers=M map]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Sunday, 14 July ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
&amp;lt;!--* 20:00: Dinner at restaurant [http://www.hlucna-samota.cz/ Hlučná samota], see the [http://www.openstreetmap.org/?mlat=50.071600&amp;amp;mlon=14.436300&amp;amp;zoom=18&amp;amp;layers=M map]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Monday, 15 July ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
&amp;lt;!--* 20:00: Dinner at restaurant [http://www.restauraceztratynalezy.estranky.cz/ Ztráty a nálezy], see the [http://www.openstreetmap.org/?mlat=50.07836&amp;amp;mlon=14.43524&amp;amp;zoom=16&amp;amp;layers=M map]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Tuesday, 16 July ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
&amp;lt;!--* 19:00: Dinner at restaurant [http://www.uveverky.com U Veverky], see the [http://www.openstreetmap.org/?mlat=50.09909&amp;amp;mlon=14.4022&amp;amp;zoom=16&amp;amp;layers=M map]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Wednesday, 17 July ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* '''30 YEARS OF GRASS GIS''' party!!&lt;br /&gt;
&lt;br /&gt;
==== Thursday, 18 July ====&lt;br /&gt;
&lt;br /&gt;
* Last meeting&lt;br /&gt;
* Farewell and have a good trip home&lt;br /&gt;
&lt;br /&gt;
== Participation ==&lt;br /&gt;
&lt;br /&gt;
We are planning for an attendance of 20 people (i.e., coding places) but of course you are welcome to join us and bring new ideas with you: we'll make more places available. Please add your name here or contact [[User:Landa|Martin Landa]] &amp;lt;tt&amp;gt;&amp;lt;landa.martin at gmail.com&amp;gt;&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
=== In person ===&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|'''Number'''&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:Landa|Martin Landa]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| July 12&lt;br /&gt;
| July 18&lt;br /&gt;
| Toolbox concept, vector engine in GRASS 7, wxGUI, PostGIS Topology support, 3D topology&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
| [[User:Neteler|Markus Neteler]]&lt;br /&gt;
| Italy&lt;br /&gt;
| July 12&lt;br /&gt;
| July 19&lt;br /&gt;
| Preparation of GRASS 7.0 release, automated unit testing on grass.osgeo.org&lt;br /&gt;
| M&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
| [[User:Helena|Helena Mitasova]]&lt;br /&gt;
| USA&lt;br /&gt;
| July 16 pm&lt;br /&gt;
| July 18&lt;br /&gt;
| Data exchange, metadata, GRASS7 data sets, temporal data&lt;br /&gt;
| M&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
| [[User:benducke|Benjamin Ducke]]&lt;br /&gt;
| Germany&lt;br /&gt;
| July 15 (+/- 1)&lt;br /&gt;
| July 18 (+/- 1)&lt;br /&gt;
| 3D interpolation in GRASS 7 (GSoC), misc.&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
| [[User:ychemin|Yann Chemin]]&lt;br /&gt;
| France&lt;br /&gt;
| July 11 at 15.00&lt;br /&gt;
| July 16 at 09.55&lt;br /&gt;
| image processing, planetary integration&lt;br /&gt;
| XXL&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
| [[User:huhabla|Sören Gebbert]]&lt;br /&gt;
| Germany&lt;br /&gt;
| July 12&lt;br /&gt;
| July 18 (am)&lt;br /&gt;
| GRASS GIS Temporal Framework, Temporal GIS Algebra, WPS, visualization and animation of spatio-temporal data&lt;br /&gt;
| XL&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
| [[User:annakrat|Anna Petrasova]]&lt;br /&gt;
| Czech Republic&lt;br /&gt;
| July 11&lt;br /&gt;
| July 18&lt;br /&gt;
| wxGUI (toolboxes, refactoring, wxNviz, animations)&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
| [[User:wenzeslaus|Vaclav Petras]]&lt;br /&gt;
| Czech Republic&lt;br /&gt;
| July 11&lt;br /&gt;
| July 18&lt;br /&gt;
| wxGUI (toolboxes, refactoring), Programmer's manual Doxygen issues&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
| [[User:turek|Štěpán Turek]]&lt;br /&gt;
| Czech Republic&lt;br /&gt;
| July 11&lt;br /&gt;
| July 18&lt;br /&gt;
| Scatter Plot, Bundle Adjustment, Turns in vnet.*&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
| [[User:mmetz|Markus Metz]]&lt;br /&gt;
| Italy&lt;br /&gt;
| July 12&lt;br /&gt;
| July 18&lt;br /&gt;
| vector engine in GRASS 7, image processing, orthorectification&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
| [[User:mastho|Thomas Leppelt]]&lt;br /&gt;
| Germany&lt;br /&gt;
| July 12&lt;br /&gt;
| July 18 (am)&lt;br /&gt;
| Temporal GIS Algebra&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|12&lt;br /&gt;
| [[User:Tereza|Tereza Fiedlerová]]&lt;br /&gt;
| Czech Republic&lt;br /&gt;
| July 11&lt;br /&gt;
| July 18&lt;br /&gt;
| vector-to-vector conflation&lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|13&lt;br /&gt;
| [[User:Eva|Eva Stopková]]&lt;br /&gt;
| Slovak Republic&lt;br /&gt;
| July 11&lt;br /&gt;
| July 18&lt;br /&gt;
| 3D kriging, 3D Nearest Neighbour Analysis&lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|14&lt;br /&gt;
| [[User:Madi|Margherita Di Leo]]&lt;br /&gt;
| Italy&lt;br /&gt;
| July 12&lt;br /&gt;
| July 14&lt;br /&gt;
| Pest risk analysis, wildfires, hydrology, documentation&lt;br /&gt;
| XL&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|15&lt;br /&gt;
|[[User:MilenaN|Milena Nowotarska]]&lt;br /&gt;
|Poland&lt;br /&gt;
|July 14&lt;br /&gt;
|July 18&lt;br /&gt;
|translation, wxGUI&lt;br /&gt;
|S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|16&lt;br /&gt;
| ''and you ...''&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 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's limited to 10 people and may require everyone to have G+ social media accounts to participate. (?)&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.&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;
* [http://www.google.com/+/learnmore/hangouts/ Information on G+ hangout]&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;
* [[User:Landa|Martin Landa]], [http://www.timeanddate.com/worldclock/city.html?n=204 timezone]. Gmail is &amp;lt;landa.martin@&amp;gt; expanded &lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
==== Timing of hangout meetings ====&lt;br /&gt;
&lt;br /&gt;
* Date, time: [http://doodle.com/f2qfqixqeqkkmskh doodle-poll]&lt;br /&gt;
&lt;br /&gt;
=== Collaborative document scratching ===&lt;br /&gt;
&lt;br /&gt;
(Power) users from all over the world are kindly invited to assist with testing of new and existing functionality. To collect results and notes, we set up an interactive, collaborative editing tool (an Etherpad instance) which works in real-time:&lt;br /&gt;
&lt;br /&gt;
Please check http://titanpad.com/grass-sprint-july2013&lt;br /&gt;
: (example from last time: http://titanpad.com/I51nq1SrNc)&lt;br /&gt;
&amp;lt;!-- note: to make a new etherpad with a named url just type in the url you want! --&amp;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 (Czech Republic: 230V, 50Hz, {{wikipedia|File:Euro-Flachstecker_2.jpg|Type C Europlugs}} are common and also {{wikipedia|File:French_plug_and_socket.jpg|Type E}})&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;
During the event :)&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
Also during the event :)&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 Genova 2013]]!&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:Landa|Martin Landa]] &amp;lt;tt&amp;gt;&amp;lt;landa.martin at gmail.com&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Press Release ==&lt;br /&gt;
&lt;br /&gt;
''(to be done)''&lt;br /&gt;
&amp;lt;!--http://grass.osgeo.org/announces/community_sprint_prague2012.html--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Workshops]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Prague_2013&amp;diff=18782</id>
		<title>GRASS Community Sprint Prague 2013</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Prague_2013&amp;diff=18782"/>
		<updated>2013-05-30T06:53:54Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* In person */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{toc|right}}&lt;br /&gt;
The GRASS GIS [[team]] will organize the '''4th GRASS Developer and Power User Meeting, aka 'GRASS GIS Community Sprint'''' from '''July 12 to July 18, 2013'''. The sprint is following the [http://geoinformatics.fsv.cvut.cz/gwiki/Geoinformatics_FCE_CTU_2013 Geoinformatics conference], 11-12 July 2013, Czech Technical University in {{wikipedia|Prague}}, {{wikipedia|Czech Republic}}.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
[[Image:community_sprint_prague2012.png|center|640px]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
Our logo &amp;amp;mdash; Let's call the dog [http://books.google.com/books?id=sfQuAAAAIAAJ Dashenka]&lt;br /&gt;
&lt;br /&gt;
'''[http://grass.osgeo.org/announces/community_sprint_prague2012.html Press release]'''&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Important dates:'''&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;font color=&amp;quot;grey&amp;quot;&amp;gt;11 (Thusday) - 12 (Friday) July 2013: [http://geoinformatics.fsv.cvut.cz/gwiki/Geoinformatics_FCE_CTU_2013 Geoinformatics conference]&amp;lt;/font&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* '''12 (Friday) - 18 (Thusday) July 2013: GRASS GIS Community Sprint''' @ [http://www.fsv.cvut.cz/ FCE CTU]&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
This fourth edition of the GRASS GIS Community Sprint 2013 is a great occasion for folks to support the development by actively contributing to the source code, manuals or likewise. The '''community''' sprint is a get-together for GRASS project members and supporters and related [http://www.osgeo.org OSGeo] projects to make decisions and tackle larger problems. 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.&lt;br /&gt;
&lt;br /&gt;
For this meeting, we welcome people committed to improving the GRASS GIS and related projects. This includes developers, document writers, wish and bug reporters, translators etc.&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
We welcome '''financial contributions''' to support the meeting and we are looking for sponsors to cover costs such as meals or 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;
For 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 fourth 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. 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;
We are grateful for the support which we have received to organize this GRASS Community Sprint:&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* remainder from the 2012 edition of the Community Sprint and small donations (via [http://www.gfoss.it/ GFOSS.it], the Italian OSGeo chapter) - 1400 Euro &lt;br /&gt;
* [http://www.osgeo.org/ Open Source Geospatial Foundation] (OSGeo) - 1000 Euro&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Timing  ==&lt;br /&gt;
&lt;br /&gt;
'''When''': 12-18 July, 2013&lt;br /&gt;
&lt;br /&gt;
Of course you are invited to join or leave the community sprint whenever you want.&lt;br /&gt;
&lt;br /&gt;
'''Duration''': tbd&lt;br /&gt;
&lt;br /&gt;
* Friday (12. July) is day of arrival&lt;br /&gt;
** First meeting in the afternoon (after the [http://geoinformatics.fsv.cvut.cz/gwiki/Geoinformatics_FCE_CTU_2013 Geoinformatics conference]) to define the agenda&lt;br /&gt;
* Saturday to Wednesday&lt;br /&gt;
** Full days&lt;br /&gt;
* Thursday (18. July) is day of departure&lt;br /&gt;
** Probably hacking for people with a flight later in the evening&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
[[Image:logo_cvut.jpg|130px|left]]&lt;br /&gt;
Department of Mapping and Cartography&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.fsv.cvut.cz Faculty of Civil Engineering]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.cvut.cz Czech Technical University in Prague], {{wikipedia|Czech Republic}}&amp;lt;br&amp;gt;&lt;br /&gt;
[http://geoinformatics.fsv.cvut.cz/gwiki/Room_B367 Room B367] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[http://geoinformatics.fsv.cvut.cz/gwiki/Where_you_can_find_us Location &amp;amp; Transportations]'''&lt;br /&gt;
&lt;br /&gt;
Prague has an international [http://www.prg.aero/en/ airport] and is also reachable by train, bus or car.&lt;br /&gt;
&lt;br /&gt;
== Accommodation and Costs ==&lt;br /&gt;
&lt;br /&gt;
Participants should plan for the following costs:&lt;br /&gt;
&lt;br /&gt;
* The participation is free of charge&lt;br /&gt;
* Travel to Prague, variable depending on where you come from&lt;br /&gt;
* Accommodation and meals (with the donated sponsorship money we will try to cover some expenses of the participants)&lt;br /&gt;
'''Please note''': The currency in Czech Republic is {{wikipedia|Czech crown}} (CZK, koruna, Kč). 100 Czech crowns are about 4 Euros (see [http://www.cnb.cz/en/financial_markets/foreign_exchange_market/exchange_rate_fixing/daily.jsp current rates]).&lt;br /&gt;
&lt;br /&gt;
'''[http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague Accommodation in Prague]'''&lt;br /&gt;
&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Masarykova_Kolej_Hotel Masarykova Kolej Hotel]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_DAP Hotel DAP]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_Krystal Hotel Krystal]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Pension_Hanspaulka Pension Hanspaulka]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_Silenzio Hotel Silenzio]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Student_hostels_.28CTU.29 Student hostels (CTU)]&lt;br /&gt;
:* Special offer: ''sleeping for free in the kindergarten'' (30min by city urban mass transportation from the university campus, sleeping bag required, kitchen and WC available, no showers, in working days available only from 8 p.m. to 8 a.m.), contact [[User:Landa|Martin Landa]] for details&lt;br /&gt;
:* See also http://www.hotel.cz/praha-6/accommodation/&lt;br /&gt;
&lt;br /&gt;
Please let us know your time of arrival and leaving, so we can book for the accommodations and organize the logistics.&lt;br /&gt;
&lt;br /&gt;
Financial support: (partial) travel grants can be payed upon request thanks to our sponsors!&lt;br /&gt;
&lt;br /&gt;
== Weather and Common Item Prices ==&lt;br /&gt;
&lt;br /&gt;
* In July the weather in Prague is usually warm ([http://www.prague-spot.com/climate 20 or more degrees by day])&lt;br /&gt;
* A espresso coffee is about 25 CZK (1 euro), a beer (half of liter) in a common pub is around 30 CZK (1 euro 20 cents), can be more in special pubs. In Prague you can have a full meal (see {{wikipedia|Czech cuisine}} for details) for 100 - 150 CZK (4 - 6 euros), but beware of tourist restaurants, the price can easily rise. It's quite easy to find in Prague also Italian or Chinese restaurants.&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.&lt;br /&gt;
&lt;br /&gt;
Further details about the action items you '''find [[Talk:GRASS Community Sprint Prague 2013|here]]''' and below. Topics cover non-technical, semi-technical, and technical issues.&lt;br /&gt;
&lt;br /&gt;
=== Timeline ===&lt;br /&gt;
&lt;br /&gt;
==== Friday, 12 July ====&lt;br /&gt;
* ''(time to be defined)'': Kick-off in the Faculty of Civil Engineering, building B, room 367 (3rd floor, [http://geoinformatics.fsv.cvut.cz/gwiki/Where_you_can_find_us map])&lt;br /&gt;
* Participants presentation&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.budvarkadejvice.cz Budvarka] near the university, see the [http://www.openstreetmap.org/?mlat=50.09824&amp;amp;mlon=14.3962&amp;amp;zoom=15&amp;amp;layers=M map]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Saturday, 13 July ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
&amp;lt;!--* 20:00: Dinner at restaurant [http://www.restaurant-uglaubicu.cz/ U Glaubiců] in the city center, see the [http://www.openstreetmap.org/?mlat=50.0876&amp;amp;mlon=14.4035&amp;amp;zoom=16&amp;amp;layers=M map]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Sunday, 14 July ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
&amp;lt;!--* 20:00: Dinner at restaurant [http://www.hlucna-samota.cz/ Hlučná samota], see the [http://www.openstreetmap.org/?mlat=50.071600&amp;amp;mlon=14.436300&amp;amp;zoom=18&amp;amp;layers=M map]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Monday, 15 July ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
&amp;lt;!--* 20:00: Dinner at restaurant [http://www.restauraceztratynalezy.estranky.cz/ Ztráty a nálezy], see the [http://www.openstreetmap.org/?mlat=50.07836&amp;amp;mlon=14.43524&amp;amp;zoom=16&amp;amp;layers=M map]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Tuesday, 16 July ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
&amp;lt;!--* 19:00: Dinner at restaurant [http://www.uveverky.com U Veverky], see the [http://www.openstreetmap.org/?mlat=50.09909&amp;amp;mlon=14.4022&amp;amp;zoom=16&amp;amp;layers=M map]--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Wednesday, 17 July ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* '''30 YEARS OF GRASS GIS''' party!!&lt;br /&gt;
&lt;br /&gt;
==== Thursday, 18 July ====&lt;br /&gt;
&lt;br /&gt;
* Last meeting&lt;br /&gt;
* Farewell and have a good trip home&lt;br /&gt;
&lt;br /&gt;
== Participation ==&lt;br /&gt;
&lt;br /&gt;
We are planning for an attendance of 20 people (i.e., coding places) but of course you are welcome to join us and bring new ideas with you: we'll make more places available. Please add your name here or contact [[User:Landa|Martin Landa]] &amp;lt;tt&amp;gt;&amp;lt;landa.martin at gmail.com&amp;gt;&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
=== In person ===&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|'''Number'''&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:Landa|Martin Landa]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| July 12&lt;br /&gt;
| July 18&lt;br /&gt;
| Toolbox concept, vector engine in GRASS 7, wxGUI, PostGIS Topology support, 3D topology&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
| [[User:Neteler|Markus Neteler]]&lt;br /&gt;
| Italy&lt;br /&gt;
| July 12&lt;br /&gt;
| July 18&lt;br /&gt;
| Varia&lt;br /&gt;
| M&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
| [[User:Helena|Helena Mitasova]]&lt;br /&gt;
| USA&lt;br /&gt;
| July 16 pm&lt;br /&gt;
| July 18&lt;br /&gt;
| Data exchange, metadata, GRASS7 data sets, temporal data&lt;br /&gt;
| M&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
| [[User:benducke|Benjamin Ducke]]&lt;br /&gt;
| Germany&lt;br /&gt;
| July 15 (+/- 1)&lt;br /&gt;
| July 18 (+/- 1)&lt;br /&gt;
| 3D interpolation in GRASS 7 (GSoC), misc.&lt;br /&gt;
| M&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
| [[User:ychemin|Yann Chemin]]&lt;br /&gt;
| France&lt;br /&gt;
| July 11 (+/- 1)&lt;br /&gt;
| July 16 (pm)&lt;br /&gt;
| image processing, planetary integration&lt;br /&gt;
| XXL&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
| [[User:huhabla|Sören Gebbert]]&lt;br /&gt;
| Germany&lt;br /&gt;
| July 12&lt;br /&gt;
| July 16 (pm)&lt;br /&gt;
| GRASS GIS Temporal Framework, Temporal GIS Algebra, WPS, visualization and animation of spatio-temporal data&lt;br /&gt;
| XL&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
| and you ...&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 or hangout===&lt;br /&gt;
&lt;br /&gt;
: [irc://freenode/grass #grass] on Freenode&lt;br /&gt;
: [http://www.google.com/+/learnmore/hangouts/ G+ hangout]&lt;br /&gt;
:: (to be investigated; smartphones only? (''not sure, but I don't think so'')&lt;br /&gt;
:: do you have to be signed up with a Google+ social media account?&lt;br /&gt;
::  is Jitsi on a desktop computer compatible? --''not sure, but Jisti offers its own work-alike free multi-person video chat for XMPP(Jabber compatibles) which is not limited to 10 people: [https://jitsi.org/Projects/JitsiVideobridge VideoBridge]'')&lt;br /&gt;
&lt;br /&gt;
For details, see [[IRC]]&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;
* [[User:Landa|Martin Landa]], [http://www.timeanddate.com/worldclock/city.html?n=204 timezone]. Gmail is &amp;lt;landa.martin@&amp;gt; expanded &lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
'''Timing of hangout meetings:'''&lt;br /&gt;
&lt;br /&gt;
* Date, time: [http://doodle.com/f2qfqixqeqkkmskh doodle-poll]&lt;br /&gt;
&lt;br /&gt;
=== Collaborative document scratching ===&lt;br /&gt;
&lt;br /&gt;
(Power) users from all over the world are kindly invited to assist with testing of new and existing functionality. To collect results and notes, we set up an interactive, collaborative editing tool which works in real-time:&lt;br /&gt;
&lt;br /&gt;
Please check http://titanpad.com/I51nq1SrNc&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 (Czech Republic: 230V, 50Hz, {{wikipedia|File:Euro-Flachstecker_2.jpg|Type C Europlugs}} are common and also {{wikipedia|File:French_plug_and_socket.jpg|Type E}})&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;
During the event :)&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
Also during the event :)&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 Genova 2013]]!&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:Landa|Martin Landa]] &amp;lt;tt&amp;gt;&amp;lt;landa.martin at gmail.com&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Press Release ==&lt;br /&gt;
&lt;br /&gt;
''(to be done)''&lt;br /&gt;
&amp;lt;!--http://grass.osgeo.org/announces/community_sprint_prague2012.html--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Workshops]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Compile_and_Install_Ubuntu&amp;diff=18524</id>
		<title>Compile and Install Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Compile_and_Install_Ubuntu&amp;diff=18524"/>
		<updated>2013-05-10T15:54:41Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Current stable Ubuntu version */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;boilerplate metadata&amp;quot; id=&amp;quot;attention&amp;quot; style=&amp;quot;-moz-border-radius:30px; border: 1px double #35824B; margin-bottom: 1.5em; padding: 1em; background-color: #f9f9f9;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-size: 150%; text-align: left;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:#35824B&amp;quot;&amp;gt;'''Attention'''&amp;lt;/span&amp;gt;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&amp;lt;span style=&amp;quot;color:#333333&amp;quot;&amp;gt;'''The following instructions describe the compilation and installation of GRASS 6.x (or even 7) and its required dependencies completely from the source on Ubuntu based systems. Please, prefer pre-compiled packages over the manual way described below unless you know ''what'' and ''how'', you want to learn and help testing.'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Very Important notes ==&lt;br /&gt;
&lt;br /&gt;
* Pre-compiled packages and backports are available from [https://wiki.ubuntu.com/UbuntuGIS UbuntuGIS] via their [https://launchpad.net/~ubuntugis/+archive/ppa/ ppa.launchpad] repositories. '''This is by far the simplest and fastest solution. Please prefer it over the manual way described below.'''&lt;br /&gt;
&lt;br /&gt;
* To build an updated version of GRASS or support libraries unmodified, in most cases it will be easier to use an automated build tool such as ''pbuilder'', ''debuild'' or ''cowbuilder''. See the &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;debian/&amp;lt;/source&amp;gt; directory in the source code for details.&lt;br /&gt;
&lt;br /&gt;
* Some things change fast and therefore it is expected that the instructions might fail. Please inform the grass-user list in case something just does not work (like for example non-available dependecies/packages from the repositories) or update this page respectively.&lt;br /&gt;
&lt;br /&gt;
* GRASS version 6.5 exists for development purposes, testing features to-be backported to version 6.4. As such it may include unstable code and is not intended for production and end-users.&lt;br /&gt;
&lt;br /&gt;
* An alternate method is to use the DebianGIS packaging scripts, which enable a lot of this to happen automatically (see [https://svn.osgeo.org/grass/grass/branches/releasebranch_6_4/debian/README.debian debian/README.debian] in the GRASS Subversion source code repository). Specifically, this command will get you 90% of the way there: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo apt-get build-dep grass&amp;lt;/source&amp;gt;&lt;br /&gt;
: ''(you'll need to have the deb-src lines active in your /etc/apt/sources.list file)''&lt;br /&gt;
&lt;br /&gt;
== Hints ==&lt;br /&gt;
&lt;br /&gt;
* Usually, the installation of compiled code is done by using the &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;make&amp;lt;/source&amp;gt; tool. Alternatively, this can be done by using the ''checkinstall'' tool (i.e., &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;sudo checkinstall&amp;lt;/source&amp;gt;  instead of  &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;sudo make install&amp;lt;/source&amp;gt;) which eases off removal of packages. If ''checkinstall'' fails to deliver, please note some related bugs: [https://bugs.launchpad.net/ubuntu/+source/checkinstall/+bug/78455 78455] and [https://bugs.launchpad.net/ubuntu/+source/checkinstall/+bug/599163 599163]. Useful information on using ''checkinstall'': [https://help.ubuntu.com/community/CompilingEasyHowTo Compiling things on Ubuntu the Easy Way].&lt;br /&gt;
&lt;br /&gt;
* In multi-core processors, the compilation performance can be boosted by using  ''-j''  switches (e.g. &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;make -j2&amp;lt;/source&amp;gt;  or  &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;make -j3&amp;lt;/source&amp;gt;  or even &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;make -j4&amp;lt;/source&amp;gt;) which specify the number of jobs (commands) to run simultaneously.&lt;br /&gt;
&lt;br /&gt;
== Dependencies ==&lt;br /&gt;
&lt;br /&gt;
=== Current stable Ubuntu version ===&lt;br /&gt;
&lt;br /&gt;
The following dependencies concern [http://releases.ubuntu.com/quantal/ Ubuntu Quantal Quetzal (12.10)]&lt;br /&gt;
&lt;br /&gt;
* First, update the system from the repositories&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get update &amp;amp;&amp;amp; sudo apt-get upgrade&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* then, install ''SQLite'', ''SVN'' and ''dependencies'' for compiling PROJ, GEOS, GDAL/OGR, GRASS, GDAL-GRASS-PLUGIN; the following action will also install various dependencies (listed in the command line as &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;The following extra packages will be installed:&amp;lt;/source&amp;gt;...):&amp;lt;br/&amp;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;
# this is a single command, please copy-paste it entirely into the terminal:&lt;br /&gt;
sudo apt-get install \&lt;br /&gt;
  build-essential \&lt;br /&gt;
  flex make bison gcc libgcc1 g++ cmake ccache \&lt;br /&gt;
  python python-dev python-qt4 python-qt4-dev \&lt;br /&gt;
  python-opengl \&lt;br /&gt;
  python-wxversion python-wxtools python-wxgtk2.8 \&lt;br /&gt;
  python-dateutil libgsl0-dev python-numpy \&lt;br /&gt;
  wx2.8-headers wx-common libwxgtk2.8-dev libwxgtk2.8-dbg \&lt;br /&gt;
  libwxbase2.8-dev  libwxbase2.8-dbg \&lt;br /&gt;
  libncurses5-dev \&lt;br /&gt;
  zlib1g-dev gettext \&lt;br /&gt;
  libtiff-dev libpnglite-dev \&lt;br /&gt;
  tcl8.5-dev tk8.5-dev \&lt;br /&gt;
  libcairo2 libcairo2-dev \&lt;br /&gt;
  sqlite3 libsqlite3-dev \&lt;br /&gt;
  libpq-dev \&lt;br /&gt;
  libreadline6 libreadline6-dev libfreetype6-dev \&lt;br /&gt;
  txt2tags \&lt;br /&gt;
  libfftw3-3 libfftw3-dev \&lt;br /&gt;
  libqt4-core libqt4-dbg libqt4-dev libqt4-gui libqt4-sql libqt4-qt3support \&lt;br /&gt;
  lsb-qt4 qt4-designer qt4-dev-tools qt4-doc qt4-qtconfig \&lt;br /&gt;
  libapt-pkg-perl resolvconf \&lt;br /&gt;
  libjasper-dev \&lt;br /&gt;
  ruby \&lt;br /&gt;
  subversion \&lt;br /&gt;
  ffmpeg ffmpeg2theora \&lt;br /&gt;
  libffmpegthumbnailer-dev \&lt;br /&gt;
  libavcodec-dev \&lt;br /&gt;
  libxmu-dev \&lt;br /&gt;
  libavformat-dev libswscale-dev \&lt;br /&gt;
  checkinstall \&lt;br /&gt;
  libglu1-mesa-dev libxmu-dev&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* for mysql support, &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;libmysqlclient-dev&amp;lt;/source&amp;gt; is required &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libmysqlclient-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* for netcdf support, &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;netcdf-bin&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;libnetcdf-dev&amp;lt;/source&amp;gt;  is required &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install netcdf-bin libnetcdf-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* create a directory as a simple user where all source code is going to be stored -- in this example, a directory named &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;src&amp;lt;/source&amp;gt; under &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/usr/local&amp;lt;/source&amp;gt; is created &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo mkdir /usr/local/src&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* take over directories ownerships ('''replace''' below the terms ''userid'' and ''groupid'' with a real &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;userid&amp;lt;/source&amp;gt;): &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo chown userid:groupid /usr/local/src&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* similarly, grant &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;rwx&amp;lt;/source&amp;gt; (read-write-execute) permissions for our ''userid'' and ''groupid'' onto the &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;src&amp;lt;/source&amp;gt; directory: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod ug+rwx /usr/local/src&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Earlier Ubuntu versions ===&lt;br /&gt;
&lt;br /&gt;
For [http://old-releases.ubuntu.com/releases/ earlier Ubuntu versions], '''watch out for dependency differences!''' Modify the dependency list given above as instructed below.&lt;br /&gt;
&lt;br /&gt;
* for [http://releases.ubuntu.com/precise/ Ubuntu Precise Pangolin (12.04)], change the following dependencies:&lt;br /&gt;
** &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;libpnglite-dev --&amp;gt; libpngwriter-dev&amp;lt;/source&amp;gt;&lt;br /&gt;
** &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;libtiff5-dev --&amp;gt; libtiff4-dev&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* for [http://old-releases.ubuntu.com/releases/maverick/ Ubuntu Maverick Meerkat (10.10)] or later, change the following dependencies:&lt;br /&gt;
** &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;libpngwriter-dev --&amp;gt; libpngwriter0-dev&amp;lt;/source&amp;gt;&lt;br /&gt;
** &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;libcairo-dev --&amp;gt; libcairo2-dev&amp;lt;/source&amp;gt;&lt;br /&gt;
** &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;fftw3 --&amp;gt; libfftw3-3&amp;lt;/source&amp;gt;&lt;br /&gt;
** &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;fftw3-dev --&amp;gt; libfftw3-dev&amp;lt;/source&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
* for [http://old-releases.ubuntu.com/releases/lucid/ Ubuntu Lucid Lynx (10.04)] or later, also install: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo apt-get install libhdf4-alt-dev libhdf4-0-alt&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* for [http://old-releases.ubuntu.com/releases/ earlier Ubuntu versions], also install: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt; sudo apt-get install libhdf4g-dev libhdf4g-run&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using pre-compiled dev Packages for PROJ.4, GEOS and GDAL ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PROJ.4 ===&lt;br /&gt;
&lt;br /&gt;
Install the &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;dev&amp;lt;/source&amp;gt; package (possibly without support for datumgrid):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libproj-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the call to &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;./configure&amp;lt;/source&amp;gt; for [[#GRASS|GRASS]], replace &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;--with-proj-share=/usr/local/share/proj/&amp;lt;/source&amp;gt; by &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;--with-proj-share=/usr/share/proj/&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GEOS ===&lt;br /&gt;
&lt;br /&gt;
Install the &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;dev&amp;lt;/source&amp;gt; package:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libgeos-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the call to &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;./configure&amp;lt;/source&amp;gt; for [[#GRASS|GRASS]], replace &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;--with-geos=/usr/local/bin/geos-config&amp;lt;/source&amp;gt; by &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;--with-geos=/usr/bin/geos-config&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GDAL ===&lt;br /&gt;
&lt;br /&gt;
Install the &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;dev&amp;lt;/source&amp;gt; package (possibly without support for datumgrid):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libgdal-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install also the required extra packages (note the message: &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;The following extra packages will be installed:&amp;lt;/source&amp;gt;)&lt;br /&gt;
* Look out for packages to be removed by this operation -- this is most likely caused by incompatible package versions. Fix these problems in advance using commands like the following: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install &amp;lt;package&amp;gt;=&amp;lt;required.version&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GRASS-GIS ===&lt;br /&gt;
&lt;br /&gt;
[[Compile_and_Install_Ubuntu#GRASS_GIS|Jump to sub-section GRASS-GIS below]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Compile from source ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PROJ4 ===&lt;br /&gt;
&lt;br /&gt;
* within the directory &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/usr/local/src&amp;lt;/source&amp;gt; (create it if it does not exist) checkout &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;proj&amp;lt;/source&amp;gt; from its Subversion repository: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn co http://svn.osgeo.org/metacrs/proj/branches/4.8/proj/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* get [http://download.osgeo.org/proj/proj-datumgrid-1.5.zip '''proj-datumgrid-1.5.zip'''] from [http://trac.osgeo.org/proj proj' trac] and move it under &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;proj/nad&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
wget http://download.osgeo.org/proj/proj-datumgrid-1.5.zip&lt;br /&gt;
mv proj-datumgrid-1.5.zip /usr/local/src/proj/nad&lt;br /&gt;
cd /usr/local/src/proj/nad&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* decompress it &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
unzip proj-datumgrid-1.5.zip&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* go back to the &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;proj&amp;lt;/source&amp;gt; directory &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /usr/local/src/proj&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* if required, clean previous configuration &amp;amp; compilation &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* simple configure, compile and install &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure  &amp;amp;&amp;amp;  make  &amp;amp;&amp;amp;  sudo make install&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt; or &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure &amp;amp;&amp;amp; make -j2  &amp;amp;&amp;amp;  sudo checkinstall&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ensure that &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/usr/local/lib&amp;lt;/source&amp;gt; is added to &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/etc/ld.so.conf&amp;lt;/source&amp;gt; and afterwards run &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ldconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* finally, go back to the parent directory simply by instructing&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd ..&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GEOS ===&lt;br /&gt;
&lt;br /&gt;
* download '''geos-3.3.5.tar.bz2''' from [http://trac.osgeo.org/geos/ http://trac.osgeo.org/geos] using &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;wget&amp;lt;/source&amp;gt; &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
wget http://download.osgeo.org/geos/geos-3.3.5.tar.bz2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* move to the &amp;quot;source-code&amp;quot; directory and decompress&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /usr/local/src/&lt;br /&gt;
bunzip2 geos-3.3.5.tar.bz2&lt;br /&gt;
tar xvf  geos-3.3.5.tar&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* if required, clean previous configuration &amp;amp; compilation  &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* move to geos directory  &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd geos-3.3.5&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* simple configure, compile and install &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure  &amp;amp;&amp;amp;  make  &amp;amp;&amp;amp;  sudo make install&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt; or &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure  &amp;amp;&amp;amp; make -j2  &amp;amp;&amp;amp;  sudo checkinstall&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* do not forget to execute &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ldconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GDAL ===&lt;br /&gt;
&lt;br /&gt;
'''Note''', GDAL must be compiled '''without''' GRASS support&lt;br /&gt;
&lt;br /&gt;
* download the current stable version &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn checkout https://svn.osgeo.org/gdal/branches/1.9/gdal gdal_stable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* enter in the &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;gdal_stable&amp;lt;/source&amp;gt; directory &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /usr/local/src/gdal_stable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* optionally, update the source code &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn up&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* if required, clean previous configurations/compilations &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* a simple configuration without any parameters will detect and support various installed libraries &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* skip to the ''compile and install'' step or check the following customised configuration example&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;
CFLAGS=&amp;quot;-g -Wall&amp;quot; LDFLAGS=&amp;quot;-s&amp;quot; ./configure \&lt;br /&gt;
--with-png=internal \&lt;br /&gt;
--with-libtiff=internal \&lt;br /&gt;
--with-geotiff=internal \&lt;br /&gt;
--with-jpeg=internal \&lt;br /&gt;
--with-gif=internal \&lt;br /&gt;
--with-ecw=yes \&lt;br /&gt;
--with-expat=yes \&lt;br /&gt;
--with-sqlite3=yes \&lt;br /&gt;
--with-geos=yes \&lt;br /&gt;
--with-python \&lt;br /&gt;
--with-libz=internal \&lt;br /&gt;
--with-netcdf \&lt;br /&gt;
--with-sqlite \&lt;br /&gt;
--with-threads=yes \&lt;br /&gt;
--without-grass  \&lt;br /&gt;
--without-ogdi \&lt;br /&gt;
--with-pg=/usr/bin/pg_config \&lt;br /&gt;
--with-xerces=yes&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* compile, install &amp;amp; ldconfig &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make -j2  &amp;amp;&amp;amp;  sudo make install  &amp;amp;&amp;amp;  sudo ldconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt; or &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make -j2  &amp;amp;&amp;amp;  sudo checkinstall  &amp;amp;&amp;amp;  sudo ldconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GRASS GIS ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;boilerplate metadata&amp;quot; id=&amp;quot;attention&amp;quot; style=&amp;quot;-moz-border-radius:30px; border: 1px double #4da948; margin-bottom: 1em; padding: 0 .25em; background-color: #dcdcdc;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-size: 125%; text-align: left;&amp;quot;&amp;gt;'''Recommendation'''&amp;amp;nbsp;&amp;lt;/p&amp;gt;Before attempting to compile GRASS, read the  &amp;lt;code&amp;gt;INSTALL&amp;lt;/code&amp;gt;  file, which is located in GRASS' source code root directory. Pay attention especially to  section &amp;lt;code&amp;gt;(C)&amp;lt;/code&amp;gt;, entitled &amp;lt;code&amp;gt;COMPILATION NOTES for 64bit platforms&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' Getting GRASS' source code '''&lt;br /&gt;
&lt;br /&gt;
* get current state of the 6.4.x release branch version (stable) &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn co https://svn.osgeo.org/grass/grass/branches/releasebranch_6_4 grass64_release&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To download under development versions use&lt;br /&gt;
&lt;br /&gt;
* for GRASS 6.5  (Note: ''GRASS version 6.5 is not intended for end-users! It exists for development purposes which should rather take place for GRASS 7.'') &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn checkout https://svn.osgeo.org/grass/grass/branches/develbranch_6 grass6_devel&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* for GRASS 7 &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn checkout https://svn.osgeo.org/grass/grass/trunk grass_trunk&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* for subsequent updates execute &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn up&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' Configure, Compile and Install'''&lt;br /&gt;
&lt;br /&gt;
* if required, clean previous configuration &amp;amp; compilation (not needed the first time) &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* example configuration (which can/should be adjusted according to specific needs):&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;
./configure \&lt;br /&gt;
--enable-largefile=yes \&lt;br /&gt;
--with-nls \&lt;br /&gt;
--with-cxx \&lt;br /&gt;
--with-proj-share=/usr/local/share/proj/ \&lt;br /&gt;
--with-geos=/usr/local/bin/geos-config \&lt;br /&gt;
--with-python=yes \&lt;br /&gt;
--with-wxwidgets \&lt;br /&gt;
--with-cairo \&lt;br /&gt;
--with-tcltk-includes=&amp;quot;/usr/include/tcl8.5/&amp;quot; \&lt;br /&gt;
--with-opengl-libs=/usr/include/GL \&lt;br /&gt;
--with-motif \&lt;br /&gt;
--with-ffmpeg=yes --with-ffmpeg-includes=&amp;quot;/usr/include/libavcodec /usr/include/libavformat /usr/include/libswscale&amp;quot; \&lt;br /&gt;
--with-freetype=yes --with-freetype-includes=&amp;quot;/usr/include/freetype2/&amp;quot; \&lt;br /&gt;
--with-postgres=yes \&lt;br /&gt;
--with-postgresql=yes --with-postgres-includes=&amp;quot;/usr/include/postgresql&amp;quot; \&lt;br /&gt;
--with-sqlite=yes \&lt;br /&gt;
--with-mysql=yes --with-mysql-includes=&amp;quot;/usr/include/mysql&amp;quot; \&lt;br /&gt;
--with-odbc=yes&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
'''Note''', the above configuration uses the &amp;lt;code&amp;gt;Proj4&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;GEOS&amp;lt;/code&amp;gt; packages compiled from the source. In the case that pre-compiled versions from the repository are required, remove the above corresponding lines to use the &amp;quot;defaults&amp;quot;, i.e. &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--with-proj-share=/usr/share/proj \&lt;br /&gt;
--with-geos=/usr/bin/geos-config \&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* compile &amp;amp; install &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make -j2  &amp;amp;&amp;amp;  sudo make install  &amp;amp;&amp;amp;  sudo ldconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt; or &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make -j2  &amp;amp;&amp;amp;  sudo checkinstall  &amp;amp;&amp;amp;  sudo ldconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GDAL-GRASS-Plugin ===&lt;br /&gt;
&lt;br /&gt;
* get the plugin from [http://download.osgeo.org/gdal OSGeo's Download Server]: [http://download.osgeo.org/gdal/gdal-grass-1.4.3.tar.gz http://download.osgeo.org/gdal/gdal-grass-1.4.3.tar.gz] using &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;wget&amp;lt;/source&amp;gt; &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 wget http://download.osgeo.org/gdal/gdal-grass-1.4.3.tar.gz&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* create   &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/etc/ld.so.conf.d/grass6.conf&amp;lt;/source&amp;gt;   or add in   &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/etc/ld.so.conf&amp;lt;/source&amp;gt;   the GRASS library path, i.e. &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/usr/local/src/grass64_release/lib&amp;lt;/source&amp;gt;&lt;br /&gt;
* optionally, clean previous configurations/compilations&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 make distclean&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* configure -- point to GRASS installation/binaries&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt; ./configure \&lt;br /&gt;
 --prefix=/usr/local \&lt;br /&gt;
 --with-gdal=/usr/local/bin/gdal-config \&lt;br /&gt;
 --with-grass=/geo/osgeo/src/grass64_release/dist.x86_64-unknown-linux-gnu/ \&lt;br /&gt;
 --with-autoload=&amp;quot;/usr/local/lib/gdalplugins/&amp;quot; \&lt;br /&gt;
 --with-ld-shared=&amp;quot;g++ -shared&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* for GRASS 6.5, replace the respective line above, depending on where the source code in question is stored, with something like&amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt; --with-grass=/usr/local/grass-6.5.svn/&amp;lt;/source&amp;gt;&lt;br /&gt;
* for GRASS 7, replace with &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt; --with-grass=/usr/local/grass_trunk/&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
* compile &amp;amp; install using checkinstall&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 make -j2  &amp;amp;&amp;amp;  sudo checkinstall&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Post compilation/installation control =&lt;br /&gt;
&lt;br /&gt;
* For a recommended quick-check read the [http://grass.osgeo.org/wiki/Compile_and_install_GRASS_and_QGIS_with_GDAL/OGR_Plugin#Troubleshooting Troubleshooting] section at [http://grass.osgeo.org/wiki/Compile_and_install_GDAL-GRASS_plugin Compile_and_install_GDAL-GRASS_plugin]&lt;br /&gt;
&lt;br /&gt;
* in case of errors in future compilation attempts, remember to remove program binaries and files created with the &amp;quot;configuration&amp;quot; from previous compilations with&lt;br /&gt;
 make distclean&lt;br /&gt;
&lt;br /&gt;
* another common mistake is compiling a module against some GRASS version and then try to run it through another GRASS version. The solution is to recompile the affected module or, in case there are multiple GRASS installations, set up properly LD_LIBRARY_PATH paths.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Removal of GRASS =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To get rid of a GRASS binaries installation, delete&lt;br /&gt;
* &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/usr/local/grass-6.4.0svn&amp;lt;/source&amp;gt; (directory, binaries location)&lt;br /&gt;
* &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/usr/local/bin/grass64&amp;lt;/source&amp;gt; (file)&lt;br /&gt;
* &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/usr/local/bin/gem64&amp;lt;/source&amp;gt; (file)&lt;br /&gt;
* &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/home/username/.grassrc6&amp;lt;/source&amp;gt; (file)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If wanted, delete also the complete source code:&lt;br /&gt;
* &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/usr/local/src/grass_64svn&amp;lt;/source&amp;gt; (directory, source code location)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To remove &amp;lt;code&amp;gt;grass&amp;lt;/code&amp;gt; (or any other package) which was installed by &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;checkinstall&amp;lt;/source&amp;gt;, use &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;dpkg&amp;lt;/source&amp;gt;, e.g.&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo dpkg -r grass64 # package name defined at installation is important&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Packaging of GRASS =&lt;br /&gt;
&lt;br /&gt;
* See the {{src|debian/README.debian}} file in the GRASS source code for directions on rolling your own packages.&lt;br /&gt;
&lt;br /&gt;
For details about the auto-nightly-builds and after-market supplied packages from UbuntuGIS, please refer to the [[Ubuntu Packaging]] wiki page.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Ubuntu Packaging]]&lt;br /&gt;
* [[GRASS in Debian]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Compilation]]&lt;br /&gt;
[[Category: Installation]]&lt;br /&gt;
[[Category: Ubuntu]]&lt;br /&gt;
[[Category: FAQ]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Compile_and_Install_Ubuntu&amp;diff=18523</id>
		<title>Compile and Install Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Compile_and_Install_Ubuntu&amp;diff=18523"/>
		<updated>2013-05-10T15:53:10Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Current stable Ubuntu version */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;boilerplate metadata&amp;quot; id=&amp;quot;attention&amp;quot; style=&amp;quot;-moz-border-radius:30px; border: 1px double #35824B; margin-bottom: 1.5em; padding: 1em; background-color: #f9f9f9;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-size: 150%; text-align: left;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:#35824B&amp;quot;&amp;gt;'''Attention'''&amp;lt;/span&amp;gt;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&amp;lt;span style=&amp;quot;color:#333333&amp;quot;&amp;gt;'''The following instructions describe the compilation and installation of GRASS 6.x (or even 7) and its required dependencies completely from the source on Ubuntu based systems. Please, prefer pre-compiled packages over the manual way described below unless you know ''what'' and ''how'', you want to learn and help testing.'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Very Important notes ==&lt;br /&gt;
&lt;br /&gt;
* Pre-compiled packages and backports are available from [https://wiki.ubuntu.com/UbuntuGIS UbuntuGIS] via their [https://launchpad.net/~ubuntugis/+archive/ppa/ ppa.launchpad] repositories. '''This is by far the simplest and fastest solution. Please prefer it over the manual way described below.'''&lt;br /&gt;
&lt;br /&gt;
* To build an updated version of GRASS or support libraries unmodified, in most cases it will be easier to use an automated build tool such as ''pbuilder'', ''debuild'' or ''cowbuilder''. See the &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;debian/&amp;lt;/source&amp;gt; directory in the source code for details.&lt;br /&gt;
&lt;br /&gt;
* Some things change fast and therefore it is expected that the instructions might fail. Please inform the grass-user list in case something just does not work (like for example non-available dependecies/packages from the repositories) or update this page respectively.&lt;br /&gt;
&lt;br /&gt;
* GRASS version 6.5 exists for development purposes, testing features to-be backported to version 6.4. As such it may include unstable code and is not intended for production and end-users.&lt;br /&gt;
&lt;br /&gt;
* An alternate method is to use the DebianGIS packaging scripts, which enable a lot of this to happen automatically (see [https://svn.osgeo.org/grass/grass/branches/releasebranch_6_4/debian/README.debian debian/README.debian] in the GRASS Subversion source code repository). Specifically, this command will get you 90% of the way there: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo apt-get build-dep grass&amp;lt;/source&amp;gt;&lt;br /&gt;
: ''(you'll need to have the deb-src lines active in your /etc/apt/sources.list file)''&lt;br /&gt;
&lt;br /&gt;
== Hints ==&lt;br /&gt;
&lt;br /&gt;
* Usually, the installation of compiled code is done by using the &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;make&amp;lt;/source&amp;gt; tool. Alternatively, this can be done by using the ''checkinstall'' tool (i.e., &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;sudo checkinstall&amp;lt;/source&amp;gt;  instead of  &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;sudo make install&amp;lt;/source&amp;gt;) which eases off removal of packages. If ''checkinstall'' fails to deliver, please note some related bugs: [https://bugs.launchpad.net/ubuntu/+source/checkinstall/+bug/78455 78455] and [https://bugs.launchpad.net/ubuntu/+source/checkinstall/+bug/599163 599163]. Useful information on using ''checkinstall'': [https://help.ubuntu.com/community/CompilingEasyHowTo Compiling things on Ubuntu the Easy Way].&lt;br /&gt;
&lt;br /&gt;
* In multi-core processors, the compilation performance can be boosted by using  ''-j''  switches (e.g. &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;make -j2&amp;lt;/source&amp;gt;  or  &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;make -j3&amp;lt;/source&amp;gt;  or even &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;make -j4&amp;lt;/source&amp;gt;) which specify the number of jobs (commands) to run simultaneously.&lt;br /&gt;
&lt;br /&gt;
== Dependencies ==&lt;br /&gt;
&lt;br /&gt;
=== Current stable Ubuntu version ===&lt;br /&gt;
&lt;br /&gt;
The following dependencies concern [http://releases.ubuntu.com/quantal/ Ubuntu Quantal Quetzal (12.10)]&lt;br /&gt;
&lt;br /&gt;
* First, update the system from the repositories&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get update &amp;amp;&amp;amp; sudo apt-get upgrade&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* then, install ''SQLite'', ''SVN'' and ''dependencies'' for compiling PROJ, GEOS, GDAL/OGR, GRASS, GDAL-GRASS-PLUGIN; the following action will also install various dependencies (listed in the command line as &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;The following extra packages will be installed:&amp;lt;/source&amp;gt;...):&amp;lt;br/&amp;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;
# this is a single command, please copy-paste it entirely into the terminal:&lt;br /&gt;
sudo apt-get install \&lt;br /&gt;
  build-essential \&lt;br /&gt;
  flex make bison gcc libgcc1 g++ cmake ccache \&lt;br /&gt;
  python python-dev python-qt4 python-qt4-dev \&lt;br /&gt;
  python-opengl \&lt;br /&gt;
  python-wxversion python-wxtools python-wxgtk2.8 \&lt;br /&gt;
  python-dateutil libgsl0-dev python-numpy \&lt;br /&gt;
  wx2.8-headers wx-common libwxgtk2.8-dev libwxgtk2.8-dbg \&lt;br /&gt;
  libwxbase2.8-dev  libwxbase2.8-dbg \&lt;br /&gt;
  libncurses5-dev \&lt;br /&gt;
  zlib1g-dev gettext \&lt;br /&gt;
  libtiff-dev libpnglite-dev \&lt;br /&gt;
  tcl8.5-dev tk8.5-dev \&lt;br /&gt;
  libcairo2 libcairo2-dev \&lt;br /&gt;
  sqlite3 libsqlite3-dev \&lt;br /&gt;
  libpq-dev \&lt;br /&gt;
  libreadline6 libreadline6-dev libfreetype6-dev \&lt;br /&gt;
  txt2tags \&lt;br /&gt;
  libfftw3-3 libfftw3-dev \&lt;br /&gt;
  libqt4-core libqt4-dbg libqt4-dev libqt4-gui libqt4-sql libqt4-qt3support \&lt;br /&gt;
  lsb-qt4 qt4-designer qt4-dev-tools qt4-doc qt4-qtconfig \&lt;br /&gt;
  libapt-pkg-perl resolvconf \&lt;br /&gt;
  libjasper-dev \&lt;br /&gt;
  ruby \&lt;br /&gt;
  subversion \&lt;br /&gt;
  ffmpeg ffmpeg2theora \&lt;br /&gt;
  libffmpegthumbnailer-dev \&lt;br /&gt;
  libavcodec-dev \&lt;br /&gt;
  libxmu-dev \&lt;br /&gt;
  libavformat-dev libswscale-dev \&lt;br /&gt;
  checkinstall \&lt;br /&gt;
  libglu1-mesa-dev libxmu-dev&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* for mysql support, &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;libmysqlclient-dev&amp;lt;/source&amp;gt; is required &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libmysqlclient-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* for netcdf support, &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;netcdf-bin&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;libnetcdf-dev&amp;lt;/source&amp;gt;  is required &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install netcdf-bin libnetcdf-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In case the compilation of gdal and proj4 is not required, install the following packages &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libproj-dev gdal-bin libgdal-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
  &lt;br /&gt;
* create a directory as a simple user where all source code is going to be stored -- in this example, a directory named &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;src&amp;lt;/source&amp;gt; under &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/usr/local&amp;lt;/source&amp;gt; is created &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo mkdir /usr/local/src&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* take over directories ownerships ('''replace''' below the terms ''userid'' and ''groupid'' with a real &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;userid&amp;lt;/source&amp;gt;): &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo chown userid:groupid /usr/local/src&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* similarly, grant &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;rwx&amp;lt;/source&amp;gt; (read-write-execute) permissions for our ''userid'' and ''groupid'' onto the &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;src&amp;lt;/source&amp;gt; directory: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod ug+rwx /usr/local/src&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Earlier Ubuntu versions ===&lt;br /&gt;
&lt;br /&gt;
For [http://old-releases.ubuntu.com/releases/ earlier Ubuntu versions], '''watch out for dependency differences!''' Modify the dependency list given above as instructed below.&lt;br /&gt;
&lt;br /&gt;
* for [http://releases.ubuntu.com/precise/ Ubuntu Precise Pangolin (12.04)], change the following dependencies:&lt;br /&gt;
** &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;libpnglite-dev --&amp;gt; libpngwriter-dev&amp;lt;/source&amp;gt;&lt;br /&gt;
** &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;libtiff5-dev --&amp;gt; libtiff4-dev&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* for [http://old-releases.ubuntu.com/releases/maverick/ Ubuntu Maverick Meerkat (10.10)] or later, change the following dependencies:&lt;br /&gt;
** &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;libpngwriter-dev --&amp;gt; libpngwriter0-dev&amp;lt;/source&amp;gt;&lt;br /&gt;
** &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;libcairo-dev --&amp;gt; libcairo2-dev&amp;lt;/source&amp;gt;&lt;br /&gt;
** &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;fftw3 --&amp;gt; libfftw3-3&amp;lt;/source&amp;gt;&lt;br /&gt;
** &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;fftw3-dev --&amp;gt; libfftw3-dev&amp;lt;/source&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
* for [http://old-releases.ubuntu.com/releases/lucid/ Ubuntu Lucid Lynx (10.04)] or later, also install: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo apt-get install libhdf4-alt-dev libhdf4-0-alt&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* for [http://old-releases.ubuntu.com/releases/ earlier Ubuntu versions], also install: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt; sudo apt-get install libhdf4g-dev libhdf4g-run&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using pre-compiled dev Packages for PROJ.4, GEOS and GDAL ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PROJ.4 ===&lt;br /&gt;
&lt;br /&gt;
Install the &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;dev&amp;lt;/source&amp;gt; package (possibly without support for datumgrid):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libproj-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the call to &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;./configure&amp;lt;/source&amp;gt; for [[#GRASS|GRASS]], replace &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;--with-proj-share=/usr/local/share/proj/&amp;lt;/source&amp;gt; by &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;--with-proj-share=/usr/share/proj/&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GEOS ===&lt;br /&gt;
&lt;br /&gt;
Install the &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;dev&amp;lt;/source&amp;gt; package:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libgeos-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the call to &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;./configure&amp;lt;/source&amp;gt; for [[#GRASS|GRASS]], replace &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;--with-geos=/usr/local/bin/geos-config&amp;lt;/source&amp;gt; by &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;--with-geos=/usr/bin/geos-config&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GDAL ===&lt;br /&gt;
&lt;br /&gt;
Install the &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;dev&amp;lt;/source&amp;gt; package (possibly without support for datumgrid):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libgdal-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install also the required extra packages (note the message: &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;The following extra packages will be installed:&amp;lt;/source&amp;gt;)&lt;br /&gt;
* Look out for packages to be removed by this operation -- this is most likely caused by incompatible package versions. Fix these problems in advance using commands like the following: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install &amp;lt;package&amp;gt;=&amp;lt;required.version&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GRASS-GIS ===&lt;br /&gt;
&lt;br /&gt;
[[Compile_and_Install_Ubuntu#GRASS_GIS|Jump to sub-section GRASS-GIS below]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Compile from source ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PROJ4 ===&lt;br /&gt;
&lt;br /&gt;
* within the directory &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/usr/local/src&amp;lt;/source&amp;gt; (create it if it does not exist) checkout &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;proj&amp;lt;/source&amp;gt; from its Subversion repository: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn co http://svn.osgeo.org/metacrs/proj/branches/4.8/proj/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* get [http://download.osgeo.org/proj/proj-datumgrid-1.5.zip '''proj-datumgrid-1.5.zip'''] from [http://trac.osgeo.org/proj proj' trac] and move it under &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;proj/nad&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
wget http://download.osgeo.org/proj/proj-datumgrid-1.5.zip&lt;br /&gt;
mv proj-datumgrid-1.5.zip /usr/local/src/proj/nad&lt;br /&gt;
cd /usr/local/src/proj/nad&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* decompress it &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
unzip proj-datumgrid-1.5.zip&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* go back to the &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;proj&amp;lt;/source&amp;gt; directory &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /usr/local/src/proj&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* if required, clean previous configuration &amp;amp; compilation &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* simple configure, compile and install &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure  &amp;amp;&amp;amp;  make  &amp;amp;&amp;amp;  sudo make install&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt; or &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure &amp;amp;&amp;amp; make -j2  &amp;amp;&amp;amp;  sudo checkinstall&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ensure that &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/usr/local/lib&amp;lt;/source&amp;gt; is added to &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/etc/ld.so.conf&amp;lt;/source&amp;gt; and afterwards run &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ldconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* finally, go back to the parent directory simply by instructing&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd ..&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GEOS ===&lt;br /&gt;
&lt;br /&gt;
* download '''geos-3.3.5.tar.bz2''' from [http://trac.osgeo.org/geos/ http://trac.osgeo.org/geos] using &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;wget&amp;lt;/source&amp;gt; &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
wget http://download.osgeo.org/geos/geos-3.3.5.tar.bz2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* move to the &amp;quot;source-code&amp;quot; directory and decompress&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /usr/local/src/&lt;br /&gt;
bunzip2 geos-3.3.5.tar.bz2&lt;br /&gt;
tar xvf  geos-3.3.5.tar&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* if required, clean previous configuration &amp;amp; compilation  &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* move to geos directory  &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd geos-3.3.5&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* simple configure, compile and install &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure  &amp;amp;&amp;amp;  make  &amp;amp;&amp;amp;  sudo make install&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt; or &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure  &amp;amp;&amp;amp; make -j2  &amp;amp;&amp;amp;  sudo checkinstall&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* do not forget to execute &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ldconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GDAL ===&lt;br /&gt;
&lt;br /&gt;
'''Note''', GDAL must be compiled '''without''' GRASS support&lt;br /&gt;
&lt;br /&gt;
* download the current stable version &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn checkout https://svn.osgeo.org/gdal/branches/1.9/gdal gdal_stable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* enter in the &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;gdal_stable&amp;lt;/source&amp;gt; directory &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /usr/local/src/gdal_stable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* optionally, update the source code &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn up&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* if required, clean previous configurations/compilations &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* a simple configuration without any parameters will detect and support various installed libraries &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* skip to the ''compile and install'' step or check the following customised configuration example&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;
CFLAGS=&amp;quot;-g -Wall&amp;quot; LDFLAGS=&amp;quot;-s&amp;quot; ./configure \&lt;br /&gt;
--with-png=internal \&lt;br /&gt;
--with-libtiff=internal \&lt;br /&gt;
--with-geotiff=internal \&lt;br /&gt;
--with-jpeg=internal \&lt;br /&gt;
--with-gif=internal \&lt;br /&gt;
--with-ecw=yes \&lt;br /&gt;
--with-expat=yes \&lt;br /&gt;
--with-sqlite3=yes \&lt;br /&gt;
--with-geos=yes \&lt;br /&gt;
--with-python \&lt;br /&gt;
--with-libz=internal \&lt;br /&gt;
--with-netcdf \&lt;br /&gt;
--with-sqlite \&lt;br /&gt;
--with-threads=yes \&lt;br /&gt;
--without-grass  \&lt;br /&gt;
--without-ogdi \&lt;br /&gt;
--with-pg=/usr/bin/pg_config \&lt;br /&gt;
--with-xerces=yes&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* compile, install &amp;amp; ldconfig &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make -j2  &amp;amp;&amp;amp;  sudo make install  &amp;amp;&amp;amp;  sudo ldconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt; or &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make -j2  &amp;amp;&amp;amp;  sudo checkinstall  &amp;amp;&amp;amp;  sudo ldconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GRASS GIS ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;boilerplate metadata&amp;quot; id=&amp;quot;attention&amp;quot; style=&amp;quot;-moz-border-radius:30px; border: 1px double #4da948; margin-bottom: 1em; padding: 0 .25em; background-color: #dcdcdc;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-size: 125%; text-align: left;&amp;quot;&amp;gt;'''Recommendation'''&amp;amp;nbsp;&amp;lt;/p&amp;gt;Before attempting to compile GRASS, read the  &amp;lt;code&amp;gt;INSTALL&amp;lt;/code&amp;gt;  file, which is located in GRASS' source code root directory. Pay attention especially to  section &amp;lt;code&amp;gt;(C)&amp;lt;/code&amp;gt;, entitled &amp;lt;code&amp;gt;COMPILATION NOTES for 64bit platforms&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' Getting GRASS' source code '''&lt;br /&gt;
&lt;br /&gt;
* get current state of the 6.4.x release branch version (stable) &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn co https://svn.osgeo.org/grass/grass/branches/releasebranch_6_4 grass64_release&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To download under development versions use&lt;br /&gt;
&lt;br /&gt;
* for GRASS 6.5  (Note: ''GRASS version 6.5 is not intended for end-users! It exists for development purposes which should rather take place for GRASS 7.'') &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn checkout https://svn.osgeo.org/grass/grass/branches/develbranch_6 grass6_devel&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* for GRASS 7 &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn checkout https://svn.osgeo.org/grass/grass/trunk grass_trunk&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* for subsequent updates execute &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn up&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' Configure, Compile and Install'''&lt;br /&gt;
&lt;br /&gt;
* if required, clean previous configuration &amp;amp; compilation (not needed the first time) &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* example configuration (which can/should be adjusted according to specific needs):&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;
./configure \&lt;br /&gt;
--enable-largefile=yes \&lt;br /&gt;
--with-nls \&lt;br /&gt;
--with-cxx \&lt;br /&gt;
--with-proj-share=/usr/local/share/proj/ \&lt;br /&gt;
--with-geos=/usr/local/bin/geos-config \&lt;br /&gt;
--with-python=yes \&lt;br /&gt;
--with-wxwidgets \&lt;br /&gt;
--with-cairo \&lt;br /&gt;
--with-tcltk-includes=&amp;quot;/usr/include/tcl8.5/&amp;quot; \&lt;br /&gt;
--with-opengl-libs=/usr/include/GL \&lt;br /&gt;
--with-motif \&lt;br /&gt;
--with-ffmpeg=yes --with-ffmpeg-includes=&amp;quot;/usr/include/libavcodec /usr/include/libavformat /usr/include/libswscale&amp;quot; \&lt;br /&gt;
--with-freetype=yes --with-freetype-includes=&amp;quot;/usr/include/freetype2/&amp;quot; \&lt;br /&gt;
--with-postgres=yes \&lt;br /&gt;
--with-postgresql=yes --with-postgres-includes=&amp;quot;/usr/include/postgresql&amp;quot; \&lt;br /&gt;
--with-sqlite=yes \&lt;br /&gt;
--with-mysql=yes --with-mysql-includes=&amp;quot;/usr/include/mysql&amp;quot; \&lt;br /&gt;
--with-odbc=yes&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
'''Note''', the above configuration uses the &amp;lt;code&amp;gt;Proj4&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;GEOS&amp;lt;/code&amp;gt; packages compiled from the source. In the case that pre-compiled versions from the repository are required, remove the above corresponding lines to use the &amp;quot;defaults&amp;quot;, i.e. &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--with-proj-share=/usr/share/proj \&lt;br /&gt;
--with-geos=/usr/bin/geos-config \&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* compile &amp;amp; install &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make -j2  &amp;amp;&amp;amp;  sudo make install  &amp;amp;&amp;amp;  sudo ldconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt; or &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make -j2  &amp;amp;&amp;amp;  sudo checkinstall  &amp;amp;&amp;amp;  sudo ldconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GDAL-GRASS-Plugin ===&lt;br /&gt;
&lt;br /&gt;
* get the plugin from [http://download.osgeo.org/gdal OSGeo's Download Server]: [http://download.osgeo.org/gdal/gdal-grass-1.4.3.tar.gz http://download.osgeo.org/gdal/gdal-grass-1.4.3.tar.gz] using &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;wget&amp;lt;/source&amp;gt; &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 wget http://download.osgeo.org/gdal/gdal-grass-1.4.3.tar.gz&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* create   &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/etc/ld.so.conf.d/grass6.conf&amp;lt;/source&amp;gt;   or add in   &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/etc/ld.so.conf&amp;lt;/source&amp;gt;   the GRASS library path, i.e. &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/usr/local/src/grass64_release/lib&amp;lt;/source&amp;gt;&lt;br /&gt;
* optionally, clean previous configurations/compilations&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 make distclean&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* configure -- point to GRASS installation/binaries&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt; ./configure \&lt;br /&gt;
 --prefix=/usr/local \&lt;br /&gt;
 --with-gdal=/usr/local/bin/gdal-config \&lt;br /&gt;
 --with-grass=/geo/osgeo/src/grass64_release/dist.x86_64-unknown-linux-gnu/ \&lt;br /&gt;
 --with-autoload=&amp;quot;/usr/local/lib/gdalplugins/&amp;quot; \&lt;br /&gt;
 --with-ld-shared=&amp;quot;g++ -shared&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* for GRASS 6.5, replace the respective line above, depending on where the source code in question is stored, with something like&amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt; --with-grass=/usr/local/grass-6.5.svn/&amp;lt;/source&amp;gt;&lt;br /&gt;
* for GRASS 7, replace with &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt; --with-grass=/usr/local/grass_trunk/&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
* compile &amp;amp; install using checkinstall&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 make -j2  &amp;amp;&amp;amp;  sudo checkinstall&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Post compilation/installation control =&lt;br /&gt;
&lt;br /&gt;
* For a recommended quick-check read the [http://grass.osgeo.org/wiki/Compile_and_install_GRASS_and_QGIS_with_GDAL/OGR_Plugin#Troubleshooting Troubleshooting] section at [http://grass.osgeo.org/wiki/Compile_and_install_GDAL-GRASS_plugin Compile_and_install_GDAL-GRASS_plugin]&lt;br /&gt;
&lt;br /&gt;
* in case of errors in future compilation attempts, remember to remove program binaries and files created with the &amp;quot;configuration&amp;quot; from previous compilations with&lt;br /&gt;
 make distclean&lt;br /&gt;
&lt;br /&gt;
* another common mistake is compiling a module against some GRASS version and then try to run it through another GRASS version. The solution is to recompile the affected module or, in case there are multiple GRASS installations, set up properly LD_LIBRARY_PATH paths.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Removal of GRASS =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To get rid of a GRASS binaries installation, delete&lt;br /&gt;
* &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/usr/local/grass-6.4.0svn&amp;lt;/source&amp;gt; (directory, binaries location)&lt;br /&gt;
* &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/usr/local/bin/grass64&amp;lt;/source&amp;gt; (file)&lt;br /&gt;
* &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/usr/local/bin/gem64&amp;lt;/source&amp;gt; (file)&lt;br /&gt;
* &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/home/username/.grassrc6&amp;lt;/source&amp;gt; (file)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If wanted, delete also the complete source code:&lt;br /&gt;
* &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/usr/local/src/grass_64svn&amp;lt;/source&amp;gt; (directory, source code location)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To remove &amp;lt;code&amp;gt;grass&amp;lt;/code&amp;gt; (or any other package) which was installed by &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;checkinstall&amp;lt;/source&amp;gt;, use &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;dpkg&amp;lt;/source&amp;gt;, e.g.&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo dpkg -r grass64 # package name defined at installation is important&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Packaging of GRASS =&lt;br /&gt;
&lt;br /&gt;
* See the {{src|debian/README.debian}} file in the GRASS source code for directions on rolling your own packages.&lt;br /&gt;
&lt;br /&gt;
For details about the auto-nightly-builds and after-market supplied packages from UbuntuGIS, please refer to the [[Ubuntu Packaging]] wiki page.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Ubuntu Packaging]]&lt;br /&gt;
* [[GRASS in Debian]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Compilation]]&lt;br /&gt;
[[Category: Installation]]&lt;br /&gt;
[[Category: Ubuntu]]&lt;br /&gt;
[[Category: FAQ]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Compile_and_Install_Ubuntu&amp;diff=18522</id>
		<title>Compile and Install Ubuntu</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Compile_and_Install_Ubuntu&amp;diff=18522"/>
		<updated>2013-05-10T15:41:17Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Current stable Ubuntu version */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;boilerplate metadata&amp;quot; id=&amp;quot;attention&amp;quot; style=&amp;quot;-moz-border-radius:30px; border: 1px double #35824B; margin-bottom: 1.5em; padding: 1em; background-color: #f9f9f9;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-size: 150%; text-align: left;&amp;quot;&amp;gt;&amp;lt;span style=&amp;quot;color:#35824B&amp;quot;&amp;gt;'''Attention'''&amp;lt;/span&amp;gt;&amp;amp;nbsp;&amp;lt;/p&amp;gt;&amp;lt;span style=&amp;quot;color:#333333&amp;quot;&amp;gt;'''The following instructions describe the compilation and installation of GRASS 6.x (or even 7) and its required dependencies completely from the source on Ubuntu based systems. Please, prefer pre-compiled packages over the manual way described below unless you know ''what'' and ''how'', you want to learn and help testing.'''&amp;lt;/span&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Very Important notes ==&lt;br /&gt;
&lt;br /&gt;
* Pre-compiled packages and backports are available from [https://wiki.ubuntu.com/UbuntuGIS UbuntuGIS] via their [https://launchpad.net/~ubuntugis/+archive/ppa/ ppa.launchpad] repositories. '''This is by far the simplest and fastest solution. Please prefer it over the manual way described below.'''&lt;br /&gt;
&lt;br /&gt;
* To build an updated version of GRASS or support libraries unmodified, in most cases it will be easier to use an automated build tool such as ''pbuilder'', ''debuild'' or ''cowbuilder''. See the &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;debian/&amp;lt;/source&amp;gt; directory in the source code for details.&lt;br /&gt;
&lt;br /&gt;
* Some things change fast and therefore it is expected that the instructions might fail. Please inform the grass-user list in case something just does not work (like for example non-available dependecies/packages from the repositories) or update this page respectively.&lt;br /&gt;
&lt;br /&gt;
* GRASS version 6.5 exists for development purposes, testing features to-be backported to version 6.4. As such it may include unstable code and is not intended for production and end-users.&lt;br /&gt;
&lt;br /&gt;
* An alternate method is to use the DebianGIS packaging scripts, which enable a lot of this to happen automatically (see [https://svn.osgeo.org/grass/grass/branches/releasebranch_6_4/debian/README.debian debian/README.debian] in the GRASS Subversion source code repository). Specifically, this command will get you 90% of the way there: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo apt-get build-dep grass&amp;lt;/source&amp;gt;&lt;br /&gt;
: ''(you'll need to have the deb-src lines active in your /etc/apt/sources.list file)''&lt;br /&gt;
&lt;br /&gt;
== Hints ==&lt;br /&gt;
&lt;br /&gt;
* Usually, the installation of compiled code is done by using the &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;make&amp;lt;/source&amp;gt; tool. Alternatively, this can be done by using the ''checkinstall'' tool (i.e., &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;sudo checkinstall&amp;lt;/source&amp;gt;  instead of  &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;sudo make install&amp;lt;/source&amp;gt;) which eases off removal of packages. If ''checkinstall'' fails to deliver, please note some related bugs: [https://bugs.launchpad.net/ubuntu/+source/checkinstall/+bug/78455 78455] and [https://bugs.launchpad.net/ubuntu/+source/checkinstall/+bug/599163 599163]. Useful information on using ''checkinstall'': [https://help.ubuntu.com/community/CompilingEasyHowTo Compiling things on Ubuntu the Easy Way].&lt;br /&gt;
&lt;br /&gt;
* In multi-core processors, the compilation performance can be boosted by using  ''-j''  switches (e.g. &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;make -j2&amp;lt;/source&amp;gt;  or  &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;make -j3&amp;lt;/source&amp;gt;  or even &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;make -j4&amp;lt;/source&amp;gt;) which specify the number of jobs (commands) to run simultaneously.&lt;br /&gt;
&lt;br /&gt;
== Dependencies ==&lt;br /&gt;
&lt;br /&gt;
=== Current stable Ubuntu version ===&lt;br /&gt;
&lt;br /&gt;
The following dependencies concern [http://releases.ubuntu.com/quantal/ Ubuntu Quantal Quetzal (12.10)]&lt;br /&gt;
&lt;br /&gt;
* First, update the system from the repositories&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get update &amp;amp;&amp;amp; sudo apt-get upgrade&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* then, install ''SQLite'', ''SVN'' and ''dependencies'' for compiling PROJ, GEOS, GDAL/OGR, GRASS, GDAL-GRASS-PLUGIN; the following action will also install various dependencies (listed in the command line as &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;The following extra packages will be installed:&amp;lt;/source&amp;gt;...):&amp;lt;br/&amp;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;
# this is a single command, please copy-paste it entirely into the terminal:&lt;br /&gt;
sudo apt-get install \&lt;br /&gt;
  build-essential \&lt;br /&gt;
  flex make bison gcc libgcc1 g++ cmake ccache \&lt;br /&gt;
  python python-dev python-qt4 python-qt4-dev \&lt;br /&gt;
  python-opengl \&lt;br /&gt;
  python-wxversion python-wxtools python-wxgtk2.8 \&lt;br /&gt;
  python-dateutil libgsl0-dev python-numpy \&lt;br /&gt;
  wx2.8-headers wx-common libwxgtk2.8-dev libwxgtk2.8-dbg \&lt;br /&gt;
  libwxbase2.8-dev  libwxbase2.8-dbg \&lt;br /&gt;
  libncurses5-dev \&lt;br /&gt;
  zlib1g-dev gettext \&lt;br /&gt;
  libtiff-dev libpnglite-dev \&lt;br /&gt;
  tcl8.5-dev tk8.5-dev \&lt;br /&gt;
  libcairo2 libcairo2-dev \&lt;br /&gt;
  sqlite3 libsqlite3-dev \&lt;br /&gt;
  libpq-dev \&lt;br /&gt;
  libreadline6 libreadline6-dev libfreetype6-dev \&lt;br /&gt;
  txt2tags \&lt;br /&gt;
  libfftw3-3 libfftw3-dev \&lt;br /&gt;
  libqt4-core libqt4-dbg libqt4-dev libqt4-gui libqt4-sql libqt4-qt3support \&lt;br /&gt;
  lsb-qt4 qt4-designer qt4-dev-tools qt4-doc qt4-qtconfig \&lt;br /&gt;
  libapt-pkg-perl resolvconf \&lt;br /&gt;
  libjasper-dev \&lt;br /&gt;
  ruby \&lt;br /&gt;
  subversion \&lt;br /&gt;
  ffmpeg ffmpeg2theora \&lt;br /&gt;
  libffmpegthumbnailer-dev \&lt;br /&gt;
  libavcodec-dev \&lt;br /&gt;
  libxmu-dev \&lt;br /&gt;
  libavformat-dev libswscale-dev \&lt;br /&gt;
  checkinstall \&lt;br /&gt;
  libglu1-mesa-dev libxmu-dev&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* for mysql support, &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;libmysqlclient-dev&amp;lt;/source&amp;gt; is required &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libmysqlclient-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* for netcdf support, &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;netcdf-bin&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;libnetcdf-dev&amp;lt;/source&amp;gt;  is required &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install netcdf-bin libnetcdf-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* create a directory as a simple user where all source code is going to be stored -- in this example, a directory named &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;src&amp;lt;/source&amp;gt; under &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/usr/local&amp;lt;/source&amp;gt; is created &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo mkdir /usr/local/src&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* take over directories ownerships ('''replace''' below the terms ''userid'' and ''groupid'' with a real &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;userid&amp;lt;/source&amp;gt;): &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo chown userid:groupid /usr/local/src&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* similarly, grant &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;rwx&amp;lt;/source&amp;gt; (read-write-execute) permissions for our ''userid'' and ''groupid'' onto the &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;src&amp;lt;/source&amp;gt; directory: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo chmod ug+rwx /usr/local/src&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Earlier Ubuntu versions ===&lt;br /&gt;
&lt;br /&gt;
For [http://old-releases.ubuntu.com/releases/ earlier Ubuntu versions], '''watch out for dependency differences!''' Modify the dependency list given above as instructed below.&lt;br /&gt;
&lt;br /&gt;
* for [http://releases.ubuntu.com/precise/ Ubuntu Precise Pangolin (12.04)], change the following dependencies:&lt;br /&gt;
** &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;libpnglite-dev --&amp;gt; libpngwriter-dev&amp;lt;/source&amp;gt;&lt;br /&gt;
** &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;libtiff5-dev --&amp;gt; libtiff4-dev&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* for [http://old-releases.ubuntu.com/releases/maverick/ Ubuntu Maverick Meerkat (10.10)] or later, change the following dependencies:&lt;br /&gt;
** &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;libpngwriter-dev --&amp;gt; libpngwriter0-dev&amp;lt;/source&amp;gt;&lt;br /&gt;
** &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;libcairo-dev --&amp;gt; libcairo2-dev&amp;lt;/source&amp;gt;&lt;br /&gt;
** &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;fftw3 --&amp;gt; libfftw3-3&amp;lt;/source&amp;gt;&lt;br /&gt;
** &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;fftw3-dev --&amp;gt; libfftw3-dev&amp;lt;/source&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
* for [http://old-releases.ubuntu.com/releases/lucid/ Ubuntu Lucid Lynx (10.04)] or later, also install: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;sudo apt-get install libhdf4-alt-dev libhdf4-0-alt&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* for [http://old-releases.ubuntu.com/releases/ earlier Ubuntu versions], also install: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt; sudo apt-get install libhdf4g-dev libhdf4g-run&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using pre-compiled dev Packages for PROJ.4, GEOS and GDAL ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PROJ.4 ===&lt;br /&gt;
&lt;br /&gt;
Install the &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;dev&amp;lt;/source&amp;gt; package (possibly without support for datumgrid):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libproj-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the call to &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;./configure&amp;lt;/source&amp;gt; for [[#GRASS|GRASS]], replace &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;--with-proj-share=/usr/local/share/proj/&amp;lt;/source&amp;gt; by &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;--with-proj-share=/usr/share/proj/&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GEOS ===&lt;br /&gt;
&lt;br /&gt;
Install the &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;dev&amp;lt;/source&amp;gt; package:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libgeos-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* In the call to &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;./configure&amp;lt;/source&amp;gt; for [[#GRASS|GRASS]], replace &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;--with-geos=/usr/local/bin/geos-config&amp;lt;/source&amp;gt; by &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;--with-geos=/usr/bin/geos-config&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== GDAL ===&lt;br /&gt;
&lt;br /&gt;
Install the &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;dev&amp;lt;/source&amp;gt; package (possibly without support for datumgrid):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install libgdal-dev&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Install also the required extra packages (note the message: &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;The following extra packages will be installed:&amp;lt;/source&amp;gt;)&lt;br /&gt;
* Look out for packages to be removed by this operation -- this is most likely caused by incompatible package versions. Fix these problems in advance using commands like the following: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo apt-get install &amp;lt;package&amp;gt;=&amp;lt;required.version&amp;gt;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GRASS-GIS ===&lt;br /&gt;
&lt;br /&gt;
[[Compile_and_Install_Ubuntu#GRASS_GIS|Jump to sub-section GRASS-GIS below]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Compile from source ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== PROJ4 ===&lt;br /&gt;
&lt;br /&gt;
* within the directory &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/usr/local/src&amp;lt;/source&amp;gt; (create it if it does not exist) checkout &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;proj&amp;lt;/source&amp;gt; from its Subversion repository: &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn co http://svn.osgeo.org/metacrs/proj/branches/4.8/proj/&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* get [http://download.osgeo.org/proj/proj-datumgrid-1.5.zip '''proj-datumgrid-1.5.zip'''] from [http://trac.osgeo.org/proj proj' trac] and move it under &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;proj/nad&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
wget http://download.osgeo.org/proj/proj-datumgrid-1.5.zip&lt;br /&gt;
mv proj-datumgrid-1.5.zip /usr/local/src/proj/nad&lt;br /&gt;
cd /usr/local/src/proj/nad&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* decompress it &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
unzip proj-datumgrid-1.5.zip&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* go back to the &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;proj&amp;lt;/source&amp;gt; directory &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /usr/local/src/proj&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* if required, clean previous configuration &amp;amp; compilation &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* simple configure, compile and install &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure  &amp;amp;&amp;amp;  make  &amp;amp;&amp;amp;  sudo make install&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt; or &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure &amp;amp;&amp;amp; make -j2  &amp;amp;&amp;amp;  sudo checkinstall&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* ensure that &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/usr/local/lib&amp;lt;/source&amp;gt; is added to &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/etc/ld.so.conf&amp;lt;/source&amp;gt; and afterwards run &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ldconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* finally, go back to the parent directory simply by instructing&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd ..&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GEOS ===&lt;br /&gt;
&lt;br /&gt;
* download '''geos-3.3.5.tar.bz2''' from [http://trac.osgeo.org/geos/ http://trac.osgeo.org/geos] using &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;wget&amp;lt;/source&amp;gt; &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
wget http://download.osgeo.org/geos/geos-3.3.5.tar.bz2&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* move to the &amp;quot;source-code&amp;quot; directory and decompress&lt;br /&gt;
&amp;lt;ul&amp;gt;&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /usr/local/src/&lt;br /&gt;
bunzip2 geos-3.3.5.tar.bz2&lt;br /&gt;
tar xvf  geos-3.3.5.tar&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* if required, clean previous configuration &amp;amp; compilation  &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* move to geos directory  &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd geos-3.3.5&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* simple configure, compile and install &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure  &amp;amp;&amp;amp;  make  &amp;amp;&amp;amp;  sudo make install&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt; or &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure  &amp;amp;&amp;amp; make -j2  &amp;amp;&amp;amp;  sudo checkinstall&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* do not forget to execute &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo ldconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GDAL ===&lt;br /&gt;
&lt;br /&gt;
'''Note''', GDAL must be compiled '''without''' GRASS support&lt;br /&gt;
&lt;br /&gt;
* download the current stable version &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn checkout https://svn.osgeo.org/gdal/branches/1.9/gdal gdal_stable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* enter in the &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;gdal_stable&amp;lt;/source&amp;gt; directory &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
cd /usr/local/src/gdal_stable&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* optionally, update the source code &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn up&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* if required, clean previous configurations/compilations &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* a simple configuration without any parameters will detect and support various installed libraries &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
./configure&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* skip to the ''compile and install'' step or check the following customised configuration example&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;
CFLAGS=&amp;quot;-g -Wall&amp;quot; LDFLAGS=&amp;quot;-s&amp;quot; ./configure \&lt;br /&gt;
--with-png=internal \&lt;br /&gt;
--with-libtiff=internal \&lt;br /&gt;
--with-geotiff=internal \&lt;br /&gt;
--with-jpeg=internal \&lt;br /&gt;
--with-gif=internal \&lt;br /&gt;
--with-ecw=yes \&lt;br /&gt;
--with-expat=yes \&lt;br /&gt;
--with-sqlite3=yes \&lt;br /&gt;
--with-geos=yes \&lt;br /&gt;
--with-python \&lt;br /&gt;
--with-libz=internal \&lt;br /&gt;
--with-netcdf \&lt;br /&gt;
--with-sqlite \&lt;br /&gt;
--with-threads=yes \&lt;br /&gt;
--without-grass  \&lt;br /&gt;
--without-ogdi \&lt;br /&gt;
--with-pg=/usr/bin/pg_config \&lt;br /&gt;
--with-xerces=yes&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* compile, install &amp;amp; ldconfig &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make -j2  &amp;amp;&amp;amp;  sudo make install  &amp;amp;&amp;amp;  sudo ldconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt; or &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make -j2  &amp;amp;&amp;amp;  sudo checkinstall  &amp;amp;&amp;amp;  sudo ldconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GRASS GIS ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;boilerplate metadata&amp;quot; id=&amp;quot;attention&amp;quot; style=&amp;quot;-moz-border-radius:30px; border: 1px double #4da948; margin-bottom: 1em; padding: 0 .25em; background-color: #dcdcdc;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;p style=&amp;quot;font-size: 125%; text-align: left;&amp;quot;&amp;gt;'''Recommendation'''&amp;amp;nbsp;&amp;lt;/p&amp;gt;Before attempting to compile GRASS, read the  &amp;lt;code&amp;gt;INSTALL&amp;lt;/code&amp;gt;  file, which is located in GRASS' source code root directory. Pay attention especially to  section &amp;lt;code&amp;gt;(C)&amp;lt;/code&amp;gt;, entitled &amp;lt;code&amp;gt;COMPILATION NOTES for 64bit platforms&amp;lt;/code&amp;gt;.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' Getting GRASS' source code '''&lt;br /&gt;
&lt;br /&gt;
* get current state of the 6.4.x release branch version (stable) &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn co https://svn.osgeo.org/grass/grass/branches/releasebranch_6_4 grass64_release&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To download under development versions use&lt;br /&gt;
&lt;br /&gt;
* for GRASS 6.5  (Note: ''GRASS version 6.5 is not intended for end-users! It exists for development purposes which should rather take place for GRASS 7.'') &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn checkout https://svn.osgeo.org/grass/grass/branches/develbranch_6 grass6_devel&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* for GRASS 7 &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn checkout https://svn.osgeo.org/grass/grass/trunk grass_trunk&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* for subsequent updates execute &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
svn up&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''' Configure, Compile and Install'''&lt;br /&gt;
&lt;br /&gt;
* if required, clean previous configuration &amp;amp; compilation (not needed the first time) &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make distclean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* example configuration (which can/should be adjusted according to specific needs):&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;
./configure \&lt;br /&gt;
--enable-largefile=yes \&lt;br /&gt;
--with-nls \&lt;br /&gt;
--with-cxx \&lt;br /&gt;
--with-proj-share=/usr/local/share/proj/ \&lt;br /&gt;
--with-geos=/usr/local/bin/geos-config \&lt;br /&gt;
--with-python=yes \&lt;br /&gt;
--with-wxwidgets \&lt;br /&gt;
--with-cairo \&lt;br /&gt;
--with-tcltk-includes=&amp;quot;/usr/include/tcl8.5/&amp;quot; \&lt;br /&gt;
--with-opengl-libs=/usr/include/GL \&lt;br /&gt;
--with-motif \&lt;br /&gt;
--with-ffmpeg=yes --with-ffmpeg-includes=&amp;quot;/usr/include/libavcodec /usr/include/libavformat /usr/include/libswscale&amp;quot; \&lt;br /&gt;
--with-freetype=yes --with-freetype-includes=&amp;quot;/usr/include/freetype2/&amp;quot; \&lt;br /&gt;
--with-postgres=yes \&lt;br /&gt;
--with-postgresql=yes --with-postgres-includes=&amp;quot;/usr/include/postgresql&amp;quot; \&lt;br /&gt;
--with-sqlite=yes \&lt;br /&gt;
--with-mysql=yes --with-mysql-includes=&amp;quot;/usr/include/mysql&amp;quot; \&lt;br /&gt;
--with-odbc=yes&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
'''Note''', the above configuration uses the &amp;lt;code&amp;gt;Proj4&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;GEOS&amp;lt;/code&amp;gt; packages compiled from the source. In the case that pre-compiled versions from the repository are required, remove the above corresponding lines to use the &amp;quot;defaults&amp;quot;, i.e. &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
--with-proj-share=/usr/share/proj \&lt;br /&gt;
--with-geos=/usr/bin/geos-config \&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* compile &amp;amp; install &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make -j2  &amp;amp;&amp;amp;  sudo make install  &amp;amp;&amp;amp;  sudo ldconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt; or &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make -j2  &amp;amp;&amp;amp;  sudo checkinstall  &amp;amp;&amp;amp;  sudo ldconfig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== GDAL-GRASS-Plugin ===&lt;br /&gt;
&lt;br /&gt;
* get the plugin from [http://download.osgeo.org/gdal OSGeo's Download Server]: [http://download.osgeo.org/gdal/gdal-grass-1.4.3.tar.gz http://download.osgeo.org/gdal/gdal-grass-1.4.3.tar.gz] using &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;wget&amp;lt;/source&amp;gt; &amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 wget http://download.osgeo.org/gdal/gdal-grass-1.4.3.tar.gz&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* create   &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/etc/ld.so.conf.d/grass6.conf&amp;lt;/source&amp;gt;   or add in   &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/etc/ld.so.conf&amp;lt;/source&amp;gt;   the GRASS library path, i.e. &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/usr/local/src/grass64_release/lib&amp;lt;/source&amp;gt;&lt;br /&gt;
* optionally, clean previous configurations/compilations&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 make distclean&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* configure -- point to GRASS installation/binaries&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt; ./configure \&lt;br /&gt;
 --prefix=/usr/local \&lt;br /&gt;
 --with-gdal=/usr/local/bin/gdal-config \&lt;br /&gt;
 --with-grass=/geo/osgeo/src/grass64_release/dist.x86_64-unknown-linux-gnu/ \&lt;br /&gt;
 --with-autoload=&amp;quot;/usr/local/lib/gdalplugins/&amp;quot; \&lt;br /&gt;
 --with-ld-shared=&amp;quot;g++ -shared&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* for GRASS 6.5, replace the respective line above, depending on where the source code in question is stored, with something like&amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt; --with-grass=/usr/local/grass-6.5.svn/&amp;lt;/source&amp;gt;&lt;br /&gt;
* for GRASS 7, replace with &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt; --with-grass=/usr/local/grass_trunk/&amp;lt;/source&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
* compile &amp;amp; install using checkinstall&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 make -j2  &amp;amp;&amp;amp;  sudo checkinstall&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Post compilation/installation control =&lt;br /&gt;
&lt;br /&gt;
* For a recommended quick-check read the [http://grass.osgeo.org/wiki/Compile_and_install_GRASS_and_QGIS_with_GDAL/OGR_Plugin#Troubleshooting Troubleshooting] section at [http://grass.osgeo.org/wiki/Compile_and_install_GDAL-GRASS_plugin Compile_and_install_GDAL-GRASS_plugin]&lt;br /&gt;
&lt;br /&gt;
* in case of errors in future compilation attempts, remember to remove program binaries and files created with the &amp;quot;configuration&amp;quot; from previous compilations with&lt;br /&gt;
 make distclean&lt;br /&gt;
&lt;br /&gt;
* another common mistake is compiling a module against some GRASS version and then try to run it through another GRASS version. The solution is to recompile the affected module or, in case there are multiple GRASS installations, set up properly LD_LIBRARY_PATH paths.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Removal of GRASS =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To get rid of a GRASS binaries installation, delete&lt;br /&gt;
* &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/usr/local/grass-6.4.0svn&amp;lt;/source&amp;gt; (directory, binaries location)&lt;br /&gt;
* &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/usr/local/bin/grass64&amp;lt;/source&amp;gt; (file)&lt;br /&gt;
* &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/usr/local/bin/gem64&amp;lt;/source&amp;gt; (file)&lt;br /&gt;
* &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/home/username/.grassrc6&amp;lt;/source&amp;gt; (file)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If wanted, delete also the complete source code:&lt;br /&gt;
* &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;/usr/local/src/grass_64svn&amp;lt;/source&amp;gt; (directory, source code location)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To remove &amp;lt;code&amp;gt;grass&amp;lt;/code&amp;gt; (or any other package) which was installed by &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;checkinstall&amp;lt;/source&amp;gt;, use &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=&amp;quot;none&amp;quot;&amp;gt;dpkg&amp;lt;/source&amp;gt;, e.g.&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
sudo dpkg -r grass64 # package name defined at installation is important&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Packaging of GRASS =&lt;br /&gt;
&lt;br /&gt;
* See the {{src|debian/README.debian}} file in the GRASS source code for directions on rolling your own packages.&lt;br /&gt;
&lt;br /&gt;
For details about the auto-nightly-builds and after-market supplied packages from UbuntuGIS, please refer to the [[Ubuntu Packaging]] wiki page.&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[Ubuntu Packaging]]&lt;br /&gt;
* [[GRASS in Debian]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Compilation]]&lt;br /&gt;
[[Category: Installation]]&lt;br /&gt;
[[Category: Ubuntu]]&lt;br /&gt;
[[Category: FAQ]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_SoC_Ideas_2013&amp;diff=18497</id>
		<title>GRASS SoC Ideas 2013</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_SoC_Ideas_2013&amp;diff=18497"/>
		<updated>2013-05-02T11:39:38Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Temporal GIS Algebra for raster and vector data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;center&amp;gt;&lt;br /&gt;
[[Image:grasslogo_vector_small.png|link=http://grass.osgeo.org]]&amp;lt;font size=&amp;quot;+3&amp;quot;&amp;gt; @ &amp;lt;/font&amp;gt; [[Image:Gsoc-2013-logo-color.jpg|250px|link=http://wiki.osgeo.org/wiki/Google_Summer_of_Code_2013]] &amp;lt;font size=&amp;quot;+3&amp;quot;&amp;gt; @ &amp;lt;/font&amp;gt; [[Image:OSGeo 220pix.png|link=http://www.osgeo.org]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== About ==&lt;br /&gt;
&lt;br /&gt;
This is the GRASS page for [http://wiki.osgeo.org/index.php/Google_Summer_of_Code_2013 Google Summer of Code 2013] (see the [http://www.google-melange.com/document/show/gsoc_program/google/gsoc2013/help_page#2._What_is_the_program_timeline timeline]). Here we will list project ideas and and other information related to the GRASS GSoC projects.&lt;br /&gt;
&lt;br /&gt;
== Ideas ==&lt;br /&gt;
&lt;br /&gt;
* '''Also review ideas from''' [[GRASS SoC Ideas 2009#Ideas|2009]], [[GRASS SoC Ideas 2010#Ideas|2010]], [[GRASS SoC Ideas 2011#Ideas|2011]] and [[GRASS SoC Ideas 2012#Ideas|2012]]  which are still open.&lt;br /&gt;
&lt;br /&gt;
* Project ideas of '''your own''' are also most welcome and often the best.&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
&lt;br /&gt;
* Implement a buffered binary balanced search tree using external memory: Rationale: some modules and library functions use a binary search tree, which can lead to out-of-memory errors for large datasets. A buffered binary balanced search tree using external memory would solve this problem and enhance the capability of GRASS to work with large datasets on limited hardware resources.&lt;br /&gt;
&lt;br /&gt;
* [[Parallel_GRASS_jobs|Parallelize]] CPU-heavy modules using [[OpenMP]], OpenCL ([[GPU]]), and/or pthreads.&lt;br /&gt;
&lt;br /&gt;
* If you're really stuck for ideas, [https://trac.osgeo.org/grass/query?status=assigned&amp;amp;status=new&amp;amp;status=reopened&amp;amp;group=component&amp;amp;order=priority&amp;amp;col=id&amp;amp;col=summary&amp;amp;col=status&amp;amp;col=type&amp;amp;col=owner&amp;amp;col=priority&amp;amp;col=milestone&amp;amp;type=enhancement hunt around the wish list in the trac system].&lt;br /&gt;
&lt;br /&gt;
* Clean-room write a LGPL or BSD/MIT-X GRASS data format plugin for GDAL/OGR. An option should exist to support both GRASS 6 and 7 versions of the format.&lt;br /&gt;
: Why is a new plugin needed? Add here&lt;br /&gt;
&lt;br /&gt;
* Improve and fix bugs in the QGIS GRASS Toolbox. Generally make it smoother to pass projects and workflows between the two.&lt;br /&gt;
: Or simply use [[GRASS and Sextante|Sextante plugin in QGIS]] which does this already&lt;br /&gt;
&lt;br /&gt;
=== Symbology / Cartography ===&lt;br /&gt;
&lt;br /&gt;
* Allow display of a vector legend in the map display (equivalent to current {{cmd|d.legend}} implementation for rasters)&lt;br /&gt;
&lt;br /&gt;
* Expand [[IconSymbols|symbology]] and re-classify groups&lt;br /&gt;
:: ''note that SoC only accepts coding projects, not graphics design or documentation projects.''&lt;br /&gt;
:* Add svg/eps support to a d.* module and {{Cmd|ps.map}} would be quite helpful. See the {{Cmd|d.graph}} help page and {{Cmd|ps.map}}'s &amp;quot;eps&amp;quot; and &amp;quot;vpoints&amp;quot; instructions. The first step would be to write a stand-alone tool in C to create d.graph commands; the second step would be to add as a new option in ''d.graph''; a third step would be to backport this to GRASS 6's graphics API. See also {{trac|733}} wish re. implementing Bézier curves in the display drivers.&lt;br /&gt;
:: '''Willing to co-mentor:''' Hamish&lt;br /&gt;
&lt;br /&gt;
* Rework the complete set of thematic cartography tools such as {{Cmd|d.vect.thematic}} and {{Cmd|d.thematic.area}} and the related classification routines. This would comprise:&lt;br /&gt;
** Revising the classification algorithms already implemented and possibly adding new ones (kmeans, Jenks)&lt;br /&gt;
** Replace the existing d.vect.thematic script with a C-based module (in the likes of d.thematic.area) combing thematic cartography of points, lines and areas&lt;br /&gt;
** Include representation of legend of the thematic map&lt;br /&gt;
** Use [http://colorbrewer2.org/ colorbrewer] rules to make classifications pretty&lt;br /&gt;
** Implement one or several specific GUI interface(s) to this new module&lt;br /&gt;
:: ''note that since d.vect.thematic was written {{Cmd|d.vect}} has added DB-column based sizing, rotation, and other tasks making parts of d.vect.thematic ready for much simplification.''&lt;br /&gt;
:* Generalized ASCII table input for {{Cmd|d.legend}} (see {{trac|89}} wish)&lt;br /&gt;
:* Histogram sidebar support for {{Cmd|d.legend}} and {{Cmd|ps.map}} (see {{trac|1049}} wish)&lt;br /&gt;
:: '''Willing to co-mentor d.legend bits:''' Hamish&lt;br /&gt;
&lt;br /&gt;
=== Imagery ===&lt;br /&gt;
&lt;br /&gt;
* Based on the work on [[GRASS_GSoC_2012_Image_Segmentation|segmentation]] in GSoC 2012 develop routines for object-based (or region-based) image classification. This probably entails:&lt;br /&gt;
** Characterizing segments. This includes producing statistics such as mean, median, variance of the segmented data within each delineated segment (customized interface to r.statistics2).&lt;br /&gt;
** Classifying segments based on the characteristics and (possibly) training areas&lt;br /&gt;
** Interface with other modules in a consistent workflow (i.cluster, r.fuzzy, etc)&lt;br /&gt;
&lt;br /&gt;
* Implement hierarchical classification tools (e.g. being able to create a large class &amp;quot;forest&amp;quot; with subclasses of different types of forests). Hierarchical classification is already used internally by i.gensigset/i.smap. Hierarchical segmentation can currently be done by using the output of a previous run of i.segment as input for the next run of i.segment with increased threshold.&lt;br /&gt;
&lt;br /&gt;
* Interface with the [http://www.orfeo-toolbox.org/otb/ Orfeo toolbox (OTB)], which is an open source, [http://www.itk.org ITK]-based, C++ library of (spatial) image processing library. OTB implements a very wide set of interesting features for anybody working with raster data - in particular satellite imagery: radiometric corrections, orthorectification, filtering, feature extraction, image segmentation, classification, change detection, etc.&lt;br /&gt;
&lt;br /&gt;
=== Vector ===&lt;br /&gt;
&lt;br /&gt;
# Line intersection: implement an efficient algorithm based on literature review, focusing on the [http://en.wikipedia.org/wiki/Bentley-Ottmann_algorithm Bentley-Ottmann algorithm] and its derivates. The best or best two should be implemented. Coupled to the problem of calculating line intersections is the problem of calculating segment intersections, currently implemented in [http://grass.osgeo.org/programming7/vector_2Vlib_2intersect_8c.html#ab4f5f3d99742378f0f284966f59bafe7 Vect_segment_intersection()] and [http://grass.osgeo.org/programming7/linecros_8c.html#a4fb52c4fc60df4fcae5e676134f08be9 dig_find_intersection()], which could also be replaced with more efficient algorithms.&lt;br /&gt;
#* Rationale: the current function Vect_line_intersection() is &amp;quot;home-brew&amp;quot; and rather slow for lines with many segments, whereas the Bentley-Ottmann algorithm can find line intersections in logarithmic time per intersection.&lt;br /&gt;
#* Requirements: at least interest in, preferably knowledge of the art of searching and sorting (search trees, priority queues, heaps).&lt;br /&gt;
#* Implementation goals: One function to search for intersections between two lines, ignoring self-intersections, and another function to test one single line for self-intersections. The API and output should be compatible with the current Vect_line_intersection() function. Optionally an alternative to Vect_segment_intersection().&lt;br /&gt;
# ''Your suggestion here!''&lt;br /&gt;
&lt;br /&gt;
'''Willing to Mentor:''' Markus Metz&lt;br /&gt;
&lt;br /&gt;
=== Temporal GIS Algebra for raster and vector data ===&lt;br /&gt;
&lt;br /&gt;
We (Soeren Gebbert and Thomas Leppelt) would like to develop a temporal GIS algebra for raster and vector data in GRASS7. &lt;br /&gt;
&lt;br /&gt;
Role:&lt;br /&gt;
* '''Mentor:''' Soeren Gebbert&lt;br /&gt;
* '''GSoC Student:''' Thomas Leppelt&lt;br /&gt;
&lt;br /&gt;
Implementation goals:&lt;br /&gt;
&lt;br /&gt;
* Spatio-temporal vector algebra module &amp;lt;b&amp;gt;t.vect.mapcalc&amp;lt;/b&amp;gt;&lt;br /&gt;
** The algebra will be based on vector map operations provided from {{Cmd|v.overlay}} (and, or, xor, not), {{Cmd|v.buffer}} (buff_point, buff_line, buff_area), {{Cmd|v.patch}} (patch), ... , temporal variables (day of year, weekday, datum, time, ...), temporal topology relations (predecessor, successor, follows, equals, ...) and spatial topology relations (equivalent, in, disjoint, ..)&lt;br /&gt;
** The resulting module will be able to process space time vector datasets using expressions like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Compute the intersection between the space time vector datasets A and B&lt;br /&gt;
# from maps with equal time stamps. The STVDS A is used as temporal reference.&lt;br /&gt;
# A new STVDS C will be created with the same time stamps as A.&lt;br /&gt;
t.vect.mapcalc inputs=A,B timeref=A output=C expr=&amp;quot;C = if(equal(B), and(A,B))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 time     |STVDS|STVDS|STVDS&lt;br /&gt;
 stamp    |  A  |  B  |  C&lt;br /&gt;
-------------------------------------&lt;br /&gt;
Jan 2001  |  a1 |  b1 |  v.overlay ain=a1 bin=b1 op=and out=c1&lt;br /&gt;
Feb 2001  |  a2 |     | &lt;br /&gt;
Mar 2001  |     |  b2 |&lt;br /&gt;
Apr 2001  |  a3 |     | &lt;br /&gt;
May 2001  |  a4 |  b3 |  v.overlay ain=a4 bin=b3 op=and out=c2&lt;br /&gt;
Jun 2001  |     |  b4 |&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Nested operations are supported and temporal neighborhood computation&lt;br /&gt;
t.vect.mapcalc input=A,B,C tempref=A output=D \&lt;br /&gt;
    expr=&amp;quot;D = if(successor(B) &amp;amp;&amp;amp; predecessor(C), and(A, xor(successor(B), buff_point(predecessor(C), 100)))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Date and time can be used in the expression&lt;br /&gt;
t.vect.mapcalc input=A,B timeref=A output=C \&lt;br /&gt;
    expr=&amp;quot;C = if(start_year() &amp;gt;= 2001 &amp;amp;&amp;amp; start_month() &amp;gt; 6, and(A,B), not(A,B))&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Spatio-temporal raster algebra module &amp;lt;b&amp;gt;t.rast.mapcalc&amp;lt;/b&amp;gt;&lt;br /&gt;
** The algebra will be based on the existing {{Cmd|r.mapcalc}} raster map algebra, temporal variables (day of year, weekday, datum, time, ...), temporal topology relations (predecessor, successor, follows, equals, ...) and spatial topology relations (equivalent, in, disjoint, ..)&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
** The resulting module will be able to process space time raster datasets using expressions like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Compute the sum between the space time raster datasets A and B&lt;br /&gt;
# from maps with equal time stamps. The STRDS A is used as temporal reference.&lt;br /&gt;
# A new STRDS C will be created with the same time stamps as A.&lt;br /&gt;
t.rast.mapcalc inputs=A,B timeref=A output=C expr=&amp;quot;C = if(equal(B), A + B)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Spatio-temporal neighborhood computation. STRDS C will have the same time stamps as A.&lt;br /&gt;
t.rast.mapcalc input=B timeref=A output=C \&lt;br /&gt;
    expr=&amp;quot;C = if(successor(B) &amp;amp;&amp;amp; predecessor(B), (successor(B)[0,0] + B[0,0] + predecessor(B)[0,0])/3.0, B[0,0])&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The GRASS GIS temporal framework will be utilized and extened with the spatio-temporal algebra&lt;br /&gt;
* The pygrass module interface will be used to call the raster mapcalc and vector overlay/buffer modules&lt;br /&gt;
* PLY will be used for lexical analysis and parser generation&lt;br /&gt;
* Spatio-temporal algebra will be equivalent for booth modules with about &amp;lt;b&amp;gt;60&amp;lt;/b&amp;gt; internal variables and functions&lt;br /&gt;
&lt;br /&gt;
=== Improve GRASS' kriging and 3D interpolation capabilities ===&lt;br /&gt;
&lt;br /&gt;
One of GRASS' most outstanding features is its support for 3D raster (voxel) data. In fact, GRASS offers more functionality for 3D volumetric data processing than many expensive proprietary solutions. This GSoC project aims to improve on GRASS' existing strengths by significantly enhancing the methods for interpolation of data in voxel space. Currently, GRASS offers spline-based interpolation of 3D vector points to 3D voxel data. We plan to add the following (see also notes below):&lt;br /&gt;
&lt;br /&gt;
* 3D geostatistics/kriging&lt;br /&gt;
* 3D interpolation using radial basis functions (RBF)&lt;br /&gt;
* transition probability models (TBM)&lt;br /&gt;
* stratigraphic modeling&lt;br /&gt;
&lt;br /&gt;
These improved 3D interpolation capabilities would combine ideally with the 3D processing modules already present in GRASS (flexible 3D map algebra, export to VTK format for visualization, 3D vector data manipulation, etc.).&lt;br /&gt;
&lt;br /&gt;
If this project can be realized as planned, it will allow GRASS to establish itself as the open source tool of choice for applications in geology, geophysics, soil science and archaeology, all of which have a need to model subsurface soil structures and properties based on 3D sampling points. These areas of application are currently dominated by expensive and inflexible proprietary tools, which is why we feel that this project could make a real difference for open source users.&lt;br /&gt;
&lt;br /&gt;
'''Available mentors:'''&lt;br /&gt;
&lt;br /&gt;
* Benjamin Ducke&lt;br /&gt;
* Sören Gebbert&lt;br /&gt;
&lt;br /&gt;
'''Notes on 3D kriging''':&lt;br /&gt;
Since GRASS currently lacks native geostatistical capabilities, this project will cover 3D ''and'' 2D variograms, kriging interpolation, etc. There are already efforts underway in the GRASS community to supply complete geostatistical functionality and we expect our GSoC student to make full use of them (see [http://lists.osgeo.org/pipermail/grass-dev/2013-April/063389.html]), minimzing the time this GSoC project will have to spent on the 3D kriging component.&lt;br /&gt;
&lt;br /&gt;
'''Notes on radial basis functions (RBF)''':&lt;br /&gt;
RBF are straight-forward interpolation functions. Most GIS users will be aware of Inverse Distance Weighting (e.g. GRASS has [http://grass.osgeo.org/grass70/manuals/v.surf.idw.html v.surf.idw]), which is just one specific case of RBF. In the context of 3D interpolation, RBF provide simple and efficient interpolators useful for dense 3D samples (or for producing incomplete models from sparse samples).&lt;br /&gt;
&lt;br /&gt;
'''Notes on transition probability models (TBM)''':&lt;br /&gt;
TBMs allow to interpolate category (integer) data, such as soil classes in 3D space. Naturally, the result of such an interpolation will not be as accurate as that of interpolation of continuous data via splines or kriging. However, soil horizons, layers etc. are very common data in soil science and geology (borehole samples!) and there is currently no robust method for interpolating such data in GRASS. There is a FORTRAN implementation of TBM called T-PROGS (by Steven F. Carle) that is in the public domain. T-PROGS could be run from within GRASS as a command line tool or translated to C and converted into a &amp;quot;real&amp;quot; GRASS module (see [http://www.xmswiki.com/xms/GMS:T-PROGS]; see also [http://chl.erdc.usace.army.mil/chl.aspx?p=s&amp;amp;a=ARTICLES;37&amp;amp;g=50]).&lt;br /&gt;
&lt;br /&gt;
'''Notes on stratigraphic modeling''':&lt;br /&gt;
Another approach to soil horizon interpolation, that may be easy to implement in GRASS, is documented here: [http://chl.erdc.usace.army.mil/chl.aspx?p=s&amp;amp;a=ARTICLES;41&amp;amp;g=50]. Basically, this involves taking 2D cross sections of soil horizons and extruding them into a 3D model in the most straight-forward way. This is something that is often done manually by soil scientists and archaeologists, but could be done more efficiently and transparently using a simple algorithm.&lt;br /&gt;
&lt;br /&gt;
See also these GRASS mailing list posts for further information:&lt;br /&gt;
&lt;br /&gt;
'''Further information'''&lt;br /&gt;
&lt;br /&gt;
http://lists.osgeo.org/pipermail/grass-user/2010-January/054246.html&lt;br /&gt;
&lt;br /&gt;
http://lists.osgeo.org/pipermail/grass-dev/2013-April/063389.html&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_and_Paraview&amp;diff=18142</id>
		<title>GRASS and Paraview</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_and_Paraview&amp;diff=18142"/>
		<updated>2013-03-26T18:25:47Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* 2D/3D Raster/voxel export */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 3D visualization of GRASS data with Paraview=&lt;br /&gt;
&lt;br /&gt;
Download Paraview at http://www.paraview.org (available for Linux, MacOSX and MS-Windows) ([http://www.paraview.org/paraview/project/imagegallery.php screenshot gallery])&lt;br /&gt;
&lt;br /&gt;
== 2D/3D Raster/voxel export ==&lt;br /&gt;
&lt;br /&gt;
GRASS GIS is one of the few GIS with volume data support. Here data are stored as a 3D raster with a unit volume called a voxel (volume pixel). [[Voxel]]s are designed to support for example representations of trivariate continuous fields. The latest version of GRASS7 supports space time voxel cubes that have time as the third dimension.&lt;br /&gt;
&lt;br /&gt;
* 2D raster maps: {{cmd|r.out.vtk}}&lt;br /&gt;
* 3D raster (voxel) maps: {{cmd|r3.out.vtk}}&lt;br /&gt;
* 3D raster (voxel) and space time voxel maps as netCDF: r3.out.netcdf&lt;br /&gt;
&lt;br /&gt;
== 2D/3D Vector export ==&lt;br /&gt;
&lt;br /&gt;
* 2D/3D vector maps: {{cmd|v.out.vtk}}&lt;br /&gt;
&lt;br /&gt;
== Visualization ==&lt;br /&gt;
&lt;br /&gt;
Start Paraview, load VTK data, and choose the correct readers : for example &amp;quot;Legacy VTK file&amp;quot;....it is fairly intuitive to use.&lt;br /&gt;
In the Properties section click the Apply button, next in the Display section set &amp;quot;Surface&amp;quot; in Representation menu, and set the name of the file that you had load on the Color menu. Then with Edit menu you can set the color scale.&lt;br /&gt;
In Paraview you have many filtes to process the data. A useful filter is &amp;quot;Cell data to point data&amp;quot;. In the &amp;quot;Filters&amp;quot; drop-down menu you can find it in the &amp;quot;Alphabetical&amp;quot; list.&lt;br /&gt;
''(don't hesitate to expand this part)''&lt;br /&gt;
&lt;br /&gt;
 paraview --data=/tmp/threelayer.vtk&lt;br /&gt;
&lt;br /&gt;
[[Image:LausanneDemoDataset3dParaview_4.png|thumb|center|400px|3D groundwater flow]]&lt;br /&gt;
&lt;br /&gt;
[[Image:LausanneDemoDataset3dParaview_10.png|thumb|center|400px|3D groundwater flow]]&lt;br /&gt;
&lt;br /&gt;
== RGB visualization ==&lt;br /&gt;
&lt;br /&gt;
Data export with {{cmd|r.out.vtk}}:&lt;br /&gt;
 r.out.vtk input=dsm_s_michele elevation=dsm_s_michele \&lt;br /&gt;
           rgbmaps=ofd_s_michele.red,ofd_s_michele.green,ofd_s_michele.blue \&lt;br /&gt;
           out=s_michele_color.vtk&lt;br /&gt;
&lt;br /&gt;
Load into Paraview:&lt;br /&gt;
 paraview --data=s_michele_color.vtk&lt;br /&gt;
&lt;br /&gt;
* In Paraview, click &amp;quot;Apply&amp;quot;&lt;br /&gt;
* Select the &amp;quot;Display&amp;quot; tab and choose &amp;quot;Color by&amp;quot; to switch from input scalars to rgb scalars&lt;br /&gt;
* Disable the &amp;quot;Map Scalars&amp;quot; check button in the display tab to avoid the use of a lookup table&lt;br /&gt;
&lt;br /&gt;
[[Image:Paraview fondazione mach 3D.png|thumb|center|400px|Fondazione Mach - S. Michele (Italy) area shown in ParaView]]&lt;br /&gt;
&lt;br /&gt;
== Shown as stereo anaglyphs ==&lt;br /&gt;
&lt;br /&gt;
 paraview --stereo --data=s_michele_color.vtk&lt;br /&gt;
&lt;br /&gt;
* In Paraview, click &amp;quot;Apply&amp;quot;&lt;br /&gt;
* Select the &amp;quot;Display&amp;quot; tab and choose &amp;quot;Color by&amp;quot; to switch from input scalars to rgb scalars&lt;br /&gt;
* Disable the &amp;quot;Map Scalars&amp;quot; check button in the display tab to avoid the use of a lookup table&lt;br /&gt;
&lt;br /&gt;
[[Image:Paraview fondazione mach ortho 3D.png|thumb|center|400px|Fondazione Mach - S. Michele (Italy) area shown in ParaView's stereo mode]]&lt;br /&gt;
&lt;br /&gt;
== Creating Stereo anaglyphs ==&lt;br /&gt;
&lt;br /&gt;
* see [[Stereo anaglyphs]]&lt;br /&gt;
&lt;br /&gt;
[[Category: Visualization]]&lt;br /&gt;
[[Category: Documentation]]&lt;br /&gt;
[[Category: FAQ]]&lt;br /&gt;
[[Category: Linking to other languages]]&lt;br /&gt;
[[Category: Tutorial]]&lt;br /&gt;
[[Category: 3D]]&lt;br /&gt;
[[Category: VTK]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_and_Paraview&amp;diff=18141</id>
		<title>GRASS and Paraview</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_and_Paraview&amp;diff=18141"/>
		<updated>2013-03-26T18:19:52Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* See also */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= 3D visualization of GRASS data with Paraview=&lt;br /&gt;
&lt;br /&gt;
Download Paraview at http://www.paraview.org (available for Linux, MacOSX and MS-Windows) ([http://www.paraview.org/paraview/project/imagegallery.php screenshot gallery])&lt;br /&gt;
&lt;br /&gt;
== 2D/3D Raster/voxel export ==&lt;br /&gt;
&lt;br /&gt;
GRASS GIS is one of the few GIS with volume data support. Here data are stored as a 3D raster with a unit volume called a voxel (volume pixel). [[Voxel]]s are designed to support for example representations of trivariate continuous fields. &lt;br /&gt;
&lt;br /&gt;
* 2D raster maps: {{cmd|r.out.vtk}}&lt;br /&gt;
* 3D raster (voxel) maps: {{cmd|r3.out.vtk}}&lt;br /&gt;
&lt;br /&gt;
== 2D/3D Vector export ==&lt;br /&gt;
&lt;br /&gt;
* 2D/3D vector maps: {{cmd|v.out.vtk}}&lt;br /&gt;
&lt;br /&gt;
== Visualization ==&lt;br /&gt;
&lt;br /&gt;
Start Paraview, load VTK data, and choose the correct readers : for example &amp;quot;Legacy VTK file&amp;quot;....it is fairly intuitive to use.&lt;br /&gt;
In the Properties section click the Apply button, next in the Display section set &amp;quot;Surface&amp;quot; in Representation menu, and set the name of the file that you had load on the Color menu. Then with Edit menu you can set the color scale.&lt;br /&gt;
In Paraview you have many filtes to process the data. A useful filter is &amp;quot;Cell data to point data&amp;quot;. In the &amp;quot;Filters&amp;quot; drop-down menu you can find it in the &amp;quot;Alphabetical&amp;quot; list.&lt;br /&gt;
''(don't hesitate to expand this part)''&lt;br /&gt;
&lt;br /&gt;
 paraview --data=/tmp/threelayer.vtk&lt;br /&gt;
&lt;br /&gt;
[[Image:LausanneDemoDataset3dParaview_4.png|thumb|center|400px|3D groundwater flow]]&lt;br /&gt;
&lt;br /&gt;
[[Image:LausanneDemoDataset3dParaview_10.png|thumb|center|400px|3D groundwater flow]]&lt;br /&gt;
&lt;br /&gt;
== RGB visualization ==&lt;br /&gt;
&lt;br /&gt;
Data export with {{cmd|r.out.vtk}}:&lt;br /&gt;
 r.out.vtk input=dsm_s_michele elevation=dsm_s_michele \&lt;br /&gt;
           rgbmaps=ofd_s_michele.red,ofd_s_michele.green,ofd_s_michele.blue \&lt;br /&gt;
           out=s_michele_color.vtk&lt;br /&gt;
&lt;br /&gt;
Load into Paraview:&lt;br /&gt;
 paraview --data=s_michele_color.vtk&lt;br /&gt;
&lt;br /&gt;
* In Paraview, click &amp;quot;Apply&amp;quot;&lt;br /&gt;
* Select the &amp;quot;Display&amp;quot; tab and choose &amp;quot;Color by&amp;quot; to switch from input scalars to rgb scalars&lt;br /&gt;
* Disable the &amp;quot;Map Scalars&amp;quot; check button in the display tab to avoid the use of a lookup table&lt;br /&gt;
&lt;br /&gt;
[[Image:Paraview fondazione mach 3D.png|thumb|center|400px|Fondazione Mach - S. Michele (Italy) area shown in ParaView]]&lt;br /&gt;
&lt;br /&gt;
== Shown as stereo anaglyphs ==&lt;br /&gt;
&lt;br /&gt;
 paraview --stereo --data=s_michele_color.vtk&lt;br /&gt;
&lt;br /&gt;
* In Paraview, click &amp;quot;Apply&amp;quot;&lt;br /&gt;
* Select the &amp;quot;Display&amp;quot; tab and choose &amp;quot;Color by&amp;quot; to switch from input scalars to rgb scalars&lt;br /&gt;
* Disable the &amp;quot;Map Scalars&amp;quot; check button in the display tab to avoid the use of a lookup table&lt;br /&gt;
&lt;br /&gt;
[[Image:Paraview fondazione mach ortho 3D.png|thumb|center|400px|Fondazione Mach - S. Michele (Italy) area shown in ParaView's stereo mode]]&lt;br /&gt;
&lt;br /&gt;
== Creating Stereo anaglyphs ==&lt;br /&gt;
&lt;br /&gt;
* see [[Stereo anaglyphs]]&lt;br /&gt;
&lt;br /&gt;
[[Category: Visualization]]&lt;br /&gt;
[[Category: Documentation]]&lt;br /&gt;
[[Category: FAQ]]&lt;br /&gt;
[[Category: Linking to other languages]]&lt;br /&gt;
[[Category: Tutorial]]&lt;br /&gt;
[[Category: 3D]]&lt;br /&gt;
[[Category: VTK]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_SoC_Ideas_2013&amp;diff=17972</id>
		<title>GRASS SoC Ideas 2013</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_SoC_Ideas_2013&amp;diff=17972"/>
		<updated>2013-02-27T10:35:56Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Temporal GIS Algebra for raster and vector data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About ==&lt;br /&gt;
&lt;br /&gt;
This is the GRASS page for [http://wiki.osgeo.org/index.php/Google_Summer_of_Code Google Summer of Code 2013]. Here we will list project ideas and and other information related to the GRASS GSoC projects.&lt;br /&gt;
&lt;br /&gt;
== Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Also review ideas from [[GRASS SoC Ideas 2009#Ideas|2009]], [[GRASS SoC Ideas 2010#Ideas|2010]], [[GRASS SoC Ideas 2011#Ideas|2011]] and [[GRASS SoC Ideas 2012#Ideas|2012]]  which are still open.&lt;br /&gt;
&lt;br /&gt;
* Project ideas of '''your own''' are also most welcome and often the best.&lt;br /&gt;
&lt;br /&gt;
=== Symbology / Cartography ===&lt;br /&gt;
&lt;br /&gt;
* Allow display of a vector legend in the map display (equivalent to current {{cmd|d.legend}} implementation for rasters)&lt;br /&gt;
&lt;br /&gt;
* Expand [[IconSymbols|symbology]]&lt;br /&gt;
: ''HB: note that SoC only accepts coding projects, not graphics design or documentation projects. Adding svg/eps support to a d.* module and ps.map would be quite helpful. See the {{Cmd|d.graph}} help page and {{Cmd|ps.map}}'s &amp;quot;eps&amp;quot; and &amp;quot;vpoints&amp;quot; instructions.''&lt;br /&gt;
&lt;br /&gt;
* Rework the complete set of thematic cartography tools such as {{Cmd|d.vect.thematic}} and {{Cmd|d.thematic.area}} and the related classification routines&lt;br /&gt;
&lt;br /&gt;
=== Imagery ===&lt;br /&gt;
&lt;br /&gt;
* Based on the work on [[GRASS_GSoC_2012_Image_Segmentation|segmentation]] in GSoC 2012 develop routines for object-based (ore region-based) image classification. This probably entails:&lt;br /&gt;
** Characterizing segments. Thsi includes producing statistics such as mean, median, variance of the segmented data within each delineated segment.&lt;br /&gt;
** Classifying segments based on the characteristics and (possibly) training areas&lt;br /&gt;
** Interface with other modules in a consistent workflow (i.cluster, r.fuzzy, etc)&lt;br /&gt;
&lt;br /&gt;
* Implement hierarchical classification tools (e.g. being able to create a large class &amp;quot;forest&amp;quot;, with subclasses of different types of forests)&lt;br /&gt;
&lt;br /&gt;
* Interface with the [http://www.orfeo-toolbox.org/otb/ Orfeo toolbox (OTB)], which is an open source, [http://www.itk.org ITK]-based, C++ library of (spatial) image processing library. OTB implements a very wide set of interesting features for anybody working with raster data - in particular satellite imagery: radiometric corrections, orthorectification, filtering, feature extraction, image segmentation , classification, change detection, etc.&lt;br /&gt;
&lt;br /&gt;
=== Temporal GIS Algebra for raster and vector data ===&lt;br /&gt;
&lt;br /&gt;
We (Soeren Gebbert and Thomas Leppelt) would like to develop a temporal GIS algebra for raster and vector data in GRASS7. &lt;br /&gt;
&lt;br /&gt;
Role:&lt;br /&gt;
* Mentor: Soeren Gebbert&lt;br /&gt;
* GSoC Student: Thomas Leppelt&lt;br /&gt;
&lt;br /&gt;
Implementation goals:&lt;br /&gt;
&lt;br /&gt;
* Spatio-temporal vector algebra module &amp;lt;b&amp;gt;t.vect.mapcalc&amp;lt;/b&amp;gt;&lt;br /&gt;
** The algebra will be based on vector map operations provided from &amp;lt;b&amp;gt;v.overlay&amp;lt;/b&amp;gt; (and, or, xor, not), &amp;lt;b&amp;gt;v.buffer&amp;lt;/b&amp;gt; (buff_point, buff_line, buff_area), &amp;lt;b&amp;gt;v.patch&amp;lt;/b&amp;gt; (patch), ... , temporal variables (day of year, weekday, datum, time, ...) and temporal topology relations (predecessor, successor, follows, equals, ...)&lt;br /&gt;
** The resulting module will be able to process space time vector datasets using expressions like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Compute the intersection between the space time vector datasets A and B&lt;br /&gt;
# from maps with equal time stamps. The STVDS A is used as temporal reference.&lt;br /&gt;
# A new STVDS C will be created with the same time stamps as A.&lt;br /&gt;
t.vect.mapcalc inputs=A,B timeref=A output=C expr=&amp;quot;C = if(equal(B), and(A,B))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 time     |STVDS|STVDS|STVDS&lt;br /&gt;
 stamp    |  A  |  B  |  C&lt;br /&gt;
-------------------------------------&lt;br /&gt;
Jan 2001  |  a1 |  b1 |  v.overlay ain=a1 bin=b1 op=and out=c1&lt;br /&gt;
Feb 2001  |  a2 |     | &lt;br /&gt;
Mar 2001  |     |  b2 |&lt;br /&gt;
Apr 2001  |  a3 |     | &lt;br /&gt;
May 2001  |  a4 |  b3 |  v.overlay ain=a4 bin=b3 op=and out=c2&lt;br /&gt;
Jun 2001  |     |  b4 |&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Nested operations are supported and temporal neighborhood computation&lt;br /&gt;
t.vect.mapcalc input=A,B,C tempref=A output=D \&lt;br /&gt;
    expr=&amp;quot;D = if(successor(B) &amp;amp;&amp;amp; predecessor(C), and(A, xor(successor(B), buff_point(predecessor(C), 100)))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Date and time can be used in the expression&lt;br /&gt;
t.vect.mapcalc input=A,B timeref=A output=C \&lt;br /&gt;
    expr=&amp;quot;C = if(start_year() &amp;gt;= 2001 &amp;amp;&amp;amp; start_month() &amp;gt; 6, and(A,B), not(A,B))&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Spatio-temporal raster algebra module &amp;lt;b&amp;gt;t.rast.mapcalc&amp;lt;/b&amp;gt;&lt;br /&gt;
** The algebra will be based on the existing &amp;lt;b&amp;gt;r.mapcalc&amp;lt;/b&amp;gt; raster map algebra, temporal variables (day of year, weekday, datum, time, ...) and temporal topology relations (predecessor, successor, follows, equals, ...)&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
** The resulting module will be able to process space time raster datasets using expressions like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Compute the sum between the space time raster datasets A and B&lt;br /&gt;
# from maps with equal time stamps. The STRDS A is used as temporal reference.&lt;br /&gt;
# A new STRDS C will be created with the same time stamps as A.&lt;br /&gt;
t.rast.mapcalc inputs=A,B timeref=A output=C expr=&amp;quot;C = if(equal(B), A + B)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Spatio-temporal neighborhood computation. STRDS C will have the same time stamps as A.&lt;br /&gt;
t.rast.mapcalc input=B timeref=A output=C \&lt;br /&gt;
    expr=&amp;quot;C = if(successor(B) &amp;amp;&amp;amp; predecessor(B), (successor(B)[0,0] + B[0,0] + predecessor(B)[0,0])/3.0, B[0,0])&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The GRASS GIS temporal framework will be utilized and the pygrass module interface&lt;br /&gt;
* PLY will be used for lexical analysis and parser generation&lt;br /&gt;
* Temporal algebra will be equivalent for booth modules with about &amp;lt;b&amp;gt;60&amp;lt;/b&amp;gt; internal variables and functions&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_SoC_Ideas_2013&amp;diff=17971</id>
		<title>GRASS SoC Ideas 2013</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_SoC_Ideas_2013&amp;diff=17971"/>
		<updated>2013-02-27T10:33:34Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Temporal GIS Algebra */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About ==&lt;br /&gt;
&lt;br /&gt;
This is the GRASS page for [http://wiki.osgeo.org/index.php/Google_Summer_of_Code Google Summer of Code 2013]. Here we will list project ideas and and other information related to the GRASS GSoC projects.&lt;br /&gt;
&lt;br /&gt;
== Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Also review ideas from [[GRASS SoC Ideas 2009#Ideas|2009]], [[GRASS SoC Ideas 2010#Ideas|2010]], [[GRASS SoC Ideas 2011#Ideas|2011]] and [[GRASS SoC Ideas 2012#Ideas|2012]]  which are still open.&lt;br /&gt;
&lt;br /&gt;
* Project ideas of '''your own''' are also most welcome and often the best.&lt;br /&gt;
&lt;br /&gt;
=== Symbology / Cartography ===&lt;br /&gt;
&lt;br /&gt;
* Allow display of a vector legend in the map display (equivalent to current {{cmd|d.legend}} implementation for rasters)&lt;br /&gt;
&lt;br /&gt;
* Expand [[IconSymbols|symbology]]&lt;br /&gt;
: ''HB: note that SoC only accepts coding projects, not graphics design or documentation projects. Adding svg/eps support to a d.* module and ps.map would be quite helpful. See the {{Cmd|d.graph}} help page and {{Cmd|ps.map}}'s &amp;quot;eps&amp;quot; and &amp;quot;vpoints&amp;quot; instructions.''&lt;br /&gt;
&lt;br /&gt;
* Rework the complete set of thematic cartography tools such as {{Cmd|d.vect.thematic}} and {{Cmd|d.thematic.area}} and the related classification routines&lt;br /&gt;
&lt;br /&gt;
=== Imagery ===&lt;br /&gt;
&lt;br /&gt;
* Based on the work on [[GRASS_GSoC_2012_Image_Segmentation|segmentation]] in GSoC 2012 develop routines for object-based (ore region-based) image classification. This probably entails:&lt;br /&gt;
** Characterizing segments. Thsi includes producing statistics such as mean, median, variance of the segmented data within each delineated segment.&lt;br /&gt;
** Classifying segments based on the characteristics and (possibly) training areas&lt;br /&gt;
** Interface with other modules in a consistent workflow (i.cluster, r.fuzzy, etc)&lt;br /&gt;
&lt;br /&gt;
* Implement hierarchical classification tools (e.g. being able to create a large class &amp;quot;forest&amp;quot;, with subclasses of different types of forests)&lt;br /&gt;
&lt;br /&gt;
* Interface with the [http://www.orfeo-toolbox.org/otb/ Orfeo toolbox (OTB)], which is an open source, [http://www.itk.org ITK]-based, C++ library of (spatial) image processing library. OTB implements a very wide set of interesting features for anybody working with raster data - in particular satellite imagery: radiometric corrections, orthorectification, filtering, feature extraction, image segmentation , classification, change detection, etc.&lt;br /&gt;
&lt;br /&gt;
=== Temporal GIS Algebra for raster and vector data ===&lt;br /&gt;
&lt;br /&gt;
We (Soeren Gebbert and Thomas Leppelt) would like to develop a temporal GIS algebra for raster and vector data in GRASS7. &lt;br /&gt;
&lt;br /&gt;
Role:&lt;br /&gt;
* Mentor: Soeren Gebbert&lt;br /&gt;
* GSoC Student: Thomas Leppelt&lt;br /&gt;
&lt;br /&gt;
Implementation goals:&lt;br /&gt;
&lt;br /&gt;
* Spatio-temporal vector algebra module &amp;lt;b&amp;gt;t.vect.mapcalc&amp;lt;/b&amp;gt;&lt;br /&gt;
** The algebra will be based on vector map operations provided from &amp;lt;b&amp;gt;v.overlay&amp;lt;/b&amp;gt; (and, or, xor, not), &amp;lt;b&amp;gt;v.buffer&amp;lt;/b&amp;gt; (buff_point, buff_line, buff_area), &amp;lt;b&amp;gt;v.patch&amp;lt;/b&amp;gt; (patch), ... , temporal variables (day of year, weekday, datum, time, ...) and temporal topology relations (predecessor, successor, follows, equals, ...)&lt;br /&gt;
** The resulting module will be able to process space time vector datasets using expressions like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Compute the intersection between the space time vector datasets A and B&lt;br /&gt;
# from maps with equal time stamps. The STVDS A is used as temporal reference.&lt;br /&gt;
# A new STVDS C will be created with the same time stamps as A.&lt;br /&gt;
t.vect.mapcalc inputs=A,B timeref=A output=C expr=&amp;quot;C = if(equal(B), and(A,B))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 time     |STVDS|STVDS|STVDS&lt;br /&gt;
 stamp    |  A  |  B  |  C&lt;br /&gt;
-------------------------------------&lt;br /&gt;
Jan 2001  |  a1 |  b1 |  v.overlay ain=a1 bin=b1 op=and out=c1&lt;br /&gt;
Feb 2001  |  a2 |     | &lt;br /&gt;
Mar 2001  |     |  b2 |&lt;br /&gt;
Apr 2001  |  a3 |     | &lt;br /&gt;
May 2001  |  a4 |  b3 |  v.overlay ain=a4 bin=b3 op=and out=c2&lt;br /&gt;
Jun 2001  |     |  b4 |&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Nested boolean operations are supported and temporal neighborhood computation&lt;br /&gt;
t.vect.mapcalc input=A,B,C tempref=A output=D \&lt;br /&gt;
    expr=&amp;quot;D = if(successor(B) &amp;amp;&amp;amp; predecessor(C), and(A, xor(successor(B), buff_point(predecessor(C), 100)))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Date and time can be used in the expression&lt;br /&gt;
t.vect.mapcalc input=A,B timeref=A output=C \&lt;br /&gt;
    expr=&amp;quot;C = if(start_year() &amp;gt;= 2001 || start_year() &amp;lt;= 2010, and(A,B))&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Spatio-temporal raster algebra module &amp;lt;b&amp;gt;t.rast.mapcalc&amp;lt;/b&amp;gt;&lt;br /&gt;
** The algebra will be based on the existing &amp;lt;b&amp;gt;r.mapcalc&amp;lt;/b&amp;gt; raster map algebra, temporal variables (day of year, weekday, datum, time, ...) and temporal topology relations (predecessor, successor, follows, equals, ...)&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
** The resulting module will be able to process space time raster datasets using expressions like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Compute the sum between the space time raster datasets A and B&lt;br /&gt;
# from maps with equal time stamps. The STRDS A is used as temporal reference.&lt;br /&gt;
# A new STRDS C will be created with the same time stamps as A.&lt;br /&gt;
t.rast.mapcalc inputs=A,B timeref=A output=C expr=&amp;quot;C = if(equal(B), A + B)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Spatio-temporal neighborhood computation. STRDS C will have the same time stamps as A.&lt;br /&gt;
t.rast.mapcalc input=B timeref=A output=C \&lt;br /&gt;
    expr=&amp;quot;C = if(successor(B) &amp;amp;&amp;amp; predecessor(B), (successor(B)[0,0] + B[0,0] + predecessor(B)[0,0])/3.0, B[0,0])&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The GRASS GIS temporal framework will be utilized and the pygrass module interface&lt;br /&gt;
* PLY will be used for lexical analysis and parser generation&lt;br /&gt;
* Temporal algebra will be equivalent for booth modules with about &amp;lt;b&amp;gt;60&amp;lt;/b&amp;gt; internal variables and functions&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_SoC_Ideas_2013&amp;diff=17970</id>
		<title>GRASS SoC Ideas 2013</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_SoC_Ideas_2013&amp;diff=17970"/>
		<updated>2013-02-27T10:10:16Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Temporal GIS Algebra */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About ==&lt;br /&gt;
&lt;br /&gt;
This is the GRASS page for [http://wiki.osgeo.org/index.php/Google_Summer_of_Code Google Summer of Code 2013]. Here we will list project ideas and and other information related to the GRASS GSoC projects.&lt;br /&gt;
&lt;br /&gt;
== Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Also review ideas from [[GRASS SoC Ideas 2009#Ideas|2009]], [[GRASS SoC Ideas 2010#Ideas|2010]], [[GRASS SoC Ideas 2011#Ideas|2011]] and [[GRASS SoC Ideas 2012#Ideas|2012]]  which are still open.&lt;br /&gt;
&lt;br /&gt;
* Project ideas of '''your own''' are also most welcome and often the best.&lt;br /&gt;
&lt;br /&gt;
=== Symbology / Cartography ===&lt;br /&gt;
&lt;br /&gt;
* Allow display of a vector legend in the map display (equivalent to current {{cmd|d.legend}} implementation for rasters)&lt;br /&gt;
&lt;br /&gt;
* Expand [[IconSymbols|symbology]]&lt;br /&gt;
: ''HB: note that SoC only accepts coding projects, not graphics design or documentation projects. Adding svg/eps support to a d.* module and ps.map would be quite helpful. See the {{Cmd|d.graph}} help page and {{Cmd|ps.map}}'s &amp;quot;eps&amp;quot; and &amp;quot;vpoints&amp;quot; instructions.''&lt;br /&gt;
&lt;br /&gt;
* Rework the complete set of thematic cartography tools such as {{Cmd|d.vect.thematic}} and {{Cmd|d.thematic.area}} and the related classification routines&lt;br /&gt;
&lt;br /&gt;
=== Imagery ===&lt;br /&gt;
&lt;br /&gt;
* Based on the work on [[GRASS_GSoC_2012_Image_Segmentation|segmentation]] in GSoC 2012 develop routines for object-based (ore region-based) image classification. This probably entails:&lt;br /&gt;
** Characterizing segments. Thsi includes producing statistics such as mean, median, variance of the segmented data within each delineated segment.&lt;br /&gt;
** Classifying segments based on the characteristics and (possibly) training areas&lt;br /&gt;
** Interface with other modules in a consistent workflow (i.cluster, r.fuzzy, etc)&lt;br /&gt;
&lt;br /&gt;
* Implement hierarchical classification tools (e.g. being able to create a large class &amp;quot;forest&amp;quot;, with subclasses of different types of forests)&lt;br /&gt;
&lt;br /&gt;
* Interface with the [http://www.orfeo-toolbox.org/otb/ Orfeo toolbox (OTB)], which is an open source, [http://www.itk.org ITK]-based, C++ library of (spatial) image processing library. OTB implements a very wide set of interesting features for anybody working with raster data - in particular satellite imagery: radiometric corrections, orthorectification, filtering, feature extraction, image segmentation , classification, change detection, etc.&lt;br /&gt;
&lt;br /&gt;
=== Temporal GIS Algebra ===&lt;br /&gt;
&lt;br /&gt;
We (Soeren Gebbert and Thomas Leppelt) would like to implement a spatio-temporal map algebra for raster and vector data in GRASS7. &lt;br /&gt;
&lt;br /&gt;
Role:&lt;br /&gt;
* Mentor: Soeren Gebbert&lt;br /&gt;
* GSoC Student: Thomas Leppelt&lt;br /&gt;
&lt;br /&gt;
Implementation goals:&lt;br /&gt;
&lt;br /&gt;
* Spatio-temporal vector algebra module &amp;lt;b&amp;gt;t.vect.mapcalc&amp;lt;/b&amp;gt;&lt;br /&gt;
** The algebra will be based on vector map operations provided from &amp;lt;b&amp;gt;v.overlay&amp;lt;/b&amp;gt; (and, or, xor, not), &amp;lt;b&amp;gt;v.buffer&amp;lt;/b&amp;gt; (buff_point, buff_line, buff_area), &amp;lt;b&amp;gt;v.patch&amp;lt;/b&amp;gt; (patch), ... , temporal variables (day of year, weekday, datum, time, ...) and temporal topology relations (predecessor, successor, follows, equals, ...)&lt;br /&gt;
** The resulting module will be able to process space time vector datasets using expressions like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Compute the intersection between the space time vector datasets A and B&lt;br /&gt;
# from maps with equal time stamps. The STVDS A is used as temporal reference.&lt;br /&gt;
# A new STVDS C will be created with the same time stamps as A.&lt;br /&gt;
t.vect.mapcalc inputs=A,B timeref=A output=C expr=&amp;quot;C = if(equal(B), and(A,B))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 time     |STVDS|STVDS|STVDS&lt;br /&gt;
 stamp    |  A  |  B  |  C&lt;br /&gt;
-------------------------------------&lt;br /&gt;
Jan 2001  |  a1 |  b1 |  v.overlay ain=a1 bin=b1 op=and out=c1&lt;br /&gt;
Feb 2001  |  a2 |     | &lt;br /&gt;
Mar 2001  |     |  b2 |&lt;br /&gt;
Apr 2001  |  a3 |     | &lt;br /&gt;
May 2001  |  a4 |  b3 |  v.overlay ain=a4 bin=b3 op=and out=c2&lt;br /&gt;
Jun 2001  |     |  b4 |&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Nested boolean operations are supported and temporal neighborhood computation&lt;br /&gt;
t.vect.mapcalc input=A,B,C tempref=A output=D \&lt;br /&gt;
    expr=&amp;quot;D = if(successor(B) &amp;amp;&amp;amp; predecessor(C), and(A, xor(successor(B), buff_point(predecessor(C), 100)))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Date and time can be used in the expression&lt;br /&gt;
t.vect.mapcalc input=A,B timeref=A output=C \&lt;br /&gt;
    expr=&amp;quot;C = if(start_year() &amp;gt;= 2001 || start_year() &amp;lt;= 2010, and(A,B))&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Spatio-temporal raster algebra module &amp;lt;b&amp;gt;t.rast.mapcalc&amp;lt;/b&amp;gt;&lt;br /&gt;
** The algebra will be based on the existing &amp;lt;b&amp;gt;r.mapcalc&amp;lt;/b&amp;gt; raster map algebra, temporal variables (day of year, weekday, datum, time, ...) and temporal topology relations (predecessor, successor, follows, equals, ...)&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
** The resulting module will be able to process space time raster datasets using expressions like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Compute the sum between the space time raster datasets A and B&lt;br /&gt;
# from maps with equal time stamps. The STRDS A is used as temporal reference.&lt;br /&gt;
# A new STRDS C will be created with the same time stamps as A.&lt;br /&gt;
t.rast.mapcalc inputs=A,B timeref=A output=C expr=&amp;quot;C = if(equal(B), A + B)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Spatio-temporal neighborhood computation. STRDS C will have the same time stamps as A.&lt;br /&gt;
t.rast.mapcalc input=B timeref=A output=C \&lt;br /&gt;
    expr=&amp;quot;C = if(successor(B) &amp;amp;&amp;amp; predecessor(B), (successor(B)[0,0] + B[0,0] + predecessor(B)[0,0])/3.0, B[0,0])&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The GRASS GIS temporal framework will be utilized and the pygrass module interface&lt;br /&gt;
* PLY will be used for lexical analysis and parser generation&lt;br /&gt;
* Temporal algebra will be equivalent for booth modules with about &amp;lt;b&amp;gt;60&amp;lt;/b&amp;gt; internal variables and functions&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_SoC_Ideas_2013&amp;diff=17969</id>
		<title>GRASS SoC Ideas 2013</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_SoC_Ideas_2013&amp;diff=17969"/>
		<updated>2013-02-27T09:59:45Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Temporal GIS Algebra */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About ==&lt;br /&gt;
&lt;br /&gt;
This is the GRASS page for [http://wiki.osgeo.org/index.php/Google_Summer_of_Code Google Summer of Code 2013]. Here we will list project ideas and and other information related to the GRASS GSoC projects.&lt;br /&gt;
&lt;br /&gt;
== Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Also review ideas from [[GRASS SoC Ideas 2009#Ideas|2009]], [[GRASS SoC Ideas 2010#Ideas|2010]], [[GRASS SoC Ideas 2011#Ideas|2011]] and [[GRASS SoC Ideas 2012#Ideas|2012]]  which are still open.&lt;br /&gt;
&lt;br /&gt;
* Project ideas of '''your own''' are also most welcome and often the best.&lt;br /&gt;
&lt;br /&gt;
=== Symbology / Cartography ===&lt;br /&gt;
&lt;br /&gt;
* Allow display of a vector legend in the map display (equivalent to current {{cmd|d.legend}} implementation for rasters)&lt;br /&gt;
&lt;br /&gt;
* Expand [[IconSymbols|symbology]]&lt;br /&gt;
: ''HB: note that SoC only accepts coding projects, not graphics design or documentation projects. Adding svg/eps support to a d.* module and ps.map would be quite helpful. See the {{Cmd|d.graph}} help page and {{Cmd|ps.map}}'s &amp;quot;eps&amp;quot; and &amp;quot;vpoints&amp;quot; instructions.''&lt;br /&gt;
&lt;br /&gt;
* Rework the complete set of thematic cartography tools such as {{Cmd|d.vect.thematic}} and {{Cmd|d.thematic.area}} and the related classification routines&lt;br /&gt;
&lt;br /&gt;
=== Imagery ===&lt;br /&gt;
&lt;br /&gt;
* Based on the work on [[GRASS_GSoC_2012_Image_Segmentation|segmentation]] in GSoC 2012 develop routines for object-based (ore region-based) image classification. This probably entails:&lt;br /&gt;
** Characterizing segments. Thsi includes producing statistics such as mean, median, variance of the segmented data within each delineated segment.&lt;br /&gt;
** Classifying segments based on the characteristics and (possibly) training areas&lt;br /&gt;
** Interface with other modules in a consistent workflow (i.cluster, r.fuzzy, etc)&lt;br /&gt;
&lt;br /&gt;
* Implement hierarchical classification tools (e.g. being able to create a large class &amp;quot;forest&amp;quot;, with subclasses of different types of forests)&lt;br /&gt;
&lt;br /&gt;
* Interface with the [http://www.orfeo-toolbox.org/otb/ Orfeo toolbox (OTB)], which is an open source, [http://www.itk.org ITK]-based, C++ library of (spatial) image processing library. OTB implements a very wide set of interesting features for anybody working with raster data - in particular satellite imagery: radiometric corrections, orthorectification, filtering, feature extraction, image segmentation , classification, change detection, etc.&lt;br /&gt;
&lt;br /&gt;
=== Temporal GIS Algebra ===&lt;br /&gt;
&lt;br /&gt;
We (Soeren Gebbert and Thomas Leppelt) would like to implement a spatio-temporal map algebra for raster and vector data in GRASS7. &lt;br /&gt;
&lt;br /&gt;
Role:&lt;br /&gt;
* Mentor: Soeren Gebbert&lt;br /&gt;
* GSoC Student: Thomas Leppelt&lt;br /&gt;
&lt;br /&gt;
Implementation goals:&lt;br /&gt;
&lt;br /&gt;
* Spatio-temporal vector algebra module &amp;lt;b&amp;gt;t.vect.mapcalc&amp;lt;/b&amp;gt;&lt;br /&gt;
** The algebra will be based on vector map operations provided from &amp;lt;b&amp;gt;v.overlay&amp;lt;/b&amp;gt; (and, or, xor, not), &amp;lt;b&amp;gt;v.buffer&amp;lt;/b&amp;gt; (buff_point, buff_line, buff_area), &amp;lt;b&amp;gt;v.patch&amp;lt;/b&amp;gt; (patch), ... , temporal variables (day of year, weekday, datum, time, ...) and temporal topology relations (predecessor, successor, follows, equals, ...)&lt;br /&gt;
** The resulting module will be able to process space time vector datasets using expressions like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Compute the intersection between the space time vector datasets A and B&lt;br /&gt;
# from maps with equal time stamps. The STVDS A is used as temporal reference.&lt;br /&gt;
# A new STVDS C will be created with the same time stamps as A.&lt;br /&gt;
t.vect.mapcalc inputs=A,B timeref=A output=C expr=&amp;quot;C = if(equal(B), and(A,B))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Nested boolean operations are supported and temporal neighborhood computation&lt;br /&gt;
t.vect.mapcalc input=A,B,C tempref=A output=D \&lt;br /&gt;
    expr=&amp;quot;D = if(successor(B) &amp;amp;&amp;amp; predecessor(C), and(A, xor(successor(B), buff_point(predecessor(C), 100)))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Date and time can be used in the expression&lt;br /&gt;
t.vect.mapcalc input=A,B timeref=A output=C \&lt;br /&gt;
    expr=&amp;quot;C = if(start_year() &amp;gt;= 2001 || start_year() &amp;lt;= 2010, and(A,B))&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Spatio-temporal raster algebra module &amp;lt;b&amp;gt;t.rast.mapcalc&amp;lt;/b&amp;gt;&lt;br /&gt;
** The algebra will be based on the existing &amp;lt;b&amp;gt;r.mapcalc&amp;lt;/b&amp;gt; raster map algebra, temporal variables (day of year, weekday, datum, time, ...) and temporal topology relations (predecessor, successor, follows, equals, ...)&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
** The resulting module will be able to process space time raster datasets using expressions like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Compute the sum between the space time raster datasets A and B&lt;br /&gt;
# from maps with equal time stamps. The STRDS A is used as temporal reference.&lt;br /&gt;
# A new STRDS C will be created with the same time stamps as A.&lt;br /&gt;
t.rast.mapcalc inputs=A,B timeref=A output=C expr=&amp;quot;C = if(equal(B), A + B)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Spatio-temporal neighborhood computation. STRDS C will have the same time stamps as A.&lt;br /&gt;
t.rast.mapcalc input=B timeref=A output=C \&lt;br /&gt;
    expr=&amp;quot;C = if(successor(B) &amp;amp;&amp;amp; predecessor(B), (successor(B)[0,0] + B[0,0] + predecessor(B)[0,0])/3.0, B[0,0])&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The GRASS GIS temporal framework will be utilized and the pygrass module interface&lt;br /&gt;
* PLY will be used for lexical analysis and parser generation&lt;br /&gt;
* Temporal algebra will be equivalent for booth modules with about &amp;lt;b&amp;gt;60&amp;lt;/b&amp;gt; internal variables and functions&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_SoC_Ideas_2013&amp;diff=17968</id>
		<title>GRASS SoC Ideas 2013</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_SoC_Ideas_2013&amp;diff=17968"/>
		<updated>2013-02-27T09:56:38Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Temporal GIS Algebra */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About ==&lt;br /&gt;
&lt;br /&gt;
This is the GRASS page for [http://wiki.osgeo.org/index.php/Google_Summer_of_Code Google Summer of Code 2013]. Here we will list project ideas and and other information related to the GRASS GSoC projects.&lt;br /&gt;
&lt;br /&gt;
== Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Also review ideas from [[GRASS SoC Ideas 2009#Ideas|2009]], [[GRASS SoC Ideas 2010#Ideas|2010]], [[GRASS SoC Ideas 2011#Ideas|2011]] and [[GRASS SoC Ideas 2012#Ideas|2012]]  which are still open.&lt;br /&gt;
&lt;br /&gt;
* Project ideas of '''your own''' are also most welcome and often the best.&lt;br /&gt;
&lt;br /&gt;
=== Symbology / Cartography ===&lt;br /&gt;
&lt;br /&gt;
* Allow display of a vector legend in the map display (equivalent to current {{cmd|d.legend}} implementation for rasters)&lt;br /&gt;
&lt;br /&gt;
* Expand [[IconSymbols|symbology]]&lt;br /&gt;
: ''HB: note that SoC only accepts coding projects, not graphics design or documentation projects. Adding svg/eps support to a d.* module and ps.map would be quite helpful. See the {{Cmd|d.graph}} help page and {{Cmd|ps.map}}'s &amp;quot;eps&amp;quot; and &amp;quot;vpoints&amp;quot; instructions.''&lt;br /&gt;
&lt;br /&gt;
* Rework the complete set of thematic cartography tools such as {{Cmd|d.vect.thematic}} and {{Cmd|d.thematic.area}} and the related classification routines&lt;br /&gt;
&lt;br /&gt;
=== Imagery ===&lt;br /&gt;
&lt;br /&gt;
* Based on the work on [[GRASS_GSoC_2012_Image_Segmentation|segmentation]] in GSoC 2012 develop routines for object-based (ore region-based) image classification. This probably entails:&lt;br /&gt;
** Characterizing segments. Thsi includes producing statistics such as mean, median, variance of the segmented data within each delineated segment.&lt;br /&gt;
** Classifying segments based on the characteristics and (possibly) training areas&lt;br /&gt;
** Interface with other modules in a consistent workflow (i.cluster, r.fuzzy, etc)&lt;br /&gt;
&lt;br /&gt;
* Implement hierarchical classification tools (e.g. being able to create a large class &amp;quot;forest&amp;quot;, with subclasses of different types of forests)&lt;br /&gt;
&lt;br /&gt;
* Interface with the [http://www.orfeo-toolbox.org/otb/ Orfeo toolbox (OTB)], which is an open source, [http://www.itk.org ITK]-based, C++ library of (spatial) image processing library. OTB implements a very wide set of interesting features for anybody working with raster data - in particular satellite imagery: radiometric corrections, orthorectification, filtering, feature extraction, image segmentation , classification, change detection, etc.&lt;br /&gt;
&lt;br /&gt;
=== Temporal GIS Algebra ===&lt;br /&gt;
&lt;br /&gt;
We (Soeren Gebbert and Thomas Leppelt) would like to implement a spatio-temporal map algebra for raster and vector data in GRASS7. &lt;br /&gt;
&lt;br /&gt;
Role:&lt;br /&gt;
* Mentor: Soeren Gebbert&lt;br /&gt;
* GSoC Student: Thomas Leppelt&lt;br /&gt;
&lt;br /&gt;
Implementation goals:&lt;br /&gt;
&lt;br /&gt;
* Spatio-temporal vector algebra module &amp;lt;b&amp;gt;t.vect.mapcalc&amp;lt;/b&amp;gt;&lt;br /&gt;
** The algebra will be based on vector map operations provided from &amp;lt;b&amp;gt;v.overlay&amp;lt;/b&amp;gt; (and, or, xor, not), &amp;lt;b&amp;gt;v.buffer&amp;lt;/b&amp;gt; (buff_point, buff_line, buff_area), &amp;lt;b&amp;gt;v.patch&amp;lt;/b&amp;gt; (patch), ... , temporal variables (day of year, weekday, datum, time, ...) and temporal topology relations (predecessor, successor, follows, equals, ...)&lt;br /&gt;
** The resulting module will be able to process space time vector datasets using expressions like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Compute the intersection between the space time vector datasets A and B&lt;br /&gt;
# from maps with equal time stamps. The STVDS A is used as temporal reference.&lt;br /&gt;
# A new STVDS C will be created with the same time stamps as A.&lt;br /&gt;
t.vect.mapcalc inputs=A,B timeref=A output=C expr=&amp;quot;C = if(equal(B), and(A,B))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Nested boolean operations are supported and temporal neighborhood computation&lt;br /&gt;
t.vect.mapcalc input=A,B,C tempref=A output=D \&lt;br /&gt;
    expr=&amp;quot;D = if(successor(B) &amp;amp;&amp;amp; predecessor(C), and(A, xor(successor(B), buff_point(predecessor(C), 100)))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Date and time can be used in the expression&lt;br /&gt;
t.vect.mapcalc input=A,B tempref=A output=C \&lt;br /&gt;
    expr=&amp;quot;C = if(start_year() &amp;gt;= 2001 || start_year() &amp;lt;= 2010, and(A,B))&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Spatio-temporal raster algebra module &amp;lt;b&amp;gt;t.rast.mapcalc&amp;lt;/b&amp;gt;&lt;br /&gt;
** The algebra will be based on the existing &amp;lt;b&amp;gt;r.mapcalc&amp;lt;/b&amp;gt; raster map algebra, temporal variables (day of year, weekday, datum, time, ...) and temporal topology relations (predecessor, successor, follows, equals, ...)&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
** The resulting module will be able to process space time raster datasets using expressions like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Compute the sum between the space time raster datasets A and B&lt;br /&gt;
# from maps with equal time stamps. The STRDS A is used as temporal reference.&lt;br /&gt;
# A new STRDS C will be created with the same time stamps as A.&lt;br /&gt;
t.rast.mapcalc inputs=A,B timeref=A output=C expr=&amp;quot;C = if(equal(B), A + B)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Spatio-temporal neighborhood computation. STRDS C will have the same time stamps as A.&lt;br /&gt;
t.rast.mapcalc input=B timeref=A output=C \&lt;br /&gt;
    expr=&amp;quot;C = if(successor(B) &amp;amp;&amp;amp; predecessor(B), (successor(B)[0,0] + B[0,0] + predecessor(B)[0,0])/3.0, B[0,0])&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The GRASS GIS temporal framework will be utilized and the pygrass module interface&lt;br /&gt;
* PLY will be used for lexical analysis and parser generation&lt;br /&gt;
* Temporal algebra will be equivalent for booth modules&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_SoC_Ideas_2013&amp;diff=17967</id>
		<title>GRASS SoC Ideas 2013</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_SoC_Ideas_2013&amp;diff=17967"/>
		<updated>2013-02-27T09:52:43Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Temporal GIS Algebra */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About ==&lt;br /&gt;
&lt;br /&gt;
This is the GRASS page for [http://wiki.osgeo.org/index.php/Google_Summer_of_Code Google Summer of Code 2013]. Here we will list project ideas and and other information related to the GRASS GSoC projects.&lt;br /&gt;
&lt;br /&gt;
== Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Also review ideas from [[GRASS SoC Ideas 2009#Ideas|2009]], [[GRASS SoC Ideas 2010#Ideas|2010]], [[GRASS SoC Ideas 2011#Ideas|2011]] and [[GRASS SoC Ideas 2012#Ideas|2012]]  which are still open.&lt;br /&gt;
&lt;br /&gt;
* Project ideas of '''your own''' are also most welcome and often the best.&lt;br /&gt;
&lt;br /&gt;
=== Symbology / Cartography ===&lt;br /&gt;
&lt;br /&gt;
* Allow display of a vector legend in the map display (equivalent to current {{cmd|d.legend}} implementation for rasters)&lt;br /&gt;
&lt;br /&gt;
* Expand [[IconSymbols|symbology]]&lt;br /&gt;
: ''HB: note that SoC only accepts coding projects, not graphics design or documentation projects. Adding svg/eps support to a d.* module and ps.map would be quite helpful. See the {{Cmd|d.graph}} help page and {{Cmd|ps.map}}'s &amp;quot;eps&amp;quot; and &amp;quot;vpoints&amp;quot; instructions.''&lt;br /&gt;
&lt;br /&gt;
* Rework the complete set of thematic cartography tools such as {{Cmd|d.vect.thematic}} and {{Cmd|d.thematic.area}} and the related classification routines&lt;br /&gt;
&lt;br /&gt;
=== Imagery ===&lt;br /&gt;
&lt;br /&gt;
* Based on the work on [[GRASS_GSoC_2012_Image_Segmentation|segmentation]] in GSoC 2012 develop routines for object-based (ore region-based) image classification. This probably entails:&lt;br /&gt;
** Characterizing segments. Thsi includes producing statistics such as mean, median, variance of the segmented data within each delineated segment.&lt;br /&gt;
** Classifying segments based on the characteristics and (possibly) training areas&lt;br /&gt;
** Interface with other modules in a consistent workflow (i.cluster, r.fuzzy, etc)&lt;br /&gt;
&lt;br /&gt;
* Implement hierarchical classification tools (e.g. being able to create a large class &amp;quot;forest&amp;quot;, with subclasses of different types of forests)&lt;br /&gt;
&lt;br /&gt;
* Interface with the [http://www.orfeo-toolbox.org/otb/ Orfeo toolbox (OTB)], which is an open source, [http://www.itk.org ITK]-based, C++ library of (spatial) image processing library. OTB implements a very wide set of interesting features for anybody working with raster data - in particular satellite imagery: radiometric corrections, orthorectification, filtering, feature extraction, image segmentation , classification, change detection, etc.&lt;br /&gt;
&lt;br /&gt;
=== Temporal GIS Algebra ===&lt;br /&gt;
&lt;br /&gt;
We (Soeren Gebbert and Thomas Leppelt) want to implement a spatio-temporal map algebra for raster and vector data. &lt;br /&gt;
&lt;br /&gt;
Role:&lt;br /&gt;
* Mentor: Soeren Gebbert&lt;br /&gt;
* GSoC Student: Thomas Leppelt&lt;br /&gt;
&lt;br /&gt;
Implementation goals:&lt;br /&gt;
&lt;br /&gt;
* Spatio-temporal vector algebra module&lt;br /&gt;
** The algebra will be based on boolean vector operations from &amp;lt;b&amp;gt;v.overlay&amp;lt;/b&amp;gt; (and, or, xor, not), &amp;lt;b&amp;gt;v.buffer&amp;lt;/b&amp;gt; (buff_point, buff_line, buff_area), &amp;lt;b&amp;gt;v.patch&amp;lt;/b&amp;gt; (patch), temporal variables (day of year, weekday, datum, time, ...) and temporal topology relations (predecessor, successor, follows, equals, ...)&lt;br /&gt;
** The resulting module will be able to process space time vector datasets using expressions like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Compute the intersection between the space time vector datasets A and B&lt;br /&gt;
# from maps with equal time stamps. The STVDS A is used as temporal reference.&lt;br /&gt;
# A new STVDS C will be created with the same time stamps as A.&lt;br /&gt;
t.vect.mapcalc inputs=A,B timeref=A output=C expr=&amp;quot;C = if(equal(B), and(A,B))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Nested boolean operations are supported and temporal neighborhood computation&lt;br /&gt;
t.vect.mapcalc input=A,B,C tempref=A output=D \&lt;br /&gt;
    expr=&amp;quot;D = if(successor(B) &amp;amp;&amp;amp; predecessor(C), and(A, xor(successor(B), buff_point(predecessor(C), 100)))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Date and time can be used in the expression&lt;br /&gt;
t.vect.mapcalc input=A,B tempref=A output=C \&lt;br /&gt;
    expr=&amp;quot;C = if(start_year() &amp;gt;= 2001 || start_year() &amp;lt;= 2010, and(A,B))&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Spatio-temporal raster algebra module&lt;br /&gt;
** The algebra will be based on the existing &amp;lt;b&amp;gt;r.mapcalc&amp;lt;/b&amp;gt; raster map algebra, temporal variables (day of year, weekday, datum, time, ...) and temporal topology relations (predecessor, successor, follows, equals, ...)&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
** The resulting module will be able to process space time raster datasets using expressions like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Compute the sum between the space time raster datasets A and B&lt;br /&gt;
# from maps with equal time stamps. The STRDS A is used as temporal reference.&lt;br /&gt;
# A new STRDS C will be created with the same time stamps as A.&lt;br /&gt;
t.rast.mapcalc inputs=A,B timeref=A output=C expr=&amp;quot;C = if(equal(B), A + B)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Spatio-temporal neighborhood computation. STRDS C will have the same time stamps as A.&lt;br /&gt;
t.rast.mapcalc input=B timeref=A output=C \&lt;br /&gt;
    expr=&amp;quot;C = if(successor(B) &amp;amp;&amp;amp; predecessor(B), (successor(B)[0,0] + B[0,0] + predecessor(B)[0,0])/3.0, B[0,0])&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* The GRASS GIS temporal framework will be utilized and the pygrass module interface&lt;br /&gt;
* PLY will be used for lexical analysis and parser generation&lt;br /&gt;
* Temporal algebra will be equivalent for booth modules&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_SoC_Ideas_2013&amp;diff=17964</id>
		<title>GRASS SoC Ideas 2013</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_SoC_Ideas_2013&amp;diff=17964"/>
		<updated>2013-02-26T21:41:59Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== About ==&lt;br /&gt;
&lt;br /&gt;
This is the GRASS page for [http://wiki.osgeo.org/index.php/Google_Summer_of_Code Google Summer of Code 2013]. Here we will list project ideas and and other information related to the GRASS GSoC projects.&lt;br /&gt;
&lt;br /&gt;
== Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Also review ideas from [[GRASS SoC Ideas 2009#Ideas|2009]], [[GRASS SoC Ideas 2010#Ideas|2010]], [[GRASS SoC Ideas 2011#Ideas|2011]] and [[GRASS SoC Ideas 2012#Ideas|2012]]  which are still open.&lt;br /&gt;
&lt;br /&gt;
* Project ideas of '''your own''' are also most welcome and often the best.&lt;br /&gt;
&lt;br /&gt;
=== Symbology / Cartography ===&lt;br /&gt;
&lt;br /&gt;
* Allow display of a vector legend in the map display (equivalent to current {{cmd|d.legend}} implementation for rasters)&lt;br /&gt;
&lt;br /&gt;
* Expand [[IconSymbols|symbology]]&lt;br /&gt;
: ''HB: note that SoC only accepts coding projects, not graphics design or documentation projects. Adding svg/eps support to a d.* module and ps.map would be quite helpful. See the {{Cmd|d.graph}} help page and {{Cmd|ps.map}}'s &amp;quot;eps&amp;quot; and &amp;quot;vpoints&amp;quot; instructions.''&lt;br /&gt;
&lt;br /&gt;
* Rework the complete set of thematic cartography tools such as {{Cmd|d.vect.thematic}} and {{Cmd|d.thematic.area}} and the related classification routines&lt;br /&gt;
&lt;br /&gt;
=== Imagery ===&lt;br /&gt;
&lt;br /&gt;
* Based on the work on [[GRASS_GSoC_2012_Image_Segmentation|segmentation]] in GSoC 2012 develop routines for object-based (ore region-based) image classification. This probably entails:&lt;br /&gt;
** Characterizing segments. Thsi includes producing statistics such as mean, median, variance of the segmented data within each delineated segment.&lt;br /&gt;
** Classifying segments based on the characteristics and (possibly) training areas&lt;br /&gt;
** Interface with other modules in a consistent workflow (i.cluster, r.fuzzy, etc)&lt;br /&gt;
&lt;br /&gt;
* Implement hierarchical classification tools (e.g. being able to create a large class &amp;quot;forest&amp;quot;, with subclasses of different types of forests)&lt;br /&gt;
&lt;br /&gt;
* Interface with the [http://www.orfeo-toolbox.org/otb/ Orfeo toolbox (OTB)], which is an open source, [http://www.itk.org ITK]-based, C++ library of (spatial) image processing library. OTB implements a very wide set of interesting features for anybody working with raster data - in particular satellite imagery: radiometric corrections, orthorectification, filtering, feature extraction, image segmentation , classification, change detection, etc.&lt;br /&gt;
&lt;br /&gt;
=== Temporal GIS Algebra ===&lt;br /&gt;
&lt;br /&gt;
We (Soeren Gebbert and Thomas Leppelt) want to implement a spatio-temporal map algebra for raster and vector data&lt;br /&gt;
&lt;br /&gt;
* Spatio-temporal vector algebra module&lt;br /&gt;
** The algebra will be based on boolean vector operations from &amp;lt;b&amp;gt;v.overlay&amp;lt;/b&amp;gt; (and, or, xor, not), v.buffer (buff_point, buff_line, buff_area), temporal variables (day of year, weekday, datum, time, ...) and temporal topology relations (predecessor, successor, follows, equals, ...)&lt;br /&gt;
** We will use PLY for lexical analysis and parser generation&lt;br /&gt;
** The resulting module will be able to process space time vector datasets using expressions like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Compute the intersection between the space time vector datasets A and B&lt;br /&gt;
# from maps with equal time stamps. The STVDS A is used as temporal reference.&lt;br /&gt;
# A new STVDS C will be created with the same time stamps as A.&lt;br /&gt;
t.vect.mapcalc inputs=A,B timeref=A output=C expr=&amp;quot;C = if(equal(B), and(A,B))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Nested boolean operations are supported and temporal neighborhood computation&lt;br /&gt;
t.vect.mapcalc input=A,B,C tempref=A output=D \&lt;br /&gt;
    expr=&amp;quot;D = if(successor(B) &amp;amp;&amp;amp; predecessor(C), and(A, xor(successor(B), buff_point(predecessor(C), 100)))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Date and time can be used in the expression&lt;br /&gt;
t.vect.mapcalc input=A,B tempref=A output=C \&lt;br /&gt;
    expr=&amp;quot;C = if(start_year() &amp;gt;= 2001 || start_year() &amp;lt;= 2010, and(A,B))&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Spatio-temporal raster algebra module&lt;br /&gt;
** The algebra will be based on the existing &amp;lt;b&amp;gt;r.mapcalc&amp;lt;/b&amp;gt; map algebra, temporal variables (day of year, weekday, datum, time, ...) and temporal topology relations (predecessor, successor, follows, equals, ...)&lt;br /&gt;
{{GSoC}}&lt;br /&gt;
** We will use PLY for lexical analysis and parser generation&lt;br /&gt;
** The resulting module will be able to process space time raster datasets using expressions like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Compute the sum between the space time raster datasets A and B&lt;br /&gt;
# from maps with equal time stamps. The STRDS A is used as temporal reference.&lt;br /&gt;
# A new STRDS C will be created with the same time stamps as A.&lt;br /&gt;
t.rast.mapcalc inputs=A,B timeref=A output=C expr=&amp;quot;C = if(equal(B), A + B)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Spatio-temporal neighborhood computation. STRDS C will have the same time stamps as A.&lt;br /&gt;
t.rast.mapcalc input=B tempref=A output=C \&lt;br /&gt;
    expr=&amp;quot;C = if(successor(B) &amp;amp;&amp;amp; equal(B) &amp;amp;&amp;amp; predecessor(B), (successor(B)[0,0] + B[0,0] + predecessor(B)[0,0])/3.0, B[0,0])&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Genova_2013&amp;diff=17603</id>
		<title>GRASS Community Sprint Genova 2013</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Genova_2013&amp;diff=17603"/>
		<updated>2013-01-30T14:56:14Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The GRASS GIS team will organize a '''GRASS Developer and Power User Meeting, aka 'GRASS Community Sprint'''' from '''2-7 Feb, 2013'''. The sprint is at the same time of the [http://geomorfolab.arch.unige.it/genova2013/index.php?lang=en XIV Meeting degli Utenti Italiani Grass e Gfoss], 6-9 Feb 2013, University of Genova, Dipartimento di Scienze per l'Architettura della Scuola Politecnica, [http://en.wikipedia.org/wiki/Genoa Genova], [http://en.wikipedia.org/wiki/Italy Italy].&lt;br /&gt;
[[Image:community_sprint_genova2013.png|center|640px|thumb|Thanks to '''Sonia Bertolone''' for the logo]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
Our logo &amp;amp;mdash; In the left of the GRASS Logo the [http://en.wikipedia.org/wiki/Lighthouse_of_Genoa Lanterna], in the right the [http://en.wikipedia.org/wiki/Mortar_and_pestle ''murtà''] to prepare [http://en.wikipedia.org/wiki/Pesto ''pestu'']&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
This next edition of the GRASS GIS community sprint 2013 is a great occasion for folks to support the development by actively contributing to the source code, manuals or likewise. The '''community''' sprint is a get-together for GRASS project members and supporters and related [http://www.osgeo.org/ OSGeo] projects to make decisions and tackle larger problems. 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.&lt;br /&gt;
&lt;br /&gt;
For this meeting, we welcome people committed to improving the GRASS GIS and related projects. This includes developers, document writers, wish and bug reporters, translators etc.&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
We welcome '''financial contributions''' to support the meeting and we are looking for '''sponsors''' to cover costs such as meals or 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;
For questions, please contact [[User:Lucadelu|Luca Delucchi]] &amp;lt;tt&amp;gt;&amp;lt;lucadeluge at gmail.com&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 third 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. 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;
* Anonymous donor - 100 euro&lt;br /&gt;
* [http://www.r3-gis.com/ R3 GIS], Merano, Italy - 300 euro&lt;br /&gt;
* [http://www.intevation.de Intevation Gmbh], Osnabrück, Germany - 100 euro&lt;br /&gt;
* Flavio Rigolon - 30 euro&lt;br /&gt;
* Nobusuke Iwasaki - 200 euro&lt;br /&gt;
&lt;br /&gt;
== Timing  ==&lt;br /&gt;
&lt;br /&gt;
'''When''': 2-7 Feb, 2013&lt;br /&gt;
&lt;br /&gt;
Of course you are invited to join or leave the community sprint whenever you want.&lt;br /&gt;
&lt;br /&gt;
'''Duration''': 6 days&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
&lt;br /&gt;
For the 2nd and 3rd of February we are hosted by the [http://www.alid.it ALID association] at Circolo Zenzero in [http://osm.org/go/xX0m6qo~B-- Via Torti 35, Genova] (in Italy universities are closed during weekends).&lt;br /&gt;
&lt;br /&gt;
From 4th to 7th at University of Genova, Dipartimento di Scienze per l'Architettura della Scuola Politecnica, Genova, Italy.&lt;br /&gt;
&lt;br /&gt;
'''[http://geomorfolab.arch.unige.it/ Geomorfolab]''',&lt;br /&gt;
Dipartimento di Scienze per l'Architettura,&lt;br /&gt;
Scuola Politecnica - Università degli Studi di Genova,&lt;br /&gt;
[http://osm.org/go/xX0ml6cj7-- Stradone S. Agostino 37, 16128 Genova]&lt;br /&gt;
&lt;br /&gt;
Rooms: TBD&lt;br /&gt;
&lt;br /&gt;
== Accommodation and Costs ==&lt;br /&gt;
&lt;br /&gt;
* Bed and breakfast (few rooms) - close to venue (please 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;
* New youth hostel, http://www.manenahostel.it/ - close to venue (please 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;
* List of [http://geomorfolab.arch.unige.it/genova2013/index.php?option=com_content&amp;amp;view=article&amp;amp;id=42&amp;amp;Itemid=18 Site of XIV Meeting degli utenti italiani GRASS e GFOSS]&lt;br /&gt;
&lt;br /&gt;
== Weather and Common Item Prices ==&lt;br /&gt;
&lt;br /&gt;
== Agenda == &lt;br /&gt;
&lt;br /&gt;
=== Timeline ===&lt;br /&gt;
&lt;br /&gt;
==== Saturday, 2 Feb ====&lt;br /&gt;
* Kick-off in the [http://www.alid.it ALID association] at Circolo Zenzero in [http://osm.org/go/xX0m6qo~B-- Via Torti 35, Genova]&lt;br /&gt;
* Participants presentation&lt;br /&gt;
* Dinner: at Circolo Zenzero&lt;br /&gt;
&lt;br /&gt;
==== Sunday, 3 Feb ====&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* Meeting again in the at Circolo Zenzero&lt;br /&gt;
&lt;br /&gt;
List of topics:&lt;br /&gt;
* TBD&lt;br /&gt;
* Dinner: at Circolo Zenzero&lt;br /&gt;
&lt;br /&gt;
==== Monday, 4 Feb ====&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* Meeting at University of Genova, Dipartimento di Scienze per l'Architettura della Scuola Politecnica, Genova, Italy at the '''[http://geomorfolab.arch.unige.it/ Geomorfolab]''', [http://osm.org/go/xX0ml6cj7-- Stradone S. Agostino 37, 16128 Genova]&lt;br /&gt;
&lt;br /&gt;
List of topics:&lt;br /&gt;
* TBD&lt;br /&gt;
&lt;br /&gt;
==== Tuesday, 5 Feb ====&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* Meeting again at University of Genova, Geomorfolab&lt;br /&gt;
&lt;br /&gt;
List of topics:&lt;br /&gt;
* TBD&lt;br /&gt;
&lt;br /&gt;
==== Wednesday, 6 Feb ====&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* Meeting again at University of Genova, Geomorfolab&lt;br /&gt;
&lt;br /&gt;
List of topics:&lt;br /&gt;
* TBD&lt;br /&gt;
* Group photo!!&lt;br /&gt;
* Prepare press release&lt;br /&gt;
&lt;br /&gt;
==== Thursday, 7 Feb ====&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* Meeting again at University of Genova, Geomorfolab&lt;br /&gt;
&lt;br /&gt;
List of topics:&lt;br /&gt;
* TBD&lt;br /&gt;
* Prepare short presentations for Friday at the Italian GFOSS meeting&lt;br /&gt;
* Finish and publish press release&lt;br /&gt;
&lt;br /&gt;
Closing of community sprint&lt;br /&gt;
&lt;br /&gt;
==== Friday, 8 Feb ====&lt;br /&gt;
* Two hours of time for '''presenting Community Sprint results''' at Italian GFOSS meeting ([http://geomorfolab.arch.unige.it/genova2013/index.php?option=com_content&amp;amp;view=article&amp;amp;id=29&amp;amp;Itemid=21&amp;amp;lang=en venue])&lt;br /&gt;
&lt;br /&gt;
== Participation ==&lt;br /&gt;
&lt;br /&gt;
=== In person ===&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|'''Number'''&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;
| Feb 2&lt;br /&gt;
| Feb 10&lt;br /&gt;
|&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:Neteler|Markus Neteler]]&lt;br /&gt;
|Italy&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
| M + S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|[[User:Madi|Margherita Di Leo]]&lt;br /&gt;
|Italy&lt;br /&gt;
| Feb 1&lt;br /&gt;
| Feb 3&lt;br /&gt;
|&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|[[User:pcav|Paolo Cavallini]]&lt;br /&gt;
|Italy&lt;br /&gt;
| Feb 6&lt;br /&gt;
| Feb 9&lt;br /&gt;
|&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[User:lcasagrande|Luca Casagrande]]&lt;br /&gt;
|Italy&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| GRASS Tutorial with Open Data from Italy&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|[[User:Annakrat|Anna Kratochvilova]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| Feb 1&lt;br /&gt;
| Feb 8&lt;br /&gt;
|&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Vaclav Petras&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| Feb 1&lt;br /&gt;
| Feb 8&lt;br /&gt;
|&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|[[User:pietro|Pietro Zambelli]]&lt;br /&gt;
|Italy&lt;br /&gt;
| Feb 2&lt;br /&gt;
| Feb 9 &lt;br /&gt;
| Python and Pygrass workshops&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|&amp;lt;strike&amp;gt;[[User:Landa|Martin Landa]]&amp;lt;/strike&amp;gt;&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| Feb 2&lt;br /&gt;
| Feb 10&lt;br /&gt;
| [[wxGUI]], vector architecture, GRASS 7 development&lt;br /&gt;
| L&lt;br /&gt;
| Probably unable to come :-(&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|[[User:Maxi|Massimiliano Cannata]]&lt;br /&gt;
|Italy&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| XL&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|[[User:NikosA|Nikos Alexandris]]&lt;br /&gt;
|Greece&lt;br /&gt;
| Feb 1&lt;br /&gt;
| Feb 10&lt;br /&gt;
| GRASS-wiki, (re-)working on the idea for a practical &amp;amp; visual guide to GRASS-GIS, testing all landsat related (core + addons) modules&lt;br /&gt;
| M&lt;br /&gt;
| Will be there with Nikos Ves!&lt;br /&gt;
|-&lt;br /&gt;
|12&lt;br /&gt;
|[[User:AnneGhisla|Anne Ghisla]]&lt;br /&gt;
|Italy&lt;br /&gt;
| Feb 5&lt;br /&gt;
| Feb 8&lt;br /&gt;
| fix v.krige, examine i.atcorr problems with RapidEye&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|13&lt;br /&gt;
|[[User:vesnikos|Ves Nikos]]&lt;br /&gt;
|Greece&lt;br /&gt;
| Feb 1&lt;br /&gt;
| Feb 10&lt;br /&gt;
| &lt;br /&gt;
| L&lt;br /&gt;
| Will be there with Nikos Alexandris&lt;br /&gt;
|-&lt;br /&gt;
|14&lt;br /&gt;
|[[User:ychemin|Yann Chemin]]&lt;br /&gt;
|Sri Lanka&lt;br /&gt;
| Feb 3&lt;br /&gt;
| Feb 10&lt;br /&gt;
| Remote Sensing, raster/image processing, will help with Landsat and i.atcorr, i.ortho.photo Block/Bundle.&lt;br /&gt;
| XXXLL&lt;br /&gt;
| 100% confirmed trip&lt;br /&gt;
|-&lt;br /&gt;
|15&lt;br /&gt;
|[[User:mmetz|Markus Metz]]&lt;br /&gt;
|Italy&lt;br /&gt;
| Feb 2&lt;br /&gt;
| Feb 8&lt;br /&gt;
| GRASS 7 vector processing, hydrology, orthorectification.&lt;br /&gt;
| L&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|16&lt;br /&gt;
|[[User:Annazanchetta|Anna Zanchetta]]&lt;br /&gt;
|Italy&lt;br /&gt;
| Feb 5?&lt;br /&gt;
| &lt;br /&gt;
| &lt;br /&gt;
| S&lt;br /&gt;
| Hopefully will be there on the 5th&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
|17&lt;br /&gt;
|[[User:robertomarzocchi|Roberto Marzocchi]]&lt;br /&gt;
|Italy&lt;br /&gt;
| Feb 4?&lt;br /&gt;
| &lt;br /&gt;
| adjust the G-Pastro modules&lt;br /&gt;
| M&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|18&lt;br /&gt;
|Stefano 'chiui' Cavallari&lt;br /&gt;
|Italy&lt;br /&gt;
| Feb 5&lt;br /&gt;
| Feb 8&lt;br /&gt;
| random Python stuff&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Via IRC chat or hangout===&lt;br /&gt;
&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;
Please add yourself here below (please add also your gmail account for G+ hangout):&lt;br /&gt;
&lt;br /&gt;
* [[User:Landa|Martin Landa]], [http://www.timeanddate.com/worldclock/city.html?n=204 timezone]&lt;br /&gt;
* [[User:huhabla|Soeren Gebbert]], [http://www.timeanddate.com/worldclock/city.html?n=971 timezone]&lt;br /&gt;
&lt;br /&gt;
=== Collaborative document scratching ===&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 ([http://en.wikipedia.org/wiki/File:L_plug.jpg Italy])&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;
Also during the event :)&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* '''How was it last time?'''&lt;br /&gt;
** Very cool, see [[GRASS Community Sprint Prague 2012]]!&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, however, we can do some presentations of current working GRASS implementations and new upcoming features to spread the idea of Open Source GIS software.&lt;br /&gt;
&lt;br /&gt;
* '''Is the GRASS Community Sprint for developers only?'''&lt;br /&gt;
** ''Not at all!'' Anybody can help with testing, checking out bugs and fixes, documentation and more.&lt;br /&gt;
&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 dot com&amp;gt;&amp;lt;/tt&amp;gt; or [[User:Neteler|Markus Neteler]]&lt;br /&gt;
&lt;br /&gt;
[[Category: Workshops]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Toolboxes&amp;diff=15858</id>
		<title>Toolboxes</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Toolboxes&amp;diff=15858"/>
		<updated>2012-06-07T11:35:47Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* New toolbox approach discussed at the GRASS Community Code Sprint in Prag 2012 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== New toolbox approach discussed at the GRASS Community Code Sprint 2012 ===&lt;br /&gt;
&lt;br /&gt;
At the community sprint in Prague 2012 the toolbox approach with different repositories as well as the approach using &amp;quot;--with-toolbox/--without-toolbox&amp;quot; configure statements at compile time have been discussed. The major drawback of these solutions is the their complexity and the problem of cross dependencies between modules. &lt;br /&gt;
&lt;br /&gt;
A new approach has been suggested using XML files to describe toolboxes and special directory structure to hide unneeded modules from the user.&lt;br /&gt;
&lt;br /&gt;
The idea is to have a binary directory containing only modules that are listed in a XML file that defines what core modules should be available and what toolboxes should be used. The XML file will be used by the GUI to create menu listings for the selected modules. All modules that are deactivated in the XML file will be held in a directory that is not available in the users binary path, but in the binary search path of modules. Hence unneeded modules are invisible at the command line and in the GUI, but still available for modules that might call other modules.&lt;br /&gt;
&lt;br /&gt;
New toolboxes and core modules can be simply added to the search path and the GUI by editing the XML definition and calling g.extension. The module g.extension will simply links/copy the hidden modules into the binary directory that is visible by the user or move deselected modules in the hidden directory. The GUI will always analyzes the XML toolbox configuration file for menu generation. &lt;br /&gt;
&lt;br /&gt;
The configuration XML file will include a list of core modules for general, raster, image, voxel and vector processing as well as the definition of toolboxes. Toolboxes are defined by their type (raster, vector, ...) a short description and a list of modules. Modules can be defined in several different toolboxes. &lt;br /&gt;
&lt;br /&gt;
The GRASS development team should provide several pre-defined XML toolbox configuration files as for hydrological modeling, vector processing, terrain modeling, image analysis, ..., and WPS server. &lt;br /&gt;
&lt;br /&gt;
Using this approach the repository structure must not be changed. The build system has to be modified to use the XML toolbox file to decide where to copy the binary modules and scripts. g.extension has to be extended to link/copy selected modules in the users binary search path and to remove modules from them. GRASS will be build as usual.&lt;br /&gt;
&lt;br /&gt;
=== Original approach ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* See [http://lists.osgeo.org/pipermail/grass-dev/2010-April/050210.html original post by Jarosław Jasiewicz]&lt;br /&gt;
&lt;br /&gt;
* Discussion about the suitability of the proposed change on the [[Talk:GRASS_repository_layout_proposal|talk]] side of this wiki page; discussion of the possible method on this side of the page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hi all!&lt;br /&gt;
&lt;br /&gt;
That rather radical ideas I present here are rather for future, at least for GRASS 8,&lt;br /&gt;
but I'd like present it now for long-term reflection.&lt;br /&gt;
&lt;br /&gt;
Probably all notice that for over two years there is big increase in add-on repository&lt;br /&gt;
(including me). There are modules of different quality: from fully GRASS toolsets,&lt;br /&gt;
to shell or python scripts, from  actively developed tools to abandoned,&lt;br /&gt;
from all-purpose tools to very specialized etc. I also think that that activity&lt;br /&gt;
will be grown due to substitute shell script by python&lt;br /&gt;
&lt;br /&gt;
Similar situation is in main GRASS branch: there are modules for all like conversion tools,&lt;br /&gt;
interpolation methods, georeferencing etc, and very specialized modules for very limited&lt;br /&gt;
group of users (like wild fire), there are also some modules out of date.&lt;br /&gt;
&lt;br /&gt;
I'm not enthusiastic about moving new modules into main branch. Almost every module has&lt;br /&gt;
different coding style and it will lasting in future that GRASS would be difficult to maintain.&lt;br /&gt;
On the other hand some people complains that some interesting modules are only available as&lt;br /&gt;
add-ons (I assume for some reasons they cannot install it)&lt;br /&gt;
&lt;br /&gt;
So my suggestion is to rearrange future GRASS form two layers (main branch/add-on) into&lt;br /&gt;
three layers architecture:&lt;br /&gt;
&lt;br /&gt;
1) GRASS core layer: much limited limited than now, only GIS environment and basic,&lt;br /&gt;
all-puropse tools, slow changes, great stability&lt;br /&gt;
2) GRASS toolset layer: oficcial GRASS thematic tools and toolsets (like terrain analysis,&lt;br /&gt;
hydrological analysis, photo-interpretation, landscape analysis etc,) every toolset with its&lt;br /&gt;
maintainer, rapid development, new ready to use tools after quality control may appear here,&lt;br /&gt;
also some of current main branch tool shall be moved to that layer&lt;br /&gt;
3) GRASS community layer:  everything else like experimental, actively development new tools,&lt;br /&gt;
that what do not pass quality control, simple scripts, etc....&lt;br /&gt;
&lt;br /&gt;
What benefits:&lt;br /&gt;
for developers and contributors: much clear situation and better publication path.&lt;br /&gt;
Toolset layer should be much more open for new tools than current GRASS main branch&lt;br /&gt;
&lt;br /&gt;
for users: faster access to new tools.&lt;br /&gt;
There is no doubt that new tools are faster developed (less risk) than GRASS core&lt;br /&gt;
Binaries with toolsets could be maintained as separate apt/urpmi/pacman/yum/exe etc packages,&lt;br /&gt;
so it may appear in linux repository separetly form GRASS core.&lt;br /&gt;
&lt;br /&gt;
There is only loose ideas. Most of them are of course taken from R (core/toolsets/rest of packages;&lt;br /&gt;
separate core and package development) but I think it is worth of some discuss ...&lt;br /&gt;
&lt;br /&gt;
regards&lt;br /&gt;
Jarek&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Repository layout ==&lt;br /&gt;
=== Current repository layout ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
- grass&lt;br /&gt;
|- trunk&lt;br /&gt;
 |- raster/&lt;br /&gt;
 |- vector/&lt;br /&gt;
 |- ...&lt;br /&gt;
&lt;br /&gt;
- grass-addons&lt;br /&gt;
|- raster/&lt;br /&gt;
|- vector/&lt;br /&gt;
|- ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Proposed repository layout ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
- grass&lt;br /&gt;
|- trunk&lt;br /&gt;
 |- raster/&lt;br /&gt;
 |- vector/&lt;br /&gt;
 |- ...&lt;br /&gt;
&lt;br /&gt;
- grass-tools&lt;br /&gt;
|- trunk&lt;br /&gt;
 |- raster/&lt;br /&gt;
 |- vector/&lt;br /&gt;
 |- ...&lt;br /&gt;
&lt;br /&gt;
- grass-addons&lt;br /&gt;
|- raster/&lt;br /&gt;
|- vector/&lt;br /&gt;
|- ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Proposed toolboxes ==&lt;br /&gt;
&lt;br /&gt;
'''Toolbox''' is a topic-based set of modules used for solving common GIS analysis, like hydrology, networking, LRS, etc.&lt;br /&gt;
&lt;br /&gt;
=== Managing toolboxes ===&lt;br /&gt;
&lt;br /&gt;
{{cmd|g.extension|version=70}} is designed to manage locally installed GRASS [[Addons]]. It allows to install single addons modules and also toolboxes (flag &amp;lt;code&amp;gt;-t&amp;lt;/code&amp;gt;). Note that toolbox support is '''experimental'''.&lt;br /&gt;
&lt;br /&gt;
* list available toolboxes&lt;br /&gt;
&lt;br /&gt;
 g.extension -tl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
List of available extensions (toolboxes):&lt;br /&gt;
Hydrology (HY)&lt;br /&gt;
* r.stream.basins&lt;br /&gt;
* r.stream.channel&lt;br /&gt;
* r.stream.distance&lt;br /&gt;
* r.stream.extract&lt;br /&gt;
* r.stream.order&lt;br /&gt;
* r.stream.segment&lt;br /&gt;
* r.stream.slope&lt;br /&gt;
* r.stream.snap&lt;br /&gt;
* r.stream.stats&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* list available modules from [[Addons]]&lt;br /&gt;
&lt;br /&gt;
 g.extension -l&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
List of available extensions (modules):&lt;br /&gt;
...&lt;br /&gt;
r.stream.slope&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install new toolbox (&amp;quot;Hydrology&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 g.extension -t extension=HY&lt;br /&gt;
&lt;br /&gt;
* install single module from &amp;quot;Hydrology&amp;quot; toolbox&lt;br /&gt;
&lt;br /&gt;
 g.extension extension=r.stream.slope&lt;br /&gt;
&lt;br /&gt;
Module {{cmd|g.extension|version=70}} also allows to list installed extensions&lt;br /&gt;
&lt;br /&gt;
* toolboxes&lt;br /&gt;
&lt;br /&gt;
 g.extension -ta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
List of installed extensions (toolboxes):&lt;br /&gt;
HY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* or modules&lt;br /&gt;
&lt;br /&gt;
 g.extension -a&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
List of installed extensions (modules):&lt;br /&gt;
r.stream.basins&lt;br /&gt;
r.stream.channel&lt;br /&gt;
r.stream.distance&lt;br /&gt;
r.stream.extract&lt;br /&gt;
r.stream.order&lt;br /&gt;
r.stream.segment&lt;br /&gt;
r.stream.slope&lt;br /&gt;
r.stream.snap&lt;br /&gt;
r.stream.stats&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* remove locally installed toolbox&lt;br /&gt;
&lt;br /&gt;
 g.extension -ft extension=HY operation=remove&lt;br /&gt;
&lt;br /&gt;
* remove single module&lt;br /&gt;
&lt;br /&gt;
 g.extension -f extension=r.stream.slope operation=remove&lt;br /&gt;
&lt;br /&gt;
=== List of toolboxes ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|'''Toolbox name''' || '''Toolbox code''' || '''Description'''||'''Correlate toolbox'''&lt;br /&gt;
|-&lt;br /&gt;
| ''3D Raster''&lt;br /&gt;
| R3&lt;br /&gt;
| All `r3.*` modules&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ''3D Visualization''&lt;br /&gt;
| V3&lt;br /&gt;
| {{cmd|nviz_cmd|version=70}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ''Atmospheric tools''&lt;br /&gt;
| AT&lt;br /&gt;
| Subset of image processing tool&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ''Cartography''&lt;br /&gt;
| CA&lt;br /&gt;
| {{cmd|ps.map|version=70}}, {{AddonCmd|ps.output}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ''Database''&lt;br /&gt;
| DB&lt;br /&gt;
| All `db.*` modules&lt;br /&gt;
| ''Vector analysis''&lt;br /&gt;
|-&lt;br /&gt;
| ''Geostatistcal''&lt;br /&gt;
| GS&lt;br /&gt;
| {{cmd|v.krige|version=70}} maybe other&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ''GUI''&lt;br /&gt;
| GI&lt;br /&gt;
| [[wxGUI]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ''Hydrology''&lt;br /&gt;
| HY&lt;br /&gt;
| {{cmd|r.watershed|version=70}}, {{cmd|r.terraflow|version=70}}, `r.stream.*` modules in addons, maybe other, r.flow, r.sim.water, r.sim.sediment&lt;br /&gt;
| ''Raster analysis''&lt;br /&gt;
|-&lt;br /&gt;
| ''Image Processing''&lt;br /&gt;
| IM&lt;br /&gt;
| All `i.*` modules, selected r.* modules&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ''Interoperability tools''&lt;br /&gt;
| IO&lt;br /&gt;
| All the various import/export modules except for GDAL/OGR&lt;br /&gt;
| ''Raster analysis'', ''Vector analysis'', ''Image Processing'', ''Database''&lt;br /&gt;
|-&lt;br /&gt;
| ''Landscape analysis''&lt;br /&gt;
| LA&lt;br /&gt;
| All `r.li.*` modules, maybe other&lt;br /&gt;
| ''Raster analysis''&lt;br /&gt;
|-&lt;br /&gt;
| ''Lidar analysis''&lt;br /&gt;
| LI&lt;br /&gt;
| All `v.lidar.*` modules, {{cmd|v.surf.bspline|version=70}}, r.in.xyz&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ''Linear Reference Systems''&lt;br /&gt;
| LS&lt;br /&gt;
| All `v.lrs.*` modules&lt;br /&gt;
| ''Vector analysis''&lt;br /&gt;
|-&lt;br /&gt;
| ''Network analysis''&lt;br /&gt;
| NA&lt;br /&gt;
| All `v.net.*` modules, maybe other&lt;br /&gt;
| ''Vector analysis''&lt;br /&gt;
|-&lt;br /&gt;
| ''Raster analysis''&lt;br /&gt;
| RA&lt;br /&gt;
| A lot of basic `r.*` modules (like {{cmd|r.buffer,|version=70}} {{cmd|r.reclass|version=70}}, {{cmd|r.fillnull|version=70}}...)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ''Terrain analysis''&lt;br /&gt;
| TA&lt;br /&gt;
| Different kind of analysis: soil ({{cmd|r.sun,|version=70}}), terrain ({{cmd|r.slope.aspect|version=70}}, {{cmd|r.los|version=70}}), geomorphometry ({{cmd|r.param.scale|version=70}})&lt;br /&gt;
| ''Raster analysis''&lt;br /&gt;
|-&lt;br /&gt;
| ''Vector analysis''&lt;br /&gt;
| VA&lt;br /&gt;
| A lot of basic `v.*` modules (like {{cmd|v.buffer|version=70}}, {{cmd|v.centroid|version=70}}, {{cmd|v.overlay|version=70}}...)&lt;br /&gt;
| ''Database''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== List of modules (trunk) ==&lt;br /&gt;
&lt;br /&gt;
=== Display ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|'''Module''' || '''Core/Tools/Addons''' || '''Toolbox(es)'''&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.barscale|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.colorlist|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.colortable|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.correlate|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.erase|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.font|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.fontlist|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.geodesic|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.graph|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.grid|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.his|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.histogram|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.info|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.labels|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.legend|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.linegraph|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.nviz|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.path|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.polar|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.profile|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.rast|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.rast.arrow|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.rast.edit|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.rast.leg|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.rast.num|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.rgb|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.rhumbline|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.shadedmap|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.text|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.thematic.area|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.title|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.vect|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.vect.chart|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.vect.thematic|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.where|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Database ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|'''Module''' || '''Core/Tools/Addons''' || '''Toolbox(es)'''&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.columns|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.connect|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.copy|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.createdb|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.databases|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.describe|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.drivers|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.dropcolumn|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.dropdb|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.droptable|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.droptable|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.execute|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.in.ogr|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.login|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.out.ogr|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.select|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.tables|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.test|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|'''Module''' || '''Core/Tools/Addons''' || '''Toolbox(es)'''&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.access|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.cairocomp|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.copy|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.dirseps|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.extension|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.filename|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.findetc|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.findfile|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.gisenv|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.gui|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.list|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.manual|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.mapset|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.mapsets|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.message|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.mkfontcap|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.mlist|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.mremove|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.parser|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.pnmcomp|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.ppmtopng|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.proj|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.region|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.remove|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.rename|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.tempfile|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.transform|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.version|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Imagery ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|'''Module''' || '''Core/Tools/Addons''' || '''Toolbox(es)'''&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.albedo|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.atcorr|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.biomass|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.cca|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.cluster|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.eb.eta|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.eb.evapfr|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.eb.h_sebal01|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.eb.soilheatflux|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.emissivity|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.evapo.time|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.fft|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.fusion.brovey|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.gensig|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.gensigset|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.group|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.his.rgb|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.ifft|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.image.mosaic|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.in.spotvgt|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.landsat.rgb|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.latlong|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.maxlik|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.modis.qc|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.oif|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.pca|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.rectify|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.rgb.his|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.smap|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.spectral|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.sunhours|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.target|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.tasscap|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.vi|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.zc|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|'''Module''' || '''Core/Tools/Addons''' || '''Toolbox(es)'''&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|m.cogo|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|m.measure|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|m.proj|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Postscript ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|'''Module''' || '''Core/Tools/Addons''' || '''Toolbox(es)'''&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|ps.map|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Raster ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|'''Module''' || '''Core/Tools/Addons''' || '''Toolbox(es)'''&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.basins.fill|version=70}} || T ||TA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.bitpattern|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.blend|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.buffer|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.buffer2|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.carve|version=70}} || T || TA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.category|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.circle|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.clump|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.coin|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.colors|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.colors.out|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.colors.stddev|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.composite|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.compress|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.contour|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.cost|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.covar|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.cross|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.describe|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.distance|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.drain|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.external|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.external.out|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.fill.dir|version=70}} || T || HY&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.fillnulls|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.flow|version=70}} || T || HY&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.grow|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.grow.distance|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.gwflow|version=70}} || T || HY&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.his|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.horizon|version=70}} || T || TA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.arc|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.ascii|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.aster|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.bin|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.gdal|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.gridatb|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.mat|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.png|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.poly|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.srtm|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.wms|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.xyz|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.info|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.kappa|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.lake|version=70}} || T ||HY&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.cwed|version=70}} || T || LA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.dominance|version=70}} || T || LA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.edgedensity|version=70}} || T || LA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.mpa|version=70}} || T || LA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.mps|version=70}} || T || LA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.padcv|version=70}} || T || LA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.padrange|version=70}} || T || LA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.padsd|version=70}} || T || LA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.patchdensity|version=70}} || T || LA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.patchnum|version=70}} || T || LA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.richness|version=70}} || T || LA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.shannon|version=70}} || T || LA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.shape|version=70}} || T || LA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.simpson|version=70}} || T || LA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.los|version=70}} || T||TA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.mapcalc|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.mask|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.mfilter|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.mode|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.neighbors|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.null|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.arc|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.ascii|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.bin|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.gdal|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.gridatb|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.mat|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.mpeg|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.png|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.pov|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.ppm|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.ppm3|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.tiff|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.vrml|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.vtk|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.xyz|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.param.scale|version=70}} || T ||TA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.patch|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.plane|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.profile|version=70}} || T || TA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.proj|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.quant|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.quantile|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.random|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.random.cells|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.random.surface|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.reclass|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.reclass.area|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.recode|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.region|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.regression.line|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.report|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.resamp.bspline|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.resamp.filter|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.resamp.interp|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.resamp.rst|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.resamp.stats|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.resample|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.rescale|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.rescale.eq|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.ros|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.series|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.shaded.relief|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.sim.sediment|version=70}} || T || HY&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.sim.water|version=70}} || T || HY&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.slope.aspect|version=70}} || T || TA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.solute.transport|version=70}} || T || HY&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.spread|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.spreadpath|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.statistics|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.statistics2|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.statistics3|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.stats|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.sun|version=70}} || T ||TA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.sunmask|version=70}} || T || TA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.support|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.support.stats|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.surf.area|version=70}} || T || TA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.surf.contour|version=70}} || T || TA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.surf.fractal|version=70}} || T || TA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.surf.gauss|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.surf.idw|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.surf.idw2|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.surf.random|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.terraflow|version=70}} || T ||HY&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.texture|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.thin|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.tileset|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.timestamp|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.to.rast3|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.to.rast3elev|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.to.vect|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.topidx|version=70}} || T ||HY&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.topmodel|version=70}} || T ||HY&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.transect|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.univar|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.uslek|version=70}} || T ||HY&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.usler|version=70}} || T ||HY&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.volume|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.walk|version=70}} || T || TA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.water.outlet|version=70}} || T|| HY&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.watershed|version=70}} || T || HY&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.what|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.what.color|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3D raster (voxel) ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|'''Module''' || '''Core/Tools/Addons''' || '''Toolbox(es)'''&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.cross.rast|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.gwflow|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.in.ascii|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.in.v5d|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.info|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.mapcalc|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.mask|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.mkdspf|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.null|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.out.ascii|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.out.v5d|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.out.vtk|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.stats|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.timestamp|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.to.rast|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.univar|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Vector ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|'''Module''' || '''Core/Tools/Addons''' || '''Toolbox(es)'''&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.autokrige|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.buffer|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.build|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.build.all|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.build.polylines|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.category|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.centroids|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.class|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.clean|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.colors|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.convert|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.convert.all|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.addcolumn|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.addtable|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.connect|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.dropcolumn|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.droprow|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.droptable|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.join|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.reconnect.all|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.renamecolumn|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.select|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.univar|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.update|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.delaunay|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.dissolve|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.distance|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.drape|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.edit|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.external|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.extract|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.extrude|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.generalize|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.hull|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.ascii|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.db|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.dxf|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.e00|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.geonames|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.gns|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.lines|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.mapgen|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.ogr|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.postgis|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.region|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.sites|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.sites.all|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.wfs|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.info|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.kcv|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.kernel|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.krige|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.label|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.lidar.correction|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.lidar.edgedetection|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.lidar.growing|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.lrs.create|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.lrs.label|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.lrs.segment|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.lrs.where|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.mkgrid|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.neighbors|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.alloc|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.allpairs|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.bridge|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.centrality|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.components|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.connectivity|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.distance|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.flow|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.iso|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.path|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.salesman|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.spanningtree|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.steiner|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.timetable|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.visibility|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.normal|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.out.ascii|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.out.dxf|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.out.gps|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.out.ogr|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.out.postgis|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.out.pov|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.out.svg|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.out.vtk|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.outlier|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.overlay|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.parallel|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.patch|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.perturb|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.proj|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.qcount|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.random|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.rast.stats|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.reclass|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.report|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.sample|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.segment|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.select|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.split|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.support|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.surf.bspline|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.surf.idw|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.surf.rst|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.to.3d|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.to.db|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.to.points|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.to.rast|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.to.rast3|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.transform|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.type|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.univar|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.vol.rst|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.voronoi|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.what|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.what.rast|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.what.vect|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Various ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|'''Module''' || '''Core/Tools/Addons''' || '''Toolbox(es)'''&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|nviz|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|nviz_cmd|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|wximgview|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|wxpyimgview|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|xganim|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|ximgview|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== List of selected AddOns modules ==&lt;br /&gt;
&lt;br /&gt;
See [[GRASS AddOns]] for full list of available modules. Feel free to extend this list.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|'''Module''' || '''Core/Tools/Addons''' || '''Toolbox(es)''' || '''Note'''&lt;br /&gt;
|-&lt;br /&gt;
| {{AddonCmd|r.stream.channel}} || T || HY || {{done}}&lt;br /&gt;
|-&lt;br /&gt;
| {{AddonCmd|r.stream.distance}} || T || HY || {{done}}&lt;br /&gt;
|-&lt;br /&gt;
| {{AddonCmd|r.stream.extract}} || T || HY || {{done}}&lt;br /&gt;
|-&lt;br /&gt;
| {{AddonCmd|r.stream.order}} || T || HY || {{done}}&lt;br /&gt;
|-&lt;br /&gt;
| {{AddonCmd|r.stream.segment}} || T || HY || {{done}}&lt;br /&gt;
|-&lt;br /&gt;
| {{AddonCmd|r.stream.slope}} || T || HY || {{done}}&lt;br /&gt;
|-&lt;br /&gt;
| {{AddonCmd|r.stream.snap}} || T || HY || {{done}}&lt;br /&gt;
|-&lt;br /&gt;
| {{AddonCmd|r.stream.stats}} || T || HY || {{done}}&lt;br /&gt;
|-&lt;br /&gt;
| {{AddonCmd|r.seg}} || T || IM || It could be rename to `i.seg`&lt;br /&gt;
|-&lt;br /&gt;
| {{AddonCmd|i.topocorr}} || T || IM ||&lt;br /&gt;
|-&lt;br /&gt;
| {{AddonCmd|r.diversity}} || T || LA ||&lt;br /&gt;
|-&lt;br /&gt;
| {{AddonCmd|Ps.output}} || ? || || &lt;br /&gt;
|-&lt;br /&gt;
| ... || ? || ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to implement ==&lt;br /&gt;
&lt;br /&gt;
=== Proposal 1 ===&lt;br /&gt;
* add html tag &amp;lt;param&amp;gt; in the description.html with these options:&lt;br /&gt;
 &amp;lt;param name = &amp;quot;core&amp;quot;&amp;gt; for core module&lt;br /&gt;
 &amp;lt;param name = &amp;quot;tool&amp;quot; value=&amp;quot;tool_code/codes&amp;quot;&amp;gt; for toolbox&lt;br /&gt;
 &amp;lt;param name = &amp;quot;addons&amp;quot; [value=&amp;quot;tool_code/codes&amp;quot;]&amp;gt; for addons, value is optional&lt;br /&gt;
&lt;br /&gt;
* create a script to generate a xml file for each toolbox&lt;br /&gt;
* add toolbox option in g.extension to read the xml and install the modules&lt;br /&gt;
&lt;br /&gt;
=== Proposal 2 ===&lt;br /&gt;
&lt;br /&gt;
* modules (currently only [[Addons]]) are described (name, description, keywords, files) in metadata XML file called [http://grass.osgeo.org/addons/grass7/modules.xml modules.xml] - this file is auto-generated, see [http://trac.osgeo.org/grass/wiki/AddOnsManagement#AddOnsXMLfile trac page] for details&lt;br /&gt;
* similarly toolboxes are described (name, code, correlate modules, list of modules) in [http://grass.osgeo.org/addons/grass7/toolboxes.xml toolboxes.xml] - this file is manually manageable via [https://svn.osgeo.org/grass/grass-addons/grass7/toolboxes.xml SVN]&lt;br /&gt;
&lt;br /&gt;
{{cmd|g.extension|version=70}} reads (from remote server http://grass.osgeo.org/addons/grass7) &amp;lt;tt&amp;gt;modules.xml&amp;lt;/tt&amp;gt; when listing available modules (&amp;lt;tt&amp;gt;-l&amp;lt;/tt&amp;gt;), and &amp;lt;tt&amp;gt;toolboxes.xml&amp;lt;/tt&amp;gt; when listing available toolboxes (&amp;lt;tt&amp;gt;-lt&amp;lt;/tt&amp;gt;). When installing toolbox using {{cmd|g.extension|version=70}} the module reads &amp;lt;tt&amp;gt;toolboxes.xml&amp;lt;/tt&amp;gt; and installs in the loop given list of modules. When all modules are installed it also updates local metadata files - &amp;lt;tt&amp;gt;GRASS_ADDON_BASE/modules.xml&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;GRASS_ADDON_BASE/toolboxes.xml&amp;lt;/tt&amp;gt;. These local metadata files are checked when listing locally installed toolboxes or single modules (&amp;lt;tt&amp;gt;-a&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;-ta&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Proposal 3 ===&lt;br /&gt;
&lt;br /&gt;
Use a modified version of [http://pypi.python.org/pypi/pip pip] (a tool for installing and managing Python packages)&lt;br /&gt;
&lt;br /&gt;
With Pip you can add/change repository, compile C/Fortran module, manage dependencies, install from some version control system (use&lt;br /&gt;
URLs like hg+http://domain/repo -- or prefix git+, svn+ etc), and using [http://pypi.python.org/pypi/virtualenv virtualenv]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_Community_Sprint_Prague_2012&amp;diff=15857</id>
		<title>Talk:GRASS Community Sprint Prague 2012</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_Community_Sprint_Prague_2012&amp;diff=15857"/>
		<updated>2012-06-07T11:31:20Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Reports */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reports ==&lt;br /&gt;
&lt;br /&gt;
=== [[User:Landa|Martin Landa]] ===&lt;br /&gt;
&lt;br /&gt;
* OSGeo4W GRASS package configuration: added libLAS support (http://liblas.org/osgeo4w.html) - {{rev|51677}} &amp;amp; {{rev|51679}}&lt;br /&gt;
* various wxGUI fixes&lt;br /&gt;
* implement saving list of executed commands in wxGUI - {{rev|51798}}&lt;br /&gt;
* wxGUI about window issues - {{rev|51830}}&lt;br /&gt;
* wxGUI vector/raster importer: updated list of formats (db/protocol): 'PostGIS WKT Raster driver', 'CouchDB', 'WFS','GeoRSS'&lt;br /&gt;
&lt;br /&gt;
=== Markus Metz ===&lt;br /&gt;
&lt;br /&gt;
* R-tree made n-dimensional (from 3D) for temporal GIS support - esp. {{rev|51799}}&lt;br /&gt;
&lt;br /&gt;
=== [[User:Neteler|Markus Neteler]] ===&lt;br /&gt;
&lt;br /&gt;
* Fundraising for this Community Sprint (with great help from Arnulf Christl)&lt;br /&gt;
* PSC composition discussion&lt;br /&gt;
* fix r.lake segfault for seed map ({{rev|51752}}) together with Markus Metz&lt;br /&gt;
* backport of wxGUI language selector (.bat file update yet missing for Windows) - together with Luca Delucchi&lt;br /&gt;
* Lidar DEM based example added to {{cmd|r.lake}}&lt;br /&gt;
* Testing QGIS-Sextante-GRASS integration:&lt;br /&gt;
** Location is generated on the fly, excellent&lt;br /&gt;
** v.buffer works&lt;br /&gt;
** r.terraflow works but result is not shown&lt;br /&gt;
** Parameter [http://sextante.googlecode.com/svn/trunk/soft/bindings/qgis-plugin/src/sextante/grass/grass.txt descriptions] are lacking in the internal control files (params/flags are duplicated), reported as http://hub.qgis.org/issues/5645&lt;br /&gt;
** GRASS integration should use private, not user's .grassrc6 file, reported as http://hub.qgis.org/issues/5644&lt;br /&gt;
&lt;br /&gt;
=== [[User:Annakrat|Anna Kratochvilova]] ===&lt;br /&gt;
* wxGUI/digitizer: add help button to digitizer toolbar ({{rev|51742}})&lt;br /&gt;
* wxGUI: fix histogram tool (the one using the d.histogram) ({{rev|51753}})&lt;br /&gt;
* wxNviz: revert changes in zexag and improve its behaviour for latlon projections ({{rev|51695}})&lt;br /&gt;
* wxGUI: fixes for d.rast.num and d.rast.arrow&lt;br /&gt;
&lt;br /&gt;
=== [[User:MilenaN|Milena Nowotarska]] ===&lt;br /&gt;
* WinGRASS bug hunting&lt;br /&gt;
* translation&lt;br /&gt;
&lt;br /&gt;
=== [[User:Wenzeslaus|Vaclav Petras]] ===&lt;br /&gt;
* wxGUI: separating d.mon-related code ({{rev|51758}}, {{rev|51804}}), d.mon bugfixing ({{rev|51829}}, {{rev|51836}})&lt;br /&gt;
* wxGUI: refactoring to get simplified Map Display for d.mon (nothing to commit yet)&lt;br /&gt;
* wiki: [[Using QtCreator for GRASS C development]]&lt;br /&gt;
* other: {{trac|1663}}, {{trac|1664}}&lt;br /&gt;
&lt;br /&gt;
=== [[User:NikosA|Nikos Alexandris]] ===&lt;br /&gt;
* Testing grass_trunk scripts (+ other modules) look at [http://titanpad.com/I51nq1SrNc GRASS Community Sprint Dashboard]&lt;br /&gt;
* Brainstorming about a Visual Guide to GRASS-GIS' modules capabilities  [http://grass.osgeo.org/wiki/Talk:GRASS_Community_Sprint_Prague_2012#Wishes_for_the_Community_Sprint under wishes]&lt;br /&gt;
&lt;br /&gt;
=== [[User:lucadelu|Luca Delucchi]] ===&lt;br /&gt;
* create v.in.geopaparazzi &lt;br /&gt;
* translation status in about gui {{rev|51838}} {{rev|51840}} {{rev|51844}} {{rev|51845}}&lt;br /&gt;
* several improvements in About GUI (translation status, used language, improvement font's styles)&lt;br /&gt;
* Some improvement into r.li.setup not finish yet&lt;br /&gt;
&lt;br /&gt;
=== [[User:Turek|Stepan Turek]] ===&lt;br /&gt;
* r.in.wms2 - improved support of WMS 1.3.0 standard and added more examples into manual ({{rev|51700}})&lt;br /&gt;
* worked on feature for interactive inserting of coordinates into parameter field&lt;br /&gt;
* worked on improvement of mouse events handlers unregistration from map window&lt;br /&gt;
* discussed GSoC project with mentors&lt;br /&gt;
* studied WxGui code&lt;br /&gt;
* thanks to Václav, Anna and Martin for help  &lt;br /&gt;
&lt;br /&gt;
=== [[User:Huhabla|Soeren Gebbert]] ===&lt;br /&gt;
* Presentation and demonstration of the new temporal GIS framework&lt;br /&gt;
* Implementation of scaled time axis for space time voxel cubes [http://trac.osgeo.org/grass/changeset/51779 r51779]&lt;br /&gt;
* Discussion and specification of the new Python GRASS API with Pietro Zambelli and other GRASS developer&lt;br /&gt;
* Discussion about a better integration of the temporal GIS framework modules in the GRASS GUI with Martin Landa&lt;br /&gt;
* Bug hunting [http://trac.osgeo.org/grass/changeset/51714], [http://trac.osgeo.org/grass/changeset/51793] and tests writing for the 3D raster library &lt;br /&gt;
* Discussion and specification of the new GRASS [http://grass.osgeo.org/wiki/Toolboxes toolbox] approach &lt;br /&gt;
* Moved the ilist functions and struct from vector lib to gis lib [[http://trac.osgeo.org/grass/changeset/51796]&lt;br /&gt;
&lt;br /&gt;
== Wishes for the Community Sprint ==&lt;br /&gt;
&lt;br /&gt;
* Visual Guide to GRASS GIS modules: scratch a collection of per-module dedicated||or tutorial/task oriented, simple, minimalistic yet attractive, bullet-proof visual examples&lt;br /&gt;
**exemplify what GRASS modules do rather than how they do it, thus different than the manuals -- ''rephrase title?''&lt;br /&gt;
***make use of existing grass modules list(s), like (this old) [http://grass.itc.it/gdp/grassmanuals/grass63_module_list.pdf GRASS GIS 6.3 Command list (PDF document)]&lt;br /&gt;
***: ''HB: A version for GRASS 6.4 [http://grass.osgeo.org/gdp/grassmanuals/grass64_module_list.pdf is here]. How to advertise it better? The script to make it is in SVN, see tools/module_synopsis.sh''&lt;br /&gt;
***visuals should clearly refer to both commands (CLI) and (their) respective menu entry (in GUI)&lt;br /&gt;
***ignore modules which cannot be visualised?&lt;br /&gt;
**check if (and some-how) task-oriented visual examples could be build out of per-modules examples&lt;br /&gt;
**setup specific styling rules (?)&lt;br /&gt;
***only one descriptive sentence per module or task&lt;br /&gt;
***visuals clearly refer to both commands (CLI) and (their) respective menu entry (in GUI)&lt;br /&gt;
***limited caption(s) describing visuals&lt;br /&gt;
**end-up with some independent and beautiful TeXy PDF&lt;br /&gt;
**visually enrich existing manuals and/or grass-wiki&lt;br /&gt;
** or consider Sphinx&lt;br /&gt;
**Random examples&lt;br /&gt;
***Important concepts in GRASS-GIS' raster processing workflow&lt;br /&gt;
[[Image:nc_spm_08_the_computational_region_concept_800px_height.png|400px|thumb|center|Understanding the concept of computational region -- (1) North Carolina DEM 500m (elev_state_500m), (2) basins derived from the DEM by r.watershed (threshhold=50K), (3) a selected basin within which grass raster modules will operate]]&lt;br /&gt;
***combination of r.slope.aspect, r.buffer2 (grass70) and r.blend &lt;br /&gt;
[[Image:Nc_spm_09_r.blend_of_aspect_and_streams_derived_buffered.png|400px|thumb|center|r.blend -- combined streams, buffered streams and aspect]]&lt;br /&gt;
* Review of the python + ctypes example scripts.&lt;br /&gt;
: The examples given in the code for {{src|doc/python/raster_example_ctypes.py|version=trunk}}, vector_example_ctypes.py and on the [[Python Ctypes Examples|Ctypes wiki page]] have so far for me all been broken in some way or another. Either grass7 API in grass6 example, typos, incomplete, etc. have made almost all of them fail out of the box. As this is teaching code we should make sure it's perfect :-).  See also bug in trac about possible memory leak in r.example.&lt;br /&gt;
&lt;br /&gt;
* Extend {{cmd|r.colors}} documentation by an example for a user-generated logarithmic color table.&lt;br /&gt;
: + 'r.colors -e' example may be of more interest, even if many people don't know about it.&lt;br /&gt;
: + an example of the 'd.legend use=0.001,0.01,0.1,1,10,100' trick with log scale color rules&lt;br /&gt;
&lt;br /&gt;
* I (Hamish) recently added support for Alessandro Frigeri's Planetary ellipsoid list (trunk/lib/gis/ellipse.table.solar.system) to the wx location wizard, but it is still buggy, and I think I broke e.g. &amp;quot;airy&amp;quot; too. any python experts able to help? tx.&lt;br /&gt;
&lt;br /&gt;
* In the wiki, [[Template:AddonCmd]] could use an update for GRASS 7 entries. The page layout is a bit different (different pages for different groups), so either a new Template:AddonCmd7 is needed, or a bunch of fancy logic added to e.g. the way than man pages can have their version added as a &amp;quot;&amp;lt;tt&amp;gt;|version=&amp;lt;/tt&amp;gt;&amp;quot; with [[Template:Cmd]].&lt;br /&gt;
::: (ML) This template points to [[GRASS AddOns]] page. To implement this wish we would need separate wiki pages, eg. GRASS 6 AddOns and GRASS 7 AddOns. Or the template could also point to the source code - something like [GRASS_Addons#&amp;lt;module&amp;gt;] ([trac/addons/grass&amp;lt;version&amp;gt;/&amp;lt;module&amp;gt; src]). &lt;br /&gt;
:::: We also have [[AddOns/GRASS7]], so the structure is totally confused. We need to keep [[AddOns]] as landing pages as it has been highly cited&lt;br /&gt;
&lt;br /&gt;
* Enhance [[Template:wikipedia]] so that alternate names can be given (like with [[Template:Cmd]]), mainly to avoid having to use &amp;quot;_&amp;quot; for spaces in the presented link-text.&lt;br /&gt;
&lt;br /&gt;
== Testing by power users ==&lt;br /&gt;
&lt;br /&gt;
(Power) users from all over the world are kindly invited to assist with testing of new and existing functionality. To collect results and notes, we set up an interactive, collaborative editing tool which works in real-time:&lt;br /&gt;
&lt;br /&gt;
Please check http://titanpad.com/I51nq1SrNc&lt;br /&gt;
&lt;br /&gt;
== Non-Technical ==&lt;br /&gt;
&lt;br /&gt;
=== {{done}} Discuss role and current composition of GRASS-PSC ===&lt;br /&gt;
&lt;br /&gt;
Discussion about GRASS [[PSC]]:&lt;br /&gt;
* Every year members are requested to confirm to continue their work in the PSC.&lt;br /&gt;
* After the Community Sprint 2012, the Chair will request updates to the [[RFC1]] from the PSC members.&lt;br /&gt;
* Answer within five business days needed.&lt;br /&gt;
* In case of no continuation/no answer, a member is replaced in order to refresh the PSC.&lt;br /&gt;
* To be eligible for PSC membership, a person should have a demonstrated and substantial involvement in GRASS GIS (operation of the PSC is defined at [[RFC1]]).&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
&lt;br /&gt;
* {{done}} Discuss Google Summer of Code (two students are here)&lt;br /&gt;
* Discuss GRASS 6.4.3 and 7.0 release schedule&lt;br /&gt;
* Define make a manual test procedure for users to simplify testing before new releases, write this up in the wiki ([http://trac.osgeo.org/grass/wiki/HowToTestGrass6 example])&lt;br /&gt;
&lt;br /&gt;
== Semi-Technical ==&lt;br /&gt;
&lt;br /&gt;
=== {{done}} Improve Web site or use CMS ===&lt;br /&gt;
* Discussion about [[CMS]]&lt;br /&gt;
** Prototype site: http://grass.fem-environment.eu/&lt;br /&gt;
** Problem: enormous job&lt;br /&gt;
** Involvement of people, see nice example at http://www.mageia.org/en/contribute/&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
* Document tips &amp;amp; tricks for GRASS compilation with the wxGUI&lt;br /&gt;
: there is [http://trac.osgeo.org/grass/wiki/CompileOnWindows Compilation on MS-Windows]&lt;br /&gt;
* Discuss new GRASS Book 4th edition in conjunction with the GRASS GIS 7.0 release in early 2013&lt;br /&gt;
&lt;br /&gt;
== Technical ==&lt;br /&gt;
&lt;br /&gt;
=== OSGeo4W ===&lt;br /&gt;
&lt;br /&gt;
* [{{done}} (martinl) -  {{rev|51677}} &amp;amp; {{rev|51679}}] GRASS package configuration: add liblas support (http://liblas.org/osgeo4w.html)  ([http://wingrass.fsv.cvut.cz/grass64/ download])&lt;br /&gt;
&lt;br /&gt;
=== Android ===&lt;br /&gt;
&lt;br /&gt;
* continue the Android compilation (needs especially the elimination of XDR in rast and rast3d)&lt;br /&gt;
&lt;br /&gt;
=== QGIS-Sextante-GRASS interface ===&lt;br /&gt;
&lt;br /&gt;
* work on new integration with [http://plugins.qgis.org/plugins/sextante/ QGIS-Sextante]&lt;br /&gt;
&lt;br /&gt;
=== Update the GDAL-GRASS interface to GRASS 7 ===&lt;br /&gt;
&lt;br /&gt;
* see http://trac.osgeo.org/gdal/ticket/2953&lt;br /&gt;
* LGPL grass IO code written from scratch?&lt;br /&gt;
&lt;br /&gt;
=== Rules Based programming and Agent Based Modelling ===&lt;br /&gt;
&lt;br /&gt;
* Tutorial/Documentation on g.infer &lt;br /&gt;
* [http://trac.osgeo.org/grass/browser/grass-addons/grass7/raster/r.agent r.agent] in GRASS 7&lt;br /&gt;
&lt;br /&gt;
=== Time series ===&lt;br /&gt;
&lt;br /&gt;
* {{done}} Seminar on Temporal GIS framework demo and discussion: by Soeren Gebbert&lt;br /&gt;
* Add content to http://grass.osgeo.org/grass70/manuals/html70_user/temporalintro.html from Soeren's tutorial&lt;br /&gt;
* Discuss temporal GIS wxGUI and WPS integration&lt;br /&gt;
* Discuss massive parallel computation of spatio-temporal datasets&lt;br /&gt;
&lt;br /&gt;
=== Automated command use statistics ===&lt;br /&gt;
&lt;br /&gt;
* modify {{Cmd|g.parser}} to write out the list of used commands (without parameters) into a text file for simple, automated command use statistics&lt;br /&gt;
: HB: ''I've already written a script to do this. (a while ago, I'll have to dig it out)''&lt;br /&gt;
&lt;br /&gt;
=== Mobile: inventory of mobile and touch implementations ===&lt;br /&gt;
&lt;br /&gt;
* [{{done}} (lucadelu) {{rev|51791}} &amp;amp; {{rev|51792}}]  [http://code.google.com/p/geopaparazzi/ Geopaparazzi], v.in.geopaparazzi&lt;br /&gt;
* GRASS on Android (patches by MN)&lt;br /&gt;
&lt;br /&gt;
=== Cloud computing ===&lt;br /&gt;
&lt;br /&gt;
* g.cloud&lt;br /&gt;
* cluster usage best practices&lt;br /&gt;
&lt;br /&gt;
=== GSoC 2012 ===&lt;br /&gt;
&lt;br /&gt;
* v.net.* front end, WMS &lt;br /&gt;
* Python API&lt;br /&gt;
* Image Segmentation&lt;br /&gt;
&lt;br /&gt;
=== GRASS 7 ===&lt;br /&gt;
* [[PostGIS]] Topology support &lt;br /&gt;
* New features for vector engine&lt;br /&gt;
* Discuss Toolbox concept&lt;br /&gt;
* Discuss how to implement [[GRASS Metadata Management]]&lt;br /&gt;
* [{{done}} (lucadelu) -  {{rev|51735}}] Fix category in {{Cmd|v.in.mapgen|version=70}}&lt;br /&gt;
* [{{done}} ] New addons module [[AddOns/GRASS7|r.massmov]]&lt;br /&gt;
&lt;br /&gt;
=== Model integration ===&lt;br /&gt;
&lt;br /&gt;
* GRASS and [http://www.coulthard.org.uk/CAESAR.html Caesar model]&lt;br /&gt;
&lt;br /&gt;
=== GRASS modules fixes  ===&lt;br /&gt;
&lt;br /&gt;
* {{Cmd|i.atcorr}} debugging&lt;br /&gt;
** Figure out how to get visibility/aerosol depth at 550nm (perhaps from MODIS atmosphere?)&lt;br /&gt;
** Under certain circumstances i.atcorr produces NULL data&lt;br /&gt;
* GRASS 6.4.3 - [http://trac.osgeo.org/grass/query?status=new&amp;amp;status=assigned&amp;amp;status=reopened&amp;amp;group=type&amp;amp;order=priority&amp;amp;priority=blocker&amp;amp;priority=critical&amp;amp;milestone=6.4.3&amp;amp;milestone=6.4.2&amp;amp;milestone=6.4.1&amp;amp;milestone=6.4.0 Release critical issues to be fixed]&lt;br /&gt;
&lt;br /&gt;
=== Signal handling ===&lt;br /&gt;
&lt;br /&gt;
* The Python based scripts should catch CTRL-C to avoid that clutter is left behind &amp;amp; that ugly traceback messages are printed to the terminal.&lt;br /&gt;
&lt;br /&gt;
Suggestion by Anne Ghisla (yet not working... ):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
Index: lib/init/grass.py&lt;br /&gt;
===================================================================&lt;br /&gt;
--- lib/init/grass.py   (revision 51604)&lt;br /&gt;
+++ lib/init/grass.py   (working copy)&lt;br /&gt;
@@ -30,7 +30,12 @@&lt;br /&gt;
 import subprocess&lt;br /&gt;
 import re&lt;br /&gt;
 import platform&lt;br /&gt;
+import signal&lt;br /&gt;
 &lt;br /&gt;
+# catch user-sent CTRL-C&lt;br /&gt;
+signal.signal(signal.SIGINT, lambda a,b:cleanup())&lt;br /&gt;
+signal.siginterrupt(signal.SIGINT, False)&lt;br /&gt;
+&lt;br /&gt;
 # Variables substituted during build process&lt;br /&gt;
 if os.environ.has_key('GISBASE'):&lt;br /&gt;
     gisbase = os.environ['GISBASE']&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Currently if vector creation modules fail to create/import they still leave behind the empty skeleton of a map, so you need to use --o for the next time. It would be nice if cleanup could occur. This doesn't happen (visibly) with raster maps as they are composed in $MAPSET/.tmp/ and only moved into the main $MAPSET elements once everything is finished. Vector maps on the otherhand write to the MAPSET in-place.&lt;br /&gt;
&lt;br /&gt;
=== Fix wxGUI problems ===&lt;br /&gt;
&lt;br /&gt;
==== Add a &amp;quot;change language&amp;quot; option in GRASS GUI ====&lt;br /&gt;
&lt;br /&gt;
Implement the diff provided here: http://trac.osgeo.org/grass/ticket/879&lt;br /&gt;
&lt;br /&gt;
==== Fix several issues ====&lt;br /&gt;
&lt;br /&gt;
A. Clerici: please fix:&lt;br /&gt;
* ticket https://trac.osgeo.org/grass/ticket/1564&lt;br /&gt;
* {{done}} ([[User:annakrat | Anna Kratochvilova]]) - {{rev|51824}}, {{rev|51825}}, {{rev|51827}}. ticket https://trac.osgeo.org/grass/ticket/1570&lt;br /&gt;
* wxGUI bugs (GRASS6.4.2RC3 under Fedora 16):&lt;br /&gt;
** {{done}} ([[User:annakrat | Anna Kratochvilova]]) - {{rev|51753}}, {{rev|51772}}, {{rev|51773}}. In the 'Create histogram of raster map' function, the style pie and the Color for text and axes options are not working. The options  run fine on the tcltk GUI and in command line mode.&lt;br /&gt;
** In the 'Add scalebar and north arrow', the scale can be modified only once and the option can't be re-entered nor the scale can't be deleted. Also in this case there are no problems with the tcltk GUI.&lt;br /&gt;
** {{done}} ([[User:annakrat | Anna Kratochvilova]]) - {{rev|51824}}, {{rev|51825}}, {{rev|51827}}. The option 'Add raster cell arrows' seems not to work properly. It seems that the arrows in the Map Display cannot zoomed in. It can be checked by the following steps:&lt;br /&gt;
*** Load and display the aspect (Spearfish) map; Open the d.rast.arrows panel through the GUI button and choose the same map aspect. Click Apply: the Map Display appears green as expected for the very high resolution; Choose 10 for  the 'Draw arrow every Nth grid cell:' option and none as 'Color for drawing grid or “none”' option. The arrows are displayed on the cells of aspect map; To make the arrows visible choose slope as 'Raster map containing values used for arrow length:' and 10.0 as 'Scale factor for arrows'. Zoom in a very small area: the cells of aspect map are enlarged, but the density of arrows remains the same; The direction is correctly  the same for all arrows inside the same cell but it seems that instead of having an arrow each 10 aspect cells, there is an arrow each 10 pixel of the screen (with tcltk GUI the procedure works fine)&lt;br /&gt;
* Improve the GRASS 7 wx0..6 monitors&lt;br /&gt;
** Some improvements done by Vaclav Petras&lt;br /&gt;
&lt;br /&gt;
==== Layout ====&lt;br /&gt;
&lt;br /&gt;
Optionally, have all-in-one GUI window (requested by many new users!):&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Wxgui_current.png|250px|thumb|center|Current wxGUI layout with detached window components]]&lt;br /&gt;
| [[Image:Wxgui_proposal.png|200px|thumb|center|'''Proposal''' for wxGUI layout modification (Recomposition of existing toolbars, mapview and menus by simple rearrangement into one frame)]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Proposed solution: wxLayoutAlgorithm(), see [[WxGUI#What_others_do]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, a minimalistic cointegration of a map display and the command console. See also this post in grass-user [http://lists.osgeo.org/pipermail/grass-user/2011-April/060346.html  Re: [GRASS-user&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; replacement for d.mon in GRASS 7.0?]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:grass-gis_minimalistic_map-display_with_comman-console__layout_mockup.png|200px|thumb|left|alt text]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== r.li.setup ====&lt;br /&gt;
work on {{Cmd|r.li.setup}} for GRASS7&lt;br /&gt;
&lt;br /&gt;
==== Saving History ====&lt;br /&gt;
&lt;br /&gt;
* when using the wxGUI, it needs to write back to the shell history&lt;br /&gt;
: `cat wxgui_history.log &amp;gt;&amp;gt; $MAPSET/.bash_history`&lt;br /&gt;
: Since the wxGUI shell quoting is not perfect, maybe it is better not to write directly to real shell history, but maintain its own in ~/.grass7/history.&lt;br /&gt;
&lt;br /&gt;
==== Digitizing toolbar ====&lt;br /&gt;
&lt;br /&gt;
* missing string &amp;quot;Select vector map&amp;quot; from the drop-down widget on digitizing toolbar &lt;br /&gt;
: on winGRASS, nightly build of 24th May&lt;br /&gt;
* after editing vector objects and saving, the changes are not applied on the map. Must be some refresh problem.&lt;br /&gt;
* Highlighting problem&lt;br /&gt;
: objects selected in the attribute table are not highlighted on the map&lt;br /&gt;
: objects selected ton the map are not highlighted in the attribute table.&lt;br /&gt;
* Bounding box of a layer broken after deletion of some objects with broken geometry, also displaying of the attribute table broken with a message that the map layer is not a vector one,&lt;br /&gt;
: closing the layer from the layer tree also not possible&lt;br /&gt;
: after closing GRASS6.4.3 and reopening the project, the layer is restored with all the changes applayed.&lt;br /&gt;
&lt;br /&gt;
==== Attribute manager ====&lt;br /&gt;
&lt;br /&gt;
* Editing attribute table broken&lt;br /&gt;
: cannot delete a row, permission denied&lt;br /&gt;
: different than selected row dissapears after not succesful row deletion but is back after refreshing the table.&lt;br /&gt;
* Not able to insert a value into a table, permision to the temp file denied.&lt;br /&gt;
* Too small area for displaying the table data after connecting a table to the vector map.&lt;br /&gt;
: Add a table to the vector layer in wxGUI GRASS6.4.3 with: Show attribute table &amp;gt;  Manage layers tab. &lt;br /&gt;
: Go to Browse data tab, the area to thisplay the attributes is extreemly small and cannot be stretched. &lt;br /&gt;
: After closing the table manager and reopening, the area is normal wide again.&lt;br /&gt;
* SQL simple select &amp;quot;explodes&amp;quot; if selecting a string attribute without quotes&lt;br /&gt;
&lt;br /&gt;
==== Map Display ====&lt;br /&gt;
&lt;br /&gt;
* Clicking with a Query tool on a vector object randomly not able to find an object to display its attributes.&lt;br /&gt;
**[{{done}} ([[User:annakrat | Anna Kratochvilova]]) -  {{rev|51810}}, {{rev|51811}}]&lt;br /&gt;
&lt;br /&gt;
==== I18N ====&lt;br /&gt;
&lt;br /&gt;
* Solve module description string duplication in both grassmods.po and grasswxpy.po files.&lt;br /&gt;
** Before fixing this problem in code, please find a way to automagically copy the translated strings to the proper .po files for all the languages.&lt;br /&gt;
** The problem is that the wxGUI menustrings are copied into grasswxpy_XX.po while the strings are already translated in grassmods_XX.py&lt;br /&gt;
* {{done}} Add current &amp;quot;language&amp;quot; output into &amp;quot;about&amp;quot; panel&lt;br /&gt;
* {{done}} Add new tab about &amp;quot;languages statistics&amp;quot; into &amp;quot;about&amp;quot; panel&lt;br /&gt;
* {{done}} Improvment &amp;quot;about&amp;quot; panel style&lt;br /&gt;
&lt;br /&gt;
==== Project file ====&lt;br /&gt;
* Find a way to successfully open a project file made in GRASS6.4 in GRASS7.&lt;br /&gt;
: Due to changes (e.g. removal of some flags, e.g. -o flag of d.rast), the project file is not opened in a correct way. The user can see the layers in the layer tree, but they cannot be displayed in the map canvas. A warning would help.&lt;br /&gt;
* add version into file tags&lt;br /&gt;
&lt;br /&gt;
=== Python coding hints ===&lt;br /&gt;
&lt;br /&gt;
* Consider Spyder, a powerful interactive development environment for the Python: http://code.google.com/p/spyderlib/&lt;br /&gt;
* use pylint, the python code static checker: http://pypi.python.org/pypi/pylint&lt;br /&gt;
&lt;br /&gt;
== Not to forget about the next time ==&lt;br /&gt;
&lt;br /&gt;
First day:&lt;br /&gt;
* presentation of participants&lt;br /&gt;
&lt;br /&gt;
First or second day:&lt;br /&gt;
* group photo&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_Community_Sprint_Prague_2012&amp;diff=15856</id>
		<title>Talk:GRASS Community Sprint Prague 2012</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_Community_Sprint_Prague_2012&amp;diff=15856"/>
		<updated>2012-06-07T11:30:31Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Reports ==&lt;br /&gt;
&lt;br /&gt;
=== [[User:Landa|Martin Landa]] ===&lt;br /&gt;
&lt;br /&gt;
* OSGeo4W GRASS package configuration: added libLAS support (http://liblas.org/osgeo4w.html) - {{rev|51677}} &amp;amp; {{rev|51679}}&lt;br /&gt;
* various wxGUI fixes&lt;br /&gt;
* implement saving list of executed commands in wxGUI - {{rev|51798}}&lt;br /&gt;
* wxGUI about window issues - {{rev|51830}}&lt;br /&gt;
* wxGUI vector/raster importer: updated list of formats (db/protocol): 'PostGIS WKT Raster driver', 'CouchDB', 'WFS','GeoRSS'&lt;br /&gt;
&lt;br /&gt;
=== Markus Metz ===&lt;br /&gt;
&lt;br /&gt;
* R-tree made n-dimensional (from 3D) for temporal GIS support - esp. {{rev|51799}}&lt;br /&gt;
&lt;br /&gt;
=== [[User:Neteler|Markus Neteler]] ===&lt;br /&gt;
&lt;br /&gt;
* Fundraising for this Community Sprint (with great help from Arnulf Christl)&lt;br /&gt;
* PSC composition discussion&lt;br /&gt;
* fix r.lake segfault for seed map ({{rev|51752}}) together with Markus Metz&lt;br /&gt;
* backport of wxGUI language selector (.bat file update yet missing for Windows) - together with Luca Delucchi&lt;br /&gt;
* Lidar DEM based example added to {{cmd|r.lake}}&lt;br /&gt;
* Testing QGIS-Sextante-GRASS integration:&lt;br /&gt;
** Location is generated on the fly, excellent&lt;br /&gt;
** v.buffer works&lt;br /&gt;
** r.terraflow works but result is not shown&lt;br /&gt;
** Parameter [http://sextante.googlecode.com/svn/trunk/soft/bindings/qgis-plugin/src/sextante/grass/grass.txt descriptions] are lacking in the internal control files (params/flags are duplicated), reported as http://hub.qgis.org/issues/5645&lt;br /&gt;
** GRASS integration should use private, not user's .grassrc6 file, reported as http://hub.qgis.org/issues/5644&lt;br /&gt;
&lt;br /&gt;
=== [[User:Annakrat|Anna Kratochvilova]] ===&lt;br /&gt;
* wxGUI/digitizer: add help button to digitizer toolbar ({{rev|51742}})&lt;br /&gt;
* wxGUI: fix histogram tool (the one using the d.histogram) ({{rev|51753}})&lt;br /&gt;
* wxNviz: revert changes in zexag and improve its behaviour for latlon projections ({{rev|51695}})&lt;br /&gt;
* wxGUI: fixes for d.rast.num and d.rast.arrow&lt;br /&gt;
&lt;br /&gt;
=== [[User:MilenaN|Milena Nowotarska]] ===&lt;br /&gt;
* WinGRASS bug hunting&lt;br /&gt;
* translation&lt;br /&gt;
&lt;br /&gt;
=== [[User:Wenzeslaus|Vaclav Petras]] ===&lt;br /&gt;
* wxGUI: separating d.mon-related code ({{rev|51758}}, {{rev|51804}}), d.mon bugfixing ({{rev|51829}}, {{rev|51836}})&lt;br /&gt;
* wxGUI: refactoring to get simplified Map Display for d.mon (nothing to commit yet)&lt;br /&gt;
* wiki: [[Using QtCreator for GRASS C development]]&lt;br /&gt;
* other: {{trac|1663}}, {{trac|1664}}&lt;br /&gt;
&lt;br /&gt;
=== [[User:NikosA|Nikos Alexandris]] ===&lt;br /&gt;
* Testing grass_trunk scripts (+ other modules) look at [http://titanpad.com/I51nq1SrNc GRASS Community Sprint Dashboard]&lt;br /&gt;
* Brainstorming about a Visual Guide to GRASS-GIS' modules capabilities  [http://grass.osgeo.org/wiki/Talk:GRASS_Community_Sprint_Prague_2012#Wishes_for_the_Community_Sprint under wishes]&lt;br /&gt;
&lt;br /&gt;
=== [[User:lucadelu|Luca Delucchi]] ===&lt;br /&gt;
* create v.in.geopaparazzi &lt;br /&gt;
* translation status in about gui {{rev|51838}} {{rev|51840}} {{rev|51844}} {{rev|51845}}&lt;br /&gt;
* several improvements in About GUI (translation status, used language, improvement font's styles)&lt;br /&gt;
* Some improvement into r.li.setup not finish yet&lt;br /&gt;
&lt;br /&gt;
=== [[User:Turek|Stepan Turek]] ===&lt;br /&gt;
* r.in.wms2 - improved support of WMS 1.3.0 standard and added more examples into manual ({{rev|51700}})&lt;br /&gt;
* worked on feature for interactive inserting of coordinates into parameter field&lt;br /&gt;
* worked on improvement of mouse events handlers unregistration from map window&lt;br /&gt;
* discussed GSoC project with mentors&lt;br /&gt;
* studied WxGui code&lt;br /&gt;
* thanks to Václav, Anna and Martin for help  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== [[User:Huhabla|Soeren Gebbert]] ===&lt;br /&gt;
* Presentation and demonstration of the new temporal GIS framework&lt;br /&gt;
* Implementation of scaled time axis for space time voxel cubes [http://trac.osgeo.org/grass/changeset/51779 r51779]&lt;br /&gt;
* Discussion and specification of the new Python GRASS API with Pietro Zambelli and other GRASS developer&lt;br /&gt;
* Discussion about a better integration of the temporal GIS framework modules in the GRASS GUI with Martin Landa&lt;br /&gt;
* Bug hunting [http://trac.osgeo.org/grass/changeset/51714], [http://trac.osgeo.org/grass/changeset/51793] and tests writing for the 3D raster library &lt;br /&gt;
* Discussion and specification of the new GRASS [http://grass.osgeo.org/wiki/Toolboxes toolbox] approach &lt;br /&gt;
* Moved the ilist functions and struct from vector lib to gis lib [[http://trac.osgeo.org/grass/changeset/51796]&lt;br /&gt;
&lt;br /&gt;
== Wishes for the Community Sprint ==&lt;br /&gt;
&lt;br /&gt;
* Visual Guide to GRASS GIS modules: scratch a collection of per-module dedicated||or tutorial/task oriented, simple, minimalistic yet attractive, bullet-proof visual examples&lt;br /&gt;
**exemplify what GRASS modules do rather than how they do it, thus different than the manuals -- ''rephrase title?''&lt;br /&gt;
***make use of existing grass modules list(s), like (this old) [http://grass.itc.it/gdp/grassmanuals/grass63_module_list.pdf GRASS GIS 6.3 Command list (PDF document)]&lt;br /&gt;
***: ''HB: A version for GRASS 6.4 [http://grass.osgeo.org/gdp/grassmanuals/grass64_module_list.pdf is here]. How to advertise it better? The script to make it is in SVN, see tools/module_synopsis.sh''&lt;br /&gt;
***visuals should clearly refer to both commands (CLI) and (their) respective menu entry (in GUI)&lt;br /&gt;
***ignore modules which cannot be visualised?&lt;br /&gt;
**check if (and some-how) task-oriented visual examples could be build out of per-modules examples&lt;br /&gt;
**setup specific styling rules (?)&lt;br /&gt;
***only one descriptive sentence per module or task&lt;br /&gt;
***visuals clearly refer to both commands (CLI) and (their) respective menu entry (in GUI)&lt;br /&gt;
***limited caption(s) describing visuals&lt;br /&gt;
**end-up with some independent and beautiful TeXy PDF&lt;br /&gt;
**visually enrich existing manuals and/or grass-wiki&lt;br /&gt;
** or consider Sphinx&lt;br /&gt;
**Random examples&lt;br /&gt;
***Important concepts in GRASS-GIS' raster processing workflow&lt;br /&gt;
[[Image:nc_spm_08_the_computational_region_concept_800px_height.png|400px|thumb|center|Understanding the concept of computational region -- (1) North Carolina DEM 500m (elev_state_500m), (2) basins derived from the DEM by r.watershed (threshhold=50K), (3) a selected basin within which grass raster modules will operate]]&lt;br /&gt;
***combination of r.slope.aspect, r.buffer2 (grass70) and r.blend &lt;br /&gt;
[[Image:Nc_spm_09_r.blend_of_aspect_and_streams_derived_buffered.png|400px|thumb|center|r.blend -- combined streams, buffered streams and aspect]]&lt;br /&gt;
* Review of the python + ctypes example scripts.&lt;br /&gt;
: The examples given in the code for {{src|doc/python/raster_example_ctypes.py|version=trunk}}, vector_example_ctypes.py and on the [[Python Ctypes Examples|Ctypes wiki page]] have so far for me all been broken in some way or another. Either grass7 API in grass6 example, typos, incomplete, etc. have made almost all of them fail out of the box. As this is teaching code we should make sure it's perfect :-).  See also bug in trac about possible memory leak in r.example.&lt;br /&gt;
&lt;br /&gt;
* Extend {{cmd|r.colors}} documentation by an example for a user-generated logarithmic color table.&lt;br /&gt;
: + 'r.colors -e' example may be of more interest, even if many people don't know about it.&lt;br /&gt;
: + an example of the 'd.legend use=0.001,0.01,0.1,1,10,100' trick with log scale color rules&lt;br /&gt;
&lt;br /&gt;
* I (Hamish) recently added support for Alessandro Frigeri's Planetary ellipsoid list (trunk/lib/gis/ellipse.table.solar.system) to the wx location wizard, but it is still buggy, and I think I broke e.g. &amp;quot;airy&amp;quot; too. any python experts able to help? tx.&lt;br /&gt;
&lt;br /&gt;
* In the wiki, [[Template:AddonCmd]] could use an update for GRASS 7 entries. The page layout is a bit different (different pages for different groups), so either a new Template:AddonCmd7 is needed, or a bunch of fancy logic added to e.g. the way than man pages can have their version added as a &amp;quot;&amp;lt;tt&amp;gt;|version=&amp;lt;/tt&amp;gt;&amp;quot; with [[Template:Cmd]].&lt;br /&gt;
::: (ML) This template points to [[GRASS AddOns]] page. To implement this wish we would need separate wiki pages, eg. GRASS 6 AddOns and GRASS 7 AddOns. Or the template could also point to the source code - something like [GRASS_Addons#&amp;lt;module&amp;gt;] ([trac/addons/grass&amp;lt;version&amp;gt;/&amp;lt;module&amp;gt; src]). &lt;br /&gt;
:::: We also have [[AddOns/GRASS7]], so the structure is totally confused. We need to keep [[AddOns]] as landing pages as it has been highly cited&lt;br /&gt;
&lt;br /&gt;
* Enhance [[Template:wikipedia]] so that alternate names can be given (like with [[Template:Cmd]]), mainly to avoid having to use &amp;quot;_&amp;quot; for spaces in the presented link-text.&lt;br /&gt;
&lt;br /&gt;
== Testing by power users ==&lt;br /&gt;
&lt;br /&gt;
(Power) users from all over the world are kindly invited to assist with testing of new and existing functionality. To collect results and notes, we set up an interactive, collaborative editing tool which works in real-time:&lt;br /&gt;
&lt;br /&gt;
Please check http://titanpad.com/I51nq1SrNc&lt;br /&gt;
&lt;br /&gt;
== Non-Technical ==&lt;br /&gt;
&lt;br /&gt;
=== {{done}} Discuss role and current composition of GRASS-PSC ===&lt;br /&gt;
&lt;br /&gt;
Discussion about GRASS [[PSC]]:&lt;br /&gt;
* Every year members are requested to confirm to continue their work in the PSC.&lt;br /&gt;
* After the Community Sprint 2012, the Chair will request updates to the [[RFC1]] from the PSC members.&lt;br /&gt;
* Answer within five business days needed.&lt;br /&gt;
* In case of no continuation/no answer, a member is replaced in order to refresh the PSC.&lt;br /&gt;
* To be eligible for PSC membership, a person should have a demonstrated and substantial involvement in GRASS GIS (operation of the PSC is defined at [[RFC1]]).&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
&lt;br /&gt;
* {{done}} Discuss Google Summer of Code (two students are here)&lt;br /&gt;
* Discuss GRASS 6.4.3 and 7.0 release schedule&lt;br /&gt;
* Define make a manual test procedure for users to simplify testing before new releases, write this up in the wiki ([http://trac.osgeo.org/grass/wiki/HowToTestGrass6 example])&lt;br /&gt;
&lt;br /&gt;
== Semi-Technical ==&lt;br /&gt;
&lt;br /&gt;
=== {{done}} Improve Web site or use CMS ===&lt;br /&gt;
* Discussion about [[CMS]]&lt;br /&gt;
** Prototype site: http://grass.fem-environment.eu/&lt;br /&gt;
** Problem: enormous job&lt;br /&gt;
** Involvement of people, see nice example at http://www.mageia.org/en/contribute/&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
* Document tips &amp;amp; tricks for GRASS compilation with the wxGUI&lt;br /&gt;
: there is [http://trac.osgeo.org/grass/wiki/CompileOnWindows Compilation on MS-Windows]&lt;br /&gt;
* Discuss new GRASS Book 4th edition in conjunction with the GRASS GIS 7.0 release in early 2013&lt;br /&gt;
&lt;br /&gt;
== Technical ==&lt;br /&gt;
&lt;br /&gt;
=== OSGeo4W ===&lt;br /&gt;
&lt;br /&gt;
* [{{done}} (martinl) -  {{rev|51677}} &amp;amp; {{rev|51679}}] GRASS package configuration: add liblas support (http://liblas.org/osgeo4w.html)  ([http://wingrass.fsv.cvut.cz/grass64/ download])&lt;br /&gt;
&lt;br /&gt;
=== Android ===&lt;br /&gt;
&lt;br /&gt;
* continue the Android compilation (needs especially the elimination of XDR in rast and rast3d)&lt;br /&gt;
&lt;br /&gt;
=== QGIS-Sextante-GRASS interface ===&lt;br /&gt;
&lt;br /&gt;
* work on new integration with [http://plugins.qgis.org/plugins/sextante/ QGIS-Sextante]&lt;br /&gt;
&lt;br /&gt;
=== Update the GDAL-GRASS interface to GRASS 7 ===&lt;br /&gt;
&lt;br /&gt;
* see http://trac.osgeo.org/gdal/ticket/2953&lt;br /&gt;
* LGPL grass IO code written from scratch?&lt;br /&gt;
&lt;br /&gt;
=== Rules Based programming and Agent Based Modelling ===&lt;br /&gt;
&lt;br /&gt;
* Tutorial/Documentation on g.infer &lt;br /&gt;
* [http://trac.osgeo.org/grass/browser/grass-addons/grass7/raster/r.agent r.agent] in GRASS 7&lt;br /&gt;
&lt;br /&gt;
=== Time series ===&lt;br /&gt;
&lt;br /&gt;
* {{done}} Seminar on Temporal GIS framework demo and discussion: by Soeren Gebbert&lt;br /&gt;
* Add content to http://grass.osgeo.org/grass70/manuals/html70_user/temporalintro.html from Soeren's tutorial&lt;br /&gt;
* Discuss temporal GIS wxGUI and WPS integration&lt;br /&gt;
* Discuss massive parallel computation of spatio-temporal datasets&lt;br /&gt;
&lt;br /&gt;
=== Automated command use statistics ===&lt;br /&gt;
&lt;br /&gt;
* modify {{Cmd|g.parser}} to write out the list of used commands (without parameters) into a text file for simple, automated command use statistics&lt;br /&gt;
: HB: ''I've already written a script to do this. (a while ago, I'll have to dig it out)''&lt;br /&gt;
&lt;br /&gt;
=== Mobile: inventory of mobile and touch implementations ===&lt;br /&gt;
&lt;br /&gt;
* [{{done}} (lucadelu) {{rev|51791}} &amp;amp; {{rev|51792}}]  [http://code.google.com/p/geopaparazzi/ Geopaparazzi], v.in.geopaparazzi&lt;br /&gt;
* GRASS on Android (patches by MN)&lt;br /&gt;
&lt;br /&gt;
=== Cloud computing ===&lt;br /&gt;
&lt;br /&gt;
* g.cloud&lt;br /&gt;
* cluster usage best practices&lt;br /&gt;
&lt;br /&gt;
=== GSoC 2012 ===&lt;br /&gt;
&lt;br /&gt;
* v.net.* front end, WMS &lt;br /&gt;
* Python API&lt;br /&gt;
* Image Segmentation&lt;br /&gt;
&lt;br /&gt;
=== GRASS 7 ===&lt;br /&gt;
* [[PostGIS]] Topology support &lt;br /&gt;
* New features for vector engine&lt;br /&gt;
* Discuss Toolbox concept&lt;br /&gt;
* Discuss how to implement [[GRASS Metadata Management]]&lt;br /&gt;
* [{{done}} (lucadelu) -  {{rev|51735}}] Fix category in {{Cmd|v.in.mapgen|version=70}}&lt;br /&gt;
* [{{done}} ] New addons module [[AddOns/GRASS7|r.massmov]]&lt;br /&gt;
&lt;br /&gt;
=== Model integration ===&lt;br /&gt;
&lt;br /&gt;
* GRASS and [http://www.coulthard.org.uk/CAESAR.html Caesar model]&lt;br /&gt;
&lt;br /&gt;
=== GRASS modules fixes  ===&lt;br /&gt;
&lt;br /&gt;
* {{Cmd|i.atcorr}} debugging&lt;br /&gt;
** Figure out how to get visibility/aerosol depth at 550nm (perhaps from MODIS atmosphere?)&lt;br /&gt;
** Under certain circumstances i.atcorr produces NULL data&lt;br /&gt;
* GRASS 6.4.3 - [http://trac.osgeo.org/grass/query?status=new&amp;amp;status=assigned&amp;amp;status=reopened&amp;amp;group=type&amp;amp;order=priority&amp;amp;priority=blocker&amp;amp;priority=critical&amp;amp;milestone=6.4.3&amp;amp;milestone=6.4.2&amp;amp;milestone=6.4.1&amp;amp;milestone=6.4.0 Release critical issues to be fixed]&lt;br /&gt;
&lt;br /&gt;
=== Signal handling ===&lt;br /&gt;
&lt;br /&gt;
* The Python based scripts should catch CTRL-C to avoid that clutter is left behind &amp;amp; that ugly traceback messages are printed to the terminal.&lt;br /&gt;
&lt;br /&gt;
Suggestion by Anne Ghisla (yet not working... ):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
Index: lib/init/grass.py&lt;br /&gt;
===================================================================&lt;br /&gt;
--- lib/init/grass.py   (revision 51604)&lt;br /&gt;
+++ lib/init/grass.py   (working copy)&lt;br /&gt;
@@ -30,7 +30,12 @@&lt;br /&gt;
 import subprocess&lt;br /&gt;
 import re&lt;br /&gt;
 import platform&lt;br /&gt;
+import signal&lt;br /&gt;
 &lt;br /&gt;
+# catch user-sent CTRL-C&lt;br /&gt;
+signal.signal(signal.SIGINT, lambda a,b:cleanup())&lt;br /&gt;
+signal.siginterrupt(signal.SIGINT, False)&lt;br /&gt;
+&lt;br /&gt;
 # Variables substituted during build process&lt;br /&gt;
 if os.environ.has_key('GISBASE'):&lt;br /&gt;
     gisbase = os.environ['GISBASE']&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Currently if vector creation modules fail to create/import they still leave behind the empty skeleton of a map, so you need to use --o for the next time. It would be nice if cleanup could occur. This doesn't happen (visibly) with raster maps as they are composed in $MAPSET/.tmp/ and only moved into the main $MAPSET elements once everything is finished. Vector maps on the otherhand write to the MAPSET in-place.&lt;br /&gt;
&lt;br /&gt;
=== Fix wxGUI problems ===&lt;br /&gt;
&lt;br /&gt;
==== Add a &amp;quot;change language&amp;quot; option in GRASS GUI ====&lt;br /&gt;
&lt;br /&gt;
Implement the diff provided here: http://trac.osgeo.org/grass/ticket/879&lt;br /&gt;
&lt;br /&gt;
==== Fix several issues ====&lt;br /&gt;
&lt;br /&gt;
A. Clerici: please fix:&lt;br /&gt;
* ticket https://trac.osgeo.org/grass/ticket/1564&lt;br /&gt;
* {{done}} ([[User:annakrat | Anna Kratochvilova]]) - {{rev|51824}}, {{rev|51825}}, {{rev|51827}}. ticket https://trac.osgeo.org/grass/ticket/1570&lt;br /&gt;
* wxGUI bugs (GRASS6.4.2RC3 under Fedora 16):&lt;br /&gt;
** {{done}} ([[User:annakrat | Anna Kratochvilova]]) - {{rev|51753}}, {{rev|51772}}, {{rev|51773}}. In the 'Create histogram of raster map' function, the style pie and the Color for text and axes options are not working. The options  run fine on the tcltk GUI and in command line mode.&lt;br /&gt;
** In the 'Add scalebar and north arrow', the scale can be modified only once and the option can't be re-entered nor the scale can't be deleted. Also in this case there are no problems with the tcltk GUI.&lt;br /&gt;
** {{done}} ([[User:annakrat | Anna Kratochvilova]]) - {{rev|51824}}, {{rev|51825}}, {{rev|51827}}. The option 'Add raster cell arrows' seems not to work properly. It seems that the arrows in the Map Display cannot zoomed in. It can be checked by the following steps:&lt;br /&gt;
*** Load and display the aspect (Spearfish) map; Open the d.rast.arrows panel through the GUI button and choose the same map aspect. Click Apply: the Map Display appears green as expected for the very high resolution; Choose 10 for  the 'Draw arrow every Nth grid cell:' option and none as 'Color for drawing grid or “none”' option. The arrows are displayed on the cells of aspect map; To make the arrows visible choose slope as 'Raster map containing values used for arrow length:' and 10.0 as 'Scale factor for arrows'. Zoom in a very small area: the cells of aspect map are enlarged, but the density of arrows remains the same; The direction is correctly  the same for all arrows inside the same cell but it seems that instead of having an arrow each 10 aspect cells, there is an arrow each 10 pixel of the screen (with tcltk GUI the procedure works fine)&lt;br /&gt;
* Improve the GRASS 7 wx0..6 monitors&lt;br /&gt;
** Some improvements done by Vaclav Petras&lt;br /&gt;
&lt;br /&gt;
==== Layout ====&lt;br /&gt;
&lt;br /&gt;
Optionally, have all-in-one GUI window (requested by many new users!):&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:Wxgui_current.png|250px|thumb|center|Current wxGUI layout with detached window components]]&lt;br /&gt;
| [[Image:Wxgui_proposal.png|200px|thumb|center|'''Proposal''' for wxGUI layout modification (Recomposition of existing toolbars, mapview and menus by simple rearrangement into one frame)]]&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Proposed solution: wxLayoutAlgorithm(), see [[WxGUI#What_others_do]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Optionally, a minimalistic cointegration of a map display and the command console. See also this post in grass-user [http://lists.osgeo.org/pipermail/grass-user/2011-April/060346.html  Re: [GRASS-user&amp;lt;nowiki&amp;gt;]&amp;lt;/nowiki&amp;gt; replacement for d.mon in GRASS 7.0?]&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:grass-gis_minimalistic_map-display_with_comman-console__layout_mockup.png|200px|thumb|left|alt text]]&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== r.li.setup ====&lt;br /&gt;
work on {{Cmd|r.li.setup}} for GRASS7&lt;br /&gt;
&lt;br /&gt;
==== Saving History ====&lt;br /&gt;
&lt;br /&gt;
* when using the wxGUI, it needs to write back to the shell history&lt;br /&gt;
: `cat wxgui_history.log &amp;gt;&amp;gt; $MAPSET/.bash_history`&lt;br /&gt;
: Since the wxGUI shell quoting is not perfect, maybe it is better not to write directly to real shell history, but maintain its own in ~/.grass7/history.&lt;br /&gt;
&lt;br /&gt;
==== Digitizing toolbar ====&lt;br /&gt;
&lt;br /&gt;
* missing string &amp;quot;Select vector map&amp;quot; from the drop-down widget on digitizing toolbar &lt;br /&gt;
: on winGRASS, nightly build of 24th May&lt;br /&gt;
* after editing vector objects and saving, the changes are not applied on the map. Must be some refresh problem.&lt;br /&gt;
* Highlighting problem&lt;br /&gt;
: objects selected in the attribute table are not highlighted on the map&lt;br /&gt;
: objects selected ton the map are not highlighted in the attribute table.&lt;br /&gt;
* Bounding box of a layer broken after deletion of some objects with broken geometry, also displaying of the attribute table broken with a message that the map layer is not a vector one,&lt;br /&gt;
: closing the layer from the layer tree also not possible&lt;br /&gt;
: after closing GRASS6.4.3 and reopening the project, the layer is restored with all the changes applayed.&lt;br /&gt;
&lt;br /&gt;
==== Attribute manager ====&lt;br /&gt;
&lt;br /&gt;
* Editing attribute table broken&lt;br /&gt;
: cannot delete a row, permission denied&lt;br /&gt;
: different than selected row dissapears after not succesful row deletion but is back after refreshing the table.&lt;br /&gt;
* Not able to insert a value into a table, permision to the temp file denied.&lt;br /&gt;
* Too small area for displaying the table data after connecting a table to the vector map.&lt;br /&gt;
: Add a table to the vector layer in wxGUI GRASS6.4.3 with: Show attribute table &amp;gt;  Manage layers tab. &lt;br /&gt;
: Go to Browse data tab, the area to thisplay the attributes is extreemly small and cannot be stretched. &lt;br /&gt;
: After closing the table manager and reopening, the area is normal wide again.&lt;br /&gt;
* SQL simple select &amp;quot;explodes&amp;quot; if selecting a string attribute without quotes&lt;br /&gt;
&lt;br /&gt;
==== Map Display ====&lt;br /&gt;
&lt;br /&gt;
* Clicking with a Query tool on a vector object randomly not able to find an object to display its attributes.&lt;br /&gt;
**[{{done}} ([[User:annakrat | Anna Kratochvilova]]) -  {{rev|51810}}, {{rev|51811}}]&lt;br /&gt;
&lt;br /&gt;
==== I18N ====&lt;br /&gt;
&lt;br /&gt;
* Solve module description string duplication in both grassmods.po and grasswxpy.po files.&lt;br /&gt;
** Before fixing this problem in code, please find a way to automagically copy the translated strings to the proper .po files for all the languages.&lt;br /&gt;
** The problem is that the wxGUI menustrings are copied into grasswxpy_XX.po while the strings are already translated in grassmods_XX.py&lt;br /&gt;
* {{done}} Add current &amp;quot;language&amp;quot; output into &amp;quot;about&amp;quot; panel&lt;br /&gt;
* {{done}} Add new tab about &amp;quot;languages statistics&amp;quot; into &amp;quot;about&amp;quot; panel&lt;br /&gt;
* {{done}} Improvment &amp;quot;about&amp;quot; panel style&lt;br /&gt;
&lt;br /&gt;
==== Project file ====&lt;br /&gt;
* Find a way to successfully open a project file made in GRASS6.4 in GRASS7.&lt;br /&gt;
: Due to changes (e.g. removal of some flags, e.g. -o flag of d.rast), the project file is not opened in a correct way. The user can see the layers in the layer tree, but they cannot be displayed in the map canvas. A warning would help.&lt;br /&gt;
* add version into file tags&lt;br /&gt;
&lt;br /&gt;
=== Python coding hints ===&lt;br /&gt;
&lt;br /&gt;
* Consider Spyder, a powerful interactive development environment for the Python: http://code.google.com/p/spyderlib/&lt;br /&gt;
* use pylint, the python code static checker: http://pypi.python.org/pypi/pylint&lt;br /&gt;
&lt;br /&gt;
== Not to forget about the next time ==&lt;br /&gt;
&lt;br /&gt;
First day:&lt;br /&gt;
* presentation of participants&lt;br /&gt;
&lt;br /&gt;
First or second day:&lt;br /&gt;
* group photo&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Prague_2012&amp;diff=15784</id>
		<title>GRASS Community Sprint Prague 2012</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Prague_2012&amp;diff=15784"/>
		<updated>2012-05-28T23:17:20Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Saturday, 26 May */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The GRASS GIS team will organize a '''GRASS Developer and Power User Meeting, aka 'GRASS Community Sprint'''' from '''May 23 to May 28, 2012'''. The sprint is following the [http://foss4g-cee.org/ FOSS4G-CEE] &amp;amp; [http://geoinformatics.fsv.cvut.cz/gwiki/Geoinformatics_FCE_CTU_2012 Geoinformatics] ''(Free and Open Source Software for Geospatial in Central and East Europe)'', 21-23 May 2012, Czech Technical University in [http://en.wikipedia.org/wiki/Prague Prague], [http://en.wikipedia.org/wiki/Czech_Republic Czech Republic].&lt;br /&gt;
[[Image:community_sprint_prague2012.png|center|640px]]&lt;br /&gt;
'''Important dates:'''&lt;br /&gt;
&lt;br /&gt;
* 21 (Monday) - 23 (Wednesday) May 2012: [http://foss4g-cee.org/ FOSS4G-CEE &amp;amp; Geoinformatics conference]&lt;br /&gt;
&lt;br /&gt;
* '''23 (Wednesday) - 28 (Monday) May 2012: GRASS GIS Community Sprint''' @ [http://www.fsv.cvut.cz/ FCE CTU]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Grass-gis community sprint 2012 collage.jpg|center|500px]]&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
This second edition of the GRASS GIS community sprint 2012 is a great occasion for folks to support the development by actively contributing to the source code, manuals or likewise. The '''community''' sprint is a get-together for GRASS project members and supporters and related [http://www.osgeo.org/ OSGeo] projects to make decisions and tackle larger problems. 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.&lt;br /&gt;
&lt;br /&gt;
For this meeting, we welcome people committed to improving the GRASS GIS and related projects. This includes developers, document writers, wish and bug reporters, translators etc.&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
We welcome financial contributions to support the meeting and we are looking for sponsors to cover costs such as meals or 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/donation.php http://grass.osgeo.org/donation.php]'''&lt;br /&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 first 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;
We are grateful for the support which we have received to organize this GRASS Community Sprint:&lt;br /&gt;
&lt;br /&gt;
* remainder from the 2011 edition of the Community Sprint and small donations (via [http://www.gfoss.it/ GFOSS.it], the Italian OSGeo chapter) - 1400 Euro &lt;br /&gt;
* [http://www.osgeo.org/ Open Source Geospatial Foundation] (OSGeo) - 1000 Euro&lt;br /&gt;
* [http://www.fossgis.de/ FOSSGIS e.V.] - 1000 Euro&lt;br /&gt;
* Stefan Sylla, [http://sylla-consult.de/en/ sylla-consult], Frankfurt, Germany - 500 Euro&lt;br /&gt;
&lt;br /&gt;
== Timing  ==&lt;br /&gt;
&lt;br /&gt;
'''When''': Wednesday, May 23, 2012 (day of arrival) - Monday, May 28, 2012 (day of departure)&lt;br /&gt;
&lt;br /&gt;
Of course you are invited to join or leave the community sprint whenever you want.&lt;br /&gt;
&lt;br /&gt;
'''Duration''':&lt;br /&gt;
&lt;br /&gt;
* Wednesday is day of arrival&lt;br /&gt;
** First meeting in the evening (after the [http://foss4g-cee.org/ FOSS4G-CEE &amp;amp; Geoinfomatics conference]) to define the agenda&lt;br /&gt;
* Thursday to Sunday&lt;br /&gt;
** Full days&lt;br /&gt;
* Monday is day of departure&lt;br /&gt;
** Probably hacking for people with a flight later in the evening&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
[[Image:logo_cvut.jpg|130px|left]]&lt;br /&gt;
Department of Mapping and Cartography&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.fsv.cvut.cz Faculty of Civil Engineering]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.cvut.cz Czech Technical University in Prague], [http://en.wikipedia.org/wiki/Czech_Republic Czech Republic]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://geoinformatics.fsv.cvut.cz/gwiki/Room_B367 Room B367] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[http://geoinformatics.fsv.cvut.cz/gwiki/Where_you_can_find_us Location &amp;amp; Transportations]'''&lt;br /&gt;
&lt;br /&gt;
Prague has an international [http://www.prg.aero/en/ airport] and is also reachable by train, bus or car.&lt;br /&gt;
&lt;br /&gt;
== Accommodation and Costs ==&lt;br /&gt;
&lt;br /&gt;
Participants should plan for the following costs:&lt;br /&gt;
&lt;br /&gt;
* The participation is free of charge&lt;br /&gt;
* Travel to Prague, variable depending on where you come from&lt;br /&gt;
* Accommodation and meals (with the donated sponsorship money we will try to cover some expenses of the participants)&lt;br /&gt;
'''Please note''': The currency in Czech Republic is [http://en.wikipedia.org/wiki/Czech_crown crown] (CZK, koruna, Kč). 100 Czech crowns are about 4 Euros (see [http://www.cnb.cz/en/financial_markets/foreign_exchange_market/exchange_rate_fixing/daily.jsp current rates]).&lt;br /&gt;
&lt;br /&gt;
'''[http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague Accommodation in Prague]'''&lt;br /&gt;
&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Masarykova_Kolej_Hotel Masarykova Kolej Hotel]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_DAP Hotel DAP]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_Krystal Hotel Krystal]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Pension_Hanspaulka Pension Hanspaulka]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_Silenzio Hotel Silenzio]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Student_hostels_.28CTU.29 Student hostels (CTU)]&lt;br /&gt;
:* Special offer: ''sleeping for free in the kindergarten'' (30min by city urban mass transportation from the university campus, sleeping bag required, kitchen and WC available, no showers, in working days available only from 8 p.m. to 8 a.m.), contact [[User:Landa|Martin Landa]] for details&lt;br /&gt;
:* See also http://www.hotel.cz/praha-6/accommodation/&lt;br /&gt;
&lt;br /&gt;
Please let us know your time of arrival and leaving, so we can book for the accommodations and organize the logistics.&lt;br /&gt;
&lt;br /&gt;
Financial support: (partial) travel grants can be payed upon request thanks to our sponsors!&lt;br /&gt;
&lt;br /&gt;
== Weather and Common Item Prices ==&lt;br /&gt;
&lt;br /&gt;
* In May the weather in Prague is usually quite warm ([http://www.prague-spot.com/climate 15 or more degrees by day])&lt;br /&gt;
* A espresso coffee is about 20 CZK (80 cents), a beer (half of liter) in a common pub is around 25 CZK (1 euro), can be more in special pubs. In Prague you can have a full meal (see [http://en.wikipedia.org/wiki/Czech_cuisine Czech cuisine]) for still 75 - 150 CZK (3 - 6 euros), but beware of tourist restaurants, the price can easily rise. It's quite easy to find in Prague also Italian or Chinese restaurants.&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.&lt;br /&gt;
&lt;br /&gt;
Further details about the action items you '''find [[Talk:GRASS_Community_Sprint_Prague_2012|here]]''' and below. Topics cover non-technical, semi-technical, and technical issues.&lt;br /&gt;
&lt;br /&gt;
=== Timeline ===&lt;br /&gt;
&lt;br /&gt;
TODO: merge below entries from [[Talk:GRASS_Community_Sprint_Prague_2012]]&lt;br /&gt;
&lt;br /&gt;
==== Wednesday, 23 May ====&lt;br /&gt;
* 14:30: Kick-off in the Faculty of Civil Engineering, building B, room 367 (3rd floor, [http://geoinformatics.fsv.cvut.cz/gwiki/Where_you_can_find_us map])&lt;br /&gt;
* Participants presentation&lt;br /&gt;
&lt;br /&gt;
List of topics:&lt;br /&gt;
* various topics from the list: r.modis, add liblas support to OSGeo4W GRASS package ([http://wingrass.fsv.cvut.cz/grass64/ download])&lt;br /&gt;
* extension of Rtree to 4D, time series test script portability updates, ...&lt;br /&gt;
* see reports [[Talk:GRASS_Community_Sprint_Prague_2012|here]]&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.budvarkadejvice.cz Budvarka] near the university, see the [http://www.openstreetmap.org/?mlat=50.09824&amp;amp;mlon=14.3962&amp;amp;zoom=15&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Thursday, 24 May ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* Discuss role and current composition of GRASS-PSC&lt;br /&gt;
* Seminar by Sören Gebbert: &amp;quot;New time series management in GRASS 7&amp;quot; ([http://grass.osgeo.org/gdp/html_grass70/temporal.html manual])&lt;br /&gt;
* Starting work on v.in.geopaparazzi&lt;br /&gt;
* Discussion: Generate automated command statistics with g.parser (just module name)&lt;br /&gt;
* Discussion: adopting CMS for Web site - huge amount of work to change...&lt;br /&gt;
* Discussion: GSoC project discussion about the new GRASS Python API [http://grass.osgeo.org/wiki/GRASS_SoC_Ideas_2012/High_level_map_interaction#Weekly_reports] and milestones of the project&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.restaurant-uglaubicu.cz/ U Glaubiců] in the city center, see the [http://www.openstreetmap.org/?mlat=50.0876&amp;amp;mlon=14.4035&amp;amp;zoom=16&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
==== Friday, 25 May ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* wxGUI: save session commands into protocol&lt;br /&gt;
* test wxGUI digitizer&lt;br /&gt;
* visual guide to GRASS GIS usage&lt;br /&gt;
* fix v.in.mapgen&lt;br /&gt;
* improve italian translation&lt;br /&gt;
* Hunting bugs in the 3D raster library and implementing new bug related unit tests [http://trac.osgeo.org/grass/ticket/1662 ticket] and [http://trac.osgeo.org/grass/changeset/51793 r51793]&lt;br /&gt;
* ...&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.hlucna-samota.cz/ Hlučná samota], see the [http://www.openstreetmap.org/?mlat=50.071600&amp;amp;mlon=14.436300&amp;amp;zoom=18&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
==== Saturday, 26 May ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* backport of wxGUI language selector (.bat file update yet missing for Windows)&lt;br /&gt;
* Lidar DEM based example added to {{cmd|r.lake}}&lt;br /&gt;
* Release of new {{AddonCmd|v.in.geopaparazzi}}&lt;br /&gt;
* implement saving list of executed commands in wxGUI - {{rev|51798}}&lt;br /&gt;
* Moving the ilist functionality from the vector library to the gis library [http://trac.osgeo.org/grass/changeset/51796]&lt;br /&gt;
* Implementation of correctly scaled time axes when exporting space time raster datasets as 3D raster maps representing space time voxel cubes [http://trac.osgeo.org/grass/changeset/51779]&lt;br /&gt;
* Toolbox concept discussion see [http://grass.osgeo.org/wiki/Toolboxes wiki] update&lt;br /&gt;
* Discussion and implementation concepts about a better integration of the temporal GIS framework into the GUI&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.restauraceztratynalezy.estranky.cz/ Ztráty a nálezy], see the [http://www.openstreetmap.org/?mlat=50.07836&amp;amp;mlon=14.43524&amp;amp;zoom=16&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
==== Sunday, 27 May ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* wxGUI about window issues - {{rev|51830}}&lt;br /&gt;
* 19:00: Dinner at restaurant [http://www.uveverky.com U Veverky], see the [http://www.openstreetmap.org/?mlat=50.09909&amp;amp;mlon=14.4022&amp;amp;zoom=16&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
==== Monday, 28 May ====&lt;br /&gt;
&lt;br /&gt;
* Last meeting&lt;br /&gt;
* Farewell and have a good trip home&lt;br /&gt;
&lt;br /&gt;
== Participation ==&lt;br /&gt;
&lt;br /&gt;
We are planning for attendance of 20 people (i.e., hacking places) but of course you are welcome to join us and bring new ideas with you, as more places are available. Please add your name here or contact [[User:Landa|Martin Landa]] &amp;lt;tt&amp;gt;&amp;lt;landa.martin at gmail.com&amp;gt;&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
=== In person ===&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:Landa|Martin Landa]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
|Toolbox concept, vector engine in GRASS 7, wxGUI, PostGIS Topology support&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:Neteler|Markus Neteler]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
|GRASS on Android, QGIS-Sextante-GRASS interface, high performance computing, g.cloud, singing &amp;amp; beer in pub, Toolbox, ...&lt;br /&gt;
| M + S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|[[User:Lucadelu|Luca Delucchi]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 20&lt;br /&gt;
| May 26&lt;br /&gt;
| r.modis, r.li.setup gui, v.in.geopaparazzi (only if andrea antonello comes to Prague)&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|[[User:moovida|Andrea Antonello]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 21/22&lt;br /&gt;
| May 25/26&lt;br /&gt;
| v.in.geopaparazzi, GRASS [[http://www.coulthard.org.uk/CAESAR.html Caesar model]] input module with Silvia, singing at the pub with Luca Delucchi and Peter Loewe&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[User:silli|Silvia Franceschi]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 21/22&lt;br /&gt;
| May 25/26&lt;br /&gt;
| GRASS [[http://www.coulthard.org.uk/CAESAR.html Caesar model]] input module&lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|[[User:peter.loewe|Peter Loewe]]&lt;br /&gt;
|Germany&lt;br /&gt;
| May 20/21&lt;br /&gt;
| May 25/26&lt;br /&gt;
| collecting beer-money while Luca and Andrea sing in pubs ; i.atcorr debugging ; g.cloud ? ; r.tsunami ? ; Tutorial/Documentation on g.infer &lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|[[User:Annakrat|Anna Kratochvilova]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
| imagery, wxGUI &lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|[[User:Wenzeslaus|Vaclav Petras]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
| imagery, wxGUI, Toolbox concept ?&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|[[User:Helena|Helena Mitasova]]&lt;br /&gt;
|USA&lt;br /&gt;
|May 21&lt;br /&gt;
|May 25/26&lt;br /&gt;
|toolbox concept, student sandbox, wxnviz z-scale, inventory of mobile and touch implementations, GRASS on-line and cloud&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|[[User:Huhabla|Sören Gebbert]]&lt;br /&gt;
|Germany&lt;br /&gt;
|May 20&lt;br /&gt;
|May 27&lt;br /&gt;
|Temporal GIS framework demo and discussion, Temporal GIS wxGUI and WPS integration, massive parallel computation of spatio-temporal datasets, Cloud computing &lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|[[User:Turek|Štěpán Turek]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
|May 20&lt;br /&gt;
|May 28&lt;br /&gt;
|v.net.* front end, WMS&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|12&lt;br /&gt;
|Radim Blažek&lt;br /&gt;
|Czech Republic&lt;br /&gt;
|May 24/25&lt;br /&gt;
|May 24/25&lt;br /&gt;
|QGIS interface&lt;br /&gt;
| -&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|13&lt;br /&gt;
|[[User:Pietro|Pietro Zambelli]]&lt;br /&gt;
|Italy&lt;br /&gt;
|May 23/24&lt;br /&gt;
|May 28/29&lt;br /&gt;
|GSoC2012: High level map interaction&lt;br /&gt;
| L&lt;br /&gt;
|-&lt;br /&gt;
|14&lt;br /&gt;
|Markus Metz&lt;br /&gt;
|Italy&lt;br /&gt;
|May 23&lt;br /&gt;
|May 26&lt;br /&gt;
|GRASS 7 everything&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|15&lt;br /&gt;
|[[User:NikosA|Nikos Alexandris]]&lt;br /&gt;
|Greece&lt;br /&gt;
|May 24&lt;br /&gt;
|May 27/28&lt;br /&gt;
|(wannabe) bughunter, assist documentation and tutorials&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|16&lt;br /&gt;
|[[User:MilenaN|Milena Nowotarska]]&lt;br /&gt;
|Poland&lt;br /&gt;
|May 23&lt;br /&gt;
|May 27&lt;br /&gt;
|translation, wxGUI&lt;br /&gt;
|S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|17&lt;br /&gt;
|[[User:Maxi71|Massimiliano Cannata]]&lt;br /&gt;
|Switzerland&lt;br /&gt;
|May 20&lt;br /&gt;
|May 24&lt;br /&gt;
|finalization and commit of a new grass addon module r.massmov, a physically based model to simulate the landslide ruonout velocity and deposit thickness&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|18&lt;br /&gt;
|Monia Molinari&lt;br /&gt;
|Switzerland&lt;br /&gt;
|May 20&lt;br /&gt;
|May 24&lt;br /&gt;
|finalization and commit of a new grass addon module r.massmov, a physically based model to simulate the landslide ruonout velocity and deposit thickness&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://freenode/grass #grass] on Freenode&lt;br /&gt;
&lt;br /&gt;
For details, see [[IRC]]&lt;br /&gt;
&lt;br /&gt;
=== Collaborative document scratching ===&lt;br /&gt;
&lt;br /&gt;
(Power) users from all over the world are kindly invited to assist with testing of new and existing functionality. To collect results and notes, we set up an interactive, collaborative editing tool which works in real-time:&lt;br /&gt;
&lt;br /&gt;
Please check http://titanpad.com/I51nq1SrNc&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 power connector adapter] if needed (Czech Republic: 230V, 50Hz, [http://en.wikipedia.org/wiki/File:Euro-Flachstecker_2.jpg Type C Europlugs] are common and also [http://en.wikipedia.org/wiki/File:French_plug_and_socket.jpg Type E])&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;
During the event :)&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
Also during the event :)&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* How was it last year?&lt;br /&gt;
** Very nice, see [[GRASS Community Sprint Prague 2011]]!&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:Landa|Martin Landa]] &amp;lt;tt&amp;gt;&amp;lt;landa.martin at gmail.com&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Workshops]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Prague_2012&amp;diff=15783</id>
		<title>GRASS Community Sprint Prague 2012</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Prague_2012&amp;diff=15783"/>
		<updated>2012-05-28T23:04:16Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Saturday, 26 May */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The GRASS GIS team will organize a '''GRASS Developer and Power User Meeting, aka 'GRASS Community Sprint'''' from '''May 23 to May 28, 2012'''. The sprint is following the [http://foss4g-cee.org/ FOSS4G-CEE] &amp;amp; [http://geoinformatics.fsv.cvut.cz/gwiki/Geoinformatics_FCE_CTU_2012 Geoinformatics] ''(Free and Open Source Software for Geospatial in Central and East Europe)'', 21-23 May 2012, Czech Technical University in [http://en.wikipedia.org/wiki/Prague Prague], [http://en.wikipedia.org/wiki/Czech_Republic Czech Republic].&lt;br /&gt;
[[Image:community_sprint_prague2012.png|center|640px]]&lt;br /&gt;
'''Important dates:'''&lt;br /&gt;
&lt;br /&gt;
* 21 (Monday) - 23 (Wednesday) May 2012: [http://foss4g-cee.org/ FOSS4G-CEE &amp;amp; Geoinformatics conference]&lt;br /&gt;
&lt;br /&gt;
* '''23 (Wednesday) - 28 (Monday) May 2012: GRASS GIS Community Sprint''' @ [http://www.fsv.cvut.cz/ FCE CTU]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Grass-gis community sprint 2012 collage.jpg|center|500px]]&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
This second edition of the GRASS GIS community sprint 2012 is a great occasion for folks to support the development by actively contributing to the source code, manuals or likewise. The '''community''' sprint is a get-together for GRASS project members and supporters and related [http://www.osgeo.org/ OSGeo] projects to make decisions and tackle larger problems. 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.&lt;br /&gt;
&lt;br /&gt;
For this meeting, we welcome people committed to improving the GRASS GIS and related projects. This includes developers, document writers, wish and bug reporters, translators etc.&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
We welcome financial contributions to support the meeting and we are looking for sponsors to cover costs such as meals or 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/donation.php http://grass.osgeo.org/donation.php]'''&lt;br /&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 first 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;
We are grateful for the support which we have received to organize this GRASS Community Sprint:&lt;br /&gt;
&lt;br /&gt;
* remainder from the 2011 edition of the Community Sprint and small donations (via [http://www.gfoss.it/ GFOSS.it], the Italian OSGeo chapter) - 1400 Euro &lt;br /&gt;
* [http://www.osgeo.org/ Open Source Geospatial Foundation] (OSGeo) - 1000 Euro&lt;br /&gt;
* [http://www.fossgis.de/ FOSSGIS e.V.] - 1000 Euro&lt;br /&gt;
* Stefan Sylla, [http://sylla-consult.de/en/ sylla-consult], Frankfurt, Germany - 500 Euro&lt;br /&gt;
&lt;br /&gt;
== Timing  ==&lt;br /&gt;
&lt;br /&gt;
'''When''': Wednesday, May 23, 2012 (day of arrival) - Monday, May 28, 2012 (day of departure)&lt;br /&gt;
&lt;br /&gt;
Of course you are invited to join or leave the community sprint whenever you want.&lt;br /&gt;
&lt;br /&gt;
'''Duration''':&lt;br /&gt;
&lt;br /&gt;
* Wednesday is day of arrival&lt;br /&gt;
** First meeting in the evening (after the [http://foss4g-cee.org/ FOSS4G-CEE &amp;amp; Geoinfomatics conference]) to define the agenda&lt;br /&gt;
* Thursday to Sunday&lt;br /&gt;
** Full days&lt;br /&gt;
* Monday is day of departure&lt;br /&gt;
** Probably hacking for people with a flight later in the evening&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
[[Image:logo_cvut.jpg|130px|left]]&lt;br /&gt;
Department of Mapping and Cartography&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.fsv.cvut.cz Faculty of Civil Engineering]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.cvut.cz Czech Technical University in Prague], [http://en.wikipedia.org/wiki/Czech_Republic Czech Republic]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://geoinformatics.fsv.cvut.cz/gwiki/Room_B367 Room B367] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[http://geoinformatics.fsv.cvut.cz/gwiki/Where_you_can_find_us Location &amp;amp; Transportations]'''&lt;br /&gt;
&lt;br /&gt;
Prague has an international [http://www.prg.aero/en/ airport] and is also reachable by train, bus or car.&lt;br /&gt;
&lt;br /&gt;
== Accommodation and Costs ==&lt;br /&gt;
&lt;br /&gt;
Participants should plan for the following costs:&lt;br /&gt;
&lt;br /&gt;
* The participation is free of charge&lt;br /&gt;
* Travel to Prague, variable depending on where you come from&lt;br /&gt;
* Accommodation and meals (with the donated sponsorship money we will try to cover some expenses of the participants)&lt;br /&gt;
'''Please note''': The currency in Czech Republic is [http://en.wikipedia.org/wiki/Czech_crown crown] (CZK, koruna, Kč). 100 Czech crowns are about 4 Euros (see [http://www.cnb.cz/en/financial_markets/foreign_exchange_market/exchange_rate_fixing/daily.jsp current rates]).&lt;br /&gt;
&lt;br /&gt;
'''[http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague Accommodation in Prague]'''&lt;br /&gt;
&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Masarykova_Kolej_Hotel Masarykova Kolej Hotel]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_DAP Hotel DAP]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_Krystal Hotel Krystal]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Pension_Hanspaulka Pension Hanspaulka]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_Silenzio Hotel Silenzio]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Student_hostels_.28CTU.29 Student hostels (CTU)]&lt;br /&gt;
:* Special offer: ''sleeping for free in the kindergarten'' (30min by city urban mass transportation from the university campus, sleeping bag required, kitchen and WC available, no showers, in working days available only from 8 p.m. to 8 a.m.), contact [[User:Landa|Martin Landa]] for details&lt;br /&gt;
:* See also http://www.hotel.cz/praha-6/accommodation/&lt;br /&gt;
&lt;br /&gt;
Please let us know your time of arrival and leaving, so we can book for the accommodations and organize the logistics.&lt;br /&gt;
&lt;br /&gt;
Financial support: (partial) travel grants can be payed upon request thanks to our sponsors!&lt;br /&gt;
&lt;br /&gt;
== Weather and Common Item Prices ==&lt;br /&gt;
&lt;br /&gt;
* In May the weather in Prague is usually quite warm ([http://www.prague-spot.com/climate 15 or more degrees by day])&lt;br /&gt;
* A espresso coffee is about 20 CZK (80 cents), a beer (half of liter) in a common pub is around 25 CZK (1 euro), can be more in special pubs. In Prague you can have a full meal (see [http://en.wikipedia.org/wiki/Czech_cuisine Czech cuisine]) for still 75 - 150 CZK (3 - 6 euros), but beware of tourist restaurants, the price can easily rise. It's quite easy to find in Prague also Italian or Chinese restaurants.&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.&lt;br /&gt;
&lt;br /&gt;
Further details about the action items you '''find [[Talk:GRASS_Community_Sprint_Prague_2012|here]]''' and below. Topics cover non-technical, semi-technical, and technical issues.&lt;br /&gt;
&lt;br /&gt;
=== Timeline ===&lt;br /&gt;
&lt;br /&gt;
TODO: merge below entries from [[Talk:GRASS_Community_Sprint_Prague_2012]]&lt;br /&gt;
&lt;br /&gt;
==== Wednesday, 23 May ====&lt;br /&gt;
* 14:30: Kick-off in the Faculty of Civil Engineering, building B, room 367 (3rd floor, [http://geoinformatics.fsv.cvut.cz/gwiki/Where_you_can_find_us map])&lt;br /&gt;
* Participants presentation&lt;br /&gt;
&lt;br /&gt;
List of topics:&lt;br /&gt;
* various topics from the list: r.modis, add liblas support to OSGeo4W GRASS package ([http://wingrass.fsv.cvut.cz/grass64/ download])&lt;br /&gt;
* extension of Rtree to 4D, time series test script portability updates, ...&lt;br /&gt;
* see reports [[Talk:GRASS_Community_Sprint_Prague_2012|here]]&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.budvarkadejvice.cz Budvarka] near the university, see the [http://www.openstreetmap.org/?mlat=50.09824&amp;amp;mlon=14.3962&amp;amp;zoom=15&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Thursday, 24 May ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* Discuss role and current composition of GRASS-PSC&lt;br /&gt;
* Seminar by Sören Gebbert: &amp;quot;New time series management in GRASS 7&amp;quot; ([http://grass.osgeo.org/gdp/html_grass70/temporal.html manual])&lt;br /&gt;
* Starting work on v.in.geopaparazzi&lt;br /&gt;
* Discussion: Generate automated command statistics with g.parser (just module name)&lt;br /&gt;
* Discussion: adopting CMS for Web site - huge amount of work to change...&lt;br /&gt;
* Discussion: GSoC project discussion about the new GRASS Python API [http://grass.osgeo.org/wiki/GRASS_SoC_Ideas_2012/High_level_map_interaction#Weekly_reports] and milestones of the project&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.restaurant-uglaubicu.cz/ U Glaubiců] in the city center, see the [http://www.openstreetmap.org/?mlat=50.0876&amp;amp;mlon=14.4035&amp;amp;zoom=16&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
==== Friday, 25 May ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* wxGUI: save session commands into protocol&lt;br /&gt;
* test wxGUI digitizer&lt;br /&gt;
* visual guide to GRASS GIS usage&lt;br /&gt;
* fix v.in.mapgen&lt;br /&gt;
* improve italian translation&lt;br /&gt;
* Hunting bugs in the 3D raster library and implementing new bug related unit tests [http://trac.osgeo.org/grass/ticket/1662 ticket] and [http://trac.osgeo.org/grass/changeset/51793 r51793]&lt;br /&gt;
* ...&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.hlucna-samota.cz/ Hlučná samota], see the [http://www.openstreetmap.org/?mlat=50.071600&amp;amp;mlon=14.436300&amp;amp;zoom=18&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
==== Saturday, 26 May ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* backport of wxGUI language selector (.bat file update yet missing for Windows)&lt;br /&gt;
* Lidar DEM based example added to {{cmd|r.lake}}&lt;br /&gt;
* Release of new {{AddonCmd|v.in.geopaparazzi}}&lt;br /&gt;
* implement saving list of executed commands in wxGUI - {{rev|51798}}&lt;br /&gt;
* Moving the ilist functionality from the vector library to the gis library [http://trac.osgeo.org/grass/changeset/51796]&lt;br /&gt;
* Implementation of correctly scaled time axes when exporting space time raster datasets as 3D raster maps representing space time voxel cubes [http://trac.osgeo.org/grass/changeset/51779]&lt;br /&gt;
* Toolbox concept discussion see [http://grass.osgeo.org/wiki/Toolboxes wiki] update&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.restauraceztratynalezy.estranky.cz/ Ztráty a nálezy], see the [http://www.openstreetmap.org/?mlat=50.07836&amp;amp;mlon=14.43524&amp;amp;zoom=16&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
==== Sunday, 27 May ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* wxGUI about window issues - {{rev|51830}}&lt;br /&gt;
* 19:00: Dinner at restaurant [http://www.uveverky.com U Veverky], see the [http://www.openstreetmap.org/?mlat=50.09909&amp;amp;mlon=14.4022&amp;amp;zoom=16&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
==== Monday, 28 May ====&lt;br /&gt;
&lt;br /&gt;
* Last meeting&lt;br /&gt;
* Farewell and have a good trip home&lt;br /&gt;
&lt;br /&gt;
== Participation ==&lt;br /&gt;
&lt;br /&gt;
We are planning for attendance of 20 people (i.e., hacking places) but of course you are welcome to join us and bring new ideas with you, as more places are available. Please add your name here or contact [[User:Landa|Martin Landa]] &amp;lt;tt&amp;gt;&amp;lt;landa.martin at gmail.com&amp;gt;&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
=== In person ===&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:Landa|Martin Landa]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
|Toolbox concept, vector engine in GRASS 7, wxGUI, PostGIS Topology support&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:Neteler|Markus Neteler]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
|GRASS on Android, QGIS-Sextante-GRASS interface, high performance computing, g.cloud, singing &amp;amp; beer in pub, Toolbox, ...&lt;br /&gt;
| M + S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|[[User:Lucadelu|Luca Delucchi]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 20&lt;br /&gt;
| May 26&lt;br /&gt;
| r.modis, r.li.setup gui, v.in.geopaparazzi (only if andrea antonello comes to Prague)&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|[[User:moovida|Andrea Antonello]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 21/22&lt;br /&gt;
| May 25/26&lt;br /&gt;
| v.in.geopaparazzi, GRASS [[http://www.coulthard.org.uk/CAESAR.html Caesar model]] input module with Silvia, singing at the pub with Luca Delucchi and Peter Loewe&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[User:silli|Silvia Franceschi]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 21/22&lt;br /&gt;
| May 25/26&lt;br /&gt;
| GRASS [[http://www.coulthard.org.uk/CAESAR.html Caesar model]] input module&lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|[[User:peter.loewe|Peter Loewe]]&lt;br /&gt;
|Germany&lt;br /&gt;
| May 20/21&lt;br /&gt;
| May 25/26&lt;br /&gt;
| collecting beer-money while Luca and Andrea sing in pubs ; i.atcorr debugging ; g.cloud ? ; r.tsunami ? ; Tutorial/Documentation on g.infer &lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|[[User:Annakrat|Anna Kratochvilova]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
| imagery, wxGUI &lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|[[User:Wenzeslaus|Vaclav Petras]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
| imagery, wxGUI, Toolbox concept ?&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|[[User:Helena|Helena Mitasova]]&lt;br /&gt;
|USA&lt;br /&gt;
|May 21&lt;br /&gt;
|May 25/26&lt;br /&gt;
|toolbox concept, student sandbox, wxnviz z-scale, inventory of mobile and touch implementations, GRASS on-line and cloud&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|[[User:Huhabla|Sören Gebbert]]&lt;br /&gt;
|Germany&lt;br /&gt;
|May 20&lt;br /&gt;
|May 27&lt;br /&gt;
|Temporal GIS framework demo and discussion, Temporal GIS wxGUI and WPS integration, massive parallel computation of spatio-temporal datasets, Cloud computing &lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|[[User:Turek|Štěpán Turek]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
|May 20&lt;br /&gt;
|May 28&lt;br /&gt;
|v.net.* front end, WMS&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|12&lt;br /&gt;
|Radim Blažek&lt;br /&gt;
|Czech Republic&lt;br /&gt;
|May 24/25&lt;br /&gt;
|May 24/25&lt;br /&gt;
|QGIS interface&lt;br /&gt;
| -&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|13&lt;br /&gt;
|[[User:Pietro|Pietro Zambelli]]&lt;br /&gt;
|Italy&lt;br /&gt;
|May 23/24&lt;br /&gt;
|May 28/29&lt;br /&gt;
|GSoC2012: High level map interaction&lt;br /&gt;
| L&lt;br /&gt;
|-&lt;br /&gt;
|14&lt;br /&gt;
|Markus Metz&lt;br /&gt;
|Italy&lt;br /&gt;
|May 23&lt;br /&gt;
|May 26&lt;br /&gt;
|GRASS 7 everything&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|15&lt;br /&gt;
|[[User:NikosA|Nikos Alexandris]]&lt;br /&gt;
|Greece&lt;br /&gt;
|May 24&lt;br /&gt;
|May 27/28&lt;br /&gt;
|(wannabe) bughunter, assist documentation and tutorials&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|16&lt;br /&gt;
|[[User:MilenaN|Milena Nowotarska]]&lt;br /&gt;
|Poland&lt;br /&gt;
|May 23&lt;br /&gt;
|May 27&lt;br /&gt;
|translation, wxGUI&lt;br /&gt;
|S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|17&lt;br /&gt;
|[[User:Maxi71|Massimiliano Cannata]]&lt;br /&gt;
|Switzerland&lt;br /&gt;
|May 20&lt;br /&gt;
|May 24&lt;br /&gt;
|finalization and commit of a new grass addon module r.massmov, a physically based model to simulate the landslide ruonout velocity and deposit thickness&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|18&lt;br /&gt;
|Monia Molinari&lt;br /&gt;
|Switzerland&lt;br /&gt;
|May 20&lt;br /&gt;
|May 24&lt;br /&gt;
|finalization and commit of a new grass addon module r.massmov, a physically based model to simulate the landslide ruonout velocity and deposit thickness&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://freenode/grass #grass] on Freenode&lt;br /&gt;
&lt;br /&gt;
For details, see [[IRC]]&lt;br /&gt;
&lt;br /&gt;
=== Collaborative document scratching ===&lt;br /&gt;
&lt;br /&gt;
(Power) users from all over the world are kindly invited to assist with testing of new and existing functionality. To collect results and notes, we set up an interactive, collaborative editing tool which works in real-time:&lt;br /&gt;
&lt;br /&gt;
Please check http://titanpad.com/I51nq1SrNc&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 power connector adapter] if needed (Czech Republic: 230V, 50Hz, [http://en.wikipedia.org/wiki/File:Euro-Flachstecker_2.jpg Type C Europlugs] are common and also [http://en.wikipedia.org/wiki/File:French_plug_and_socket.jpg Type E])&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;
During the event :)&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
Also during the event :)&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* How was it last year?&lt;br /&gt;
** Very nice, see [[GRASS Community Sprint Prague 2011]]!&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:Landa|Martin Landa]] &amp;lt;tt&amp;gt;&amp;lt;landa.martin at gmail.com&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Workshops]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Prague_2012&amp;diff=15782</id>
		<title>GRASS Community Sprint Prague 2012</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Prague_2012&amp;diff=15782"/>
		<updated>2012-05-28T23:02:13Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Friday, 25 May */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The GRASS GIS team will organize a '''GRASS Developer and Power User Meeting, aka 'GRASS Community Sprint'''' from '''May 23 to May 28, 2012'''. The sprint is following the [http://foss4g-cee.org/ FOSS4G-CEE] &amp;amp; [http://geoinformatics.fsv.cvut.cz/gwiki/Geoinformatics_FCE_CTU_2012 Geoinformatics] ''(Free and Open Source Software for Geospatial in Central and East Europe)'', 21-23 May 2012, Czech Technical University in [http://en.wikipedia.org/wiki/Prague Prague], [http://en.wikipedia.org/wiki/Czech_Republic Czech Republic].&lt;br /&gt;
[[Image:community_sprint_prague2012.png|center|640px]]&lt;br /&gt;
'''Important dates:'''&lt;br /&gt;
&lt;br /&gt;
* 21 (Monday) - 23 (Wednesday) May 2012: [http://foss4g-cee.org/ FOSS4G-CEE &amp;amp; Geoinformatics conference]&lt;br /&gt;
&lt;br /&gt;
* '''23 (Wednesday) - 28 (Monday) May 2012: GRASS GIS Community Sprint''' @ [http://www.fsv.cvut.cz/ FCE CTU]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Grass-gis community sprint 2012 collage.jpg|center|500px]]&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
This second edition of the GRASS GIS community sprint 2012 is a great occasion for folks to support the development by actively contributing to the source code, manuals or likewise. The '''community''' sprint is a get-together for GRASS project members and supporters and related [http://www.osgeo.org/ OSGeo] projects to make decisions and tackle larger problems. 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.&lt;br /&gt;
&lt;br /&gt;
For this meeting, we welcome people committed to improving the GRASS GIS and related projects. This includes developers, document writers, wish and bug reporters, translators etc.&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
We welcome financial contributions to support the meeting and we are looking for sponsors to cover costs such as meals or 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/donation.php http://grass.osgeo.org/donation.php]'''&lt;br /&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 first 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;
We are grateful for the support which we have received to organize this GRASS Community Sprint:&lt;br /&gt;
&lt;br /&gt;
* remainder from the 2011 edition of the Community Sprint and small donations (via [http://www.gfoss.it/ GFOSS.it], the Italian OSGeo chapter) - 1400 Euro &lt;br /&gt;
* [http://www.osgeo.org/ Open Source Geospatial Foundation] (OSGeo) - 1000 Euro&lt;br /&gt;
* [http://www.fossgis.de/ FOSSGIS e.V.] - 1000 Euro&lt;br /&gt;
* Stefan Sylla, [http://sylla-consult.de/en/ sylla-consult], Frankfurt, Germany - 500 Euro&lt;br /&gt;
&lt;br /&gt;
== Timing  ==&lt;br /&gt;
&lt;br /&gt;
'''When''': Wednesday, May 23, 2012 (day of arrival) - Monday, May 28, 2012 (day of departure)&lt;br /&gt;
&lt;br /&gt;
Of course you are invited to join or leave the community sprint whenever you want.&lt;br /&gt;
&lt;br /&gt;
'''Duration''':&lt;br /&gt;
&lt;br /&gt;
* Wednesday is day of arrival&lt;br /&gt;
** First meeting in the evening (after the [http://foss4g-cee.org/ FOSS4G-CEE &amp;amp; Geoinfomatics conference]) to define the agenda&lt;br /&gt;
* Thursday to Sunday&lt;br /&gt;
** Full days&lt;br /&gt;
* Monday is day of departure&lt;br /&gt;
** Probably hacking for people with a flight later in the evening&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
[[Image:logo_cvut.jpg|130px|left]]&lt;br /&gt;
Department of Mapping and Cartography&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.fsv.cvut.cz Faculty of Civil Engineering]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.cvut.cz Czech Technical University in Prague], [http://en.wikipedia.org/wiki/Czech_Republic Czech Republic]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://geoinformatics.fsv.cvut.cz/gwiki/Room_B367 Room B367] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[http://geoinformatics.fsv.cvut.cz/gwiki/Where_you_can_find_us Location &amp;amp; Transportations]'''&lt;br /&gt;
&lt;br /&gt;
Prague has an international [http://www.prg.aero/en/ airport] and is also reachable by train, bus or car.&lt;br /&gt;
&lt;br /&gt;
== Accommodation and Costs ==&lt;br /&gt;
&lt;br /&gt;
Participants should plan for the following costs:&lt;br /&gt;
&lt;br /&gt;
* The participation is free of charge&lt;br /&gt;
* Travel to Prague, variable depending on where you come from&lt;br /&gt;
* Accommodation and meals (with the donated sponsorship money we will try to cover some expenses of the participants)&lt;br /&gt;
'''Please note''': The currency in Czech Republic is [http://en.wikipedia.org/wiki/Czech_crown crown] (CZK, koruna, Kč). 100 Czech crowns are about 4 Euros (see [http://www.cnb.cz/en/financial_markets/foreign_exchange_market/exchange_rate_fixing/daily.jsp current rates]).&lt;br /&gt;
&lt;br /&gt;
'''[http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague Accommodation in Prague]'''&lt;br /&gt;
&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Masarykova_Kolej_Hotel Masarykova Kolej Hotel]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_DAP Hotel DAP]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_Krystal Hotel Krystal]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Pension_Hanspaulka Pension Hanspaulka]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_Silenzio Hotel Silenzio]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Student_hostels_.28CTU.29 Student hostels (CTU)]&lt;br /&gt;
:* Special offer: ''sleeping for free in the kindergarten'' (30min by city urban mass transportation from the university campus, sleeping bag required, kitchen and WC available, no showers, in working days available only from 8 p.m. to 8 a.m.), contact [[User:Landa|Martin Landa]] for details&lt;br /&gt;
:* See also http://www.hotel.cz/praha-6/accommodation/&lt;br /&gt;
&lt;br /&gt;
Please let us know your time of arrival and leaving, so we can book for the accommodations and organize the logistics.&lt;br /&gt;
&lt;br /&gt;
Financial support: (partial) travel grants can be payed upon request thanks to our sponsors!&lt;br /&gt;
&lt;br /&gt;
== Weather and Common Item Prices ==&lt;br /&gt;
&lt;br /&gt;
* In May the weather in Prague is usually quite warm ([http://www.prague-spot.com/climate 15 or more degrees by day])&lt;br /&gt;
* A espresso coffee is about 20 CZK (80 cents), a beer (half of liter) in a common pub is around 25 CZK (1 euro), can be more in special pubs. In Prague you can have a full meal (see [http://en.wikipedia.org/wiki/Czech_cuisine Czech cuisine]) for still 75 - 150 CZK (3 - 6 euros), but beware of tourist restaurants, the price can easily rise. It's quite easy to find in Prague also Italian or Chinese restaurants.&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.&lt;br /&gt;
&lt;br /&gt;
Further details about the action items you '''find [[Talk:GRASS_Community_Sprint_Prague_2012|here]]''' and below. Topics cover non-technical, semi-technical, and technical issues.&lt;br /&gt;
&lt;br /&gt;
=== Timeline ===&lt;br /&gt;
&lt;br /&gt;
TODO: merge below entries from [[Talk:GRASS_Community_Sprint_Prague_2012]]&lt;br /&gt;
&lt;br /&gt;
==== Wednesday, 23 May ====&lt;br /&gt;
* 14:30: Kick-off in the Faculty of Civil Engineering, building B, room 367 (3rd floor, [http://geoinformatics.fsv.cvut.cz/gwiki/Where_you_can_find_us map])&lt;br /&gt;
* Participants presentation&lt;br /&gt;
&lt;br /&gt;
List of topics:&lt;br /&gt;
* various topics from the list: r.modis, add liblas support to OSGeo4W GRASS package ([http://wingrass.fsv.cvut.cz/grass64/ download])&lt;br /&gt;
* extension of Rtree to 4D, time series test script portability updates, ...&lt;br /&gt;
* see reports [[Talk:GRASS_Community_Sprint_Prague_2012|here]]&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.budvarkadejvice.cz Budvarka] near the university, see the [http://www.openstreetmap.org/?mlat=50.09824&amp;amp;mlon=14.3962&amp;amp;zoom=15&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Thursday, 24 May ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* Discuss role and current composition of GRASS-PSC&lt;br /&gt;
* Seminar by Sören Gebbert: &amp;quot;New time series management in GRASS 7&amp;quot; ([http://grass.osgeo.org/gdp/html_grass70/temporal.html manual])&lt;br /&gt;
* Starting work on v.in.geopaparazzi&lt;br /&gt;
* Discussion: Generate automated command statistics with g.parser (just module name)&lt;br /&gt;
* Discussion: adopting CMS for Web site - huge amount of work to change...&lt;br /&gt;
* Discussion: GSoC project discussion about the new GRASS Python API [http://grass.osgeo.org/wiki/GRASS_SoC_Ideas_2012/High_level_map_interaction#Weekly_reports] and milestones of the project&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.restaurant-uglaubicu.cz/ U Glaubiců] in the city center, see the [http://www.openstreetmap.org/?mlat=50.0876&amp;amp;mlon=14.4035&amp;amp;zoom=16&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
==== Friday, 25 May ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* wxGUI: save session commands into protocol&lt;br /&gt;
* test wxGUI digitizer&lt;br /&gt;
* visual guide to GRASS GIS usage&lt;br /&gt;
* fix v.in.mapgen&lt;br /&gt;
* improve italian translation&lt;br /&gt;
* Hunting bugs in the 3D raster library and implementing new bug related unit tests [http://trac.osgeo.org/grass/ticket/1662 ticket] and [http://trac.osgeo.org/grass/changeset/51793 r51793]&lt;br /&gt;
* ...&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.hlucna-samota.cz/ Hlučná samota], see the [http://www.openstreetmap.org/?mlat=50.071600&amp;amp;mlon=14.436300&amp;amp;zoom=18&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
==== Saturday, 26 May ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* backport of wxGUI language selector (.bat file update yet missing for Windows)&lt;br /&gt;
* Lidar DEM based example added to {{cmd|r.lake}}&lt;br /&gt;
* Release of new {{AddonCmd|v.in.geopaparazzi}}&lt;br /&gt;
* implement saving list of executed commands in wxGUI - {{rev|51798}}&lt;br /&gt;
* Moving the ilist functionality from the vector library to the gis library [http://trac.osgeo.org/grass/changeset/51796]&lt;br /&gt;
* Implementation of correctly scaled time axes when exporting space time raster datasets as 3D raster maps representing space time voxel cubes [http://trac.osgeo.org/grass/changeset/51779]&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.restauraceztratynalezy.estranky.cz/ Ztráty a nálezy], see the [http://www.openstreetmap.org/?mlat=50.07836&amp;amp;mlon=14.43524&amp;amp;zoom=16&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
==== Sunday, 27 May ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* wxGUI about window issues - {{rev|51830}}&lt;br /&gt;
* 19:00: Dinner at restaurant [http://www.uveverky.com U Veverky], see the [http://www.openstreetmap.org/?mlat=50.09909&amp;amp;mlon=14.4022&amp;amp;zoom=16&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
==== Monday, 28 May ====&lt;br /&gt;
&lt;br /&gt;
* Last meeting&lt;br /&gt;
* Farewell and have a good trip home&lt;br /&gt;
&lt;br /&gt;
== Participation ==&lt;br /&gt;
&lt;br /&gt;
We are planning for attendance of 20 people (i.e., hacking places) but of course you are welcome to join us and bring new ideas with you, as more places are available. Please add your name here or contact [[User:Landa|Martin Landa]] &amp;lt;tt&amp;gt;&amp;lt;landa.martin at gmail.com&amp;gt;&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
=== In person ===&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:Landa|Martin Landa]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
|Toolbox concept, vector engine in GRASS 7, wxGUI, PostGIS Topology support&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:Neteler|Markus Neteler]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
|GRASS on Android, QGIS-Sextante-GRASS interface, high performance computing, g.cloud, singing &amp;amp; beer in pub, Toolbox, ...&lt;br /&gt;
| M + S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|[[User:Lucadelu|Luca Delucchi]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 20&lt;br /&gt;
| May 26&lt;br /&gt;
| r.modis, r.li.setup gui, v.in.geopaparazzi (only if andrea antonello comes to Prague)&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|[[User:moovida|Andrea Antonello]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 21/22&lt;br /&gt;
| May 25/26&lt;br /&gt;
| v.in.geopaparazzi, GRASS [[http://www.coulthard.org.uk/CAESAR.html Caesar model]] input module with Silvia, singing at the pub with Luca Delucchi and Peter Loewe&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[User:silli|Silvia Franceschi]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 21/22&lt;br /&gt;
| May 25/26&lt;br /&gt;
| GRASS [[http://www.coulthard.org.uk/CAESAR.html Caesar model]] input module&lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|[[User:peter.loewe|Peter Loewe]]&lt;br /&gt;
|Germany&lt;br /&gt;
| May 20/21&lt;br /&gt;
| May 25/26&lt;br /&gt;
| collecting beer-money while Luca and Andrea sing in pubs ; i.atcorr debugging ; g.cloud ? ; r.tsunami ? ; Tutorial/Documentation on g.infer &lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|[[User:Annakrat|Anna Kratochvilova]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
| imagery, wxGUI &lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|[[User:Wenzeslaus|Vaclav Petras]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
| imagery, wxGUI, Toolbox concept ?&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|[[User:Helena|Helena Mitasova]]&lt;br /&gt;
|USA&lt;br /&gt;
|May 21&lt;br /&gt;
|May 25/26&lt;br /&gt;
|toolbox concept, student sandbox, wxnviz z-scale, inventory of mobile and touch implementations, GRASS on-line and cloud&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|[[User:Huhabla|Sören Gebbert]]&lt;br /&gt;
|Germany&lt;br /&gt;
|May 20&lt;br /&gt;
|May 27&lt;br /&gt;
|Temporal GIS framework demo and discussion, Temporal GIS wxGUI and WPS integration, massive parallel computation of spatio-temporal datasets, Cloud computing &lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|[[User:Turek|Štěpán Turek]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
|May 20&lt;br /&gt;
|May 28&lt;br /&gt;
|v.net.* front end, WMS&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|12&lt;br /&gt;
|Radim Blažek&lt;br /&gt;
|Czech Republic&lt;br /&gt;
|May 24/25&lt;br /&gt;
|May 24/25&lt;br /&gt;
|QGIS interface&lt;br /&gt;
| -&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|13&lt;br /&gt;
|[[User:Pietro|Pietro Zambelli]]&lt;br /&gt;
|Italy&lt;br /&gt;
|May 23/24&lt;br /&gt;
|May 28/29&lt;br /&gt;
|GSoC2012: High level map interaction&lt;br /&gt;
| L&lt;br /&gt;
|-&lt;br /&gt;
|14&lt;br /&gt;
|Markus Metz&lt;br /&gt;
|Italy&lt;br /&gt;
|May 23&lt;br /&gt;
|May 26&lt;br /&gt;
|GRASS 7 everything&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|15&lt;br /&gt;
|[[User:NikosA|Nikos Alexandris]]&lt;br /&gt;
|Greece&lt;br /&gt;
|May 24&lt;br /&gt;
|May 27/28&lt;br /&gt;
|(wannabe) bughunter, assist documentation and tutorials&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|16&lt;br /&gt;
|[[User:MilenaN|Milena Nowotarska]]&lt;br /&gt;
|Poland&lt;br /&gt;
|May 23&lt;br /&gt;
|May 27&lt;br /&gt;
|translation, wxGUI&lt;br /&gt;
|S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|17&lt;br /&gt;
|[[User:Maxi71|Massimiliano Cannata]]&lt;br /&gt;
|Switzerland&lt;br /&gt;
|May 20&lt;br /&gt;
|May 24&lt;br /&gt;
|finalization and commit of a new grass addon module r.massmov, a physically based model to simulate the landslide ruonout velocity and deposit thickness&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|18&lt;br /&gt;
|Monia Molinari&lt;br /&gt;
|Switzerland&lt;br /&gt;
|May 20&lt;br /&gt;
|May 24&lt;br /&gt;
|finalization and commit of a new grass addon module r.massmov, a physically based model to simulate the landslide ruonout velocity and deposit thickness&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://freenode/grass #grass] on Freenode&lt;br /&gt;
&lt;br /&gt;
For details, see [[IRC]]&lt;br /&gt;
&lt;br /&gt;
=== Collaborative document scratching ===&lt;br /&gt;
&lt;br /&gt;
(Power) users from all over the world are kindly invited to assist with testing of new and existing functionality. To collect results and notes, we set up an interactive, collaborative editing tool which works in real-time:&lt;br /&gt;
&lt;br /&gt;
Please check http://titanpad.com/I51nq1SrNc&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 power connector adapter] if needed (Czech Republic: 230V, 50Hz, [http://en.wikipedia.org/wiki/File:Euro-Flachstecker_2.jpg Type C Europlugs] are common and also [http://en.wikipedia.org/wiki/File:French_plug_and_socket.jpg Type E])&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;
During the event :)&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
Also during the event :)&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* How was it last year?&lt;br /&gt;
** Very nice, see [[GRASS Community Sprint Prague 2011]]!&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:Landa|Martin Landa]] &amp;lt;tt&amp;gt;&amp;lt;landa.martin at gmail.com&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Workshops]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Prague_2012&amp;diff=15781</id>
		<title>GRASS Community Sprint Prague 2012</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Prague_2012&amp;diff=15781"/>
		<updated>2012-05-28T23:00:48Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Friday, 25 May */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The GRASS GIS team will organize a '''GRASS Developer and Power User Meeting, aka 'GRASS Community Sprint'''' from '''May 23 to May 28, 2012'''. The sprint is following the [http://foss4g-cee.org/ FOSS4G-CEE] &amp;amp; [http://geoinformatics.fsv.cvut.cz/gwiki/Geoinformatics_FCE_CTU_2012 Geoinformatics] ''(Free and Open Source Software for Geospatial in Central and East Europe)'', 21-23 May 2012, Czech Technical University in [http://en.wikipedia.org/wiki/Prague Prague], [http://en.wikipedia.org/wiki/Czech_Republic Czech Republic].&lt;br /&gt;
[[Image:community_sprint_prague2012.png|center|640px]]&lt;br /&gt;
'''Important dates:'''&lt;br /&gt;
&lt;br /&gt;
* 21 (Monday) - 23 (Wednesday) May 2012: [http://foss4g-cee.org/ FOSS4G-CEE &amp;amp; Geoinformatics conference]&lt;br /&gt;
&lt;br /&gt;
* '''23 (Wednesday) - 28 (Monday) May 2012: GRASS GIS Community Sprint''' @ [http://www.fsv.cvut.cz/ FCE CTU]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Grass-gis community sprint 2012 collage.jpg|center|500px]]&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
This second edition of the GRASS GIS community sprint 2012 is a great occasion for folks to support the development by actively contributing to the source code, manuals or likewise. The '''community''' sprint is a get-together for GRASS project members and supporters and related [http://www.osgeo.org/ OSGeo] projects to make decisions and tackle larger problems. 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.&lt;br /&gt;
&lt;br /&gt;
For this meeting, we welcome people committed to improving the GRASS GIS and related projects. This includes developers, document writers, wish and bug reporters, translators etc.&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
We welcome financial contributions to support the meeting and we are looking for sponsors to cover costs such as meals or 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/donation.php http://grass.osgeo.org/donation.php]'''&lt;br /&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 first 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;
We are grateful for the support which we have received to organize this GRASS Community Sprint:&lt;br /&gt;
&lt;br /&gt;
* remainder from the 2011 edition of the Community Sprint and small donations (via [http://www.gfoss.it/ GFOSS.it], the Italian OSGeo chapter) - 1400 Euro &lt;br /&gt;
* [http://www.osgeo.org/ Open Source Geospatial Foundation] (OSGeo) - 1000 Euro&lt;br /&gt;
* [http://www.fossgis.de/ FOSSGIS e.V.] - 1000 Euro&lt;br /&gt;
* Stefan Sylla, [http://sylla-consult.de/en/ sylla-consult], Frankfurt, Germany - 500 Euro&lt;br /&gt;
&lt;br /&gt;
== Timing  ==&lt;br /&gt;
&lt;br /&gt;
'''When''': Wednesday, May 23, 2012 (day of arrival) - Monday, May 28, 2012 (day of departure)&lt;br /&gt;
&lt;br /&gt;
Of course you are invited to join or leave the community sprint whenever you want.&lt;br /&gt;
&lt;br /&gt;
'''Duration''':&lt;br /&gt;
&lt;br /&gt;
* Wednesday is day of arrival&lt;br /&gt;
** First meeting in the evening (after the [http://foss4g-cee.org/ FOSS4G-CEE &amp;amp; Geoinfomatics conference]) to define the agenda&lt;br /&gt;
* Thursday to Sunday&lt;br /&gt;
** Full days&lt;br /&gt;
* Monday is day of departure&lt;br /&gt;
** Probably hacking for people with a flight later in the evening&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
[[Image:logo_cvut.jpg|130px|left]]&lt;br /&gt;
Department of Mapping and Cartography&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.fsv.cvut.cz Faculty of Civil Engineering]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.cvut.cz Czech Technical University in Prague], [http://en.wikipedia.org/wiki/Czech_Republic Czech Republic]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://geoinformatics.fsv.cvut.cz/gwiki/Room_B367 Room B367] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[http://geoinformatics.fsv.cvut.cz/gwiki/Where_you_can_find_us Location &amp;amp; Transportations]'''&lt;br /&gt;
&lt;br /&gt;
Prague has an international [http://www.prg.aero/en/ airport] and is also reachable by train, bus or car.&lt;br /&gt;
&lt;br /&gt;
== Accommodation and Costs ==&lt;br /&gt;
&lt;br /&gt;
Participants should plan for the following costs:&lt;br /&gt;
&lt;br /&gt;
* The participation is free of charge&lt;br /&gt;
* Travel to Prague, variable depending on where you come from&lt;br /&gt;
* Accommodation and meals (with the donated sponsorship money we will try to cover some expenses of the participants)&lt;br /&gt;
'''Please note''': The currency in Czech Republic is [http://en.wikipedia.org/wiki/Czech_crown crown] (CZK, koruna, Kč). 100 Czech crowns are about 4 Euros (see [http://www.cnb.cz/en/financial_markets/foreign_exchange_market/exchange_rate_fixing/daily.jsp current rates]).&lt;br /&gt;
&lt;br /&gt;
'''[http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague Accommodation in Prague]'''&lt;br /&gt;
&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Masarykova_Kolej_Hotel Masarykova Kolej Hotel]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_DAP Hotel DAP]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_Krystal Hotel Krystal]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Pension_Hanspaulka Pension Hanspaulka]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_Silenzio Hotel Silenzio]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Student_hostels_.28CTU.29 Student hostels (CTU)]&lt;br /&gt;
:* Special offer: ''sleeping for free in the kindergarten'' (30min by city urban mass transportation from the university campus, sleeping bag required, kitchen and WC available, no showers, in working days available only from 8 p.m. to 8 a.m.), contact [[User:Landa|Martin Landa]] for details&lt;br /&gt;
:* See also http://www.hotel.cz/praha-6/accommodation/&lt;br /&gt;
&lt;br /&gt;
Please let us know your time of arrival and leaving, so we can book for the accommodations and organize the logistics.&lt;br /&gt;
&lt;br /&gt;
Financial support: (partial) travel grants can be payed upon request thanks to our sponsors!&lt;br /&gt;
&lt;br /&gt;
== Weather and Common Item Prices ==&lt;br /&gt;
&lt;br /&gt;
* In May the weather in Prague is usually quite warm ([http://www.prague-spot.com/climate 15 or more degrees by day])&lt;br /&gt;
* A espresso coffee is about 20 CZK (80 cents), a beer (half of liter) in a common pub is around 25 CZK (1 euro), can be more in special pubs. In Prague you can have a full meal (see [http://en.wikipedia.org/wiki/Czech_cuisine Czech cuisine]) for still 75 - 150 CZK (3 - 6 euros), but beware of tourist restaurants, the price can easily rise. It's quite easy to find in Prague also Italian or Chinese restaurants.&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.&lt;br /&gt;
&lt;br /&gt;
Further details about the action items you '''find [[Talk:GRASS_Community_Sprint_Prague_2012|here]]''' and below. Topics cover non-technical, semi-technical, and technical issues.&lt;br /&gt;
&lt;br /&gt;
=== Timeline ===&lt;br /&gt;
&lt;br /&gt;
TODO: merge below entries from [[Talk:GRASS_Community_Sprint_Prague_2012]]&lt;br /&gt;
&lt;br /&gt;
==== Wednesday, 23 May ====&lt;br /&gt;
* 14:30: Kick-off in the Faculty of Civil Engineering, building B, room 367 (3rd floor, [http://geoinformatics.fsv.cvut.cz/gwiki/Where_you_can_find_us map])&lt;br /&gt;
* Participants presentation&lt;br /&gt;
&lt;br /&gt;
List of topics:&lt;br /&gt;
* various topics from the list: r.modis, add liblas support to OSGeo4W GRASS package ([http://wingrass.fsv.cvut.cz/grass64/ download])&lt;br /&gt;
* extension of Rtree to 4D, time series test script portability updates, ...&lt;br /&gt;
* see reports [[Talk:GRASS_Community_Sprint_Prague_2012|here]]&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.budvarkadejvice.cz Budvarka] near the university, see the [http://www.openstreetmap.org/?mlat=50.09824&amp;amp;mlon=14.3962&amp;amp;zoom=15&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Thursday, 24 May ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* Discuss role and current composition of GRASS-PSC&lt;br /&gt;
* Seminar by Sören Gebbert: &amp;quot;New time series management in GRASS 7&amp;quot; ([http://grass.osgeo.org/gdp/html_grass70/temporal.html manual])&lt;br /&gt;
* Starting work on v.in.geopaparazzi&lt;br /&gt;
* Discussion: Generate automated command statistics with g.parser (just module name)&lt;br /&gt;
* Discussion: adopting CMS for Web site - huge amount of work to change...&lt;br /&gt;
* Discussion: GSoC project discussion about the new GRASS Python API [http://grass.osgeo.org/wiki/GRASS_SoC_Ideas_2012/High_level_map_interaction#Weekly_reports] and milestones of the project&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.restaurant-uglaubicu.cz/ U Glaubiců] in the city center, see the [http://www.openstreetmap.org/?mlat=50.0876&amp;amp;mlon=14.4035&amp;amp;zoom=16&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
==== Friday, 25 May ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* wxGUI: save session commands into protocol&lt;br /&gt;
* test wxGUI digitizer&lt;br /&gt;
* visual guide to GRASS GIS usage&lt;br /&gt;
* fix v.in.mapgen&lt;br /&gt;
* improve italian translation&lt;br /&gt;
* Hunting bugs in the 3D raster library and implementing new bug related unit tests [http://trac.osgeo.org/grass/ticket/1662] and http://trac.osgeo.org/grass/changeset/51793&lt;br /&gt;
* ...&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.hlucna-samota.cz/ Hlučná samota], see the [http://www.openstreetmap.org/?mlat=50.071600&amp;amp;mlon=14.436300&amp;amp;zoom=18&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
==== Saturday, 26 May ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* backport of wxGUI language selector (.bat file update yet missing for Windows)&lt;br /&gt;
* Lidar DEM based example added to {{cmd|r.lake}}&lt;br /&gt;
* Release of new {{AddonCmd|v.in.geopaparazzi}}&lt;br /&gt;
* implement saving list of executed commands in wxGUI - {{rev|51798}}&lt;br /&gt;
* Moving the ilist functionality from the vector library to the gis library [http://trac.osgeo.org/grass/changeset/51796]&lt;br /&gt;
* Implementation of correctly scaled time axes when exporting space time raster datasets as 3D raster maps representing space time voxel cubes [http://trac.osgeo.org/grass/changeset/51779]&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.restauraceztratynalezy.estranky.cz/ Ztráty a nálezy], see the [http://www.openstreetmap.org/?mlat=50.07836&amp;amp;mlon=14.43524&amp;amp;zoom=16&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
==== Sunday, 27 May ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* wxGUI about window issues - {{rev|51830}}&lt;br /&gt;
* 19:00: Dinner at restaurant [http://www.uveverky.com U Veverky], see the [http://www.openstreetmap.org/?mlat=50.09909&amp;amp;mlon=14.4022&amp;amp;zoom=16&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
==== Monday, 28 May ====&lt;br /&gt;
&lt;br /&gt;
* Last meeting&lt;br /&gt;
* Farewell and have a good trip home&lt;br /&gt;
&lt;br /&gt;
== Participation ==&lt;br /&gt;
&lt;br /&gt;
We are planning for attendance of 20 people (i.e., hacking places) but of course you are welcome to join us and bring new ideas with you, as more places are available. Please add your name here or contact [[User:Landa|Martin Landa]] &amp;lt;tt&amp;gt;&amp;lt;landa.martin at gmail.com&amp;gt;&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
=== In person ===&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:Landa|Martin Landa]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
|Toolbox concept, vector engine in GRASS 7, wxGUI, PostGIS Topology support&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:Neteler|Markus Neteler]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
|GRASS on Android, QGIS-Sextante-GRASS interface, high performance computing, g.cloud, singing &amp;amp; beer in pub, Toolbox, ...&lt;br /&gt;
| M + S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|[[User:Lucadelu|Luca Delucchi]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 20&lt;br /&gt;
| May 26&lt;br /&gt;
| r.modis, r.li.setup gui, v.in.geopaparazzi (only if andrea antonello comes to Prague)&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|[[User:moovida|Andrea Antonello]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 21/22&lt;br /&gt;
| May 25/26&lt;br /&gt;
| v.in.geopaparazzi, GRASS [[http://www.coulthard.org.uk/CAESAR.html Caesar model]] input module with Silvia, singing at the pub with Luca Delucchi and Peter Loewe&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[User:silli|Silvia Franceschi]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 21/22&lt;br /&gt;
| May 25/26&lt;br /&gt;
| GRASS [[http://www.coulthard.org.uk/CAESAR.html Caesar model]] input module&lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|[[User:peter.loewe|Peter Loewe]]&lt;br /&gt;
|Germany&lt;br /&gt;
| May 20/21&lt;br /&gt;
| May 25/26&lt;br /&gt;
| collecting beer-money while Luca and Andrea sing in pubs ; i.atcorr debugging ; g.cloud ? ; r.tsunami ? ; Tutorial/Documentation on g.infer &lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|[[User:Annakrat|Anna Kratochvilova]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
| imagery, wxGUI &lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|[[User:Wenzeslaus|Vaclav Petras]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
| imagery, wxGUI, Toolbox concept ?&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|[[User:Helena|Helena Mitasova]]&lt;br /&gt;
|USA&lt;br /&gt;
|May 21&lt;br /&gt;
|May 25/26&lt;br /&gt;
|toolbox concept, student sandbox, wxnviz z-scale, inventory of mobile and touch implementations, GRASS on-line and cloud&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|[[User:Huhabla|Sören Gebbert]]&lt;br /&gt;
|Germany&lt;br /&gt;
|May 20&lt;br /&gt;
|May 27&lt;br /&gt;
|Temporal GIS framework demo and discussion, Temporal GIS wxGUI and WPS integration, massive parallel computation of spatio-temporal datasets, Cloud computing &lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|[[User:Turek|Štěpán Turek]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
|May 20&lt;br /&gt;
|May 28&lt;br /&gt;
|v.net.* front end, WMS&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|12&lt;br /&gt;
|Radim Blažek&lt;br /&gt;
|Czech Republic&lt;br /&gt;
|May 24/25&lt;br /&gt;
|May 24/25&lt;br /&gt;
|QGIS interface&lt;br /&gt;
| -&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|13&lt;br /&gt;
|[[User:Pietro|Pietro Zambelli]]&lt;br /&gt;
|Italy&lt;br /&gt;
|May 23/24&lt;br /&gt;
|May 28/29&lt;br /&gt;
|GSoC2012: High level map interaction&lt;br /&gt;
| L&lt;br /&gt;
|-&lt;br /&gt;
|14&lt;br /&gt;
|Markus Metz&lt;br /&gt;
|Italy&lt;br /&gt;
|May 23&lt;br /&gt;
|May 26&lt;br /&gt;
|GRASS 7 everything&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|15&lt;br /&gt;
|[[User:NikosA|Nikos Alexandris]]&lt;br /&gt;
|Greece&lt;br /&gt;
|May 24&lt;br /&gt;
|May 27/28&lt;br /&gt;
|(wannabe) bughunter, assist documentation and tutorials&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|16&lt;br /&gt;
|[[User:MilenaN|Milena Nowotarska]]&lt;br /&gt;
|Poland&lt;br /&gt;
|May 23&lt;br /&gt;
|May 27&lt;br /&gt;
|translation, wxGUI&lt;br /&gt;
|S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|17&lt;br /&gt;
|[[User:Maxi71|Massimiliano Cannata]]&lt;br /&gt;
|Switzerland&lt;br /&gt;
|May 20&lt;br /&gt;
|May 24&lt;br /&gt;
|finalization and commit of a new grass addon module r.massmov, a physically based model to simulate the landslide ruonout velocity and deposit thickness&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|18&lt;br /&gt;
|Monia Molinari&lt;br /&gt;
|Switzerland&lt;br /&gt;
|May 20&lt;br /&gt;
|May 24&lt;br /&gt;
|finalization and commit of a new grass addon module r.massmov, a physically based model to simulate the landslide ruonout velocity and deposit thickness&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://freenode/grass #grass] on Freenode&lt;br /&gt;
&lt;br /&gt;
For details, see [[IRC]]&lt;br /&gt;
&lt;br /&gt;
=== Collaborative document scratching ===&lt;br /&gt;
&lt;br /&gt;
(Power) users from all over the world are kindly invited to assist with testing of new and existing functionality. To collect results and notes, we set up an interactive, collaborative editing tool which works in real-time:&lt;br /&gt;
&lt;br /&gt;
Please check http://titanpad.com/I51nq1SrNc&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 power connector adapter] if needed (Czech Republic: 230V, 50Hz, [http://en.wikipedia.org/wiki/File:Euro-Flachstecker_2.jpg Type C Europlugs] are common and also [http://en.wikipedia.org/wiki/File:French_plug_and_socket.jpg Type E])&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;
During the event :)&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
Also during the event :)&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* How was it last year?&lt;br /&gt;
** Very nice, see [[GRASS Community Sprint Prague 2011]]!&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:Landa|Martin Landa]] &amp;lt;tt&amp;gt;&amp;lt;landa.martin at gmail.com&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Workshops]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Prague_2012&amp;diff=15780</id>
		<title>GRASS Community Sprint Prague 2012</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Prague_2012&amp;diff=15780"/>
		<updated>2012-05-28T22:59:11Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Saturday, 26 May */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The GRASS GIS team will organize a '''GRASS Developer and Power User Meeting, aka 'GRASS Community Sprint'''' from '''May 23 to May 28, 2012'''. The sprint is following the [http://foss4g-cee.org/ FOSS4G-CEE] &amp;amp; [http://geoinformatics.fsv.cvut.cz/gwiki/Geoinformatics_FCE_CTU_2012 Geoinformatics] ''(Free and Open Source Software for Geospatial in Central and East Europe)'', 21-23 May 2012, Czech Technical University in [http://en.wikipedia.org/wiki/Prague Prague], [http://en.wikipedia.org/wiki/Czech_Republic Czech Republic].&lt;br /&gt;
[[Image:community_sprint_prague2012.png|center|640px]]&lt;br /&gt;
'''Important dates:'''&lt;br /&gt;
&lt;br /&gt;
* 21 (Monday) - 23 (Wednesday) May 2012: [http://foss4g-cee.org/ FOSS4G-CEE &amp;amp; Geoinformatics conference]&lt;br /&gt;
&lt;br /&gt;
* '''23 (Wednesday) - 28 (Monday) May 2012: GRASS GIS Community Sprint''' @ [http://www.fsv.cvut.cz/ FCE CTU]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Grass-gis community sprint 2012 collage.jpg|center|500px]]&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
This second edition of the GRASS GIS community sprint 2012 is a great occasion for folks to support the development by actively contributing to the source code, manuals or likewise. The '''community''' sprint is a get-together for GRASS project members and supporters and related [http://www.osgeo.org/ OSGeo] projects to make decisions and tackle larger problems. 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.&lt;br /&gt;
&lt;br /&gt;
For this meeting, we welcome people committed to improving the GRASS GIS and related projects. This includes developers, document writers, wish and bug reporters, translators etc.&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
We welcome financial contributions to support the meeting and we are looking for sponsors to cover costs such as meals or 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/donation.php http://grass.osgeo.org/donation.php]'''&lt;br /&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 first 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;
We are grateful for the support which we have received to organize this GRASS Community Sprint:&lt;br /&gt;
&lt;br /&gt;
* remainder from the 2011 edition of the Community Sprint and small donations (via [http://www.gfoss.it/ GFOSS.it], the Italian OSGeo chapter) - 1400 Euro &lt;br /&gt;
* [http://www.osgeo.org/ Open Source Geospatial Foundation] (OSGeo) - 1000 Euro&lt;br /&gt;
* [http://www.fossgis.de/ FOSSGIS e.V.] - 1000 Euro&lt;br /&gt;
* Stefan Sylla, [http://sylla-consult.de/en/ sylla-consult], Frankfurt, Germany - 500 Euro&lt;br /&gt;
&lt;br /&gt;
== Timing  ==&lt;br /&gt;
&lt;br /&gt;
'''When''': Wednesday, May 23, 2012 (day of arrival) - Monday, May 28, 2012 (day of departure)&lt;br /&gt;
&lt;br /&gt;
Of course you are invited to join or leave the community sprint whenever you want.&lt;br /&gt;
&lt;br /&gt;
'''Duration''':&lt;br /&gt;
&lt;br /&gt;
* Wednesday is day of arrival&lt;br /&gt;
** First meeting in the evening (after the [http://foss4g-cee.org/ FOSS4G-CEE &amp;amp; Geoinfomatics conference]) to define the agenda&lt;br /&gt;
* Thursday to Sunday&lt;br /&gt;
** Full days&lt;br /&gt;
* Monday is day of departure&lt;br /&gt;
** Probably hacking for people with a flight later in the evening&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
[[Image:logo_cvut.jpg|130px|left]]&lt;br /&gt;
Department of Mapping and Cartography&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.fsv.cvut.cz Faculty of Civil Engineering]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.cvut.cz Czech Technical University in Prague], [http://en.wikipedia.org/wiki/Czech_Republic Czech Republic]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://geoinformatics.fsv.cvut.cz/gwiki/Room_B367 Room B367] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[http://geoinformatics.fsv.cvut.cz/gwiki/Where_you_can_find_us Location &amp;amp; Transportations]'''&lt;br /&gt;
&lt;br /&gt;
Prague has an international [http://www.prg.aero/en/ airport] and is also reachable by train, bus or car.&lt;br /&gt;
&lt;br /&gt;
== Accommodation and Costs ==&lt;br /&gt;
&lt;br /&gt;
Participants should plan for the following costs:&lt;br /&gt;
&lt;br /&gt;
* The participation is free of charge&lt;br /&gt;
* Travel to Prague, variable depending on where you come from&lt;br /&gt;
* Accommodation and meals (with the donated sponsorship money we will try to cover some expenses of the participants)&lt;br /&gt;
'''Please note''': The currency in Czech Republic is [http://en.wikipedia.org/wiki/Czech_crown crown] (CZK, koruna, Kč). 100 Czech crowns are about 4 Euros (see [http://www.cnb.cz/en/financial_markets/foreign_exchange_market/exchange_rate_fixing/daily.jsp current rates]).&lt;br /&gt;
&lt;br /&gt;
'''[http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague Accommodation in Prague]'''&lt;br /&gt;
&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Masarykova_Kolej_Hotel Masarykova Kolej Hotel]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_DAP Hotel DAP]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_Krystal Hotel Krystal]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Pension_Hanspaulka Pension Hanspaulka]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_Silenzio Hotel Silenzio]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Student_hostels_.28CTU.29 Student hostels (CTU)]&lt;br /&gt;
:* Special offer: ''sleeping for free in the kindergarten'' (30min by city urban mass transportation from the university campus, sleeping bag required, kitchen and WC available, no showers, in working days available only from 8 p.m. to 8 a.m.), contact [[User:Landa|Martin Landa]] for details&lt;br /&gt;
:* See also http://www.hotel.cz/praha-6/accommodation/&lt;br /&gt;
&lt;br /&gt;
Please let us know your time of arrival and leaving, so we can book for the accommodations and organize the logistics.&lt;br /&gt;
&lt;br /&gt;
Financial support: (partial) travel grants can be payed upon request thanks to our sponsors!&lt;br /&gt;
&lt;br /&gt;
== Weather and Common Item Prices ==&lt;br /&gt;
&lt;br /&gt;
* In May the weather in Prague is usually quite warm ([http://www.prague-spot.com/climate 15 or more degrees by day])&lt;br /&gt;
* A espresso coffee is about 20 CZK (80 cents), a beer (half of liter) in a common pub is around 25 CZK (1 euro), can be more in special pubs. In Prague you can have a full meal (see [http://en.wikipedia.org/wiki/Czech_cuisine Czech cuisine]) for still 75 - 150 CZK (3 - 6 euros), but beware of tourist restaurants, the price can easily rise. It's quite easy to find in Prague also Italian or Chinese restaurants.&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.&lt;br /&gt;
&lt;br /&gt;
Further details about the action items you '''find [[Talk:GRASS_Community_Sprint_Prague_2012|here]]''' and below. Topics cover non-technical, semi-technical, and technical issues.&lt;br /&gt;
&lt;br /&gt;
=== Timeline ===&lt;br /&gt;
&lt;br /&gt;
TODO: merge below entries from [[Talk:GRASS_Community_Sprint_Prague_2012]]&lt;br /&gt;
&lt;br /&gt;
==== Wednesday, 23 May ====&lt;br /&gt;
* 14:30: Kick-off in the Faculty of Civil Engineering, building B, room 367 (3rd floor, [http://geoinformatics.fsv.cvut.cz/gwiki/Where_you_can_find_us map])&lt;br /&gt;
* Participants presentation&lt;br /&gt;
&lt;br /&gt;
List of topics:&lt;br /&gt;
* various topics from the list: r.modis, add liblas support to OSGeo4W GRASS package ([http://wingrass.fsv.cvut.cz/grass64/ download])&lt;br /&gt;
* extension of Rtree to 4D, time series test script portability updates, ...&lt;br /&gt;
* see reports [[Talk:GRASS_Community_Sprint_Prague_2012|here]]&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.budvarkadejvice.cz Budvarka] near the university, see the [http://www.openstreetmap.org/?mlat=50.09824&amp;amp;mlon=14.3962&amp;amp;zoom=15&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Thursday, 24 May ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* Discuss role and current composition of GRASS-PSC&lt;br /&gt;
* Seminar by Sören Gebbert: &amp;quot;New time series management in GRASS 7&amp;quot; ([http://grass.osgeo.org/gdp/html_grass70/temporal.html manual])&lt;br /&gt;
* Starting work on v.in.geopaparazzi&lt;br /&gt;
* Discussion: Generate automated command statistics with g.parser (just module name)&lt;br /&gt;
* Discussion: adopting CMS for Web site - huge amount of work to change...&lt;br /&gt;
* Discussion: GSoC project discussion about the new GRASS Python API [http://grass.osgeo.org/wiki/GRASS_SoC_Ideas_2012/High_level_map_interaction#Weekly_reports] and milestones of the project&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.restaurant-uglaubicu.cz/ U Glaubiců] in the city center, see the [http://www.openstreetmap.org/?mlat=50.0876&amp;amp;mlon=14.4035&amp;amp;zoom=16&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
==== Friday, 25 May ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* wxGUI: save session commands into protocol&lt;br /&gt;
* test wxGUI digitizer&lt;br /&gt;
* visual guide to GRASS GIS usage&lt;br /&gt;
* fix v.in.mapgen&lt;br /&gt;
* improve italian translation&lt;br /&gt;
* Hunting bugs in the 3D raster library and implementing unit tests&lt;br /&gt;
* ...&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.hlucna-samota.cz/ Hlučná samota], see the [http://www.openstreetmap.org/?mlat=50.071600&amp;amp;mlon=14.436300&amp;amp;zoom=18&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
==== Saturday, 26 May ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* backport of wxGUI language selector (.bat file update yet missing for Windows)&lt;br /&gt;
* Lidar DEM based example added to {{cmd|r.lake}}&lt;br /&gt;
* Release of new {{AddonCmd|v.in.geopaparazzi}}&lt;br /&gt;
* implement saving list of executed commands in wxGUI - {{rev|51798}}&lt;br /&gt;
* Moving the ilist functionality from the vector library to the gis library [http://trac.osgeo.org/grass/changeset/51796]&lt;br /&gt;
* Implementation of correctly scaled time axes when exporting space time raster datasets as 3D raster maps representing space time voxel cubes [http://trac.osgeo.org/grass/changeset/51779]&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.restauraceztratynalezy.estranky.cz/ Ztráty a nálezy], see the [http://www.openstreetmap.org/?mlat=50.07836&amp;amp;mlon=14.43524&amp;amp;zoom=16&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
==== Sunday, 27 May ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* wxGUI about window issues - {{rev|51830}}&lt;br /&gt;
* 19:00: Dinner at restaurant [http://www.uveverky.com U Veverky], see the [http://www.openstreetmap.org/?mlat=50.09909&amp;amp;mlon=14.4022&amp;amp;zoom=16&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
==== Monday, 28 May ====&lt;br /&gt;
&lt;br /&gt;
* Last meeting&lt;br /&gt;
* Farewell and have a good trip home&lt;br /&gt;
&lt;br /&gt;
== Participation ==&lt;br /&gt;
&lt;br /&gt;
We are planning for attendance of 20 people (i.e., hacking places) but of course you are welcome to join us and bring new ideas with you, as more places are available. Please add your name here or contact [[User:Landa|Martin Landa]] &amp;lt;tt&amp;gt;&amp;lt;landa.martin at gmail.com&amp;gt;&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
=== In person ===&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:Landa|Martin Landa]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
|Toolbox concept, vector engine in GRASS 7, wxGUI, PostGIS Topology support&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:Neteler|Markus Neteler]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
|GRASS on Android, QGIS-Sextante-GRASS interface, high performance computing, g.cloud, singing &amp;amp; beer in pub, Toolbox, ...&lt;br /&gt;
| M + S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|[[User:Lucadelu|Luca Delucchi]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 20&lt;br /&gt;
| May 26&lt;br /&gt;
| r.modis, r.li.setup gui, v.in.geopaparazzi (only if andrea antonello comes to Prague)&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|[[User:moovida|Andrea Antonello]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 21/22&lt;br /&gt;
| May 25/26&lt;br /&gt;
| v.in.geopaparazzi, GRASS [[http://www.coulthard.org.uk/CAESAR.html Caesar model]] input module with Silvia, singing at the pub with Luca Delucchi and Peter Loewe&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[User:silli|Silvia Franceschi]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 21/22&lt;br /&gt;
| May 25/26&lt;br /&gt;
| GRASS [[http://www.coulthard.org.uk/CAESAR.html Caesar model]] input module&lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|[[User:peter.loewe|Peter Loewe]]&lt;br /&gt;
|Germany&lt;br /&gt;
| May 20/21&lt;br /&gt;
| May 25/26&lt;br /&gt;
| collecting beer-money while Luca and Andrea sing in pubs ; i.atcorr debugging ; g.cloud ? ; r.tsunami ? ; Tutorial/Documentation on g.infer &lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|[[User:Annakrat|Anna Kratochvilova]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
| imagery, wxGUI &lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|[[User:Wenzeslaus|Vaclav Petras]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
| imagery, wxGUI, Toolbox concept ?&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|[[User:Helena|Helena Mitasova]]&lt;br /&gt;
|USA&lt;br /&gt;
|May 21&lt;br /&gt;
|May 25/26&lt;br /&gt;
|toolbox concept, student sandbox, wxnviz z-scale, inventory of mobile and touch implementations, GRASS on-line and cloud&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|[[User:Huhabla|Sören Gebbert]]&lt;br /&gt;
|Germany&lt;br /&gt;
|May 20&lt;br /&gt;
|May 27&lt;br /&gt;
|Temporal GIS framework demo and discussion, Temporal GIS wxGUI and WPS integration, massive parallel computation of spatio-temporal datasets, Cloud computing &lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|[[User:Turek|Štěpán Turek]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
|May 20&lt;br /&gt;
|May 28&lt;br /&gt;
|v.net.* front end, WMS&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|12&lt;br /&gt;
|Radim Blažek&lt;br /&gt;
|Czech Republic&lt;br /&gt;
|May 24/25&lt;br /&gt;
|May 24/25&lt;br /&gt;
|QGIS interface&lt;br /&gt;
| -&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|13&lt;br /&gt;
|[[User:Pietro|Pietro Zambelli]]&lt;br /&gt;
|Italy&lt;br /&gt;
|May 23/24&lt;br /&gt;
|May 28/29&lt;br /&gt;
|GSoC2012: High level map interaction&lt;br /&gt;
| L&lt;br /&gt;
|-&lt;br /&gt;
|14&lt;br /&gt;
|Markus Metz&lt;br /&gt;
|Italy&lt;br /&gt;
|May 23&lt;br /&gt;
|May 26&lt;br /&gt;
|GRASS 7 everything&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|15&lt;br /&gt;
|[[User:NikosA|Nikos Alexandris]]&lt;br /&gt;
|Greece&lt;br /&gt;
|May 24&lt;br /&gt;
|May 27/28&lt;br /&gt;
|(wannabe) bughunter, assist documentation and tutorials&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|16&lt;br /&gt;
|[[User:MilenaN|Milena Nowotarska]]&lt;br /&gt;
|Poland&lt;br /&gt;
|May 23&lt;br /&gt;
|May 27&lt;br /&gt;
|translation, wxGUI&lt;br /&gt;
|S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|17&lt;br /&gt;
|[[User:Maxi71|Massimiliano Cannata]]&lt;br /&gt;
|Switzerland&lt;br /&gt;
|May 20&lt;br /&gt;
|May 24&lt;br /&gt;
|finalization and commit of a new grass addon module r.massmov, a physically based model to simulate the landslide ruonout velocity and deposit thickness&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|18&lt;br /&gt;
|Monia Molinari&lt;br /&gt;
|Switzerland&lt;br /&gt;
|May 20&lt;br /&gt;
|May 24&lt;br /&gt;
|finalization and commit of a new grass addon module r.massmov, a physically based model to simulate the landslide ruonout velocity and deposit thickness&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://freenode/grass #grass] on Freenode&lt;br /&gt;
&lt;br /&gt;
For details, see [[IRC]]&lt;br /&gt;
&lt;br /&gt;
=== Collaborative document scratching ===&lt;br /&gt;
&lt;br /&gt;
(Power) users from all over the world are kindly invited to assist with testing of new and existing functionality. To collect results and notes, we set up an interactive, collaborative editing tool which works in real-time:&lt;br /&gt;
&lt;br /&gt;
Please check http://titanpad.com/I51nq1SrNc&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 power connector adapter] if needed (Czech Republic: 230V, 50Hz, [http://en.wikipedia.org/wiki/File:Euro-Flachstecker_2.jpg Type C Europlugs] are common and also [http://en.wikipedia.org/wiki/File:French_plug_and_socket.jpg Type E])&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;
During the event :)&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
Also during the event :)&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* How was it last year?&lt;br /&gt;
** Very nice, see [[GRASS Community Sprint Prague 2011]]!&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:Landa|Martin Landa]] &amp;lt;tt&amp;gt;&amp;lt;landa.martin at gmail.com&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Workshops]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Prague_2012&amp;diff=15779</id>
		<title>GRASS Community Sprint Prague 2012</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Prague_2012&amp;diff=15779"/>
		<updated>2012-05-28T22:54:09Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Friday, 25 May */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The GRASS GIS team will organize a '''GRASS Developer and Power User Meeting, aka 'GRASS Community Sprint'''' from '''May 23 to May 28, 2012'''. The sprint is following the [http://foss4g-cee.org/ FOSS4G-CEE] &amp;amp; [http://geoinformatics.fsv.cvut.cz/gwiki/Geoinformatics_FCE_CTU_2012 Geoinformatics] ''(Free and Open Source Software for Geospatial in Central and East Europe)'', 21-23 May 2012, Czech Technical University in [http://en.wikipedia.org/wiki/Prague Prague], [http://en.wikipedia.org/wiki/Czech_Republic Czech Republic].&lt;br /&gt;
[[Image:community_sprint_prague2012.png|center|640px]]&lt;br /&gt;
'''Important dates:'''&lt;br /&gt;
&lt;br /&gt;
* 21 (Monday) - 23 (Wednesday) May 2012: [http://foss4g-cee.org/ FOSS4G-CEE &amp;amp; Geoinformatics conference]&lt;br /&gt;
&lt;br /&gt;
* '''23 (Wednesday) - 28 (Monday) May 2012: GRASS GIS Community Sprint''' @ [http://www.fsv.cvut.cz/ FCE CTU]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Grass-gis community sprint 2012 collage.jpg|center|500px]]&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
This second edition of the GRASS GIS community sprint 2012 is a great occasion for folks to support the development by actively contributing to the source code, manuals or likewise. The '''community''' sprint is a get-together for GRASS project members and supporters and related [http://www.osgeo.org/ OSGeo] projects to make decisions and tackle larger problems. 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.&lt;br /&gt;
&lt;br /&gt;
For this meeting, we welcome people committed to improving the GRASS GIS and related projects. This includes developers, document writers, wish and bug reporters, translators etc.&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
We welcome financial contributions to support the meeting and we are looking for sponsors to cover costs such as meals or 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/donation.php http://grass.osgeo.org/donation.php]'''&lt;br /&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 first 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;
We are grateful for the support which we have received to organize this GRASS Community Sprint:&lt;br /&gt;
&lt;br /&gt;
* remainder from the 2011 edition of the Community Sprint and small donations (via [http://www.gfoss.it/ GFOSS.it], the Italian OSGeo chapter) - 1400 Euro &lt;br /&gt;
* [http://www.osgeo.org/ Open Source Geospatial Foundation] (OSGeo) - 1000 Euro&lt;br /&gt;
* [http://www.fossgis.de/ FOSSGIS e.V.] - 1000 Euro&lt;br /&gt;
* Stefan Sylla, [http://sylla-consult.de/en/ sylla-consult], Frankfurt, Germany - 500 Euro&lt;br /&gt;
&lt;br /&gt;
== Timing  ==&lt;br /&gt;
&lt;br /&gt;
'''When''': Wednesday, May 23, 2012 (day of arrival) - Monday, May 28, 2012 (day of departure)&lt;br /&gt;
&lt;br /&gt;
Of course you are invited to join or leave the community sprint whenever you want.&lt;br /&gt;
&lt;br /&gt;
'''Duration''':&lt;br /&gt;
&lt;br /&gt;
* Wednesday is day of arrival&lt;br /&gt;
** First meeting in the evening (after the [http://foss4g-cee.org/ FOSS4G-CEE &amp;amp; Geoinfomatics conference]) to define the agenda&lt;br /&gt;
* Thursday to Sunday&lt;br /&gt;
** Full days&lt;br /&gt;
* Monday is day of departure&lt;br /&gt;
** Probably hacking for people with a flight later in the evening&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
[[Image:logo_cvut.jpg|130px|left]]&lt;br /&gt;
Department of Mapping and Cartography&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.fsv.cvut.cz Faculty of Civil Engineering]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.cvut.cz Czech Technical University in Prague], [http://en.wikipedia.org/wiki/Czech_Republic Czech Republic]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://geoinformatics.fsv.cvut.cz/gwiki/Room_B367 Room B367] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[http://geoinformatics.fsv.cvut.cz/gwiki/Where_you_can_find_us Location &amp;amp; Transportations]'''&lt;br /&gt;
&lt;br /&gt;
Prague has an international [http://www.prg.aero/en/ airport] and is also reachable by train, bus or car.&lt;br /&gt;
&lt;br /&gt;
== Accommodation and Costs ==&lt;br /&gt;
&lt;br /&gt;
Participants should plan for the following costs:&lt;br /&gt;
&lt;br /&gt;
* The participation is free of charge&lt;br /&gt;
* Travel to Prague, variable depending on where you come from&lt;br /&gt;
* Accommodation and meals (with the donated sponsorship money we will try to cover some expenses of the participants)&lt;br /&gt;
'''Please note''': The currency in Czech Republic is [http://en.wikipedia.org/wiki/Czech_crown crown] (CZK, koruna, Kč). 100 Czech crowns are about 4 Euros (see [http://www.cnb.cz/en/financial_markets/foreign_exchange_market/exchange_rate_fixing/daily.jsp current rates]).&lt;br /&gt;
&lt;br /&gt;
'''[http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague Accommodation in Prague]'''&lt;br /&gt;
&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Masarykova_Kolej_Hotel Masarykova Kolej Hotel]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_DAP Hotel DAP]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_Krystal Hotel Krystal]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Pension_Hanspaulka Pension Hanspaulka]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_Silenzio Hotel Silenzio]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Student_hostels_.28CTU.29 Student hostels (CTU)]&lt;br /&gt;
:* Special offer: ''sleeping for free in the kindergarten'' (30min by city urban mass transportation from the university campus, sleeping bag required, kitchen and WC available, no showers, in working days available only from 8 p.m. to 8 a.m.), contact [[User:Landa|Martin Landa]] for details&lt;br /&gt;
:* See also http://www.hotel.cz/praha-6/accommodation/&lt;br /&gt;
&lt;br /&gt;
Please let us know your time of arrival and leaving, so we can book for the accommodations and organize the logistics.&lt;br /&gt;
&lt;br /&gt;
Financial support: (partial) travel grants can be payed upon request thanks to our sponsors!&lt;br /&gt;
&lt;br /&gt;
== Weather and Common Item Prices ==&lt;br /&gt;
&lt;br /&gt;
* In May the weather in Prague is usually quite warm ([http://www.prague-spot.com/climate 15 or more degrees by day])&lt;br /&gt;
* A espresso coffee is about 20 CZK (80 cents), a beer (half of liter) in a common pub is around 25 CZK (1 euro), can be more in special pubs. In Prague you can have a full meal (see [http://en.wikipedia.org/wiki/Czech_cuisine Czech cuisine]) for still 75 - 150 CZK (3 - 6 euros), but beware of tourist restaurants, the price can easily rise. It's quite easy to find in Prague also Italian or Chinese restaurants.&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.&lt;br /&gt;
&lt;br /&gt;
Further details about the action items you '''find [[Talk:GRASS_Community_Sprint_Prague_2012|here]]''' and below. Topics cover non-technical, semi-technical, and technical issues.&lt;br /&gt;
&lt;br /&gt;
=== Timeline ===&lt;br /&gt;
&lt;br /&gt;
TODO: merge below entries from [[Talk:GRASS_Community_Sprint_Prague_2012]]&lt;br /&gt;
&lt;br /&gt;
==== Wednesday, 23 May ====&lt;br /&gt;
* 14:30: Kick-off in the Faculty of Civil Engineering, building B, room 367 (3rd floor, [http://geoinformatics.fsv.cvut.cz/gwiki/Where_you_can_find_us map])&lt;br /&gt;
* Participants presentation&lt;br /&gt;
&lt;br /&gt;
List of topics:&lt;br /&gt;
* various topics from the list: r.modis, add liblas support to OSGeo4W GRASS package ([http://wingrass.fsv.cvut.cz/grass64/ download])&lt;br /&gt;
* extension of Rtree to 4D, time series test script portability updates, ...&lt;br /&gt;
* see reports [[Talk:GRASS_Community_Sprint_Prague_2012|here]]&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.budvarkadejvice.cz Budvarka] near the university, see the [http://www.openstreetmap.org/?mlat=50.09824&amp;amp;mlon=14.3962&amp;amp;zoom=15&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Thursday, 24 May ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* Discuss role and current composition of GRASS-PSC&lt;br /&gt;
* Seminar by Sören Gebbert: &amp;quot;New time series management in GRASS 7&amp;quot; ([http://grass.osgeo.org/gdp/html_grass70/temporal.html manual])&lt;br /&gt;
* Starting work on v.in.geopaparazzi&lt;br /&gt;
* Discussion: Generate automated command statistics with g.parser (just module name)&lt;br /&gt;
* Discussion: adopting CMS for Web site - huge amount of work to change...&lt;br /&gt;
* Discussion: GSoC project discussion about the new GRASS Python API [http://grass.osgeo.org/wiki/GRASS_SoC_Ideas_2012/High_level_map_interaction#Weekly_reports] and milestones of the project&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.restaurant-uglaubicu.cz/ U Glaubiců] in the city center, see the [http://www.openstreetmap.org/?mlat=50.0876&amp;amp;mlon=14.4035&amp;amp;zoom=16&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
==== Friday, 25 May ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* wxGUI: save session commands into protocol&lt;br /&gt;
* test wxGUI digitizer&lt;br /&gt;
* visual guide to GRASS GIS usage&lt;br /&gt;
* fix v.in.mapgen&lt;br /&gt;
* improve italian translation&lt;br /&gt;
* Hunting bugs in the 3D raster library and implementing unit tests&lt;br /&gt;
* ...&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.hlucna-samota.cz/ Hlučná samota], see the [http://www.openstreetmap.org/?mlat=50.071600&amp;amp;mlon=14.436300&amp;amp;zoom=18&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
==== Saturday, 26 May ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* backport of wxGUI language selector (.bat file update yet missing for Windows)&lt;br /&gt;
* Lidar DEM based example added to {{cmd|r.lake}}&lt;br /&gt;
* Release of new {{AddonCmd|v.in.geopaparazzi}}&lt;br /&gt;
* implement saving list of executed commands in wxGUI - {{rev|51798}}&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.restauraceztratynalezy.estranky.cz/ Ztráty a nálezy], see the [http://www.openstreetmap.org/?mlat=50.07836&amp;amp;mlon=14.43524&amp;amp;zoom=16&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
==== Sunday, 27 May ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* wxGUI about window issues - {{rev|51830}}&lt;br /&gt;
* 19:00: Dinner at restaurant [http://www.uveverky.com U Veverky], see the [http://www.openstreetmap.org/?mlat=50.09909&amp;amp;mlon=14.4022&amp;amp;zoom=16&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
==== Monday, 28 May ====&lt;br /&gt;
&lt;br /&gt;
* Last meeting&lt;br /&gt;
* Farewell and have a good trip home&lt;br /&gt;
&lt;br /&gt;
== Participation ==&lt;br /&gt;
&lt;br /&gt;
We are planning for attendance of 20 people (i.e., hacking places) but of course you are welcome to join us and bring new ideas with you, as more places are available. Please add your name here or contact [[User:Landa|Martin Landa]] &amp;lt;tt&amp;gt;&amp;lt;landa.martin at gmail.com&amp;gt;&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
=== In person ===&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:Landa|Martin Landa]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
|Toolbox concept, vector engine in GRASS 7, wxGUI, PostGIS Topology support&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:Neteler|Markus Neteler]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
|GRASS on Android, QGIS-Sextante-GRASS interface, high performance computing, g.cloud, singing &amp;amp; beer in pub, Toolbox, ...&lt;br /&gt;
| M + S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|[[User:Lucadelu|Luca Delucchi]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 20&lt;br /&gt;
| May 26&lt;br /&gt;
| r.modis, r.li.setup gui, v.in.geopaparazzi (only if andrea antonello comes to Prague)&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|[[User:moovida|Andrea Antonello]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 21/22&lt;br /&gt;
| May 25/26&lt;br /&gt;
| v.in.geopaparazzi, GRASS [[http://www.coulthard.org.uk/CAESAR.html Caesar model]] input module with Silvia, singing at the pub with Luca Delucchi and Peter Loewe&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[User:silli|Silvia Franceschi]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 21/22&lt;br /&gt;
| May 25/26&lt;br /&gt;
| GRASS [[http://www.coulthard.org.uk/CAESAR.html Caesar model]] input module&lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|[[User:peter.loewe|Peter Loewe]]&lt;br /&gt;
|Germany&lt;br /&gt;
| May 20/21&lt;br /&gt;
| May 25/26&lt;br /&gt;
| collecting beer-money while Luca and Andrea sing in pubs ; i.atcorr debugging ; g.cloud ? ; r.tsunami ? ; Tutorial/Documentation on g.infer &lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|[[User:Annakrat|Anna Kratochvilova]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
| imagery, wxGUI &lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|[[User:Wenzeslaus|Vaclav Petras]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
| imagery, wxGUI, Toolbox concept ?&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|[[User:Helena|Helena Mitasova]]&lt;br /&gt;
|USA&lt;br /&gt;
|May 21&lt;br /&gt;
|May 25/26&lt;br /&gt;
|toolbox concept, student sandbox, wxnviz z-scale, inventory of mobile and touch implementations, GRASS on-line and cloud&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|[[User:Huhabla|Sören Gebbert]]&lt;br /&gt;
|Germany&lt;br /&gt;
|May 20&lt;br /&gt;
|May 27&lt;br /&gt;
|Temporal GIS framework demo and discussion, Temporal GIS wxGUI and WPS integration, massive parallel computation of spatio-temporal datasets, Cloud computing &lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|[[User:Turek|Štěpán Turek]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
|May 20&lt;br /&gt;
|May 28&lt;br /&gt;
|v.net.* front end, WMS&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|12&lt;br /&gt;
|Radim Blažek&lt;br /&gt;
|Czech Republic&lt;br /&gt;
|May 24/25&lt;br /&gt;
|May 24/25&lt;br /&gt;
|QGIS interface&lt;br /&gt;
| -&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|13&lt;br /&gt;
|[[User:Pietro|Pietro Zambelli]]&lt;br /&gt;
|Italy&lt;br /&gt;
|May 23/24&lt;br /&gt;
|May 28/29&lt;br /&gt;
|GSoC2012: High level map interaction&lt;br /&gt;
| L&lt;br /&gt;
|-&lt;br /&gt;
|14&lt;br /&gt;
|Markus Metz&lt;br /&gt;
|Italy&lt;br /&gt;
|May 23&lt;br /&gt;
|May 26&lt;br /&gt;
|GRASS 7 everything&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|15&lt;br /&gt;
|[[User:NikosA|Nikos Alexandris]]&lt;br /&gt;
|Greece&lt;br /&gt;
|May 24&lt;br /&gt;
|May 27/28&lt;br /&gt;
|(wannabe) bughunter, assist documentation and tutorials&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|16&lt;br /&gt;
|[[User:MilenaN|Milena Nowotarska]]&lt;br /&gt;
|Poland&lt;br /&gt;
|May 23&lt;br /&gt;
|May 27&lt;br /&gt;
|translation, wxGUI&lt;br /&gt;
|S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|17&lt;br /&gt;
|[[User:Maxi71|Massimiliano Cannata]]&lt;br /&gt;
|Switzerland&lt;br /&gt;
|May 20&lt;br /&gt;
|May 24&lt;br /&gt;
|finalization and commit of a new grass addon module r.massmov, a physically based model to simulate the landslide ruonout velocity and deposit thickness&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|18&lt;br /&gt;
|Monia Molinari&lt;br /&gt;
|Switzerland&lt;br /&gt;
|May 20&lt;br /&gt;
|May 24&lt;br /&gt;
|finalization and commit of a new grass addon module r.massmov, a physically based model to simulate the landslide ruonout velocity and deposit thickness&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://freenode/grass #grass] on Freenode&lt;br /&gt;
&lt;br /&gt;
For details, see [[IRC]]&lt;br /&gt;
&lt;br /&gt;
=== Collaborative document scratching ===&lt;br /&gt;
&lt;br /&gt;
(Power) users from all over the world are kindly invited to assist with testing of new and existing functionality. To collect results and notes, we set up an interactive, collaborative editing tool which works in real-time:&lt;br /&gt;
&lt;br /&gt;
Please check http://titanpad.com/I51nq1SrNc&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 power connector adapter] if needed (Czech Republic: 230V, 50Hz, [http://en.wikipedia.org/wiki/File:Euro-Flachstecker_2.jpg Type C Europlugs] are common and also [http://en.wikipedia.org/wiki/File:French_plug_and_socket.jpg Type E])&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;
During the event :)&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
Also during the event :)&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* How was it last year?&lt;br /&gt;
** Very nice, see [[GRASS Community Sprint Prague 2011]]!&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:Landa|Martin Landa]] &amp;lt;tt&amp;gt;&amp;lt;landa.martin at gmail.com&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Workshops]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Prague_2012&amp;diff=15778</id>
		<title>GRASS Community Sprint Prague 2012</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Prague_2012&amp;diff=15778"/>
		<updated>2012-05-28T22:52:38Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Thursday, 24 May */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The GRASS GIS team will organize a '''GRASS Developer and Power User Meeting, aka 'GRASS Community Sprint'''' from '''May 23 to May 28, 2012'''. The sprint is following the [http://foss4g-cee.org/ FOSS4G-CEE] &amp;amp; [http://geoinformatics.fsv.cvut.cz/gwiki/Geoinformatics_FCE_CTU_2012 Geoinformatics] ''(Free and Open Source Software for Geospatial in Central and East Europe)'', 21-23 May 2012, Czech Technical University in [http://en.wikipedia.org/wiki/Prague Prague], [http://en.wikipedia.org/wiki/Czech_Republic Czech Republic].&lt;br /&gt;
[[Image:community_sprint_prague2012.png|center|640px]]&lt;br /&gt;
'''Important dates:'''&lt;br /&gt;
&lt;br /&gt;
* 21 (Monday) - 23 (Wednesday) May 2012: [http://foss4g-cee.org/ FOSS4G-CEE &amp;amp; Geoinformatics conference]&lt;br /&gt;
&lt;br /&gt;
* '''23 (Wednesday) - 28 (Monday) May 2012: GRASS GIS Community Sprint''' @ [http://www.fsv.cvut.cz/ FCE CTU]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Grass-gis community sprint 2012 collage.jpg|center|500px]]&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
This second edition of the GRASS GIS community sprint 2012 is a great occasion for folks to support the development by actively contributing to the source code, manuals or likewise. The '''community''' sprint is a get-together for GRASS project members and supporters and related [http://www.osgeo.org/ OSGeo] projects to make decisions and tackle larger problems. 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.&lt;br /&gt;
&lt;br /&gt;
For this meeting, we welcome people committed to improving the GRASS GIS and related projects. This includes developers, document writers, wish and bug reporters, translators etc.&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
We welcome financial contributions to support the meeting and we are looking for sponsors to cover costs such as meals or 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/donation.php http://grass.osgeo.org/donation.php]'''&lt;br /&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 first 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;
We are grateful for the support which we have received to organize this GRASS Community Sprint:&lt;br /&gt;
&lt;br /&gt;
* remainder from the 2011 edition of the Community Sprint and small donations (via [http://www.gfoss.it/ GFOSS.it], the Italian OSGeo chapter) - 1400 Euro &lt;br /&gt;
* [http://www.osgeo.org/ Open Source Geospatial Foundation] (OSGeo) - 1000 Euro&lt;br /&gt;
* [http://www.fossgis.de/ FOSSGIS e.V.] - 1000 Euro&lt;br /&gt;
* Stefan Sylla, [http://sylla-consult.de/en/ sylla-consult], Frankfurt, Germany - 500 Euro&lt;br /&gt;
&lt;br /&gt;
== Timing  ==&lt;br /&gt;
&lt;br /&gt;
'''When''': Wednesday, May 23, 2012 (day of arrival) - Monday, May 28, 2012 (day of departure)&lt;br /&gt;
&lt;br /&gt;
Of course you are invited to join or leave the community sprint whenever you want.&lt;br /&gt;
&lt;br /&gt;
'''Duration''':&lt;br /&gt;
&lt;br /&gt;
* Wednesday is day of arrival&lt;br /&gt;
** First meeting in the evening (after the [http://foss4g-cee.org/ FOSS4G-CEE &amp;amp; Geoinfomatics conference]) to define the agenda&lt;br /&gt;
* Thursday to Sunday&lt;br /&gt;
** Full days&lt;br /&gt;
* Monday is day of departure&lt;br /&gt;
** Probably hacking for people with a flight later in the evening&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
[[Image:logo_cvut.jpg|130px|left]]&lt;br /&gt;
Department of Mapping and Cartography&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.fsv.cvut.cz Faculty of Civil Engineering]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.cvut.cz Czech Technical University in Prague], [http://en.wikipedia.org/wiki/Czech_Republic Czech Republic]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://geoinformatics.fsv.cvut.cz/gwiki/Room_B367 Room B367] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[http://geoinformatics.fsv.cvut.cz/gwiki/Where_you_can_find_us Location &amp;amp; Transportations]'''&lt;br /&gt;
&lt;br /&gt;
Prague has an international [http://www.prg.aero/en/ airport] and is also reachable by train, bus or car.&lt;br /&gt;
&lt;br /&gt;
== Accommodation and Costs ==&lt;br /&gt;
&lt;br /&gt;
Participants should plan for the following costs:&lt;br /&gt;
&lt;br /&gt;
* The participation is free of charge&lt;br /&gt;
* Travel to Prague, variable depending on where you come from&lt;br /&gt;
* Accommodation and meals (with the donated sponsorship money we will try to cover some expenses of the participants)&lt;br /&gt;
'''Please note''': The currency in Czech Republic is [http://en.wikipedia.org/wiki/Czech_crown crown] (CZK, koruna, Kč). 100 Czech crowns are about 4 Euros (see [http://www.cnb.cz/en/financial_markets/foreign_exchange_market/exchange_rate_fixing/daily.jsp current rates]).&lt;br /&gt;
&lt;br /&gt;
'''[http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague Accommodation in Prague]'''&lt;br /&gt;
&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Masarykova_Kolej_Hotel Masarykova Kolej Hotel]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_DAP Hotel DAP]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_Krystal Hotel Krystal]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Pension_Hanspaulka Pension Hanspaulka]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_Silenzio Hotel Silenzio]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Student_hostels_.28CTU.29 Student hostels (CTU)]&lt;br /&gt;
:* Special offer: ''sleeping for free in the kindergarten'' (30min by city urban mass transportation from the university campus, sleeping bag required, kitchen and WC available, no showers, in working days available only from 8 p.m. to 8 a.m.), contact [[User:Landa|Martin Landa]] for details&lt;br /&gt;
:* See also http://www.hotel.cz/praha-6/accommodation/&lt;br /&gt;
&lt;br /&gt;
Please let us know your time of arrival and leaving, so we can book for the accommodations and organize the logistics.&lt;br /&gt;
&lt;br /&gt;
Financial support: (partial) travel grants can be payed upon request thanks to our sponsors!&lt;br /&gt;
&lt;br /&gt;
== Weather and Common Item Prices ==&lt;br /&gt;
&lt;br /&gt;
* In May the weather in Prague is usually quite warm ([http://www.prague-spot.com/climate 15 or more degrees by day])&lt;br /&gt;
* A espresso coffee is about 20 CZK (80 cents), a beer (half of liter) in a common pub is around 25 CZK (1 euro), can be more in special pubs. In Prague you can have a full meal (see [http://en.wikipedia.org/wiki/Czech_cuisine Czech cuisine]) for still 75 - 150 CZK (3 - 6 euros), but beware of tourist restaurants, the price can easily rise. It's quite easy to find in Prague also Italian or Chinese restaurants.&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.&lt;br /&gt;
&lt;br /&gt;
Further details about the action items you '''find [[Talk:GRASS_Community_Sprint_Prague_2012|here]]''' and below. Topics cover non-technical, semi-technical, and technical issues.&lt;br /&gt;
&lt;br /&gt;
=== Timeline ===&lt;br /&gt;
&lt;br /&gt;
TODO: merge below entries from [[Talk:GRASS_Community_Sprint_Prague_2012]]&lt;br /&gt;
&lt;br /&gt;
==== Wednesday, 23 May ====&lt;br /&gt;
* 14:30: Kick-off in the Faculty of Civil Engineering, building B, room 367 (3rd floor, [http://geoinformatics.fsv.cvut.cz/gwiki/Where_you_can_find_us map])&lt;br /&gt;
* Participants presentation&lt;br /&gt;
&lt;br /&gt;
List of topics:&lt;br /&gt;
* various topics from the list: r.modis, add liblas support to OSGeo4W GRASS package ([http://wingrass.fsv.cvut.cz/grass64/ download])&lt;br /&gt;
* extension of Rtree to 4D, time series test script portability updates, ...&lt;br /&gt;
* see reports [[Talk:GRASS_Community_Sprint_Prague_2012|here]]&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.budvarkadejvice.cz Budvarka] near the university, see the [http://www.openstreetmap.org/?mlat=50.09824&amp;amp;mlon=14.3962&amp;amp;zoom=15&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Thursday, 24 May ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* Discuss role and current composition of GRASS-PSC&lt;br /&gt;
* Seminar by Sören Gebbert: &amp;quot;New time series management in GRASS 7&amp;quot; ([http://grass.osgeo.org/gdp/html_grass70/temporal.html manual])&lt;br /&gt;
* Starting work on v.in.geopaparazzi&lt;br /&gt;
* Discussion: Generate automated command statistics with g.parser (just module name)&lt;br /&gt;
* Discussion: adopting CMS for Web site - huge amount of work to change...&lt;br /&gt;
* Discussion: GSoC project discussion about the new GRASS Python API [http://grass.osgeo.org/wiki/GRASS_SoC_Ideas_2012/High_level_map_interaction#Weekly_reports] and milestones of the project&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.restaurant-uglaubicu.cz/ U Glaubiců] in the city center, see the [http://www.openstreetmap.org/?mlat=50.0876&amp;amp;mlon=14.4035&amp;amp;zoom=16&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
==== Friday, 25 May ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* wxGUI: save session commands into protocol&lt;br /&gt;
* test wxGUI digitizer&lt;br /&gt;
* visual guide to GRASS GIS usage&lt;br /&gt;
* fix v.in.mapgen&lt;br /&gt;
* improve italian translation&lt;br /&gt;
* ...&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.hlucna-samota.cz/ Hlučná samota], see the [http://www.openstreetmap.org/?mlat=50.071600&amp;amp;mlon=14.436300&amp;amp;zoom=18&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
==== Saturday, 26 May ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* backport of wxGUI language selector (.bat file update yet missing for Windows)&lt;br /&gt;
* Lidar DEM based example added to {{cmd|r.lake}}&lt;br /&gt;
* Release of new {{AddonCmd|v.in.geopaparazzi}}&lt;br /&gt;
* implement saving list of executed commands in wxGUI - {{rev|51798}}&lt;br /&gt;
* 20:00: Dinner at restaurant [http://www.restauraceztratynalezy.estranky.cz/ Ztráty a nálezy], see the [http://www.openstreetmap.org/?mlat=50.07836&amp;amp;mlon=14.43524&amp;amp;zoom=16&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
==== Sunday, 27 May ====&lt;br /&gt;
&lt;br /&gt;
* 9:00-evening&lt;br /&gt;
* wxGUI about window issues - {{rev|51830}}&lt;br /&gt;
* 19:00: Dinner at restaurant [http://www.uveverky.com U Veverky], see the [http://www.openstreetmap.org/?mlat=50.09909&amp;amp;mlon=14.4022&amp;amp;zoom=16&amp;amp;layers=M map]&lt;br /&gt;
&lt;br /&gt;
==== Monday, 28 May ====&lt;br /&gt;
&lt;br /&gt;
* Last meeting&lt;br /&gt;
* Farewell and have a good trip home&lt;br /&gt;
&lt;br /&gt;
== Participation ==&lt;br /&gt;
&lt;br /&gt;
We are planning for attendance of 20 people (i.e., hacking places) but of course you are welcome to join us and bring new ideas with you, as more places are available. Please add your name here or contact [[User:Landa|Martin Landa]] &amp;lt;tt&amp;gt;&amp;lt;landa.martin at gmail.com&amp;gt;&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
=== In person ===&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:Landa|Martin Landa]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
|Toolbox concept, vector engine in GRASS 7, wxGUI, PostGIS Topology support&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:Neteler|Markus Neteler]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
|GRASS on Android, QGIS-Sextante-GRASS interface, high performance computing, g.cloud, singing &amp;amp; beer in pub, Toolbox, ...&lt;br /&gt;
| M + S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|[[User:Lucadelu|Luca Delucchi]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 20&lt;br /&gt;
| May 26&lt;br /&gt;
| r.modis, r.li.setup gui, v.in.geopaparazzi (only if andrea antonello comes to Prague)&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|[[User:moovida|Andrea Antonello]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 21/22&lt;br /&gt;
| May 25/26&lt;br /&gt;
| v.in.geopaparazzi, GRASS [[http://www.coulthard.org.uk/CAESAR.html Caesar model]] input module with Silvia, singing at the pub with Luca Delucchi and Peter Loewe&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[User:silli|Silvia Franceschi]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 21/22&lt;br /&gt;
| May 25/26&lt;br /&gt;
| GRASS [[http://www.coulthard.org.uk/CAESAR.html Caesar model]] input module&lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|[[User:peter.loewe|Peter Loewe]]&lt;br /&gt;
|Germany&lt;br /&gt;
| May 20/21&lt;br /&gt;
| May 25/26&lt;br /&gt;
| collecting beer-money while Luca and Andrea sing in pubs ; i.atcorr debugging ; g.cloud ? ; r.tsunami ? ; Tutorial/Documentation on g.infer &lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|[[User:Annakrat|Anna Kratochvilova]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
| imagery, wxGUI &lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|[[User:Wenzeslaus|Vaclav Petras]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
| imagery, wxGUI, Toolbox concept ?&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|[[User:Helena|Helena Mitasova]]&lt;br /&gt;
|USA&lt;br /&gt;
|May 21&lt;br /&gt;
|May 25/26&lt;br /&gt;
|toolbox concept, student sandbox, wxnviz z-scale, inventory of mobile and touch implementations, GRASS on-line and cloud&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|[[User:Huhabla|Sören Gebbert]]&lt;br /&gt;
|Germany&lt;br /&gt;
|May 20&lt;br /&gt;
|May 27&lt;br /&gt;
|Temporal GIS framework demo and discussion, Temporal GIS wxGUI and WPS integration, massive parallel computation of spatio-temporal datasets, Cloud computing &lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|[[User:Turek|Štěpán Turek]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
|May 20&lt;br /&gt;
|May 28&lt;br /&gt;
|v.net.* front end, WMS&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|12&lt;br /&gt;
|Radim Blažek&lt;br /&gt;
|Czech Republic&lt;br /&gt;
|May 24/25&lt;br /&gt;
|May 24/25&lt;br /&gt;
|QGIS interface&lt;br /&gt;
| -&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|13&lt;br /&gt;
|[[User:Pietro|Pietro Zambelli]]&lt;br /&gt;
|Italy&lt;br /&gt;
|May 23/24&lt;br /&gt;
|May 28/29&lt;br /&gt;
|GSoC2012: High level map interaction&lt;br /&gt;
| L&lt;br /&gt;
|-&lt;br /&gt;
|14&lt;br /&gt;
|Markus Metz&lt;br /&gt;
|Italy&lt;br /&gt;
|May 23&lt;br /&gt;
|May 26&lt;br /&gt;
|GRASS 7 everything&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|15&lt;br /&gt;
|[[User:NikosA|Nikos Alexandris]]&lt;br /&gt;
|Greece&lt;br /&gt;
|May 24&lt;br /&gt;
|May 27/28&lt;br /&gt;
|(wannabe) bughunter, assist documentation and tutorials&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|16&lt;br /&gt;
|[[User:MilenaN|Milena Nowotarska]]&lt;br /&gt;
|Poland&lt;br /&gt;
|May 23&lt;br /&gt;
|May 27&lt;br /&gt;
|translation, wxGUI&lt;br /&gt;
|S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|17&lt;br /&gt;
|[[User:Maxi71|Massimiliano Cannata]]&lt;br /&gt;
|Switzerland&lt;br /&gt;
|May 20&lt;br /&gt;
|May 24&lt;br /&gt;
|finalization and commit of a new grass addon module r.massmov, a physically based model to simulate the landslide ruonout velocity and deposit thickness&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|18&lt;br /&gt;
|Monia Molinari&lt;br /&gt;
|Switzerland&lt;br /&gt;
|May 20&lt;br /&gt;
|May 24&lt;br /&gt;
|finalization and commit of a new grass addon module r.massmov, a physically based model to simulate the landslide ruonout velocity and deposit thickness&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://freenode/grass #grass] on Freenode&lt;br /&gt;
&lt;br /&gt;
For details, see [[IRC]]&lt;br /&gt;
&lt;br /&gt;
=== Collaborative document scratching ===&lt;br /&gt;
&lt;br /&gt;
(Power) users from all over the world are kindly invited to assist with testing of new and existing functionality. To collect results and notes, we set up an interactive, collaborative editing tool which works in real-time:&lt;br /&gt;
&lt;br /&gt;
Please check http://titanpad.com/I51nq1SrNc&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 power connector adapter] if needed (Czech Republic: 230V, 50Hz, [http://en.wikipedia.org/wiki/File:Euro-Flachstecker_2.jpg Type C Europlugs] are common and also [http://en.wikipedia.org/wiki/File:French_plug_and_socket.jpg Type E])&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;
During the event :)&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
Also during the event :)&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* How was it last year?&lt;br /&gt;
** Very nice, see [[GRASS Community Sprint Prague 2011]]!&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:Landa|Martin Landa]] &amp;lt;tt&amp;gt;&amp;lt;landa.martin at gmail.com&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Workshops]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Toolboxes&amp;diff=15777</id>
		<title>Toolboxes</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Toolboxes&amp;diff=15777"/>
		<updated>2012-05-28T22:44:44Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== New toolbox approach discussed at the GRASS Community Code Sprint in Prag 2012 ===&lt;br /&gt;
&lt;br /&gt;
At the community sprint in Prague 2012 the toolbox approach with different repositories as well as the approach using &amp;quot;--with-toolbox/--without-toolbox&amp;quot; configure statements at compile time have been discussed. The major drawback of these solutions is the their complexity and the problem of cross dependencies between modules. &lt;br /&gt;
&lt;br /&gt;
A new approach has been suggested using XML files to describe toolboxes and special directory structure to hide unneeded modules from the user.&lt;br /&gt;
&lt;br /&gt;
The idea is to have a binary directory containing only modules that are listed in a XML file that defines what core modules should be available and what toolboxes should be used. The XML file will be used by the GUI to create menu listings for the selected modules. All modules that are deactivated in the XML file will be held in a directory that is not available in the users binary path, but in the binary search path of modules. Hence unneeded modules are invisible at the command line and in the GUI, but still available for modules that might call other modules.&lt;br /&gt;
&lt;br /&gt;
New toolboxes and core modules can be simply added to the search path and the GUI by editing the XML definition and calling g.extension. The module g.extension will simply links/copy the hidden modules into the binary directory that is visible by the user or move deselected modules in the hidden directory. The GUI will always analyzes the XML toolbox configuration file for menu generation. &lt;br /&gt;
&lt;br /&gt;
The configuration XML file will include a list of core modules for general, raster, image, voxel and vector processing as well as the definition of toolboxes. Toolboxes are defined by their type (raster, vector, ...) a short description and a list of modules. Modules can be defined in several different toolboxes. &lt;br /&gt;
&lt;br /&gt;
The GRASS development team should provide several pre-defined XML toolbox configuration files as for hydrological modeling, vector processing, terrain modeling, image analysis, ..., and WPS server. &lt;br /&gt;
&lt;br /&gt;
Using this approach the repository structure must not be changed. The build system has to be modified to use the XML toolbox file to decide where to copy the binary modules and scripts. g.extension has to be extended to link/copy selected modules in the users binary search path and to remove modules from them. GRASS will be build as usual.&lt;br /&gt;
&lt;br /&gt;
=== Original approach ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* See [http://lists.osgeo.org/pipermail/grass-dev/2010-April/050210.html original post by Jarosław Jasiewicz]&lt;br /&gt;
&lt;br /&gt;
* Discussion about the suitability of the proposed change on the [[Talk:GRASS_repository_layout_proposal|talk]] side of this wiki page; discussion of the possible method on this side of the page.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hi all!&lt;br /&gt;
&lt;br /&gt;
That rather radical ideas I present here are rather for future, at least for GRASS 8,&lt;br /&gt;
but I'd like present it now for long-term reflection.&lt;br /&gt;
&lt;br /&gt;
Probably all notice that for over two years there is big increase in add-on repository&lt;br /&gt;
(including me). There are modules of different quality: from fully GRASS toolsets,&lt;br /&gt;
to shell or python scripts, from  actively developed tools to abandoned,&lt;br /&gt;
from all-purpose tools to very specialized etc. I also think that that activity&lt;br /&gt;
will be grown due to substitute shell script by python&lt;br /&gt;
&lt;br /&gt;
Similar situation is in main GRASS branch: there are modules for all like conversion tools,&lt;br /&gt;
interpolation methods, georeferencing etc, and very specialized modules for very limited&lt;br /&gt;
group of users (like wild fire), there are also some modules out of date.&lt;br /&gt;
&lt;br /&gt;
I'm not enthusiastic about moving new modules into main branch. Almost every module has&lt;br /&gt;
different coding style and it will lasting in future that GRASS would be difficult to maintain.&lt;br /&gt;
On the other hand some people complains that some interesting modules are only available as&lt;br /&gt;
add-ons (I assume for some reasons they cannot install it)&lt;br /&gt;
&lt;br /&gt;
So my suggestion is to rearrange future GRASS form two layers (main branch/add-on) into&lt;br /&gt;
three layers architecture:&lt;br /&gt;
&lt;br /&gt;
1) GRASS core layer: much limited limited than now, only GIS environment and basic,&lt;br /&gt;
all-puropse tools, slow changes, great stability&lt;br /&gt;
2) GRASS toolset layer: oficcial GRASS thematic tools and toolsets (like terrain analysis,&lt;br /&gt;
hydrological analysis, photo-interpretation, landscape analysis etc,) every toolset with its&lt;br /&gt;
maintainer, rapid development, new ready to use tools after quality control may appear here,&lt;br /&gt;
also some of current main branch tool shall be moved to that layer&lt;br /&gt;
3) GRASS community layer:  everything else like experimental, actively development new tools,&lt;br /&gt;
that what do not pass quality control, simple scripts, etc....&lt;br /&gt;
&lt;br /&gt;
What benefits:&lt;br /&gt;
for developers and contributors: much clear situation and better publication path.&lt;br /&gt;
Toolset layer should be much more open for new tools than current GRASS main branch&lt;br /&gt;
&lt;br /&gt;
for users: faster access to new tools.&lt;br /&gt;
There is no doubt that new tools are faster developed (less risk) than GRASS core&lt;br /&gt;
Binaries with toolsets could be maintained as separate apt/urpmi/pacman/yum/exe etc packages,&lt;br /&gt;
so it may appear in linux repository separetly form GRASS core.&lt;br /&gt;
&lt;br /&gt;
There is only loose ideas. Most of them are of course taken from R (core/toolsets/rest of packages;&lt;br /&gt;
separate core and package development) but I think it is worth of some discuss ...&lt;br /&gt;
&lt;br /&gt;
regards&lt;br /&gt;
Jarek&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
__TOC__&lt;br /&gt;
== Repository layout ==&lt;br /&gt;
=== Current repository layout ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
- grass&lt;br /&gt;
|- trunk&lt;br /&gt;
 |- raster/&lt;br /&gt;
 |- vector/&lt;br /&gt;
 |- ...&lt;br /&gt;
&lt;br /&gt;
- grass-addons&lt;br /&gt;
|- raster/&lt;br /&gt;
|- vector/&lt;br /&gt;
|- ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Proposed repository layout ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
- grass&lt;br /&gt;
|- trunk&lt;br /&gt;
 |- raster/&lt;br /&gt;
 |- vector/&lt;br /&gt;
 |- ...&lt;br /&gt;
&lt;br /&gt;
- grass-tools&lt;br /&gt;
|- trunk&lt;br /&gt;
 |- raster/&lt;br /&gt;
 |- vector/&lt;br /&gt;
 |- ...&lt;br /&gt;
&lt;br /&gt;
- grass-addons&lt;br /&gt;
|- raster/&lt;br /&gt;
|- vector/&lt;br /&gt;
|- ...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Proposed toolboxes ==&lt;br /&gt;
&lt;br /&gt;
'''Toolbox''' is a topic-based set of modules used for solving common GIS analysis, like hydrology, networking, LRS, etc.&lt;br /&gt;
&lt;br /&gt;
=== Managing toolboxes ===&lt;br /&gt;
&lt;br /&gt;
{{cmd|g.extension|version=70}} is designed to manage locally installed GRASS [[Addons]]. It allows to install single addons modules and also toolboxes (flag &amp;lt;code&amp;gt;-t&amp;lt;/code&amp;gt;). Note that toolbox support is '''experimental'''.&lt;br /&gt;
&lt;br /&gt;
* list available toolboxes&lt;br /&gt;
&lt;br /&gt;
 g.extension -tl&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
List of available extensions (toolboxes):&lt;br /&gt;
Hydrology (HY)&lt;br /&gt;
* r.stream.basins&lt;br /&gt;
* r.stream.channel&lt;br /&gt;
* r.stream.distance&lt;br /&gt;
* r.stream.extract&lt;br /&gt;
* r.stream.order&lt;br /&gt;
* r.stream.segment&lt;br /&gt;
* r.stream.slope&lt;br /&gt;
* r.stream.snap&lt;br /&gt;
* r.stream.stats&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* list available modules from [[Addons]]&lt;br /&gt;
&lt;br /&gt;
 g.extension -l&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
List of available extensions (modules):&lt;br /&gt;
...&lt;br /&gt;
r.stream.slope&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* install new toolbox (&amp;quot;Hydrology&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
 g.extension -t extension=HY&lt;br /&gt;
&lt;br /&gt;
* install single module from &amp;quot;Hydrology&amp;quot; toolbox&lt;br /&gt;
&lt;br /&gt;
 g.extension extension=r.stream.slope&lt;br /&gt;
&lt;br /&gt;
Module {{cmd|g.extension|version=70}} also allows to list installed extensions&lt;br /&gt;
&lt;br /&gt;
* toolboxes&lt;br /&gt;
&lt;br /&gt;
 g.extension -ta&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
List of installed extensions (toolboxes):&lt;br /&gt;
HY&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* or modules&lt;br /&gt;
&lt;br /&gt;
 g.extension -a&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
List of installed extensions (modules):&lt;br /&gt;
r.stream.basins&lt;br /&gt;
r.stream.channel&lt;br /&gt;
r.stream.distance&lt;br /&gt;
r.stream.extract&lt;br /&gt;
r.stream.order&lt;br /&gt;
r.stream.segment&lt;br /&gt;
r.stream.slope&lt;br /&gt;
r.stream.snap&lt;br /&gt;
r.stream.stats&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* remove locally installed toolbox&lt;br /&gt;
&lt;br /&gt;
 g.extension -ft extension=HY operation=remove&lt;br /&gt;
&lt;br /&gt;
* remove single module&lt;br /&gt;
&lt;br /&gt;
 g.extension -f extension=r.stream.slope operation=remove&lt;br /&gt;
&lt;br /&gt;
=== List of toolboxes ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|'''Toolbox name''' || '''Toolbox code''' || '''Description'''||'''Correlate toolbox'''&lt;br /&gt;
|-&lt;br /&gt;
| ''3D Raster''&lt;br /&gt;
| R3&lt;br /&gt;
| All `r3.*` modules&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ''3D Visualization''&lt;br /&gt;
| V3&lt;br /&gt;
| {{cmd|nviz_cmd|version=70}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ''Atmospheric tools''&lt;br /&gt;
| AT&lt;br /&gt;
| Subset of image processing tool&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ''Cartography''&lt;br /&gt;
| CA&lt;br /&gt;
| {{cmd|ps.map|version=70}}, {{AddonCmd|ps.output}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ''Database''&lt;br /&gt;
| DB&lt;br /&gt;
| All `db.*` modules&lt;br /&gt;
| ''Vector analysis''&lt;br /&gt;
|-&lt;br /&gt;
| ''Geostatistcal''&lt;br /&gt;
| GS&lt;br /&gt;
| {{cmd|v.krige|version=70}} maybe other&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ''GUI''&lt;br /&gt;
| GI&lt;br /&gt;
| [[wxGUI]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ''Hydrology''&lt;br /&gt;
| HY&lt;br /&gt;
| {{cmd|r.watershed|version=70}}, {{cmd|r.terraflow|version=70}}, `r.stream.*` modules in addons, maybe other, r.flow, r.sim.water, r.sim.sediment&lt;br /&gt;
| ''Raster analysis''&lt;br /&gt;
|-&lt;br /&gt;
| ''Image Processing''&lt;br /&gt;
| IM&lt;br /&gt;
| All `i.*` modules, selected r.* modules&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ''Interoperability tools''&lt;br /&gt;
| IO&lt;br /&gt;
| All the various import/export modules except for GDAL/OGR&lt;br /&gt;
| ''Raster analysis'', ''Vector analysis'', ''Image Processing'', ''Database''&lt;br /&gt;
|-&lt;br /&gt;
| ''Landscape analysis''&lt;br /&gt;
| LA&lt;br /&gt;
| All `r.li.*` modules, maybe other&lt;br /&gt;
| ''Raster analysis''&lt;br /&gt;
|-&lt;br /&gt;
| ''Lidar analysis''&lt;br /&gt;
| LI&lt;br /&gt;
| All `v.lidar.*` modules, {{cmd|v.surf.bspline|version=70}}, r.in.xyz&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ''Linear Reference Systems''&lt;br /&gt;
| LS&lt;br /&gt;
| All `v.lrs.*` modules&lt;br /&gt;
| ''Vector analysis''&lt;br /&gt;
|-&lt;br /&gt;
| ''Network analysis''&lt;br /&gt;
| NA&lt;br /&gt;
| All `v.net.*` modules, maybe other&lt;br /&gt;
| ''Vector analysis''&lt;br /&gt;
|-&lt;br /&gt;
| ''Raster analysis''&lt;br /&gt;
| RA&lt;br /&gt;
| A lot of basic `r.*` modules (like {{cmd|r.buffer,|version=70}} {{cmd|r.reclass|version=70}}, {{cmd|r.fillnull|version=70}}...)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
| ''Terrain analysis''&lt;br /&gt;
| TA&lt;br /&gt;
| Different kind of analysis: soil ({{cmd|r.sun,|version=70}}), terrain ({{cmd|r.slope.aspect|version=70}}, {{cmd|r.los|version=70}}), geomorphometry ({{cmd|r.param.scale|version=70}})&lt;br /&gt;
| ''Raster analysis''&lt;br /&gt;
|-&lt;br /&gt;
| ''Vector analysis''&lt;br /&gt;
| VA&lt;br /&gt;
| A lot of basic `v.*` modules (like {{cmd|v.buffer|version=70}}, {{cmd|v.centroid|version=70}}, {{cmd|v.overlay|version=70}}...)&lt;br /&gt;
| ''Database''&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== List of modules (trunk) ==&lt;br /&gt;
&lt;br /&gt;
=== Display ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|'''Module''' || '''Core/Tools/Addons''' || '''Toolbox(es)'''&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.barscale|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.colorlist|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.colortable|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.correlate|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.erase|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.font|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.fontlist|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.geodesic|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.graph|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.grid|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.his|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.histogram|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.info|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.labels|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.legend|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.linegraph|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.nviz|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.path|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.polar|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.profile|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.rast|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.rast.arrow|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.rast.edit|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.rast.leg|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.rast.num|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.rgb|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.rhumbline|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.shadedmap|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.text|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.thematic.area|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.title|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.vect|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.vect.chart|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.vect.thematic|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|d.where|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Database ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|'''Module''' || '''Core/Tools/Addons''' || '''Toolbox(es)'''&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.columns|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.connect|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.copy|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.createdb|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.databases|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.describe|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.drivers|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.dropcolumn|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.dropdb|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.droptable|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.droptable|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.execute|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.in.ogr|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.login|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.out.ogr|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.select|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.tables|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|db.test|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== General ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|'''Module''' || '''Core/Tools/Addons''' || '''Toolbox(es)'''&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.access|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.cairocomp|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.copy|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.dirseps|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.extension|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.filename|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.findetc|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.findfile|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.gisenv|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.gui|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.list|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.manual|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.mapset|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.mapsets|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.message|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.mkfontcap|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.mlist|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.mremove|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.parser|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.pnmcomp|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.ppmtopng|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.proj|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.region|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.remove|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.rename|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.tempfile|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.transform|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|g.version|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Imagery ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|'''Module''' || '''Core/Tools/Addons''' || '''Toolbox(es)'''&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.albedo|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.atcorr|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.biomass|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.cca|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.cluster|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.eb.eta|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.eb.evapfr|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.eb.h_sebal01|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.eb.soilheatflux|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.emissivity|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.evapo.time|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.fft|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.fusion.brovey|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.gensig|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.gensigset|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.group|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.his.rgb|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.ifft|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.image.mosaic|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.in.spotvgt|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.landsat.rgb|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.latlong|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.maxlik|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.modis.qc|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.oif|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.pca|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.rectify|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.rgb.his|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.smap|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.spectral|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.sunhours|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.target|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.tasscap|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.vi|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|i.zc|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Misc ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|'''Module''' || '''Core/Tools/Addons''' || '''Toolbox(es)'''&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|m.cogo|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|m.measure|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|m.proj|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Postscript ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|'''Module''' || '''Core/Tools/Addons''' || '''Toolbox(es)'''&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|ps.map|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Raster ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|'''Module''' || '''Core/Tools/Addons''' || '''Toolbox(es)'''&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.basins.fill|version=70}} || T ||TA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.bitpattern|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.blend|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.buffer|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.buffer2|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.carve|version=70}} || T || TA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.category|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.circle|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.clump|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.coin|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.colors|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.colors.out|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.colors.stddev|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.composite|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.compress|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.contour|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.cost|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.covar|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.cross|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.describe|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.distance|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.drain|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.external|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.external.out|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.fill.dir|version=70}} || T || HY&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.fillnulls|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.flow|version=70}} || T || HY&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.grow|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.grow.distance|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.gwflow|version=70}} || T || HY&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.his|version=70}} || T || IM&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.horizon|version=70}} || T || TA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.arc|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.ascii|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.aster|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.bin|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.gdal|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.gridatb|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.mat|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.png|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.poly|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.srtm|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.wms|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.in.xyz|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.info|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.kappa|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.lake|version=70}} || T ||HY&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.cwed|version=70}} || T || LA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.dominance|version=70}} || T || LA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.edgedensity|version=70}} || T || LA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.mpa|version=70}} || T || LA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.mps|version=70}} || T || LA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.padcv|version=70}} || T || LA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.padrange|version=70}} || T || LA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.padsd|version=70}} || T || LA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.patchdensity|version=70}} || T || LA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.patchnum|version=70}} || T || LA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.richness|version=70}} || T || LA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.shannon|version=70}} || T || LA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.shape|version=70}} || T || LA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.li.simpson|version=70}} || T || LA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.los|version=70}} || T||TA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.mapcalc|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.mask|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.mfilter|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.mode|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.neighbors|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.null|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.arc|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.ascii|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.bin|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.gdal|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.gridatb|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.mat|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.mpeg|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.png|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.pov|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.ppm|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.ppm3|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.tiff|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.vrml|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.vtk|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.out.xyz|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.param.scale|version=70}} || T ||TA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.patch|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.plane|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.profile|version=70}} || T || TA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.proj|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.quant|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.quantile|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.random|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.random.cells|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.random.surface|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.reclass|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.reclass.area|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.recode|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.region|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.regression.line|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.report|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.resamp.bspline|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.resamp.filter|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.resamp.interp|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.resamp.rst|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.resamp.stats|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.resample|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.rescale|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.rescale.eq|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.ros|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.series|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.shaded.relief|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.sim.sediment|version=70}} || T || HY&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.sim.water|version=70}} || T || HY&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.slope.aspect|version=70}} || T || TA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.solute.transport|version=70}} || T || HY&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.spread|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.spreadpath|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.statistics|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.statistics2|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.statistics3|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.stats|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.sun|version=70}} || T ||TA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.sunmask|version=70}} || T || TA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.support|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.support.stats|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.surf.area|version=70}} || T || TA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.surf.contour|version=70}} || T || TA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.surf.fractal|version=70}} || T || TA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.surf.gauss|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.surf.idw|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.surf.idw2|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.surf.random|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.terraflow|version=70}} || T ||HY&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.texture|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.thin|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.tileset|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.timestamp|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.to.rast3|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.to.rast3elev|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.to.vect|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.topidx|version=70}} || T ||HY&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.topmodel|version=70}} || T ||HY&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.transect|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.univar|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.uslek|version=70}} || T ||HY&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.usler|version=70}} || T ||HY&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.volume|version=70}} || T || RA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.walk|version=70}} || T || TA&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.water.outlet|version=70}} || T|| HY&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.watershed|version=70}} || T || HY&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.what|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r.what.color|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== 3D raster (voxel) ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|'''Module''' || '''Core/Tools/Addons''' || '''Toolbox(es)'''&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.cross.rast|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.gwflow|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.in.ascii|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.in.v5d|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.info|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.mapcalc|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.mask|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.mkdspf|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.null|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.out.ascii|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.out.v5d|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.out.vtk|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.stats|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.timestamp|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.to.rast|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|r3.univar|version=70}} || T || 3D Raster&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Vector ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|'''Module''' || '''Core/Tools/Addons''' || '''Toolbox(es)'''&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.autokrige|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.buffer|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.build|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.build.all|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.build.polylines|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.category|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.centroids|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.class|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.clean|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.colors|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.convert|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.convert.all|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.addcolumn|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.addtable|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.connect|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.dropcolumn|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.droprow|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.droptable|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.join|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.reconnect.all|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.renamecolumn|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.select|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.univar|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.db.update|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.delaunay|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.dissolve|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.distance|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.drape|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.edit|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.external|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.extract|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.extrude|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.generalize|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.hull|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.ascii|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.db|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.dxf|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.e00|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.geonames|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.gns|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.lines|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.mapgen|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.ogr|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.postgis|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.region|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.sites|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.sites.all|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.in.wfs|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.info|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.kcv|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.kernel|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.krige|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.label|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.lidar.correction|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.lidar.edgedetection|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.lidar.growing|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.lrs.create|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.lrs.label|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.lrs.segment|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.lrs.where|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.mkgrid|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.neighbors|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.alloc|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.allpairs|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.bridge|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.centrality|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.components|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.connectivity|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.distance|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.flow|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.iso|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.path|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.salesman|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.spanningtree|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.steiner|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.timetable|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.net.visibility|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.normal|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.out.ascii|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.out.dxf|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.out.gps|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.out.ogr|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.out.postgis|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.out.pov|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.out.svg|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.out.vtk|version=70}} || T || IO&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.outlier|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.overlay|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.parallel|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.patch|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.perturb|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.proj|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.qcount|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.random|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.rast.stats|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.reclass|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.report|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.sample|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.segment|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.select|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.split|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.support|version=70}} || C ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.surf.bspline|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.surf.idw|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.surf.rst|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.to.3d|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.to.db|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.to.points|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.to.rast|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.to.rast3|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.transform|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.type|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.univar|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.vol.rst|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.voronoi|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.what|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.what.rast|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|v.what.vect|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Various ===&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|'''Module''' || '''Core/Tools/Addons''' || '''Toolbox(es)'''&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|nviz|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|nviz_cmd|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|wximgview|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|wxpyimgview|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|xganim|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
| {{cmd|ximgview|version=70}} || ? ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== List of selected AddOns modules ==&lt;br /&gt;
&lt;br /&gt;
See [[GRASS AddOns]] for full list of available modules. Feel free to extend this list.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|'''Module''' || '''Core/Tools/Addons''' || '''Toolbox(es)''' || '''Note'''&lt;br /&gt;
|-&lt;br /&gt;
| {{AddonCmd|r.stream.channel}} || T || HY || {{done}}&lt;br /&gt;
|-&lt;br /&gt;
| {{AddonCmd|r.stream.distance}} || T || HY || {{done}}&lt;br /&gt;
|-&lt;br /&gt;
| {{AddonCmd|r.stream.extract}} || T || HY || {{done}}&lt;br /&gt;
|-&lt;br /&gt;
| {{AddonCmd|r.stream.order}} || T || HY || {{done}}&lt;br /&gt;
|-&lt;br /&gt;
| {{AddonCmd|r.stream.segment}} || T || HY || {{done}}&lt;br /&gt;
|-&lt;br /&gt;
| {{AddonCmd|r.stream.slope}} || T || HY || {{done}}&lt;br /&gt;
|-&lt;br /&gt;
| {{AddonCmd|r.stream.snap}} || T || HY || {{done}}&lt;br /&gt;
|-&lt;br /&gt;
| {{AddonCmd|r.stream.stats}} || T || HY || {{done}}&lt;br /&gt;
|-&lt;br /&gt;
| {{AddonCmd|r.seg}} || T || IM || It could be rename to `i.seg`&lt;br /&gt;
|-&lt;br /&gt;
| {{AddonCmd|i.topocorr}} || T || IM ||&lt;br /&gt;
|-&lt;br /&gt;
| {{AddonCmd|r.diversity}} || T || LA ||&lt;br /&gt;
|-&lt;br /&gt;
| {{AddonCmd|Ps.output}} || ? || || &lt;br /&gt;
|-&lt;br /&gt;
| ... || ? || ||&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== How to implement ==&lt;br /&gt;
&lt;br /&gt;
=== Proposal 1 ===&lt;br /&gt;
* add html tag &amp;lt;param&amp;gt; in the description.html with these options:&lt;br /&gt;
 &amp;lt;param name = &amp;quot;core&amp;quot;&amp;gt; for core module&lt;br /&gt;
 &amp;lt;param name = &amp;quot;tool&amp;quot; value=&amp;quot;tool_code/codes&amp;quot;&amp;gt; for toolbox&lt;br /&gt;
 &amp;lt;param name = &amp;quot;addons&amp;quot; [value=&amp;quot;tool_code/codes&amp;quot;]&amp;gt; for addons, value is optional&lt;br /&gt;
&lt;br /&gt;
* create a script to generate a xml file for each toolbox&lt;br /&gt;
* add toolbox option in g.extension to read the xml and install the modules&lt;br /&gt;
&lt;br /&gt;
=== Proposal 2 ===&lt;br /&gt;
&lt;br /&gt;
* modules (currently only [[Addons]]) are described (name, description, keywords, files) in metadata XML file called [http://grass.osgeo.org/addons/grass7/modules.xml modules.xml] - this file is auto-generated, see [http://trac.osgeo.org/grass/wiki/AddOnsManagement#AddOnsXMLfile trac page] for details&lt;br /&gt;
* similarly toolboxes are described (name, code, correlate modules, list of modules) in [http://grass.osgeo.org/addons/grass7/toolboxes.xml toolboxes.xml] - this file is manually manageable via [https://svn.osgeo.org/grass/grass-addons/grass7/toolboxes.xml SVN]&lt;br /&gt;
&lt;br /&gt;
{{cmd|g.extension|version=70}} reads (from remote server http://grass.osgeo.org/addons/grass7) &amp;lt;tt&amp;gt;modules.xml&amp;lt;/tt&amp;gt; when listing available modules (&amp;lt;tt&amp;gt;-l&amp;lt;/tt&amp;gt;), and &amp;lt;tt&amp;gt;toolboxes.xml&amp;lt;/tt&amp;gt; when listing available toolboxes (&amp;lt;tt&amp;gt;-lt&amp;lt;/tt&amp;gt;). When installing toolbox using {{cmd|g.extension|version=70}} the module reads &amp;lt;tt&amp;gt;toolboxes.xml&amp;lt;/tt&amp;gt; and installs in the loop given list of modules. When all modules are installed it also updates local metadata files - &amp;lt;tt&amp;gt;GRASS_ADDON_BASE/modules.xml&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;GRASS_ADDON_BASE/toolboxes.xml&amp;lt;/tt&amp;gt;. These local metadata files are checked when listing locally installed toolboxes or single modules (&amp;lt;tt&amp;gt;-a&amp;lt;/tt&amp;gt; or &amp;lt;tt&amp;gt;-ta&amp;lt;/tt&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
=== Proposal 3 ===&lt;br /&gt;
&lt;br /&gt;
Use a modified version of [http://pypi.python.org/pypi/pip pip] (a tool for installing and managing Python packages)&lt;br /&gt;
&lt;br /&gt;
With Pip you can add/change repository, compile C/Fortran module, manage dependencies, install from some version control system (use&lt;br /&gt;
URLs like hg+http://domain/repo -- or prefix git+, svn+ etc), and using [http://pypi.python.org/pypi/virtualenv virtualenv]&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_SoC_Ideas_2012&amp;diff=15362</id>
		<title>GRASS SoC Ideas 2012</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_SoC_Ideas_2012&amp;diff=15362"/>
		<updated>2012-04-13T21:31:12Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Volume modeling */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:grasslogo_vector_small.png|link=http://grass.osgeo.org]]&amp;lt;font size=&amp;quot;+3&amp;quot;&amp;gt; @ &amp;lt;/font&amp;gt; [[Image:Gsoc-2012-logo-color.png|250px|link=http://wiki.osgeo.org/wiki/Google_Summer_of_Code_2012]] &amp;lt;font size=&amp;quot;+3&amp;quot;&amp;gt; @ &amp;lt;/font&amp;gt; [[Image:OSGeo 220pix.png|link=http://www.osgeo.org]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* See also previous Google Summer of Code [[GRASS SoC Ideas 2011|ideas from 2011]].&lt;br /&gt;
&lt;br /&gt;
* Visit the [http://wiki.osgeo.org/wiki/Google_Summer_of_Code_2012 main OSGeo Google Summer of Code 2012 @ OSGeo wiki page].&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== About ==&lt;br /&gt;
&lt;br /&gt;
This is the GRASS page for [http://wiki.osgeo.org/index.php/Google_Summer_of_Code Google Summer of Code 2012]. Here we will list project ideas and and other information related to the GRASS GSoC projects.&lt;br /&gt;
&lt;br /&gt;
* [http://code.google.com/soc/ Official Google Summer of Code 2012 homepage]&lt;br /&gt;
* [http://wiki.osgeo.org/wiki/Google_Summer_of_Code_2012 OSGeo SoC 2012 homepage]&lt;br /&gt;
&lt;br /&gt;
Promotion:&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
 * OSGeo Flyer at &amp;lt;s&amp;gt;http://svn.osgeo.org/osgeo/marketing/flyer/google_summer_of_code/OSGeo_GSoC_2012.pdf &amp;lt;/s&amp;gt;(todo)&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* Videos at      http://code.google.com/p/google-summer-of-code/wiki/Videos&lt;br /&gt;
* More Flyers at http://code.google.com/p/google-summer-of-code/wiki/GsocFlyers&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&lt;br /&gt;
* '''[http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2012/faqs#timeline The official timeline]'''&lt;br /&gt;
&lt;br /&gt;
== Required Steps ==&lt;br /&gt;
&lt;br /&gt;
* '''List ideas'''&lt;br /&gt;
&lt;br /&gt;
* Assign Mentors to Ideas&lt;br /&gt;
&lt;br /&gt;
* Notify OSGeo&lt;br /&gt;
&lt;br /&gt;
* Mentors evaluate student applications&lt;br /&gt;
&lt;br /&gt;
* Accepted students announced&lt;br /&gt;
&lt;br /&gt;
* Students subscribe to the [http://lists.osgeo.org/mailman/listinfo/grass-dev grass-dev mailing list] and introduce themselves&lt;br /&gt;
&lt;br /&gt;
* Mentor will create directory structure in the [http://trac.osgeo.org/grass/browser/grass-addons GRASS add-ons SVN] for projects and setup access for students&lt;br /&gt;
** Students must read and post agreement to [http://grass.osgeo.org/programming7/rfc2_psc.html RFC2] to the [http://lists.osgeo.org/mailman/listinfo/grass-psc grass-psc mailing list] to gain SVN access&lt;br /&gt;
** Create a Wiki page for each accepted project, to be used as a progress reporting tool&lt;br /&gt;
&lt;br /&gt;
* Coding begins...&lt;br /&gt;
&lt;br /&gt;
* Students and mentors: Complete the Mid-term survey&lt;br /&gt;
&lt;br /&gt;
* Final commit and packaging for Google&lt;br /&gt;
&lt;br /&gt;
== Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Also review ideas from [[GRASS SoC Ideas 2007#Ideas|2007]], [[GRASS SoC Ideas 2008#Ideas|2008]], [[GRASS SoC Ideas 2009#Ideas|2009]], [[GRASS SoC Ideas 2010#Ideas|2010]], and [[GRASS SoC Ideas 2011#Ideas|2011]]  which are still open.&lt;br /&gt;
&lt;br /&gt;
* Project ideas of '''your own''' are also most welcome and often the best.&lt;br /&gt;
&lt;br /&gt;
=== [[wxGUI]] ===&lt;br /&gt;
&lt;br /&gt;
# Develop GUI support in wxPython for visualy analyzing series of raster map layers. The module should provide users with capabilities to browse and animate raster (and potentially also vector) data series in a 2D display and save outputs to animated GIF, MOV, or MPEG files. A related module that displays the series as small images and support re-ordering, deleting and adding raster maps (frames) to the series would also be helpful. To compare visually two images a slider functionality could be added to the 2D display, for example, to compare before and after images, or two consequent images in series. The series of data layers can be handled as multiple standard raster or vector layers or using  the new time series support. See existing modules {{cmd|xganim}}, {{cmd|r.out.mpeg}}, [[NVIZ]]'s animation tools, and the [[Movies]] creation wiki page. There is also a related capability in the TclTk GUI. (co-mentor Helena Mitasova).&lt;br /&gt;
# Develop an interactive vector geometry selection and export tool for [[wxGUI]] as described in the trac ticket [http://trac.osgeo.org/grass/ticket/1471 #1471]&lt;br /&gt;
# Offer also (optional) &amp;quot;conventional&amp;quot; '''GUI layout''': For some users, the current approach of separate windows (SDI) leads to a '''windows flooding'''. This is a common complaint especially from newbies. Especially on large monitors or dual screen systems catching the [[wxGUI]] windows can be tedious when they appear on separate monitors (depends on windows manager, the much used KDE scatters typically the wxGUI windows all over the screen real estate). Almost each task generates a new wxGUI window which is freely floating around on the screen:  [http://grass.osgeo.org/grass63/screenshots/images/wxgrass_digit-03.png example 1] and [http://grass.osgeo.org/grass63/screenshots/images/wxgrass_digit-01.png example 2]. On a dual-screen this may sum up to 50cm of distance! The idea is to capture all those windows in one frame. For details, see [[wxGUI#Layout| wxGUI layout]].&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;gallery widths=400 heights=250&amp;gt;&lt;br /&gt;
Image:Wxgui_current.png|Current wxGUI layout with detached window components&lt;br /&gt;
Image:Wxgui_proposal.png|Proposal for wxGUI layout modification (Recomposition of existing toolbars, mapview and menus)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
# ''Your idea here''&lt;br /&gt;
&lt;br /&gt;
'''Willing to Mentor:''' [[User:Landa|Martin Landa]], [[User:MarisN|Maris Nartiss]], [[User:Mmetz|Markus Metz]], (''your name here'')&lt;br /&gt;
&lt;br /&gt;
=== Raster  ===&lt;br /&gt;
&lt;br /&gt;
#Add '''[[OpenMP]] parallelization''' where appropriate, for example {{cmd|r.cost}}, {{cmd|r.surf.contour}}, {{cmd|r.watershed}}. It is important to understand which modules are processor bound, and concentrate on them. i.e. do not needlessly complicate the code of non-long running processor bound modules. A good working knowledge of ANSI C and {{wikipedia|OpenMP}} is required. ({{wikipedia|OpenCL}} and {{wikipedia|pthreads}} are fine too!) &lt;br /&gt;
#Create a new GRASS module to find the {{wikipedia|topographic_prominence}} of peaks from a raster elevation map within the region. (probably this would only make up 1/4 to 1/2 of a multi-part GSoC project) &lt;br /&gt;
# Expand maximum grid size for {{cmd|r.watershed}}. [[LIDAR]]-based elevation grids are at finer resolution than previous elevation models, often overwhelming the integer variable limit for grid size.&lt;br /&gt;
# ''Your suggestion here!''&lt;br /&gt;
&lt;br /&gt;
'''Willing to Mentor:''' Hamish (co-mentor parallelization and prominence projects), Wolf Bergenheim(''your name here'')&lt;br /&gt;
&lt;br /&gt;
=== Vector ===&lt;br /&gt;
&lt;br /&gt;
# Add '''[[OpenMP]] parallelization''' where appropriate, for example, {{cmd|v.surf.rst}} and {{cmd|v.vol.rst}} ''(co-mentor Helena Mitasova)''. (OpenCL and pthreads are fine too!) See above idea in the [[GRASS SoC Ideas 2012#Raster|Raster section]].&lt;br /&gt;
# Better '''support for wrap-around at 180 longitude''': Currently the raster engine is pretty good at wrapping data over 180 longitude. The vector data isn't, but it should be. This is a great task if by the end of the summer you'd like to be familiar with the implementation method of an entire vector stack of a fully featured modern GIS.&lt;br /&gt;
# Add '''break lines support to interpolation modules''' ({{cmd|v.surf.rst}}, {{cmd|v.surf.idw}}, {{cmd|v.surf.bspline}}). Current implementations provide no support to specify locations of cliffs or faults* thus leading to improper results within non-continous datasets. See [http://www.spatialanalysisonline.com/output/html/Breaklinesandnaturalboundaries.html Geospatial Analysis - a comprehensive guide. 3rd edition] for description. [*] well, some support exists, see {{AddonCmd|v.surf.icw}}.&lt;br /&gt;
# Speed up [[wxGUI]] handling and 2D display of large point clouds (several million points). This is likely to include additional &amp;quot;Level-1 Vector&amp;quot; support in the backend modules (for which a working knowledge of ANSI C is req'd).&lt;br /&gt;
# ''Your idea here'' ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Willing to Mentor:''' [[User:Landa|Martin Landa]], [[User:Mmetz|Markus Metz]], Hamish (co-mentor for parallelization), Wolf Bergenheim, (''your name here'')&lt;br /&gt;
&lt;br /&gt;
=== Imagery ===&lt;br /&gt;
&lt;br /&gt;
# GRASS's imagery modules (for satellite, scanned maps, and orthophotos) act as enhanced raster modules. In GRASS 5 and 6 they were mostly implemented using interactive X-monitors which are not available in MS Windows and so are removed in the new cross-platform code of GRASS 7.&lt;br /&gt;
#* We need someone willing to '''port the old modules to work with GRASS 7''', including writing new '''wxPython GUI frontends''' to a number of existing tools and updating the imagery libraries to current raster library standards.&lt;br /&gt;
#* In addition, there are a number of '''improved/automated georectification tools''' which have not been merged into GRASS 5/6 which it would be nice to have updated and merged into the main code.&lt;br /&gt;
# Implement '''[[OpenMP]] (multithreading)''' as much as possible (where appropriate; OpenCL and pthreads are fine too)&lt;br /&gt;
# In addition to the porting of the georectification tools mentioned above, it would be interesting to implement an orthorectification tool for satellite imagery. Currently, GRASS only has {{cmd|i.ortho.photo}} for aerial photographs.&lt;br /&gt;
# Implement image segmentation algorithms and tools&lt;br /&gt;
# Implement region-based classification&lt;br /&gt;
# Implement hierarchical classification tools (e.g. being able to create a large class &amp;quot;forest&amp;quot;, with subclasses of different types of forests)&lt;br /&gt;
# ''Your idea here''&lt;br /&gt;
&lt;br /&gt;
See the [[Image_processing#Ideas_collection_for_improving_GRASS.27_Image_processing_capabilities|ideas for imagery improvement]] and [http://trac.osgeo.org/grass/wiki/Grass7/ImageryLib GRASS 7 ideas] wiki pages for more details.&lt;br /&gt;
&lt;br /&gt;
'''Willing to Mentor:''' Hamish (co-mentor for parallelization), Markus Metz (orthorectification), (''your name here'')&lt;br /&gt;
&lt;br /&gt;
=== Cartography and display ===&lt;br /&gt;
&lt;br /&gt;
# Add SVG (and perhaps EPS) support to the display library, for use via {{cmd|d.graph}} and/or {{cmd|d.vect}}, and add SVG support to {{cmd|ps.map}} via a SVG to EPS converter tool (probably by adapting an existing GPL-compatible library). Code to be written in ANSI C. Step 1 is adding a Bézier curve rendering library function.&lt;br /&gt;
# Integrate Quantum/GRASS SVG output plugin with Inkscape. Python can serve as a common glue between these tools. The project would facilitate easy cartographic workflow while utilizing the advanced design functionality of Inkscape. This would be a two way bridge:&lt;br /&gt;
## QGIS/GRASS plugins to invoke an Inkscape process and send a data set.&lt;br /&gt;
## Inkscape plugin to query various OSGeo projects and display various data sets as layers.&lt;br /&gt;
# ''Your idea here ...''&lt;br /&gt;
&lt;br /&gt;
'''Willing to Mentor:''' Hamish (as a co-mentor)&lt;br /&gt;
&lt;br /&gt;
=== 3D visualization ===&lt;br /&gt;
&lt;br /&gt;
# Optimize OGSF (and NVIZ/wxNVIZ) to '''display large 3D point clouds with uninterupted tought speed'''. OGSF + (wx)NVIZ should be able to rotate point cloud (i.e. LiDAR dataset) with 4 millions of points on medium hardware (i.e. 2GHz CPU with 2Gb RAM and GPU with hardware transform and lighting support and dedicated video RAM) with response time not greater than 1.0 second.&lt;br /&gt;
# Design and implement '''text displaying and styling in OGSF library''' and it's front-ends (NVIZ, [[wxNVIZ]]). Solution should be user configurable (fonts, colors, effects etc.) and multilanguage friendly.&lt;br /&gt;
# Design and implement user-provided '''symbol support in OGSF library''' and it's front-ends (NVIZ, [[wxNVIZ]]). Solution should support GRASS symbols, SVG, and/or simple EPS symbols.&lt;br /&gt;
&amp;lt;!-- # Add/fix missing features to [[wxNVIZ]] (lighting, robust handling of z-exageration and viewing position including latlong data, cutting planes, multiattribute 3D points, decorations: scale, north, legend, text, isosurfaces and slicing) --&amp;gt;&lt;br /&gt;
# Drape multiple color maps over topography (equivalent to running r.patch or r.composite and draping the result; second raster is currently supported as transparency).&lt;br /&gt;
# Improve handling of z-exageration so that z-exag=1  is a realistic representation of landscape in terms of vertical scaling. Other default settings could also be improved to support wider range of data and improve robustness.&lt;br /&gt;
&lt;br /&gt;
'''Willing to Mentor:''' [[User:Landa|Martin Landa]] (for 2), co-mentor for 1 and 5: Helena Mitasova, (''your name here'')&lt;br /&gt;
&lt;br /&gt;
=== Volume modeling ===&lt;br /&gt;
&lt;br /&gt;
# Develop '''r3.flow''' for computing 3D flow lines and 3D flow accumulation from 3D rasters&lt;br /&gt;
# Enhance volume interpolation module '''{{cmd|v.vol.rst}}''' for handling of data in space-time cube, including computation of gradients and hypercurvatures&lt;br /&gt;
&lt;br /&gt;
'''Willing to Mentor:''' co-mentor Helena Mitasova, [[User:Huhabla|Sören Gebbert]]&lt;br /&gt;
&lt;br /&gt;
=== Improved Python interface ===&lt;br /&gt;
&lt;br /&gt;
Design '''sophisticated Python scripting interface''' for GRASS based on [http://grass.osgeo.org/programming7/pythonlib.html GRASS Python Scripting Library]. This API should become more intuitive and more integrative&lt;br /&gt;
&lt;br /&gt;
GRASS GIS would gain even more attractiveness!&lt;br /&gt;
&lt;br /&gt;
'''Willing to Mentor:''' [[User:Huhabla|Sören Gebbert]]&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* See also the [https://trac.osgeo.org/grass/query?status=assigned&amp;amp;status=new&amp;amp;status=reopened&amp;amp;order=priority&amp;amp;col=id&amp;amp;col=summary&amp;amp;col=status&amp;amp;col=type&amp;amp;col=priority&amp;amp;col=milestone&amp;amp;col=component&amp;amp;type=enhancement GRASS wish list]&lt;br /&gt;
&lt;br /&gt;
# Implement selected modules (in C/C++) for geospatial analysis (kriging, etc.) based on [http://hpgl.aoizora.org/ HPGL] library (see also [http://hub.qgis.org/projects/quantum-gis/wiki/Python_Plugin_Ideas#Add-and-R-Free-geostatistic-toolbox-using-HPGL QGIS plugin wish]).&lt;br /&gt;
# Design and implement modern '''metadata management system''' for GRASS to support [http://www.opengeospatial.org/standards/cat OGC CSW] and INSPIRE discovery a view services&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
# Design '''GRASS toolboxes environment''', see [[GRASS repository layout proposal]] for detailed information. This would also include general clean up and organization of existing GRASS modules in trunk and add-ons.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
# ''Your idea here''&lt;br /&gt;
&lt;br /&gt;
'''Willing to Mentor:''' Wolf Bergenheim (Python API, metadata management), [[User:Landa|Martin Landa]] (for HPGL) (''your name here'')&lt;br /&gt;
&lt;br /&gt;
== Guidelines for Students ==&lt;br /&gt;
&lt;br /&gt;
How do you maximize your chances of getting picked? First read the [http://code.google.com/p/google-summer-of-code/wiki/AdviceforStudents Google SoC FAQ]. Then talk to us about your idea. Try emailing our [http://lists.osgeo.org/mailman/listinfo/grass-dev dev-mailing list], or come and talk to us in [[IRC]] (#grass). You can also reach the mentors directly by emailing:&lt;br /&gt;
* [http://lists.osgeo.org/mailman/listinfo/soc The OSGeo SoC mailing list]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
 * Anne (&amp;lt;tt&amp;gt; @ &amp;lt;/tt&amp;gt;)&lt;br /&gt;
 * Hamish (&amp;lt;tt&amp;gt;hamish_b at yahoo com&amp;lt;/tt&amp;gt;)&lt;br /&gt;
 * Wolf Bergenheim (&amp;lt;tt&amp;gt;wolf+grass at bergenheim.net&amp;lt;/tt&amp;gt;)&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you are thinking about applying, do make a point of reading the &amp;quot;[http://google-opensource.blogspot.co.nz/2011/02/flip-bits-not-burgers-student-guide.html Flip bits not Burgers: The Student's Guide to the Summer of Code]&amp;quot; eBook&lt;br /&gt;
&lt;br /&gt;
=== Getting started with GRASS coding ===&lt;br /&gt;
&lt;br /&gt;
* The source code is maintained in a [http://trac.osgeo.org/grass/browser/grass/trunk SVN server] which is easy to browse&lt;br /&gt;
&lt;br /&gt;
* Please review the submitting files for our coding standards&lt;br /&gt;
** {{src|SUBMITTING|branch=trunk}} for C coding rules&lt;br /&gt;
** {{src|SUBMITTING_PYTHON|branch=trunk}} for Python coding rules&lt;br /&gt;
** {{src|SUBMITTING_DOCS|branch=trunk}} for Documentantion coding rules&lt;br /&gt;
&lt;br /&gt;
* There is lots of good info at the [http://trac.osgeo.org/grass/wiki GRASS Developer's wiki]&lt;br /&gt;
: See also the [[Development|development section]] of the GRASS user's wiki&lt;br /&gt;
&lt;br /&gt;
== Guidelines for Mentors ==&lt;br /&gt;
&lt;br /&gt;
* Un(?)official book: http://www.booki.cc/gsoc-mentoring/&lt;br /&gt;
* Some more hints on the [http://wiki.osgeo.org/wiki/Google_Summer_of_Code_2012_Administrative#Links OSGeo wiki]&lt;br /&gt;
&lt;br /&gt;
== Accepted Ideas ==&lt;br /&gt;
&lt;br /&gt;
# ''Project name''&lt;br /&gt;
#: Student: Your name here&lt;br /&gt;
#: Mentor: Your mentor's name here&lt;br /&gt;
#: Backup mentor: Your backup mentor's name here&lt;br /&gt;
#: Wiki page: wiki page maintained by you (typically in this GRASS wiki, or the trac development wiki)&lt;br /&gt;
# ''Project name''&lt;br /&gt;
#: Student: Someone else's name here&lt;br /&gt;
#: Mentor: Their mentor's name here&lt;br /&gt;
#: Backup mentor: Their backup mentor's name here&lt;br /&gt;
#: Wiki page: wiki page maintained by them (typically in this GRASS wiki, or the trac development wiki)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Community]]&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_SoC_Ideas_2012&amp;diff=15361</id>
		<title>GRASS SoC Ideas 2012</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_SoC_Ideas_2012&amp;diff=15361"/>
		<updated>2012-04-13T21:01:37Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Improved Python interface */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:grasslogo_vector_small.png|link=http://grass.osgeo.org]]&amp;lt;font size=&amp;quot;+3&amp;quot;&amp;gt; @ &amp;lt;/font&amp;gt; [[Image:Gsoc-2012-logo-color.png|250px|link=http://wiki.osgeo.org/wiki/Google_Summer_of_Code_2012]] &amp;lt;font size=&amp;quot;+3&amp;quot;&amp;gt; @ &amp;lt;/font&amp;gt; [[Image:OSGeo 220pix.png|link=http://www.osgeo.org]]&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* See also previous Google Summer of Code [[GRASS SoC Ideas 2011|ideas from 2011]].&lt;br /&gt;
&lt;br /&gt;
* Visit the [http://wiki.osgeo.org/wiki/Google_Summer_of_Code_2012 main OSGeo Google Summer of Code 2012 @ OSGeo wiki page].&lt;br /&gt;
&lt;br /&gt;
__TOC__&lt;br /&gt;
== About ==&lt;br /&gt;
&lt;br /&gt;
This is the GRASS page for [http://wiki.osgeo.org/index.php/Google_Summer_of_Code Google Summer of Code 2012]. Here we will list project ideas and and other information related to the GRASS GSoC projects.&lt;br /&gt;
&lt;br /&gt;
* [http://code.google.com/soc/ Official Google Summer of Code 2012 homepage]&lt;br /&gt;
* [http://wiki.osgeo.org/wiki/Google_Summer_of_Code_2012 OSGeo SoC 2012 homepage]&lt;br /&gt;
&lt;br /&gt;
Promotion:&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
 * OSGeo Flyer at &amp;lt;s&amp;gt;http://svn.osgeo.org/osgeo/marketing/flyer/google_summer_of_code/OSGeo_GSoC_2012.pdf &amp;lt;/s&amp;gt;(todo)&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
* Videos at      http://code.google.com/p/google-summer-of-code/wiki/Videos&lt;br /&gt;
* More Flyers at http://code.google.com/p/google-summer-of-code/wiki/GsocFlyers&lt;br /&gt;
&lt;br /&gt;
== Timeline ==&lt;br /&gt;
&lt;br /&gt;
* '''[http://www.google-melange.com/gsoc/document/show/gsoc_program/google/gsoc2012/faqs#timeline The official timeline]'''&lt;br /&gt;
&lt;br /&gt;
== Required Steps ==&lt;br /&gt;
&lt;br /&gt;
* '''List ideas'''&lt;br /&gt;
&lt;br /&gt;
* Assign Mentors to Ideas&lt;br /&gt;
&lt;br /&gt;
* Notify OSGeo&lt;br /&gt;
&lt;br /&gt;
* Mentors evaluate student applications&lt;br /&gt;
&lt;br /&gt;
* Accepted students announced&lt;br /&gt;
&lt;br /&gt;
* Students subscribe to the [http://lists.osgeo.org/mailman/listinfo/grass-dev grass-dev mailing list] and introduce themselves&lt;br /&gt;
&lt;br /&gt;
* Mentor will create directory structure in the [http://trac.osgeo.org/grass/browser/grass-addons GRASS add-ons SVN] for projects and setup access for students&lt;br /&gt;
** Students must read and post agreement to [http://grass.osgeo.org/programming7/rfc2_psc.html RFC2] to the [http://lists.osgeo.org/mailman/listinfo/grass-psc grass-psc mailing list] to gain SVN access&lt;br /&gt;
** Create a Wiki page for each accepted project, to be used as a progress reporting tool&lt;br /&gt;
&lt;br /&gt;
* Coding begins...&lt;br /&gt;
&lt;br /&gt;
* Students and mentors: Complete the Mid-term survey&lt;br /&gt;
&lt;br /&gt;
* Final commit and packaging for Google&lt;br /&gt;
&lt;br /&gt;
== Ideas ==&lt;br /&gt;
&lt;br /&gt;
* Also review ideas from [[GRASS SoC Ideas 2007#Ideas|2007]], [[GRASS SoC Ideas 2008#Ideas|2008]], [[GRASS SoC Ideas 2009#Ideas|2009]], [[GRASS SoC Ideas 2010#Ideas|2010]], and [[GRASS SoC Ideas 2011#Ideas|2011]]  which are still open.&lt;br /&gt;
&lt;br /&gt;
* Project ideas of '''your own''' are also most welcome and often the best.&lt;br /&gt;
&lt;br /&gt;
=== [[wxGUI]] ===&lt;br /&gt;
&lt;br /&gt;
# Develop GUI support in wxPython for visualy analyzing series of raster map layers. The module should provide users with capabilities to browse and animate raster (and potentially also vector) data series in a 2D display and save outputs to animated GIF, MOV, or MPEG files. A related module that displays the series as small images and support re-ordering, deleting and adding raster maps (frames) to the series would also be helpful. To compare visually two images a slider functionality could be added to the 2D display, for example, to compare before and after images, or two consequent images in series. The series of data layers can be handled as multiple standard raster or vector layers or using  the new time series support. See existing modules {{cmd|xganim}}, {{cmd|r.out.mpeg}}, [[NVIZ]]'s animation tools, and the [[Movies]] creation wiki page. There is also a related capability in the TclTk GUI. (co-mentor Helena Mitasova).&lt;br /&gt;
# Develop an interactive vector geometry selection and export tool for [[wxGUI]] as described in the trac ticket [http://trac.osgeo.org/grass/ticket/1471 #1471]&lt;br /&gt;
# Offer also (optional) &amp;quot;conventional&amp;quot; '''GUI layout''': For some users, the current approach of separate windows (SDI) leads to a '''windows flooding'''. This is a common complaint especially from newbies. Especially on large monitors or dual screen systems catching the [[wxGUI]] windows can be tedious when they appear on separate monitors (depends on windows manager, the much used KDE scatters typically the wxGUI windows all over the screen real estate). Almost each task generates a new wxGUI window which is freely floating around on the screen:  [http://grass.osgeo.org/grass63/screenshots/images/wxgrass_digit-03.png example 1] and [http://grass.osgeo.org/grass63/screenshots/images/wxgrass_digit-01.png example 2]. On a dual-screen this may sum up to 50cm of distance! The idea is to capture all those windows in one frame. For details, see [[wxGUI#Layout| wxGUI layout]].&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
&amp;lt;gallery widths=400 heights=250&amp;gt;&lt;br /&gt;
Image:Wxgui_current.png|Current wxGUI layout with detached window components&lt;br /&gt;
Image:Wxgui_proposal.png|Proposal for wxGUI layout modification (Recomposition of existing toolbars, mapview and menus)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
# ''Your idea here''&lt;br /&gt;
&lt;br /&gt;
'''Willing to Mentor:''' [[User:Landa|Martin Landa]], [[User:MarisN|Maris Nartiss]], [[User:Mmetz|Markus Metz]], (''your name here'')&lt;br /&gt;
&lt;br /&gt;
=== Raster  ===&lt;br /&gt;
&lt;br /&gt;
#Add '''[[OpenMP]] parallelization''' where appropriate, for example {{cmd|r.cost}}, {{cmd|r.surf.contour}}, {{cmd|r.watershed}}. It is important to understand which modules are processor bound, and concentrate on them. i.e. do not needlessly complicate the code of non-long running processor bound modules. A good working knowledge of ANSI C and {{wikipedia|OpenMP}} is required. ({{wikipedia|OpenCL}} and {{wikipedia|pthreads}} are fine too!) &lt;br /&gt;
#Create a new GRASS module to find the {{wikipedia|topographic_prominence}} of peaks from a raster elevation map within the region. (probably this would only make up 1/4 to 1/2 of a multi-part GSoC project) &lt;br /&gt;
# Expand maximum grid size for {{cmd|r.watershed}}. [[LIDAR]]-based elevation grids are at finer resolution than previous elevation models, often overwhelming the integer variable limit for grid size.&lt;br /&gt;
# ''Your suggestion here!''&lt;br /&gt;
&lt;br /&gt;
'''Willing to Mentor:''' Hamish (co-mentor parallelization and prominence projects), Wolf Bergenheim(''your name here'')&lt;br /&gt;
&lt;br /&gt;
=== Vector ===&lt;br /&gt;
&lt;br /&gt;
# Add '''[[OpenMP]] parallelization''' where appropriate, for example, {{cmd|v.surf.rst}} and {{cmd|v.vol.rst}} ''(co-mentor Helena Mitasova)''. (OpenCL and pthreads are fine too!) See above idea in the [[GRASS SoC Ideas 2012#Raster|Raster section]].&lt;br /&gt;
# Better '''support for wrap-around at 180 longitude''': Currently the raster engine is pretty good at wrapping data over 180 longitude. The vector data isn't, but it should be. This is a great task if by the end of the summer you'd like to be familiar with the implementation method of an entire vector stack of a fully featured modern GIS.&lt;br /&gt;
# Add '''break lines support to interpolation modules''' ({{cmd|v.surf.rst}}, {{cmd|v.surf.idw}}, {{cmd|v.surf.bspline}}). Current implementations provide no support to specify locations of cliffs or faults* thus leading to improper results within non-continous datasets. See [http://www.spatialanalysisonline.com/output/html/Breaklinesandnaturalboundaries.html Geospatial Analysis - a comprehensive guide. 3rd edition] for description. [*] well, some support exists, see {{AddonCmd|v.surf.icw}}.&lt;br /&gt;
# Speed up [[wxGUI]] handling and 2D display of large point clouds (several million points). This is likely to include additional &amp;quot;Level-1 Vector&amp;quot; support in the backend modules (for which a working knowledge of ANSI C is req'd).&lt;br /&gt;
# ''Your idea here'' ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Willing to Mentor:''' [[User:Landa|Martin Landa]], [[User:Mmetz|Markus Metz]], Hamish (co-mentor for parallelization), Wolf Bergenheim, (''your name here'')&lt;br /&gt;
&lt;br /&gt;
=== Imagery ===&lt;br /&gt;
&lt;br /&gt;
# GRASS's imagery modules (for satellite, scanned maps, and orthophotos) act as enhanced raster modules. In GRASS 5 and 6 they were mostly implemented using interactive X-monitors which are not available in MS Windows and so are removed in the new cross-platform code of GRASS 7.&lt;br /&gt;
#* We need someone willing to '''port the old modules to work with GRASS 7''', including writing new '''wxPython GUI frontends''' to a number of existing tools and updating the imagery libraries to current raster library standards.&lt;br /&gt;
#* In addition, there are a number of '''improved/automated georectification tools''' which have not been merged into GRASS 5/6 which it would be nice to have updated and merged into the main code.&lt;br /&gt;
# Implement '''[[OpenMP]] (multithreading)''' as much as possible (where appropriate; OpenCL and pthreads are fine too)&lt;br /&gt;
# In addition to the porting of the georectification tools mentioned above, it would be interesting to implement an orthorectification tool for satellite imagery. Currently, GRASS only has {{cmd|i.ortho.photo}} for aerial photographs.&lt;br /&gt;
# Implement image segmentation algorithms and tools&lt;br /&gt;
# Implement region-based classification&lt;br /&gt;
# Implement hierarchical classification tools (e.g. being able to create a large class &amp;quot;forest&amp;quot;, with subclasses of different types of forests)&lt;br /&gt;
# ''Your idea here''&lt;br /&gt;
&lt;br /&gt;
See the [[Image_processing#Ideas_collection_for_improving_GRASS.27_Image_processing_capabilities|ideas for imagery improvement]] and [http://trac.osgeo.org/grass/wiki/Grass7/ImageryLib GRASS 7 ideas] wiki pages for more details.&lt;br /&gt;
&lt;br /&gt;
'''Willing to Mentor:''' Hamish (co-mentor for parallelization), Markus Metz (orthorectification), (''your name here'')&lt;br /&gt;
&lt;br /&gt;
=== Cartography and display ===&lt;br /&gt;
&lt;br /&gt;
# Add SVG (and perhaps EPS) support to the display library, for use via {{cmd|d.graph}} and/or {{cmd|d.vect}}, and add SVG support to {{cmd|ps.map}} via a SVG to EPS converter tool (probably by adapting an existing GPL-compatible library). Code to be written in ANSI C. Step 1 is adding a Bézier curve rendering library function.&lt;br /&gt;
# Integrate Quantum/GRASS SVG output plugin with Inkscape. Python can serve as a common glue between these tools. The project would facilitate easy cartographic workflow while utilizing the advanced design functionality of Inkscape. This would be a two way bridge:&lt;br /&gt;
## QGIS/GRASS plugins to invoke an Inkscape process and send a data set.&lt;br /&gt;
## Inkscape plugin to query various OSGeo projects and display various data sets as layers.&lt;br /&gt;
# ''Your idea here ...''&lt;br /&gt;
&lt;br /&gt;
'''Willing to Mentor:''' Hamish (as a co-mentor)&lt;br /&gt;
&lt;br /&gt;
=== 3D visualization ===&lt;br /&gt;
&lt;br /&gt;
# Optimize OGSF (and NVIZ/wxNVIZ) to '''display large 3D point clouds with uninterupted tought speed'''. OGSF + (wx)NVIZ should be able to rotate point cloud (i.e. LiDAR dataset) with 4 millions of points on medium hardware (i.e. 2GHz CPU with 2Gb RAM and GPU with hardware transform and lighting support and dedicated video RAM) with response time not greater than 1.0 second.&lt;br /&gt;
# Design and implement '''text displaying and styling in OGSF library''' and it's front-ends (NVIZ, [[wxNVIZ]]). Solution should be user configurable (fonts, colors, effects etc.) and multilanguage friendly.&lt;br /&gt;
# Design and implement user-provided '''symbol support in OGSF library''' and it's front-ends (NVIZ, [[wxNVIZ]]). Solution should support GRASS symbols, SVG, and/or simple EPS symbols.&lt;br /&gt;
&amp;lt;!-- # Add/fix missing features to [[wxNVIZ]] (lighting, robust handling of z-exageration and viewing position including latlong data, cutting planes, multiattribute 3D points, decorations: scale, north, legend, text, isosurfaces and slicing) --&amp;gt;&lt;br /&gt;
# Drape multiple color maps over topography (equivalent to running r.patch or r.composite and draping the result; second raster is currently supported as transparency).&lt;br /&gt;
# Improve handling of z-exageration so that z-exag=1  is a realistic representation of landscape in terms of vertical scaling. Other default settings could also be improved to support wider range of data and improve robustness.&lt;br /&gt;
&lt;br /&gt;
'''Willing to Mentor:''' [[User:Landa|Martin Landa]] (for 2), co-mentor for 1 and 5: Helena Mitasova, (''your name here'')&lt;br /&gt;
&lt;br /&gt;
=== Volume modeling ===&lt;br /&gt;
&lt;br /&gt;
# Develop '''r3.flow''' for computing 3D flow lines and 3D flow accumulation from 3D rasters&lt;br /&gt;
# Enhance volume interpolation module '''{{cmd|v.vol.rst}}''' for handling of data in space-time cube, including computation of gradients and hypercurvatures&lt;br /&gt;
&lt;br /&gt;
'''Willing to Mentor:''' co-mentor Helena Mitasova, (''your name here'')&lt;br /&gt;
&lt;br /&gt;
=== Improved Python interface ===&lt;br /&gt;
&lt;br /&gt;
Design '''sophisticated Python scripting interface''' for GRASS based on [http://grass.osgeo.org/programming7/pythonlib.html GRASS Python Scripting Library]. This API should become more intuitive and more integrative&lt;br /&gt;
&lt;br /&gt;
GRASS GIS would gain even more attractiveness!&lt;br /&gt;
&lt;br /&gt;
'''Willing to Mentor:''' [[User:Huhabla|Sören Gebbert]]&lt;br /&gt;
&lt;br /&gt;
=== Other ===&lt;br /&gt;
&lt;br /&gt;
* See also the [https://trac.osgeo.org/grass/query?status=assigned&amp;amp;status=new&amp;amp;status=reopened&amp;amp;order=priority&amp;amp;col=id&amp;amp;col=summary&amp;amp;col=status&amp;amp;col=type&amp;amp;col=priority&amp;amp;col=milestone&amp;amp;col=component&amp;amp;type=enhancement GRASS wish list]&lt;br /&gt;
&lt;br /&gt;
# Implement selected modules (in C/C++) for geospatial analysis (kriging, etc.) based on [http://hpgl.aoizora.org/ HPGL] library (see also [http://hub.qgis.org/projects/quantum-gis/wiki/Python_Plugin_Ideas#Add-and-R-Free-geostatistic-toolbox-using-HPGL QGIS plugin wish]).&lt;br /&gt;
# Design and implement modern '''metadata management system''' for GRASS to support [http://www.opengeospatial.org/standards/cat OGC CSW] and INSPIRE discovery a view services&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
# Design '''GRASS toolboxes environment''', see [[GRASS repository layout proposal]] for detailed information. This would also include general clean up and organization of existing GRASS modules in trunk and add-ons.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
# ''Your idea here''&lt;br /&gt;
&lt;br /&gt;
'''Willing to Mentor:''' Wolf Bergenheim (Python API, metadata management), [[User:Landa|Martin Landa]] (for HPGL) (''your name here'')&lt;br /&gt;
&lt;br /&gt;
== Guidelines for Students ==&lt;br /&gt;
&lt;br /&gt;
How do you maximize your chances of getting picked? First read the [http://code.google.com/p/google-summer-of-code/wiki/AdviceforStudents Google SoC FAQ]. Then talk to us about your idea. Try emailing our [http://lists.osgeo.org/mailman/listinfo/grass-dev dev-mailing list], or come and talk to us in [[IRC]] (#grass). You can also reach the mentors directly by emailing:&lt;br /&gt;
* [http://lists.osgeo.org/mailman/listinfo/soc The OSGeo SoC mailing list]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
 * Anne (&amp;lt;tt&amp;gt; @ &amp;lt;/tt&amp;gt;)&lt;br /&gt;
 * Hamish (&amp;lt;tt&amp;gt;hamish_b at yahoo com&amp;lt;/tt&amp;gt;)&lt;br /&gt;
 * Wolf Bergenheim (&amp;lt;tt&amp;gt;wolf+grass at bergenheim.net&amp;lt;/tt&amp;gt;)&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* If you are thinking about applying, do make a point of reading the &amp;quot;[http://google-opensource.blogspot.co.nz/2011/02/flip-bits-not-burgers-student-guide.html Flip bits not Burgers: The Student's Guide to the Summer of Code]&amp;quot; eBook&lt;br /&gt;
&lt;br /&gt;
=== Getting started with GRASS coding ===&lt;br /&gt;
&lt;br /&gt;
* The source code is maintained in a [http://trac.osgeo.org/grass/browser/grass/trunk SVN server] which is easy to browse&lt;br /&gt;
&lt;br /&gt;
* Please review the submitting files for our coding standards&lt;br /&gt;
** {{src|SUBMITTING|branch=trunk}} for C coding rules&lt;br /&gt;
** {{src|SUBMITTING_PYTHON|branch=trunk}} for Python coding rules&lt;br /&gt;
** {{src|SUBMITTING_DOCS|branch=trunk}} for Documentantion coding rules&lt;br /&gt;
&lt;br /&gt;
* There is lots of good info at the [http://trac.osgeo.org/grass/wiki GRASS Developer's wiki]&lt;br /&gt;
: See also the [[Development|development section]] of the GRASS user's wiki&lt;br /&gt;
&lt;br /&gt;
== Guidelines for Mentors ==&lt;br /&gt;
&lt;br /&gt;
* Un(?)official book: http://www.booki.cc/gsoc-mentoring/&lt;br /&gt;
* Some more hints on the [http://wiki.osgeo.org/wiki/Google_Summer_of_Code_2012_Administrative#Links OSGeo wiki]&lt;br /&gt;
&lt;br /&gt;
== Accepted Ideas ==&lt;br /&gt;
&lt;br /&gt;
# ''Project name''&lt;br /&gt;
#: Student: Your name here&lt;br /&gt;
#: Mentor: Your mentor's name here&lt;br /&gt;
#: Backup mentor: Your backup mentor's name here&lt;br /&gt;
#: Wiki page: wiki page maintained by you (typically in this GRASS wiki, or the trac development wiki)&lt;br /&gt;
# ''Project name''&lt;br /&gt;
#: Student: Someone else's name here&lt;br /&gt;
#: Mentor: Their mentor's name here&lt;br /&gt;
#: Backup mentor: Their backup mentor's name here&lt;br /&gt;
#: Wiki page: wiki page maintained by them (typically in this GRASS wiki, or the trac development wiki)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Community]]&lt;br /&gt;
[[Category:GSoC]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Prague_2012&amp;diff=15360</id>
		<title>GRASS Community Sprint Prague 2012</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Prague_2012&amp;diff=15360"/>
		<updated>2012-04-13T18:56:16Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* In person */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The GRASS GIS team will organize a '''GRASS Developer and Power User Meeting, aka 'GRASS Community Sprint'''' from '''May 23 to May 28, 2012'''. The sprint is following the [http://foss4g-cee.org/ FOSS4G-CEE] &amp;amp; [http://geoinformatics.fsv.cvut.cz/gwiki/Geoinformatics_FCE_CTU_2012 Geoinformatics] ''(Free and Open Source Software for Geospatial in Central and East Europe)'', 21-23 May 2012, Czech Technical University in [http://en.wikipedia.org/wiki/Prague Prague], [http://en.wikipedia.org/wiki/Czech_Republic Czech Republic].&lt;br /&gt;
&lt;br /&gt;
'''Important dates:'''&lt;br /&gt;
&lt;br /&gt;
* 21 (Monday) - 23 (Wednesday) May 2012: [http://foss4g-cee.org/ FOSS4G-CEE &amp;amp; Geoinformatics conference]&lt;br /&gt;
&lt;br /&gt;
* '''23 (Wednesday) - 28 (Monday) May 2012: GRASS GIS Community Sprint''' @ [http://www.fsv.cvut.cz/ FCE CTU]&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
Get together GRASS GIS project members to make decisions and tackle larger problems.&lt;br /&gt;
&lt;br /&gt;
For this meeting, we welcome people committed to improving the GRASS GIS project. This includes developers, document writers, wish and bug reporters, translators etc.&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
We welcome financial contributions to support the meeting and we are looking for sponsors to cover costs such as meals or 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/donation.php http://grass.osgeo.org/donation.php]'''&lt;br /&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 first 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;
We are grateful for the support which we have received to organize this GRASS Community Sprint:&lt;br /&gt;
&lt;br /&gt;
@TODO&lt;br /&gt;
&lt;br /&gt;
== Timing  ==&lt;br /&gt;
&lt;br /&gt;
'''When''': Wednesday, May 23, 2012 (day of arrival) - Monday, May 28, 2012 (day of departure)&lt;br /&gt;
&lt;br /&gt;
Of course you are invited to join or leave the community sprint whenever you want.&lt;br /&gt;
&lt;br /&gt;
'''Duration''':&lt;br /&gt;
&lt;br /&gt;
* Wednesday is day of arrival&lt;br /&gt;
** First meeting in the evening (after the [http://foss4g-cee.org/ FOSS4G-CEE &amp;amp; Geoinfomatics conference]) to define the agenda&lt;br /&gt;
* Thursday to Sunday&lt;br /&gt;
** Full days&lt;br /&gt;
* Monday is day of departure&lt;br /&gt;
** Probably hacking for people with a flight later in the evening&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
[[Image:logo_cvut.jpg|130px|left]]&lt;br /&gt;
Department of Mapping and Cartography&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.fsv.cvut.cz Faculty of Civil Engineering]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://www.cvut.cz Czech Technical University in Prague], [http://en.wikipedia.org/wiki/Czech_Republic Czech Republic]&amp;lt;br&amp;gt;&lt;br /&gt;
[http://geoinformatics.fsv.cvut.cz/gwiki/Room_B367 Room B367] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''[http://geoinformatics.fsv.cvut.cz/gwiki/Where_you_can_find_us Location &amp;amp; Transportations]'''&lt;br /&gt;
&lt;br /&gt;
Prague has an international [http://www.prg.aero/en/ airport] and is also reachable by train, bus or car.&lt;br /&gt;
&lt;br /&gt;
== Accommodation and Costs ==&lt;br /&gt;
&lt;br /&gt;
Participants should plan for the following costs:&lt;br /&gt;
&lt;br /&gt;
* Travel to Prague, variable depending on where you come from&lt;br /&gt;
* Accommodation and meals&lt;br /&gt;
'''Please note''': The currency in Czech Republic is [http://en.wikipedia.org/wiki/Czech_crown crown] (CZK, koruna, Kč). 100 Czech crowns are about 4 Euros (see [http://www.cnb.cz/en/financial_markets/foreign_exchange_market/exchange_rate_fixing/daily.jsp current rates]).&lt;br /&gt;
&lt;br /&gt;
'''[http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague Accommodation in Prague]'''&lt;br /&gt;
&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Masarykova_Kolej_Hotel Masarykova Kolej Hotel]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_DAP Hotel DAP]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_Krystal Hotel Krystal]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Pension_Hanspaulka Pension Hanspaulka]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Hotel_Silenzio Hotel Silenzio]&lt;br /&gt;
:* [http://geoinformatics.fsv.cvut.cz/gwiki/Accommodation_in_Prague#Student_hostels_.28CTU.29 Student hostels (CTU)]&lt;br /&gt;
:* Special offer: ''sleeping for free in the kindergarten'' (30min by city urban mass transportation from the university campus, sleeping bag required, kitchen and WC available, no showers, in working days available only from 8 p.m. to 8 a.m.), contact [[User:Landa|Martin Landa]] for details&lt;br /&gt;
:* See also http://www.hotel.cz/praha-6/accommodation/&lt;br /&gt;
&lt;br /&gt;
Please let us know your time of arrival and leaving, so we can book for the accommodations and organize the logistics.&lt;br /&gt;
&lt;br /&gt;
Financial support: (partial) travel grants can be payed upon request thanks to our sponsors!&lt;br /&gt;
&lt;br /&gt;
== Weather and Common Item Prices ==&lt;br /&gt;
&lt;br /&gt;
* In May the weather in Prague is usually quite warm ([http://www.prague-spot.com/climate 15 or more degrees by day])&lt;br /&gt;
* A espresso coffee is about 20 CZK (80 cents), a beer (half of liter) in a common pub is around 25 CZK (1 euro), can be more in special pubs. In Prague you can have a full meal (see [http://en.wikipedia.org/wiki/Czech_cuisine Czech cuisine]) for still 75 - 150 CZK (3 - 6 euros), but beware of tourist restaurants, the prize can easily rise. It's quite easy to find in Prague also Italian or Chinese restaurants.&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.&lt;br /&gt;
&lt;br /&gt;
@TODO&lt;br /&gt;
&lt;br /&gt;
=== Timeline ===&lt;br /&gt;
&lt;br /&gt;
==== Wednesday, 23 May ====&lt;br /&gt;
* Kick-off at ''&amp;lt;time to be defined&amp;gt;''&lt;br /&gt;
&lt;br /&gt;
@TODO&lt;br /&gt;
&lt;br /&gt;
=== Topics ===&lt;br /&gt;
&lt;br /&gt;
==== Non-technical ====&lt;br /&gt;
&lt;br /&gt;
@TODO&lt;br /&gt;
&lt;br /&gt;
==== Semi-technical ====&lt;br /&gt;
&lt;br /&gt;
@TODO&lt;br /&gt;
&lt;br /&gt;
==== Technical ====&lt;br /&gt;
&lt;br /&gt;
@TODO&lt;br /&gt;
&lt;br /&gt;
== Participation ==&lt;br /&gt;
&lt;br /&gt;
We are planning for attendance of 20 people (i.e., hacking places) but of course you are welcome to join us and bring new ideas with you, as more places are available. Please add your name here or contact [[User:Landa|Martin Landa]] &amp;lt;tt&amp;gt;&amp;lt;landa.martin at gmail.com&amp;gt;&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
=== In person ===&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:Landa|Martin Landa]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
|Toolbox concept, vector engine in GRASS 7, wxGUI&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:Neteler|Markus Neteler]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 20&lt;br /&gt;
| May 26&lt;br /&gt;
|odds and ends, varia&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|[[User:Lucadelu|Luca Delucchi]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 20&lt;br /&gt;
| May 26&lt;br /&gt;
| r.modis, r.li.setup gui, v.in.geopaparazzi (only if andrea antonello come to Prague)&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|[[User:moovida|Andrea Antonello]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 21/22&lt;br /&gt;
| May 25/26&lt;br /&gt;
| v.in.geopaparazzi, grass-uDig link, singing at the pub with Luca Delucchi&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[User:silli|Silvia Franceschi]]&lt;br /&gt;
|Italy&lt;br /&gt;
| May 21/22&lt;br /&gt;
| May 25/26&lt;br /&gt;
| Tutorial/Documentation around the hydraulic toolchain in grass&lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|[[User:peter.loewe|Peter Loewe]]&lt;br /&gt;
|Germany&lt;br /&gt;
| May 20/21&lt;br /&gt;
| May 25/26&lt;br /&gt;
| collecting beer-money while Luca and Andrea sing in pubs ; i.atcorr debugging ; g.cloud ? ; r.tsunami ? ; Tutorial/Documentation on g.infer &lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|[[User:Annakrat|Anna Kratochvilova]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
| imagery, wxGUI &lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|[[User:Vaclav|Vaclav Petras]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| May 20&lt;br /&gt;
| May 28&lt;br /&gt;
| imagery, wxGUI, Toolbox concept ?&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|[[User:Helena|Helena Mitasova]]&lt;br /&gt;
|USA&lt;br /&gt;
|May 21&lt;br /&gt;
|May 25/26&lt;br /&gt;
|toolbox concept, student sandbox, wxnviz z-scale, inventory of mobile and touch implementations, GRASS on-line and cloud&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|[[User:Huhabla|Sören Gebbert]]&lt;br /&gt;
|Germany&lt;br /&gt;
|May 20&lt;br /&gt;
|May 27&lt;br /&gt;
|Temporal GIS framework demo and discussion, Temporal GIS wxGUI and WPS integration, massive parallel computation of spatio-temporal datasets, Cloud computing &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;
@TODO&lt;br /&gt;
&lt;br /&gt;
=== Collaborative document scratching ===&lt;br /&gt;
&lt;br /&gt;
* EtherPad: http://etherpad.osuosl.org&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 power connector adapter] if needed (Czech Republic: 230V, 50Hz, [http://en.wikipedia.org/wiki/File:Euro-Flachstecker_2.jpg Type C Europlugs] are common and also [http://en.wikipedia.org/wiki/File:French_plug_and_socket.jpg Type E])&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;
During the event :)&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
Also during the event :)&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* How was it last year?&lt;br /&gt;
** Very nice, see [[GRASS Community Sprint Prague 2011]]!&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:Landa|Martin Landa]] &amp;lt;tt&amp;gt;&amp;lt;landa.martin at gmail.com&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Workshops]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Python_Ctypes_Examples&amp;diff=15285</id>
		<title>Python Ctypes Examples</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Python_Ctypes_Examples&amp;diff=15285"/>
		<updated>2012-04-07T15:26:24Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Raster */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See [[GRASS and Python]] for more information. See also [http://trac.osgeo.org/grass/browser/grass/trunk/doc/python/raster_example_ctypes.py raster], [http://trac.osgeo.org/grass/browser/grass/trunk/doc/python/vector_example_ctypes.py vector] sample scripts.&lt;br /&gt;
__TOC__&lt;br /&gt;
== Raster ==&lt;br /&gt;
&lt;br /&gt;
=== Working with (geographic) coordinates for each raster cell and the computational region ===&lt;br /&gt;
&lt;br /&gt;
The ctypes interfaces are thin wrappers around the corresponding C&lt;br /&gt;
functions. Any script which uses them should have essentially the same&lt;br /&gt;
structure as a module written in C. Structures can be allocated by&lt;br /&gt;
using the structure name as a function, and passed by reference using&lt;br /&gt;
[http://docs.python.org/library/ctypes.html ctypes]' byref() function.&lt;br /&gt;
&lt;br /&gt;
The second argument to G_col_to_easting() and G_row_to_northing() is a&lt;br /&gt;
&amp;quot;const struct Cell_head *&amp;quot;. The information can be obtained from&lt;br /&gt;
G_get_window(), e.g.:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
       import sys&lt;br /&gt;
       import grass.lib.gis as gis&lt;br /&gt;
       from ctypes import *&lt;br /&gt;
&lt;br /&gt;
       gis.G_gisinit(sys.argv[0])&lt;br /&gt;
&lt;br /&gt;
       region = gis.Cell_head()&lt;br /&gt;
       G_get_window(byref(region))&lt;br /&gt;
       coor_col = gis.G_col_to_easting((thecolumn + 0.5), byref(region))&lt;br /&gt;
       coor_row = gis.G_row_to_northing((therow + 0.5), byref(region))&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Basic raster metadata access methods ===&lt;br /&gt;
&lt;br /&gt;
This is a simple demonstration script to show the ctypes style access to some of the raster metadata.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
from ctypes import *&lt;br /&gt;
import grass.lib.gis as libgis&lt;br /&gt;
import grass.lib.raster as libraster&lt;br /&gt;
&lt;br /&gt;
import grass.script as grass&lt;br /&gt;
import grass.temporal as tgis&lt;br /&gt;
&lt;br /&gt;
def print_raster_info(name):&lt;br /&gt;
  &lt;br /&gt;
  grass.run_command(&amp;quot;r.mapcalc&amp;quot;, expr=name + &amp;quot; = 5.0&amp;quot;, overwrite=True)&lt;br /&gt;
  grass.run_command(&amp;quot;r.timestamp&amp;quot;, map=name, date=&amp;quot;13 Jan 2003 / 15 Jan 2003&amp;quot;)&lt;br /&gt;
  &lt;br /&gt;
  # Create a region struct&lt;br /&gt;
  region = libgis.Cell_head()&lt;br /&gt;
&lt;br /&gt;
  # Read the raster region&lt;br /&gt;
  libraster.Rast_get_cellhd(&amp;quot;test&amp;quot;, &amp;quot;&amp;quot;, byref(region))&lt;br /&gt;
  print region.cols&lt;br /&gt;
  print region.rows&lt;br /&gt;
  print region.north&lt;br /&gt;
  print region.south&lt;br /&gt;
  print region.east&lt;br /&gt;
  print region.west&lt;br /&gt;
  print region.ns_res&lt;br /&gt;
  print region.ew_res&lt;br /&gt;
  print region.top&lt;br /&gt;
  print region.bottom&lt;br /&gt;
  print region.tb_res&lt;br /&gt;
  print region.depths&lt;br /&gt;
  print region.proj&lt;br /&gt;
  &lt;br /&gt;
  # Get Map type&lt;br /&gt;
  maptype = libraster.Rast_map_type(name, &amp;quot;&amp;quot;)&lt;br /&gt;
  &lt;br /&gt;
  if maptype == libraster.DCELL_TYPE:&lt;br /&gt;
    print &amp;quot;DCELL&amp;quot;&lt;br /&gt;
  elif maptype == libraster.FCELL_TYPE:&lt;br /&gt;
    print &amp;quot;FCELL&amp;quot;&lt;br /&gt;
  elif maptype == libraster.CELL_TYPE:&lt;br /&gt;
    print &amp;quot;CELL&amp;quot;&lt;br /&gt;
  else:&lt;br /&gt;
    print &amp;quot;Unknown type&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  # Read range&lt;br /&gt;
  if libraster.Rast_map_is_fp(name, &amp;quot;&amp;quot;):&lt;br /&gt;
    print &amp;quot;Floating point map&amp;quot;&lt;br /&gt;
    range = libraster.FPRange()&lt;br /&gt;
    libraster.Rast_read_fp_range(name, &amp;quot;&amp;quot;, byref(range))&lt;br /&gt;
    min = libgis.DCELL()&lt;br /&gt;
    max = libgis.DCELL()&lt;br /&gt;
    libraster.Rast_get_fp_range_min_max(byref(range), byref(min), byref(max))&lt;br /&gt;
  else:&lt;br /&gt;
    print &amp;quot;Cell map&amp;quot;&lt;br /&gt;
    range = libraster.Range()&lt;br /&gt;
    libraster.Rast_read_range(name, &amp;quot;&amp;quot;, byref(range))&lt;br /&gt;
    min = libgis.CELL()&lt;br /&gt;
    max = libgis.CELL()&lt;br /&gt;
    libraster.Rast_get_fp_range_min_max(byref(range), byref(min), byref(max))&lt;br /&gt;
    &lt;br /&gt;
  minimum = min.value&lt;br /&gt;
  maximum = max.value&lt;br /&gt;
  print minimum&lt;br /&gt;
  print maximum&lt;br /&gt;
  &lt;br /&gt;
  # Read time stamp&lt;br /&gt;
  tstmp = libgis.TimeStamp()&lt;br /&gt;
  libgis.G_read_raster_timestamp(name, &amp;quot;&amp;quot;, byref(tstmp))&lt;br /&gt;
  &lt;br /&gt;
  print tstmp.count&lt;br /&gt;
  &lt;br /&gt;
  dt1 = tstmp.dt[0]&lt;br /&gt;
  dt2 = tstmp.dt[1]&lt;br /&gt;
  &lt;br /&gt;
  if tstmp.count &amp;gt;= 1:&lt;br /&gt;
    print dt1.mode&lt;br /&gt;
    print dt1.year&lt;br /&gt;
    print dt1.month&lt;br /&gt;
    print dt1.day&lt;br /&gt;
    print dt1.hour&lt;br /&gt;
    print dt1.minute&lt;br /&gt;
    print dt1.second&lt;br /&gt;
  if tstmp.count &amp;gt; 1:&lt;br /&gt;
    print dt2.mode&lt;br /&gt;
    print dt2.year&lt;br /&gt;
    print dt2.month&lt;br /&gt;
    print dt2.day&lt;br /&gt;
    print dt2.hour&lt;br /&gt;
    print dt2.minute&lt;br /&gt;
    print dt2.second&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
if __name__ == &amp;quot;__main__&amp;quot;:&lt;br /&gt;
    print_raster_info(&amp;quot;test&amp;quot;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vector ==&lt;br /&gt;
&lt;br /&gt;
=== Accessing feature geometry ===&lt;br /&gt;
&lt;br /&gt;
This script switches X, Y coordinates and multiple them by -1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
from grass.lib.vector import *&lt;br /&gt;
&lt;br /&gt;
if len(sys.argv) &amp;lt; 2:&lt;br /&gt;
    sys.exit(&amp;quot;Usage: %s: vector&amp;quot; % sys.argv[0])&lt;br /&gt;
&lt;br /&gt;
name = sys.argv[1]&lt;br /&gt;
&lt;br /&gt;
map_info = pointer(Map_info())&lt;br /&gt;
points = Vect_new_line_struct()&lt;br /&gt;
cats = Vect_new_cats_struct()&lt;br /&gt;
c_points = points.contents&lt;br /&gt;
&lt;br /&gt;
level = Vect_open_update(map_info, name, &amp;quot;&amp;quot;)&lt;br /&gt;
if level &amp;lt; 2:&lt;br /&gt;
    sys.exit(&amp;quot;Topology not available&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
nlines = Vect_get_num_lines(map_info)&lt;br /&gt;
&lt;br /&gt;
for line in range(1, nlines + 1):&lt;br /&gt;
    ltype = Vect_read_line(map_info, points, cats, line)&lt;br /&gt;
    if line % 100 == 0:&lt;br /&gt;
        sys.stderr.write(&amp;quot;\r%d&amp;quot; % line)&lt;br /&gt;
    &lt;br /&gt;
    for i in range(c_points.n_points):&lt;br /&gt;
        x = c_points.x[i]&lt;br /&gt;
        c_points.x[i] = -1 * c_points.y[i]&lt;br /&gt;
        c_points.y[i] = -1 * x&lt;br /&gt;
    &lt;br /&gt;
    Vect_rewrite_line(map_info, line, ltype,&lt;br /&gt;
                      points, cats)&lt;br /&gt;
    line += 1&lt;br /&gt;
&lt;br /&gt;
sys.stderr.write(&amp;quot;\r&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Vect_destroy_line_struct(points)&lt;br /&gt;
Vect_destroy_cats_struct(cats)&lt;br /&gt;
&lt;br /&gt;
Vect_build_partial(map_info, GV_BUILD_NONE)&lt;br /&gt;
Vect_build(map_info)&lt;br /&gt;
Vect_close(map_info)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* http://docs.python.org/library/ctypes.html&lt;br /&gt;
&lt;br /&gt;
{{Python}}&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community&amp;diff=14254</id>
		<title>GRASS Community</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community&amp;diff=14254"/>
		<updated>2011-10-24T13:45:46Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* GRASS Add-on modules */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== About the project ==&lt;br /&gt;
&lt;br /&gt;
=== Freedom ===&lt;br /&gt;
&lt;br /&gt;
The GRASS GIS project is developed under the terms of the [http://www.gnu.org/copyleft/gpl.html GNU General Public License] (the GPL) [http://grass.ibiblio.org/devel/index.php in the open] by [http://grass.ibiblio.org/community/index.php volunteers] the [http://mapserver.gdf-hannover.de/grassusers/map.phtml world over].&lt;br /&gt;
&lt;br /&gt;
GRASS differs from many other GIS software packages used in the professional world in that it is developed and distributed by users for users; mostly on a volunteer basis, in the open, and is given away for free.&lt;br /&gt;
&lt;br /&gt;
Emphasis is placed on interoperability and unlimited access to data as well as software flexibility and evolution rate (both added features and bug minimization). &lt;br /&gt;
&lt;br /&gt;
* [[Gis_Concepts#How_the_Open_Source_software_development_model_works|How the Open Source software development model works]]&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Gpl WikiPedia entry discussing the GPL]&lt;br /&gt;
&lt;br /&gt;
=== The GRASS Community and the Development Team ===&lt;br /&gt;
&lt;br /&gt;
* [http://grass.ibiblio.org/community/index.php The Community]&lt;br /&gt;
* [http://grass.ibiblio.org/community/team.php The Development Team]&lt;br /&gt;
* [[GRASS_Translation_Team|The Translation Team]]&lt;br /&gt;
* [[PSC|The GRASS Project Steering Commitee]]&lt;br /&gt;
&lt;br /&gt;
=== User Map ===&lt;br /&gt;
* [http://mapserver.gdf-hannover.de/grassusers/map.phtml?winwidth=890&amp;amp;winheight=630&amp;amp;language=1&amp;amp;mapwidth=600&amp;amp;mapheight=400 GRASS User Map]&lt;br /&gt;
* Description of new [[GRASS UserMap]]&lt;br /&gt;
&lt;br /&gt;
=== Open Source Geospatial Foundation (OSGeo) ===&lt;br /&gt;
* The new [http://www.osgeo.org/ Open Source Geospatial Foundation] (OSGeo.org) was established in Chicago. GRASS was proposed as founding project.&lt;br /&gt;
* [[Potential tasks and responsibilities]] (earlier proposal)&lt;br /&gt;
* [[GRASS Project Steering Commitee]] for the OSGeo Foundation&lt;br /&gt;
* [[GRASS Project Incubation]] at the OSGeo Foundation&lt;br /&gt;
* http://grass.osgeo.org/&lt;br /&gt;
&lt;br /&gt;
=== Other Free GIS projects ===&lt;br /&gt;
&lt;br /&gt;
* [http://freegis.org FreeGIS.org]&lt;br /&gt;
* [http://pkg-grass.alioth.debian.org/cgi-bin/wiki.pl The DebianGIS Project]&lt;br /&gt;
&lt;br /&gt;
== Getting Help ==&lt;br /&gt;
&lt;br /&gt;
=== Mailing lists ===&lt;br /&gt;
&lt;br /&gt;
* The primary point of contact for GRASS user help and development coordination is on the [http://grass.ibiblio.org/community/support.php mailing lists]. The answers to many questions you may have will probably already have been addressed and will be waiting for you in the [http://grass.ibiblio.org/searchgrass.php mailing list archives].&lt;br /&gt;
&lt;br /&gt;
* Because the mailing lists are so critical to the project's success, and support comes entirely from time-strapped volunteers and colleagues, we request some [[mailing list etiquette]] be followed.&lt;br /&gt;
&lt;br /&gt;
=== IRC communication ===&lt;br /&gt;
&lt;br /&gt;
IRC is live Internet Relay Chat. The GRASS project maintains a &amp;quot;chatroom&amp;quot; and if you are lucky there may be someone logged on who can give you a quick answer.&lt;br /&gt;
&lt;br /&gt;
* [[How to participate in IRC communication]] (#grass, #osgeo, #gdal, #qgis, #mapserver and other channels)&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
&lt;br /&gt;
* You've already discovered the wiki. Go forth and explore!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Community resources ==&lt;br /&gt;
&lt;br /&gt;
=== GRASS education (Free GIS education) ===&lt;br /&gt;
&lt;br /&gt;
The GRASS education (Free GIS education) wiki site offers a start to collect links, text documents and small images. Furthermore it provides a discussion platform to develop and collect approaches, techniques, exercises and course structures for people giving GRASS and/or other Free GIS courses.&lt;br /&gt;
&lt;br /&gt;
* [[GRASS_Education_(Free_GIS_education) | GRASS education (Free GIS education)]]&lt;br /&gt;
&lt;br /&gt;
=== Promoting GRASS GIS ===&lt;br /&gt;
&lt;br /&gt;
* [[GRASS promotion team]]&lt;br /&gt;
* [[Promotional material]]&lt;br /&gt;
* [[GRASS migration hints]]&lt;br /&gt;
* [[GRASS Propaganda]]&lt;br /&gt;
&lt;br /&gt;
=== Conferences ===&lt;br /&gt;
* [http://www.foss4g2007.org FOSS4G2007 - Free and Open Source Software for Geospatial 2007] Victoria, Canada September 24-27, 2007&lt;br /&gt;
* [http://www.foss4g2006.org/ FOSS4G2006 - Open Source Geospatial Communities Joint Conference] 12-15 September 2006 in Lausanne, Switzerland with GRASS workshops...&lt;br /&gt;
* [[GRASS related workshops and presentations]]&lt;br /&gt;
&lt;br /&gt;
=== Seminars and Courses ===&lt;br /&gt;
* [[U.S. NOAA/National Weather Service GRASS GIS Workshop - Ohio River Forecast Center, Wilmington, OH, May 16-20, 2011]]&lt;br /&gt;
&lt;br /&gt;
=== GRASS Add-on modules ===&lt;br /&gt;
&lt;br /&gt;
* [[GRASS AddOns]] software contributed by the community&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Community]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Test_Suite&amp;diff=13793</id>
		<title>Test Suite</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Test_Suite&amp;diff=13793"/>
		<updated>2011-07-05T09:51:18Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Main picture */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= GRASS Test Suite =&lt;br /&gt;
&lt;br /&gt;
We aim at creating a comprehensive test suite for GRASS modules and libraries.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
See what has been done so far by Sören Gebbert and others here: [[Development#QA]] and the good [[http://www.vtk.org/Wiki/images/b/bc/Testing.cover.txt | VKT test suite]]&lt;br /&gt;
&lt;br /&gt;
Keep an eye on [[GRASS_7_ideas_collection#Complete_GRASS_Test_Suite:_see_activity_on_Test_Suite_development_page | GRASS 7 ideas collection]]&lt;br /&gt;
&lt;br /&gt;
== Main picture ==&lt;br /&gt;
&lt;br /&gt;
We plan to run unittests and integration tests for both libraries and modules. The test suite will be run after compilation, with a command like:&lt;br /&gt;
&lt;br /&gt;
  $ make tests [ proj ]&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
* proj: run the tests with a [list of] CRS, so that reprojection and map unit handling are tested.&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
Tests are executed recursively. If the &amp;quot;make tests&amp;quot; command is executed in the root source folder all libraries and modules are tested. To test only the libraries you need to switch in the '''lib''' directory and execute &amp;quot;make tests&amp;quot;. If you want to test only raster modules switch into the '''raster''' directory and run &amp;quot;make tests&amp;quot;, same for other modules directories. To test a single module switch into the module directory and run &amp;quot;make tests&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Testing should work in parallel, so that make -j6 tests will execute as maximum 6 tests in parallel. The framework should take care that parallel testing test runs can be performed.&lt;br /&gt;
&lt;br /&gt;
== Tests == &lt;br /&gt;
&lt;br /&gt;
=== Modules ===&lt;br /&gt;
Tests are targeted to cover all modules as well as library test modules.&lt;br /&gt;
&lt;br /&gt;
The modules tests should as independent as possible from other GRASS modules.&lt;br /&gt;
&lt;br /&gt;
Tests are written as simple shell script with annotations. Test script should start with '''test.''' followed by the module name i.e. '''r.mapcalc.''' and further ending with '''.sh'''. Example '''test.r.mapcalc.1.sh'''. All test should be well documented using shell comments.&lt;br /&gt;
&lt;br /&gt;
The framework will execute all test scripts starting with '''test.''' and ending with '''.sh''' located in module or library directories.&lt;br /&gt;
&lt;br /&gt;
Annotations are integrated in the test documentation (simple shell comments) and specify pre-processing steps, the tests and the type of the data to validate. The following annotations should be supported:&lt;br /&gt;
&lt;br /&gt;
* The '''@preprocess''' annotation&lt;br /&gt;
** All commands below this annotation are handled as preprocessing steps for the tests. &lt;br /&gt;
** If any of the preprocess commands fail, the framework should stop testing an create a detailed error report. &lt;br /&gt;
** Preprocessing steps may be data generation, region settings and so on.&lt;br /&gt;
** The preprocess annotation is valid till a '''@test''' annotation specifies the begin of a test&lt;br /&gt;
** Preprocess annotations can be specified at between tests&lt;br /&gt;
* The '''@test''' annotation&lt;br /&gt;
** All command below a this annotation are handled as tests by the framework&lt;br /&gt;
** The test annotation must be integrated in the comment block which describes the test&lt;br /&gt;
** Data validation is performed by the framework for tests if reference data is present&lt;br /&gt;
** The test annotation is valid till a '''@preprocess''' annotation specifies the begin of a preprocess block for further test runs&lt;br /&gt;
** The data type annotations&lt;br /&gt;
*** Data type annotations should be specified in the same comment block as the '''@test''' annotation&lt;br /&gt;
*** Data type annotations specify the grass data types which should be validated with reference data&lt;br /&gt;
*** The following data type annotations should be specified&lt;br /&gt;
**** '''@file''' the framework should compare the reference data with files&lt;br /&gt;
**** '''@raster''' the framework should compare the reference data with raster maps using r.out.ascii for export&lt;br /&gt;
**** '''@vector''' the framework should compare the reference data with vector maps using v.out.ascii for export&lt;br /&gt;
**** '''@raster3d''' the framework should compare the reference data with raster3d maps using r3.out.ascii for export&lt;br /&gt;
**** '''@color''' the framework should compare the reference data with color rules using r.color.out for export&lt;br /&gt;
**** '''@color3d''' the framework should compare the reference data with 3d color rules using r3.color.out for export&lt;br /&gt;
**** '''@table''' the framework should compare the reference data with SQL tables  using db.select for export&lt;br /&gt;
**** ... please add more&lt;br /&gt;
** The '''@precision=[positive integer]''' annotation&lt;br /&gt;
*** Should be located in a test comment block&lt;br /&gt;
*** Specifies the precision to use to export grass data for validation with reference files&lt;br /&gt;
*** In case the precision is not provided the default behavior of the export module is used&lt;br /&gt;
&lt;br /&gt;
Reference data for validation must be located in the module/library reference directory. The reference data names must be identical with the generated data (files, maps, ...) except that reference data always has a '''.ref''' suffix.  &lt;br /&gt;
&lt;br /&gt;
Tests are in each module's and in each library's folder. To test library functions special modules must be implemented. Library test modules test the library functions directly and should be written in C. Have a look at the test directories in the g3d, gpde and gmath libraries of grass7.&lt;br /&gt;
&lt;br /&gt;
Framework should be able to generate and compare grass data types: raster, vector, raster3d, general, db, icon, imagery, d.*?&lt;br /&gt;
&lt;br /&gt;
wxGUI testing should be tested separately.&lt;br /&gt;
&lt;br /&gt;
Automated tests on server generates HTML report. Test several platforms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here some examples already available in grass7:&lt;br /&gt;
&lt;br /&gt;
=== test.v.random.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This is a simple test for v.random&lt;br /&gt;
# We create several identical pseudo random points maps :)&lt;br /&gt;
# using the seed option for rand and drand48&lt;br /&gt;
&lt;br /&gt;
# In the @preprocess step we set up a suitable region&lt;br /&gt;
g.region n=80 s=0 w=0 e=120 res=10 -p&lt;br /&gt;
&lt;br /&gt;
# First @test the rand function. Create a 3d vector map with attribute table&lt;br /&gt;
# The validation is based on @vector map with a @precision=3&lt;br /&gt;
v.random --o -z output=test_random_vect_1 n=20 zmin=0 zmax=100 seed=501&lt;br /&gt;
# Now the attribute @table should be validated. Booth maps are identical&lt;br /&gt;
v.random --o -z output=test_random_vect_2 n=20 zmin=0 zmax=100 column=height seed=501&lt;br /&gt;
&lt;br /&gt;
# Second @test the drand48 function. Create a 3d vector map with attribute table&lt;br /&gt;
# The validation is based on @vector map with a @precision=3&lt;br /&gt;
v.random --o -zd output=test_random_vect_3 n=20 zmin=0 zmax=100 seed=501&lt;br /&gt;
# Now the attribute @table should be validated. Booth maps are identical&lt;br /&gt;
v.random --o -zd output=test_random_vect_4 n=20 zmin=0 zmax=100 column=height seed=501&lt;br /&gt;
&lt;br /&gt;
# Export the generated data as references&lt;br /&gt;
# v.out.ascii --o format=point dp=3 input=test_random_vect_1 output=test_random_vect_1.ref&lt;br /&gt;
# db.select &amp;quot;select * from test_random_vect_2&amp;quot; &amp;gt; test_random_vect_2.ref&lt;br /&gt;
# v.out.ascii --o format=point dp=3 input=test_random_vect_3 output=test_random_vect_3.ref&lt;br /&gt;
# db.select &amp;quot;select * from test_random_vect_4&amp;quot; &amp;gt; test_random_vect_4.ref&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the v.random directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r--  1 soeren users  460 18. Jun 01:20 test_random_vect_1.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  257 18. Jun 01:20 test_random_vect_2.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  455 18. Jun 01:20 test_random_vect_3.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  256 18. Jun 01:20 test_random_vect_4.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test.r3.out.vtk.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This script tests the export of voxel data&lt;br /&gt;
# into the VTK format. Almost all options of&lt;br /&gt;
# r3.out.vtk are tested. Validation data for each test&lt;br /&gt;
# is located in the module source directory&lt;br /&gt;
&lt;br /&gt;
# We need to set a specific region in the&lt;br /&gt;
# @preprocess step of this test. We generate&lt;br /&gt;
# raster and voxel data with r.mapcalc and r3.mapcalc&lt;br /&gt;
# The region setting should work for UTM and LL test locations&lt;br /&gt;
g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3&lt;br /&gt;
# Now generate two elevation maps, we have 8 rows and use&lt;br /&gt;
# them for elevation computation. The rows are counted from north&lt;br /&gt;
# to south. So in the south the elevation must have a maximum.&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_bottom = row()&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_top = row() + 50&amp;quot;&lt;br /&gt;
# Now create a voxel map with value = col + row + depth. &lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume = col() + row() + depth()&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_null = if(row() == 2 || row() == 7, null(), volume)&amp;quot;&lt;br /&gt;
# Create the rgb maps&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_rgb = volume_null * 5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# The first @test just exports the volume map as cell and point data&lt;br /&gt;
# using a low precision and replaces the default null value with 0&lt;br /&gt;
# the created @files should be compared with the reference data&lt;br /&gt;
r3.out.vtk --o input=volume_null output=test_volume_null_1_cells.vtk dp=3 null=0&lt;br /&gt;
r3.out.vtk -p --o input=volume_null output=test_volume_null_1_points.vtk dp=3 null=0&lt;br /&gt;
&lt;br /&gt;
# The second @test adds rgb and vector maps. We re-use the created volume map&lt;br /&gt;
# for vector creation. The rgb value must range fom 0 - 255. The generated @files&lt;br /&gt;
# should be compared with the reference data.&lt;br /&gt;
r3.out.vtk --o rgbmaps=volume_rgb,volume_rgb,volume_rgb vectormaps=volume_null,volume_null,volume_null input=volume_null output=test_volume_null_1_cells_rgb_vect.vtk dp=3 null=-1.0&lt;br /&gt;
r3.out.vtk -p --o rgbmaps=volume_rgb,volume_rgb,volume_rgb vectormaps=volume_null,volume_null,volume_null input=volume_null output=test_volume_null_1_points_rgb_vect.vtk dp=3 null=-1.0&lt;br /&gt;
&lt;br /&gt;
# The third @test uses raster maps to create volume data with an elevation surface&lt;br /&gt;
# The maximum elevation should be in the south. Reference @files are present for validation.&lt;br /&gt;
r3.out.vtk -s --o top=elev_top bottom=elev_bottom input=volume_null output=test_volume_null_1_cells_elevation.vtk dp=3 null=0&lt;br /&gt;
r3.out.vtk -sp --o top=elev_top bottom=elev_bottom input=volume_null output=test_volume_null_1_points_elevation.vtk dp=3 null=0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the r3.out.vtk directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r-- 1 soeren users 104556 16. Jun 18:14 test_volume_null_1_cells_elevation.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   3434 16. Jun 18:14 test_volume_null_1_cells.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users  22749 16. Jun 18:14 test_volume_null_1_cells_rgb_vect.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users  13360 16. Jun 18:14 test_volume_null_1_points_elevation.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   3435 16. Jun 18:14 test_volume_null_1_points.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users  22750 16. Jun 18:14 test_volume_null_1_points_rgb_vect.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test.r3.cross.rast.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This script tests the r3.cross.rast module to compute&lt;br /&gt;
# cross section raster maps based on a raster3d and elevation map&lt;br /&gt;
&lt;br /&gt;
# We need to set a specific region in the&lt;br /&gt;
# @preprocess step of this test. We generate&lt;br /&gt;
# raster and voxel data with r.mapcalc and r3.mapcalc&lt;br /&gt;
# The region setting should work for UTM and LL test locations&lt;br /&gt;
g.region s=0 n=80 w=0 e=100 b=0 t=50 res=10 res3=10 -p3&lt;br /&gt;
# We create several elevation maps to create slices of the voxel map&lt;br /&gt;
# We start from bottom and raise to the top. Value equal or greater 50 &lt;br /&gt;
# should generate grass NULL values&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_0 = 0&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_1 = 5&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_2 = 15&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_3 = 25&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_4 = 35&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_5 = 45&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_NAN = 50&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_cross = float(col()* 5)&amp;quot;&lt;br /&gt;
# Now create a voxel map with value = col + row + depth. &lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume = col() + row() + depth()&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_null = if(row() == 1 || row() == 5, null(), volume)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# We @test the creation of slices and a cross section of the voxel map. Reference data&lt;br /&gt;
# for @raster map validation is located in the r3.cross.rast source directory.&lt;br /&gt;
# Slice 0 and 1 should be identical. The last slice should consist only of grass NULL values&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_0 output=test_cross_section_slice_0&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_1 output=test_cross_section_slice_1&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_2 output=test_cross_section_slice_2&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_3 output=test_cross_section_slice_3&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_4 output=test_cross_section_slice_4&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_5 output=test_cross_section_slice_5&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_NAN output=test_cross_section_slice_NAN&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_cross output=test_cross_section_result&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the r3.cross.rast directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r-- 1 soeren users   264 16. Jun 18:14 test_cross_section_result.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   264 16. Jun 18:14 test_cross_section_slice_0.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   264 16. Jun 18:14 test_cross_section_slice_1.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   269 16. Jun 18:14 test_cross_section_slice_2.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   273 16. Jun 18:14 test_cross_section_slice_3.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   276 16. Jun 18:14 test_cross_section_slice_4.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   279 16. Jun 18:14 test_cross_section_slice_5.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   222 16. Jun 18:14 test_cross_section_slice_NAN.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== test.r3.out.ascii.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Tests for r3.out.ascii and r3.in.ascii&lt;br /&gt;
# This script tests the export of voxel data using r3.out.ascii&lt;br /&gt;
# as well as the import of the generated data with r3.in.ascii&lt;br /&gt;
# using different row and depth ordering options.&lt;br /&gt;
&lt;br /&gt;
# We set up a specific region in the&lt;br /&gt;
# @preprocess step of this test. We generate&lt;br /&gt;
# voxel data with r3.mapcalc. The region setting&lt;br /&gt;
# should work for UTM and LL test locations&lt;br /&gt;
g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3&lt;br /&gt;
# Now create several (float, double, null value) voxel map&lt;br /&gt;
# with value = col + row + depth.&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_float = float(col() + row() + depth())&amp;quot;&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double = double(col() + row() + depth())&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_float_null = if(row() == 1 || row() == 5, null(), volume_float)&amp;quot;&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double_null = if(row() == 1 || row() == 5, null(), volume_double)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# We export float data in the first @test using different order and precision&lt;br /&gt;
# as text @files for valdiation of correct ordering and null data handling&lt;br /&gt;
r3.out.ascii --o     input=volume_float_null output=test_float_nsbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -r  input=volume_float_null output=test_float_snbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -d  input=volume_float_null output=test_float_nstb_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -rd input=volume_float_null output=test_float_sntb_null.txt dp=0 null=*&lt;br /&gt;
# Different precision and null values than default&lt;br /&gt;
r3.out.ascii --o     input=volume_float_null output=test_float_nsbt_null_prec5.txt dp=5 null=-1000&lt;br /&gt;
r3.out.ascii --o -rd input=volume_float_null output=test_float_sntb_null_prec8.txt dp=8 null=-2000&lt;br /&gt;
# Test the no header and grass6 compatibility flags&lt;br /&gt;
r3.out.ascii --o -h input=volume_float_null output=test_float_nsbt_null_no_header.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -c input=volume_float_null output=test_float_nsbt_null_grass6_comp_1.txt dp=3 null=*&lt;br /&gt;
# Any row or depth order should be ignored in case grass6 compatibility is enabled&lt;br /&gt;
# The rsult of comp_1, _2 and _3 must be identical&lt;br /&gt;
r3.out.ascii --o -cr  input=volume_float_null output=test_float_nsbt_null_grass6_comp_2.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -crd input=volume_float_null output=test_float_nsbt_null_grass6_comp_3.txt dp=3 null=*&lt;br /&gt;
&lt;br /&gt;
# We export double data in the second @test using different order and precision&lt;br /&gt;
# as text @files for valdiation of correct ordering and null data handling. Its hte same&lt;br /&gt;
# procedure as with float data&lt;br /&gt;
r3.out.ascii --o     input=volume_double_null output=test_double_nsbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -r  input=volume_double_null output=test_double_snbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -d  input=volume_double_null output=test_double_nstb_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -rd input=volume_double_null output=test_double_sntb_null.txt dp=0 null=*&lt;br /&gt;
# Different precision and null values than default&lt;br /&gt;
r3.out.ascii --o     input=volume_double_null output=test_double_nsbt_null_prec5.txt dp=5 null=-1000&lt;br /&gt;
r3.out.ascii --o -rd input=volume_double_null output=test_double_sntb_null_prec8.txt dp=8 null=-2000&lt;br /&gt;
# Test the no header and grass6 compatibility flags&lt;br /&gt;
r3.out.ascii --o -h input=volume_double_null output=test_double_nsbt_null_no_header.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -c input=volume_double_null output=test_double_nsbt_null_grass6_comp_1.txt dp=3 null=*&lt;br /&gt;
# Any row or depth order should be ignored in case grass6 compatibility is enabled&lt;br /&gt;
# The result of comp_1, _2 and _3 must be identical&lt;br /&gt;
r3.out.ascii --o -cr  input=volume_double_null output=test_double_nsbt_null_grass6_comp_2.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -crd input=volume_double_null output=test_double_nsbt_null_grass6_comp_3.txt dp=3 null=*&lt;br /&gt;
&lt;br /&gt;
# In the third @test we import all the generated data using r3.in.ascii&lt;br /&gt;
# The created @raster maps should be identical to the map &amp;quot;volume_double_null&amp;quot;&lt;br /&gt;
# The export of the created g3d map should use as @precision=0 for data validation&lt;br /&gt;
# The same raster name is used for all the imported data and so for the validation reference file&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nsbt_null.txt nv=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_snbt_null.txt nv=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nstb_null.txt nv=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_sntb_null.txt nv=*&lt;br /&gt;
# Different precision and null values than default&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nsbt_null_prec5.txt nv=-1000&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_sntb_null_prec8.txt nv=-2000&lt;br /&gt;
# Any row or depth order should be ignored in case grass6 compatibility is enabled&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nsbt_null_grass6_comp_1.txt&lt;br /&gt;
&lt;br /&gt;
# In this @preprocess step for the last test we create a large region and&lt;br /&gt;
# generate large input data to test the handling of large files&lt;br /&gt;
g.region s=0 n=800 w=0 e=1200 b=0 t=50 res=10 res3=1.5 -p3&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double_large = double(col() + row() + depth())&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double_null_large = if(row() == 1 || row() == 5, null(), volume_double_large)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Now @test the export and import of large data without validation&lt;br /&gt;
r3.out.ascii --o input=volume_double_null_large output=test_double_nsbt_null_large.txt dp=0 null=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null_large input=test_double_nsbt_null_large.txt nv=*&lt;br /&gt;
# Just for the logs&lt;br /&gt;
r3.info test_double_nsbt_null_large&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the r3.out.ascii directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_double_nsbt_null_grass6_comp_1.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_double_nsbt_null_grass6_comp_2.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_double_nsbt_null_grass6_comp_3.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2751 17. Jun 21:36 test_double_nsbt_null_no_header.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  4103 17. Jun 21:36 test_double_nsbt_null_prec5.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_nsbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_nstb_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_snbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  5183 17. Jun 21:36 test_double_sntb_null_prec8.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_sntb_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_float_nsbt_null_grass6_comp_1.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_float_nsbt_null_grass6_comp_2.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_float_nsbt_null_grass6_comp_3.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2751 17. Jun 21:36 test_float_nsbt_null_no_header.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  4103 17. Jun 21:36 test_float_nsbt_null_prec5.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_nsbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_nstb_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_snbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  5183 17. Jun 21:36 test_float_sntb_null_prec8.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_sntb_null.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test framework: ==&lt;br /&gt;
&lt;br /&gt;
What the test framework should do:&lt;br /&gt;
&lt;br /&gt;
* Creation of a test mapset for each test case in a specific test location located in the grass sources&lt;br /&gt;
* Setting the environment variables to the test location and grass installation (grass environment to run modules)&lt;br /&gt;
* For each test case a separate temporary directory should be created in which the test is executed. After testing the temporary directory get removed. The temporary directory should be located in the temporary mapset which will be automatically removed after testing.&lt;br /&gt;
* Parsing and interpretation and execution of test scripts&lt;br /&gt;
* Support of several test scripts in a single module directory&lt;br /&gt;
* Run of location specific test scripts (only LL or UTM test scripts)&lt;br /&gt;
* Handles module test results codes and stderr messages&lt;br /&gt;
* Validation of module output based on reference data and data type annotations in the test description&lt;br /&gt;
* Creates a HTML report for single modules and the whole test run&lt;br /&gt;
* Deletion of the generated test mapset to clean up the test location&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
* All test cases must be implemented as text files in shell style including annotations in comment blocks&lt;br /&gt;
* The test framework should be implemented in Python, parsing and analyzing and executing the test cases line by line&lt;br /&gt;
* The Make-System must be modified to start the tests by typing &amp;quot;make tests&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Test framework Python approach === &lt;br /&gt;
&lt;br /&gt;
I suggest the following Python classes:&lt;br /&gt;
* TestBase class - implements the test logic&lt;br /&gt;
** LatLongTest class - for LatLong test location initialization and test run, derived from TestBase class&lt;br /&gt;
** UTMTest class - for UTM test location initialization and test run, derived from TestBase class&lt;br /&gt;
* A CommandBase class - implements command line specific methods and attributes and executes a command, logging return value and stderr using the subprocess module&lt;br /&gt;
** PreProcess class - derived from CommandBase class for preprocess execution&lt;br /&gt;
** TestCase class - derived from CommandBase class for test execution&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
The TestBase class implementing the following methods:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class TestBase:&lt;br /&gt;
  def StartGrassSession(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Abstract method, should be overwritten in a subclass&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
  def Run(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Create the environment variables for the grass session, create a mapset and execute all tests&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    self.StartGrassSession()&lt;br /&gt;
    self.CreateTestMapset()&lt;br /&gt;
    self.CheckForReferenceFiles()&lt;br /&gt;
    self.ExecuteAll()&lt;br /&gt;
  &lt;br /&gt;
  def CreateTestMapset(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Creates a temporary mapset for the test using g.mapset&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
  &lt;br /&gt;
  def CreateExecutionOrder(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    * Reads the entire test case into memory and parses the file line by line&lt;br /&gt;
    * Creates the execution order list as internal structure to store specific execution settings&lt;br /&gt;
    * For each command in the test case a specific CommandBase object is created and stored in the execution order list&lt;br /&gt;
    * TestCase objects store the validation type (@file, ...) and the validation precision (@precision=1) ... and maybe more&lt;br /&gt;
   &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   pass&lt;br /&gt;
  &lt;br /&gt;
  def ExecuteAll(self):&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  * Create a temporary test directory in the temporary mapset&lt;br /&gt;
  * Calls ExecuteTest or ExecutePreProcess for each entry in the execution order list&lt;br /&gt;
  * Summarize the HTML and text summary content for each entry in the list&lt;br /&gt;
  * Clean up the temporary directories generate for each command&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  pass&lt;br /&gt;
  &lt;br /&gt;
  def ExecuteTest(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    * Execute a single test command using the TestCase object &lt;br /&gt;
    * Logs stderr and return value from TestCase object&lt;br /&gt;
    * Analyses return value and stderr in case of an error&lt;br /&gt;
    * Checks for new generated maps/files of the command &lt;br /&gt;
    * Checks if reference files are present&lt;br /&gt;
    * Export data with data specific commands (r/r3/v.out.ascii, r/r3.colors.out, ...)&lt;br /&gt;
    * Compares reference files with exported files&lt;br /&gt;
    * Creates HTML and text logfile entry&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
  &lt;br /&gt;
  def CheckForReferenceFiles(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Lists all available reference files of a directory in an internal dict, &lt;br /&gt;
    base name, path and full name are stored&amp;quot;&amp;quot;&amp;quot; &lt;br /&gt;
    pass&lt;br /&gt;
  &lt;br /&gt;
  def ExecutePreprocess(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    * Execute a single preprocess command using the PreProcess object &lt;br /&gt;
    * Logs stderr and return value from PreProcess object&lt;br /&gt;
    * Analyses return value and stderr in case of an error&lt;br /&gt;
    * Creates HTML and text logfile entry&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
   &lt;br /&gt;
  def CompareVectorMap(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    * Exports vector map with v.out.ascii using the default or specific TestCase precision&lt;br /&gt;
    * Compares exported file with reference file&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
   &lt;br /&gt;
  def CompareRasterMap(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    * Exports raster map with r.out.ascii using the default or specific TestCase precision&lt;br /&gt;
    * Compares exported file with reference file&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
     &lt;br /&gt;
  def CompareRaster3dMap(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    * Exports raster3d map with r3.out.ascii using the default or specific TestCase precision&lt;br /&gt;
    * Compares exported file with reference file&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
  &lt;br /&gt;
  def CompareColor(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   * Export raster color with r.colors.out&lt;br /&gt;
   * Compares exported file with reference file&lt;br /&gt;
   &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   pass&lt;br /&gt;
  &lt;br /&gt;
  def CompareColor3d(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   * Export raster3d color with r3.colors.out&lt;br /&gt;
   * Compares exported file with reference file&lt;br /&gt;
   &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   pass&lt;br /&gt;
  &lt;br /&gt;
  def CreateHTMLTestSummary(self):&lt;br /&gt;
    pass&lt;br /&gt;
  &lt;br /&gt;
  def CreateTextTestSummary(self):&lt;br /&gt;
    pass&lt;br /&gt;
  &lt;br /&gt;
  def CleanUp(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot; Remove the temporary test mapset and all generated test files &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
  &lt;br /&gt;
# ... many more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The LatLongTest implements the following method:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class LatLongTest(BaseTest):&lt;br /&gt;
  def StartGrassSession(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;starts the grass7 session in a LatLong test location&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The UTMTest implements the following method:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class UTMTest(BaseTest):&lt;br /&gt;
  def StartGrassSession(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;starts the grass7 session in a UTM test location&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The CommandBase class:&lt;br /&gt;
&lt;br /&gt;
* Uses the subprocess module to execute a command&lt;br /&gt;
* Is able to identify some shell specific commands in the command line (&amp;quot;&amp;amp;&amp;amp;, |, &amp;lt;, &amp;gt;&amp;quot;)&lt;br /&gt;
* Acts as a very simple shell interpreter &lt;br /&gt;
** In case if &amp;quot;|&amp;quot; connects multiple commands in a command line with subprocess.PIPE&lt;br /&gt;
** In case of &amp;quot;&amp;gt;&amp;quot; or &amp;quot;&amp;lt;&amp;quot; uses stdout or stdin io&lt;br /&gt;
** No support for complex shell functionality (for, test, ...)&lt;br /&gt;
&lt;br /&gt;
=== Make system ===&lt;br /&gt;
&lt;br /&gt;
New rules should be added to the make system so that:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make test ll&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Will start recursively library and/or module tests from the current directory in the LatLong test location.&lt;br /&gt;
The Make system should execute the Python test framework main Python file in each Module or Library directory.&lt;br /&gt;
I guess test specific entries must be added to the modules and library Makefiles?&lt;br /&gt;
&lt;br /&gt;
== Timeline and status ==&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
== Interested people == &lt;br /&gt;
&lt;br /&gt;
* [[User:huhabla | Sören Gebbert]]&lt;br /&gt;
* [[User:AnneGhisla| Anne Ghisla]]&lt;br /&gt;
* [[User:Landa|Martin Landa]]&lt;br /&gt;
* Add your name here&lt;br /&gt;
&lt;br /&gt;
[[Category: Development]]&lt;br /&gt;
[[Category: Testing]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Test_Suite&amp;diff=13792</id>
		<title>Test Suite</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Test_Suite&amp;diff=13792"/>
		<updated>2011-07-05T09:26:03Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= GRASS Test Suite =&lt;br /&gt;
&lt;br /&gt;
We aim at creating a comprehensive test suite for GRASS modules and libraries.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
See what has been done so far by Sören Gebbert and others here: [[Development#QA]] and the good [[http://www.vtk.org/Wiki/images/b/bc/Testing.cover.txt | VKT test suite]]&lt;br /&gt;
&lt;br /&gt;
Keep an eye on [[GRASS_7_ideas_collection#Complete_GRASS_Test_Suite:_see_activity_on_Test_Suite_development_page | GRASS 7 ideas collection]]&lt;br /&gt;
&lt;br /&gt;
== Main picture ==&lt;br /&gt;
&lt;br /&gt;
We plan to run unittests and integration tests for both libraries and modules. The test suite will be run after compilation, with a command like:&lt;br /&gt;
&lt;br /&gt;
  $ make tests [ proj ]&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
* proj: run the tests with a [list of] CRS, so that reprojection and map unit handling are tested.&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
Tests are executed recursively. If the &amp;quot;make tests&amp;quot; command is executed in the root source folder all libraries and modules are tested. To test only the libraries you need to switch in the '''lib''' directory and execute &amp;quot;make tests&amp;quot;. If you want to test only raster modules switch into the '''raster''' directory and run &amp;quot;make tests&amp;quot;, same for other modules directories. To test a single module switch into the module directory and run &amp;quot;make tests&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Tests == &lt;br /&gt;
&lt;br /&gt;
=== Modules ===&lt;br /&gt;
Tests are targeted to cover all modules as well as library test modules.&lt;br /&gt;
&lt;br /&gt;
The modules tests should as independent as possible from other GRASS modules.&lt;br /&gt;
&lt;br /&gt;
Tests are written as simple shell script with annotations. Test script should start with '''test.''' followed by the module name i.e. '''r.mapcalc.''' and further ending with '''.sh'''. Example '''test.r.mapcalc.1.sh'''. All test should be well documented using shell comments.&lt;br /&gt;
&lt;br /&gt;
The framework will execute all test scripts starting with '''test.''' and ending with '''.sh''' located in module or library directories.&lt;br /&gt;
&lt;br /&gt;
Annotations are integrated in the test documentation (simple shell comments) and specify pre-processing steps, the tests and the type of the data to validate. The following annotations should be supported:&lt;br /&gt;
&lt;br /&gt;
* The '''@preprocess''' annotation&lt;br /&gt;
** All commands below this annotation are handled as preprocessing steps for the tests. &lt;br /&gt;
** If any of the preprocess commands fail, the framework should stop testing an create a detailed error report. &lt;br /&gt;
** Preprocessing steps may be data generation, region settings and so on.&lt;br /&gt;
** The preprocess annotation is valid till a '''@test''' annotation specifies the begin of a test&lt;br /&gt;
** Preprocess annotations can be specified at between tests&lt;br /&gt;
* The '''@test''' annotation&lt;br /&gt;
** All command below a this annotation are handled as tests by the framework&lt;br /&gt;
** The test annotation must be integrated in the comment block which describes the test&lt;br /&gt;
** Data validation is performed by the framework for tests if reference data is present&lt;br /&gt;
** The test annotation is valid till a '''@preprocess''' annotation specifies the begin of a preprocess block for further test runs&lt;br /&gt;
** The data type annotations&lt;br /&gt;
*** Data type annotations should be specified in the same comment block as the '''@test''' annotation&lt;br /&gt;
*** Data type annotations specify the grass data types which should be validated with reference data&lt;br /&gt;
*** The following data type annotations should be specified&lt;br /&gt;
**** '''@file''' the framework should compare the reference data with files&lt;br /&gt;
**** '''@raster''' the framework should compare the reference data with raster maps using r.out.ascii for export&lt;br /&gt;
**** '''@vector''' the framework should compare the reference data with vector maps using v.out.ascii for export&lt;br /&gt;
**** '''@raster3d''' the framework should compare the reference data with raster3d maps using r3.out.ascii for export&lt;br /&gt;
**** '''@color''' the framework should compare the reference data with color rules using r.color.out for export&lt;br /&gt;
**** '''@color3d''' the framework should compare the reference data with 3d color rules using r3.color.out for export&lt;br /&gt;
**** '''@table''' the framework should compare the reference data with SQL tables  using db.select for export&lt;br /&gt;
**** ... please add more&lt;br /&gt;
** The '''@precision=[positive integer]''' annotation&lt;br /&gt;
*** Should be located in a test comment block&lt;br /&gt;
*** Specifies the precision to use to export grass data for validation with reference files&lt;br /&gt;
*** In case the precision is not provided the default behavior of the export module is used&lt;br /&gt;
&lt;br /&gt;
Reference data for validation must be located in the module/library reference directory. The reference data names must be identical with the generated data (files, maps, ...) except that reference data always has a '''.ref''' suffix.  &lt;br /&gt;
&lt;br /&gt;
Tests are in each module's and in each library's folder. To test library functions special modules must be implemented. Library test modules test the library functions directly and should be written in C. Have a look at the test directories in the g3d, gpde and gmath libraries of grass7.&lt;br /&gt;
&lt;br /&gt;
Framework should be able to generate and compare grass data types: raster, vector, raster3d, general, db, icon, imagery, d.*?&lt;br /&gt;
&lt;br /&gt;
wxGUI testing should be tested separately.&lt;br /&gt;
&lt;br /&gt;
Automated tests on server generates HTML report. Test several platforms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here some examples already available in grass7:&lt;br /&gt;
&lt;br /&gt;
=== test.v.random.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This is a simple test for v.random&lt;br /&gt;
# We create several identical pseudo random points maps :)&lt;br /&gt;
# using the seed option for rand and drand48&lt;br /&gt;
&lt;br /&gt;
# In the @preprocess step we set up a suitable region&lt;br /&gt;
g.region n=80 s=0 w=0 e=120 res=10 -p&lt;br /&gt;
&lt;br /&gt;
# First @test the rand function. Create a 3d vector map with attribute table&lt;br /&gt;
# The validation is based on @vector map with a @precision=3&lt;br /&gt;
v.random --o -z output=test_random_vect_1 n=20 zmin=0 zmax=100 seed=501&lt;br /&gt;
# Now the attribute @table should be validated. Booth maps are identical&lt;br /&gt;
v.random --o -z output=test_random_vect_2 n=20 zmin=0 zmax=100 column=height seed=501&lt;br /&gt;
&lt;br /&gt;
# Second @test the drand48 function. Create a 3d vector map with attribute table&lt;br /&gt;
# The validation is based on @vector map with a @precision=3&lt;br /&gt;
v.random --o -zd output=test_random_vect_3 n=20 zmin=0 zmax=100 seed=501&lt;br /&gt;
# Now the attribute @table should be validated. Booth maps are identical&lt;br /&gt;
v.random --o -zd output=test_random_vect_4 n=20 zmin=0 zmax=100 column=height seed=501&lt;br /&gt;
&lt;br /&gt;
# Export the generated data as references&lt;br /&gt;
# v.out.ascii --o format=point dp=3 input=test_random_vect_1 output=test_random_vect_1.ref&lt;br /&gt;
# db.select &amp;quot;select * from test_random_vect_2&amp;quot; &amp;gt; test_random_vect_2.ref&lt;br /&gt;
# v.out.ascii --o format=point dp=3 input=test_random_vect_3 output=test_random_vect_3.ref&lt;br /&gt;
# db.select &amp;quot;select * from test_random_vect_4&amp;quot; &amp;gt; test_random_vect_4.ref&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the v.random directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r--  1 soeren users  460 18. Jun 01:20 test_random_vect_1.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  257 18. Jun 01:20 test_random_vect_2.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  455 18. Jun 01:20 test_random_vect_3.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  256 18. Jun 01:20 test_random_vect_4.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test.r3.out.vtk.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This script tests the export of voxel data&lt;br /&gt;
# into the VTK format. Almost all options of&lt;br /&gt;
# r3.out.vtk are tested. Validation data for each test&lt;br /&gt;
# is located in the module source directory&lt;br /&gt;
&lt;br /&gt;
# We need to set a specific region in the&lt;br /&gt;
# @preprocess step of this test. We generate&lt;br /&gt;
# raster and voxel data with r.mapcalc and r3.mapcalc&lt;br /&gt;
# The region setting should work for UTM and LL test locations&lt;br /&gt;
g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3&lt;br /&gt;
# Now generate two elevation maps, we have 8 rows and use&lt;br /&gt;
# them for elevation computation. The rows are counted from north&lt;br /&gt;
# to south. So in the south the elevation must have a maximum.&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_bottom = row()&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_top = row() + 50&amp;quot;&lt;br /&gt;
# Now create a voxel map with value = col + row + depth. &lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume = col() + row() + depth()&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_null = if(row() == 2 || row() == 7, null(), volume)&amp;quot;&lt;br /&gt;
# Create the rgb maps&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_rgb = volume_null * 5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# The first @test just exports the volume map as cell and point data&lt;br /&gt;
# using a low precision and replaces the default null value with 0&lt;br /&gt;
# the created @files should be compared with the reference data&lt;br /&gt;
r3.out.vtk --o input=volume_null output=test_volume_null_1_cells.vtk dp=3 null=0&lt;br /&gt;
r3.out.vtk -p --o input=volume_null output=test_volume_null_1_points.vtk dp=3 null=0&lt;br /&gt;
&lt;br /&gt;
# The second @test adds rgb and vector maps. We re-use the created volume map&lt;br /&gt;
# for vector creation. The rgb value must range fom 0 - 255. The generated @files&lt;br /&gt;
# should be compared with the reference data.&lt;br /&gt;
r3.out.vtk --o rgbmaps=volume_rgb,volume_rgb,volume_rgb vectormaps=volume_null,volume_null,volume_null input=volume_null output=test_volume_null_1_cells_rgb_vect.vtk dp=3 null=-1.0&lt;br /&gt;
r3.out.vtk -p --o rgbmaps=volume_rgb,volume_rgb,volume_rgb vectormaps=volume_null,volume_null,volume_null input=volume_null output=test_volume_null_1_points_rgb_vect.vtk dp=3 null=-1.0&lt;br /&gt;
&lt;br /&gt;
# The third @test uses raster maps to create volume data with an elevation surface&lt;br /&gt;
# The maximum elevation should be in the south. Reference @files are present for validation.&lt;br /&gt;
r3.out.vtk -s --o top=elev_top bottom=elev_bottom input=volume_null output=test_volume_null_1_cells_elevation.vtk dp=3 null=0&lt;br /&gt;
r3.out.vtk -sp --o top=elev_top bottom=elev_bottom input=volume_null output=test_volume_null_1_points_elevation.vtk dp=3 null=0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the r3.out.vtk directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r-- 1 soeren users 104556 16. Jun 18:14 test_volume_null_1_cells_elevation.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   3434 16. Jun 18:14 test_volume_null_1_cells.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users  22749 16. Jun 18:14 test_volume_null_1_cells_rgb_vect.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users  13360 16. Jun 18:14 test_volume_null_1_points_elevation.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   3435 16. Jun 18:14 test_volume_null_1_points.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users  22750 16. Jun 18:14 test_volume_null_1_points_rgb_vect.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test.r3.cross.rast.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This script tests the r3.cross.rast module to compute&lt;br /&gt;
# cross section raster maps based on a raster3d and elevation map&lt;br /&gt;
&lt;br /&gt;
# We need to set a specific region in the&lt;br /&gt;
# @preprocess step of this test. We generate&lt;br /&gt;
# raster and voxel data with r.mapcalc and r3.mapcalc&lt;br /&gt;
# The region setting should work for UTM and LL test locations&lt;br /&gt;
g.region s=0 n=80 w=0 e=100 b=0 t=50 res=10 res3=10 -p3&lt;br /&gt;
# We create several elevation maps to create slices of the voxel map&lt;br /&gt;
# We start from bottom and raise to the top. Value equal or greater 50 &lt;br /&gt;
# should generate grass NULL values&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_0 = 0&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_1 = 5&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_2 = 15&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_3 = 25&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_4 = 35&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_5 = 45&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_NAN = 50&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_cross = float(col()* 5)&amp;quot;&lt;br /&gt;
# Now create a voxel map with value = col + row + depth. &lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume = col() + row() + depth()&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_null = if(row() == 1 || row() == 5, null(), volume)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# We @test the creation of slices and a cross section of the voxel map. Reference data&lt;br /&gt;
# for @raster map validation is located in the r3.cross.rast source directory.&lt;br /&gt;
# Slice 0 and 1 should be identical. The last slice should consist only of grass NULL values&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_0 output=test_cross_section_slice_0&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_1 output=test_cross_section_slice_1&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_2 output=test_cross_section_slice_2&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_3 output=test_cross_section_slice_3&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_4 output=test_cross_section_slice_4&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_5 output=test_cross_section_slice_5&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_NAN output=test_cross_section_slice_NAN&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_cross output=test_cross_section_result&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the r3.cross.rast directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r-- 1 soeren users   264 16. Jun 18:14 test_cross_section_result.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   264 16. Jun 18:14 test_cross_section_slice_0.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   264 16. Jun 18:14 test_cross_section_slice_1.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   269 16. Jun 18:14 test_cross_section_slice_2.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   273 16. Jun 18:14 test_cross_section_slice_3.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   276 16. Jun 18:14 test_cross_section_slice_4.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   279 16. Jun 18:14 test_cross_section_slice_5.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   222 16. Jun 18:14 test_cross_section_slice_NAN.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== test.r3.out.ascii.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Tests for r3.out.ascii and r3.in.ascii&lt;br /&gt;
# This script tests the export of voxel data using r3.out.ascii&lt;br /&gt;
# as well as the import of the generated data with r3.in.ascii&lt;br /&gt;
# using different row and depth ordering options.&lt;br /&gt;
&lt;br /&gt;
# We set up a specific region in the&lt;br /&gt;
# @preprocess step of this test. We generate&lt;br /&gt;
# voxel data with r3.mapcalc. The region setting&lt;br /&gt;
# should work for UTM and LL test locations&lt;br /&gt;
g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3&lt;br /&gt;
# Now create several (float, double, null value) voxel map&lt;br /&gt;
# with value = col + row + depth.&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_float = float(col() + row() + depth())&amp;quot;&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double = double(col() + row() + depth())&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_float_null = if(row() == 1 || row() == 5, null(), volume_float)&amp;quot;&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double_null = if(row() == 1 || row() == 5, null(), volume_double)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# We export float data in the first @test using different order and precision&lt;br /&gt;
# as text @files for valdiation of correct ordering and null data handling&lt;br /&gt;
r3.out.ascii --o     input=volume_float_null output=test_float_nsbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -r  input=volume_float_null output=test_float_snbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -d  input=volume_float_null output=test_float_nstb_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -rd input=volume_float_null output=test_float_sntb_null.txt dp=0 null=*&lt;br /&gt;
# Different precision and null values than default&lt;br /&gt;
r3.out.ascii --o     input=volume_float_null output=test_float_nsbt_null_prec5.txt dp=5 null=-1000&lt;br /&gt;
r3.out.ascii --o -rd input=volume_float_null output=test_float_sntb_null_prec8.txt dp=8 null=-2000&lt;br /&gt;
# Test the no header and grass6 compatibility flags&lt;br /&gt;
r3.out.ascii --o -h input=volume_float_null output=test_float_nsbt_null_no_header.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -c input=volume_float_null output=test_float_nsbt_null_grass6_comp_1.txt dp=3 null=*&lt;br /&gt;
# Any row or depth order should be ignored in case grass6 compatibility is enabled&lt;br /&gt;
# The rsult of comp_1, _2 and _3 must be identical&lt;br /&gt;
r3.out.ascii --o -cr  input=volume_float_null output=test_float_nsbt_null_grass6_comp_2.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -crd input=volume_float_null output=test_float_nsbt_null_grass6_comp_3.txt dp=3 null=*&lt;br /&gt;
&lt;br /&gt;
# We export double data in the second @test using different order and precision&lt;br /&gt;
# as text @files for valdiation of correct ordering and null data handling. Its hte same&lt;br /&gt;
# procedure as with float data&lt;br /&gt;
r3.out.ascii --o     input=volume_double_null output=test_double_nsbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -r  input=volume_double_null output=test_double_snbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -d  input=volume_double_null output=test_double_nstb_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -rd input=volume_double_null output=test_double_sntb_null.txt dp=0 null=*&lt;br /&gt;
# Different precision and null values than default&lt;br /&gt;
r3.out.ascii --o     input=volume_double_null output=test_double_nsbt_null_prec5.txt dp=5 null=-1000&lt;br /&gt;
r3.out.ascii --o -rd input=volume_double_null output=test_double_sntb_null_prec8.txt dp=8 null=-2000&lt;br /&gt;
# Test the no header and grass6 compatibility flags&lt;br /&gt;
r3.out.ascii --o -h input=volume_double_null output=test_double_nsbt_null_no_header.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -c input=volume_double_null output=test_double_nsbt_null_grass6_comp_1.txt dp=3 null=*&lt;br /&gt;
# Any row or depth order should be ignored in case grass6 compatibility is enabled&lt;br /&gt;
# The result of comp_1, _2 and _3 must be identical&lt;br /&gt;
r3.out.ascii --o -cr  input=volume_double_null output=test_double_nsbt_null_grass6_comp_2.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -crd input=volume_double_null output=test_double_nsbt_null_grass6_comp_3.txt dp=3 null=*&lt;br /&gt;
&lt;br /&gt;
# In the third @test we import all the generated data using r3.in.ascii&lt;br /&gt;
# The created @raster maps should be identical to the map &amp;quot;volume_double_null&amp;quot;&lt;br /&gt;
# The export of the created g3d map should use as @precision=0 for data validation&lt;br /&gt;
# The same raster name is used for all the imported data and so for the validation reference file&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nsbt_null.txt nv=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_snbt_null.txt nv=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nstb_null.txt nv=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_sntb_null.txt nv=*&lt;br /&gt;
# Different precision and null values than default&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nsbt_null_prec5.txt nv=-1000&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_sntb_null_prec8.txt nv=-2000&lt;br /&gt;
# Any row or depth order should be ignored in case grass6 compatibility is enabled&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nsbt_null_grass6_comp_1.txt&lt;br /&gt;
&lt;br /&gt;
# In this @preprocess step for the last test we create a large region and&lt;br /&gt;
# generate large input data to test the handling of large files&lt;br /&gt;
g.region s=0 n=800 w=0 e=1200 b=0 t=50 res=10 res3=1.5 -p3&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double_large = double(col() + row() + depth())&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double_null_large = if(row() == 1 || row() == 5, null(), volume_double_large)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Now @test the export and import of large data without validation&lt;br /&gt;
r3.out.ascii --o input=volume_double_null_large output=test_double_nsbt_null_large.txt dp=0 null=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null_large input=test_double_nsbt_null_large.txt nv=*&lt;br /&gt;
# Just for the logs&lt;br /&gt;
r3.info test_double_nsbt_null_large&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the r3.out.ascii directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_double_nsbt_null_grass6_comp_1.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_double_nsbt_null_grass6_comp_2.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_double_nsbt_null_grass6_comp_3.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2751 17. Jun 21:36 test_double_nsbt_null_no_header.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  4103 17. Jun 21:36 test_double_nsbt_null_prec5.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_nsbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_nstb_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_snbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  5183 17. Jun 21:36 test_double_sntb_null_prec8.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_sntb_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_float_nsbt_null_grass6_comp_1.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_float_nsbt_null_grass6_comp_2.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_float_nsbt_null_grass6_comp_3.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2751 17. Jun 21:36 test_float_nsbt_null_no_header.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  4103 17. Jun 21:36 test_float_nsbt_null_prec5.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_nsbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_nstb_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_snbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  5183 17. Jun 21:36 test_float_sntb_null_prec8.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_sntb_null.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test framework: ==&lt;br /&gt;
&lt;br /&gt;
What the test framework should do:&lt;br /&gt;
&lt;br /&gt;
* Creation of a test mapset for each test case in a specific test location located in the grass sources&lt;br /&gt;
* Setting the environment variables to the test location and grass installation (grass environment to run modules)&lt;br /&gt;
* For each test case a separate temporary directory should be created in which the test is executed. After testing the temporary directory get removed. The temporary directory should be located in the temporary mapset which will be automatically removed after testing.&lt;br /&gt;
* Parsing and interpretation and execution of test scripts&lt;br /&gt;
* Support of several test scripts in a single module directory&lt;br /&gt;
* Run of location specific test scripts (only LL or UTM test scripts)&lt;br /&gt;
* Handles module test results codes and stderr messages&lt;br /&gt;
* Validation of module output based on reference data and data type annotations in the test description&lt;br /&gt;
* Creates a HTML report for single modules and the whole test run&lt;br /&gt;
* Deletion of the generated test mapset to clean up the test location&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
* All test cases must be implemented as text files in shell style including annotations in comment blocks&lt;br /&gt;
* The test framework should be implemented in Python, parsing and analyzing and executing the test cases line by line&lt;br /&gt;
* The Make-System must be modified to start the tests by typing &amp;quot;make tests&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Test framework Python approach === &lt;br /&gt;
&lt;br /&gt;
I suggest the following Python classes:&lt;br /&gt;
* TestBase class - implements the test logic&lt;br /&gt;
** LatLongTest class - for LatLong test location initialization and test run, derived from TestBase class&lt;br /&gt;
** UTMTest class - for UTM test location initialization and test run, derived from TestBase class&lt;br /&gt;
* A CommandBase class - implements command line specific methods and attributes and executes a command, logging return value and stderr using the subprocess module&lt;br /&gt;
** PreProcess class - derived from CommandBase class for preprocess execution&lt;br /&gt;
** TestCase class - derived from CommandBase class for test execution&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
The TestBase class implementing the following methods:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class TestBase:&lt;br /&gt;
  def StartGrassSession(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Abstract method, should be overwritten in a subclass&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
  def Run(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Create the environment variables for the grass session, create a mapset and execute all tests&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    self.StartGrassSession()&lt;br /&gt;
    self.CreateTestMapset()&lt;br /&gt;
    self.CheckForReferenceFiles()&lt;br /&gt;
    self.ExecuteAll()&lt;br /&gt;
  &lt;br /&gt;
  def CreateTestMapset(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Creates a temporary mapset for the test using g.mapset&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
  &lt;br /&gt;
  def CreateExecutionOrder(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    * Reads the entire test case into memory and parses the file line by line&lt;br /&gt;
    * Creates the execution order list as internal structure to store specific execution settings&lt;br /&gt;
    * For each command in the test case a specific CommandBase object is created and stored in the execution order list&lt;br /&gt;
    * TestCase objects store the validation type (@file, ...) and the validation precision (@precision=1) ... and maybe more&lt;br /&gt;
   &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   pass&lt;br /&gt;
  &lt;br /&gt;
  def ExecuteAll(self):&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  * Create a temporary test directory in the temporary mapset&lt;br /&gt;
  * Calls ExecuteTest or ExecutePreProcess for each entry in the execution order list&lt;br /&gt;
  * Summarize the HTML and text summary content for each entry in the list&lt;br /&gt;
  * Clean up the temporary directories generate for each command&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  pass&lt;br /&gt;
  &lt;br /&gt;
  def ExecuteTest(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    * Execute a single test command using the TestCase object &lt;br /&gt;
    * Logs stderr and return value from TestCase object&lt;br /&gt;
    * Analyses return value and stderr in case of an error&lt;br /&gt;
    * Checks for new generated maps/files of the command &lt;br /&gt;
    * Checks if reference files are present&lt;br /&gt;
    * Export data with data specific commands (r/r3/v.out.ascii, r/r3.colors.out, ...)&lt;br /&gt;
    * Compares reference files with exported files&lt;br /&gt;
    * Creates HTML and text logfile entry&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
  &lt;br /&gt;
  def CheckForReferenceFiles(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Lists all available reference files of a directory in an internal dict, &lt;br /&gt;
    base name, path and full name are stored&amp;quot;&amp;quot;&amp;quot; &lt;br /&gt;
    pass&lt;br /&gt;
  &lt;br /&gt;
  def ExecutePreprocess(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    * Execute a single preprocess command using the PreProcess object &lt;br /&gt;
    * Logs stderr and return value from PreProcess object&lt;br /&gt;
    * Analyses return value and stderr in case of an error&lt;br /&gt;
    * Creates HTML and text logfile entry&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
   &lt;br /&gt;
  def CompareVectorMap(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    * Exports vector map with v.out.ascii using the default or specific TestCase precision&lt;br /&gt;
    * Compares exported file with reference file&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
   &lt;br /&gt;
  def CompareRasterMap(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    * Exports raster map with r.out.ascii using the default or specific TestCase precision&lt;br /&gt;
    * Compares exported file with reference file&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
     &lt;br /&gt;
  def CompareRaster3dMap(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    * Exports raster3d map with r3.out.ascii using the default or specific TestCase precision&lt;br /&gt;
    * Compares exported file with reference file&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
  &lt;br /&gt;
  def CompareColor(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   * Export raster color with r.colors.out&lt;br /&gt;
   * Compares exported file with reference file&lt;br /&gt;
   &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   pass&lt;br /&gt;
  &lt;br /&gt;
  def CompareColor3d(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   * Export raster3d color with r3.colors.out&lt;br /&gt;
   * Compares exported file with reference file&lt;br /&gt;
   &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   pass&lt;br /&gt;
  &lt;br /&gt;
  def CreateHTMLTestSummary(self):&lt;br /&gt;
    pass&lt;br /&gt;
  &lt;br /&gt;
  def CreateTextTestSummary(self):&lt;br /&gt;
    pass&lt;br /&gt;
  &lt;br /&gt;
  def CleanUp(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot; Remove the temporary test mapset and all generated test files &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
  &lt;br /&gt;
# ... many more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The LatLongTest implements the following method:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class LatLongTest(BaseTest):&lt;br /&gt;
  def StartGrassSession(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;starts the grass7 session in a LatLong test location&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The UTMTest implements the following method:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class UTMTest(BaseTest):&lt;br /&gt;
  def StartGrassSession(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;starts the grass7 session in a UTM test location&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The CommandBase class:&lt;br /&gt;
&lt;br /&gt;
* Uses the subprocess module to execute a command&lt;br /&gt;
* Is able to identify some shell specific commands in the command line (&amp;quot;&amp;amp;&amp;amp;, |, &amp;lt;, &amp;gt;&amp;quot;)&lt;br /&gt;
* Acts as a very simple shell interpreter &lt;br /&gt;
** In case if &amp;quot;|&amp;quot; connects multiple commands in a command line with subprocess.PIPE&lt;br /&gt;
** In case of &amp;quot;&amp;gt;&amp;quot; or &amp;quot;&amp;lt;&amp;quot; uses stdout or stdin io&lt;br /&gt;
** No support for complex shell functionality (for, test, ...)&lt;br /&gt;
&lt;br /&gt;
=== Make system ===&lt;br /&gt;
&lt;br /&gt;
New rules should be added to the make system so that:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make test ll&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Will start recursively library and/or module tests from the current directory in the LatLong test location.&lt;br /&gt;
The Make system should execute the Python test framework main Python file in each Module or Library directory.&lt;br /&gt;
I guess test specific entries must be added to the modules and library Makefiles?&lt;br /&gt;
&lt;br /&gt;
== Timeline and status ==&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
== Interested people == &lt;br /&gt;
&lt;br /&gt;
* [[User:huhabla | Sören Gebbert]]&lt;br /&gt;
* [[User:AnneGhisla| Anne Ghisla]]&lt;br /&gt;
* [[User:Landa|Martin Landa]]&lt;br /&gt;
* Add your name here&lt;br /&gt;
&lt;br /&gt;
[[Category: Development]]&lt;br /&gt;
[[Category: Testing]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Test_Suite&amp;diff=13782</id>
		<title>Test Suite</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Test_Suite&amp;diff=13782"/>
		<updated>2011-07-01T20:03:48Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= GRASS Test Suite =&lt;br /&gt;
&lt;br /&gt;
We aim at creating a comprehensive test suite for GRASS modules and libraries.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
See what has been done so far by Sören Gebbert and others here: [[Development#QA]] and the good [[http://www.vtk.org/Wiki/images/b/bc/Testing.cover.txt | VKT test suite]]&lt;br /&gt;
&lt;br /&gt;
Keep an eye on [[GRASS_7_ideas_collection#Complete_GRASS_Test_Suite:_see_activity_on_Test_Suite_development_page | GRASS 7 ideas collection]]&lt;br /&gt;
&lt;br /&gt;
== Main picture ==&lt;br /&gt;
&lt;br /&gt;
We plan to run unittests and integration tests for both libraries and modules. The test suite will be run after compilation, with a command like:&lt;br /&gt;
&lt;br /&gt;
  $ make tests [ proj ]&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
* proj: run the tests with a [list of] CRS, so that reprojection and map unit handling are tested.&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
Tests are executed recursively. If the &amp;quot;make tests&amp;quot; command is executed in the root source folder all libraries and modules are tested. To test only the libraries you need to switch in the '''lib''' directory and execute &amp;quot;make tests&amp;quot;. If you want to test only raster modules switch into the '''raster''' directory and run &amp;quot;make tests&amp;quot;, same for other modules directories. To test a single module switch into the module directory and run &amp;quot;make tests&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Tests == &lt;br /&gt;
&lt;br /&gt;
=== Modules ===&lt;br /&gt;
Tests are targeted to cover all modules as well as library test modules.&lt;br /&gt;
&lt;br /&gt;
The modules tests should as independent as possible from other GRASS modules.&lt;br /&gt;
&lt;br /&gt;
Tests are written as simple shell script with annotations. Test script should start with '''test.''' followed by the module name i.e. '''r.mapcalc.''' and further ending with '''.sh'''. Example '''test.r.mapcalc.1.sh'''. All test should be well documented using shell comments.&lt;br /&gt;
&lt;br /&gt;
The framework will execute all test scripts starting with '''test.''' and ending with '''.sh''' located in module or library directories.&lt;br /&gt;
&lt;br /&gt;
Annotations are integrated in the test documentation (simple shell comments) and specify pre-processing steps, the tests and the type of the data to validate. The following annotations should be supported:&lt;br /&gt;
&lt;br /&gt;
* The '''@preprocess''' annotation&lt;br /&gt;
** All commands below this annotation are handled as preprocessing steps for the tests. &lt;br /&gt;
** If any of the preprocess commands fail, the framework should stop testing an create a detailed error report. &lt;br /&gt;
** Preprocessing steps may be data generation, region settings and so on.&lt;br /&gt;
** The preprocess annotation is valid till a '''@test''' annotation specifies the begin of a test&lt;br /&gt;
** Preprocess annotations can be specified at between tests&lt;br /&gt;
* The '''@test''' annotation&lt;br /&gt;
** All command below a this annotation are handled as tests by the framework&lt;br /&gt;
** The test annotation must be integrated in the comment block which describes the test&lt;br /&gt;
** Data validation is performed by the framework for tests if reference data is present&lt;br /&gt;
** The test annotation is valid till a '''@preprocess''' annotation specifies the begin of a preprocess block for further test runs&lt;br /&gt;
** The data type annotations&lt;br /&gt;
*** Data type annotations should be specified in the same comment block as the '''@test''' annotation&lt;br /&gt;
*** Data type annotations specify the grass data types which should be validated with reference data&lt;br /&gt;
*** The following data type annotations should be specified&lt;br /&gt;
**** '''@file''' the framework should compare the reference data with files&lt;br /&gt;
**** '''@raster''' the framework should compare the reference data with raster maps using r.out.ascii for export&lt;br /&gt;
**** '''@vector''' the framework should compare the reference data with vector maps using v.out.ascii for export&lt;br /&gt;
**** '''@raster3d''' the framework should compare the reference data with raster3d maps using r3.out.ascii for export&lt;br /&gt;
**** '''@color''' the framework should compare the reference data with color rules using r.color.out for export&lt;br /&gt;
**** '''@color3d''' the framework should compare the reference data with 3d color rules using r3.color.out for export&lt;br /&gt;
**** '''@table''' the framework should compare the reference data with SQL tables  using db.select for export&lt;br /&gt;
**** ... please add more&lt;br /&gt;
** The '''@precision=[positive integer]''' annotation&lt;br /&gt;
*** Should be located in a test comment block&lt;br /&gt;
*** Specifies the precision to use to export grass data for validation with reference files&lt;br /&gt;
*** In case the precision is not provided the default behavior of the export module is used&lt;br /&gt;
&lt;br /&gt;
Reference data for validation must be located in the module/library directory. The reference data names must be identical with the generated data (files, maps, ...) except that reference data always has a '''.ref''' suffix.  &lt;br /&gt;
&lt;br /&gt;
Tests are in each module's and in each library's folder. To test library functions special modules must be implemented. Library test modules test the library functions directly and should be written in C. Have a look at the test directories in the g3d, gpde and gmath libraries of grass7.&lt;br /&gt;
&lt;br /&gt;
Framework should be able to generate and compare grass data types: raster, vector, raster3d, general, db, icon, imagery, d.*?&lt;br /&gt;
&lt;br /&gt;
wxGUI testing should be tested separately.&lt;br /&gt;
&lt;br /&gt;
Automated tests on server generates HTML report. Test several platforms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here some examples already available in grass7:&lt;br /&gt;
&lt;br /&gt;
=== test.v.random.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This is a simple test for v.random&lt;br /&gt;
# We create several identical pseudo random points maps :)&lt;br /&gt;
# using the seed option for rand and drand48&lt;br /&gt;
&lt;br /&gt;
# In the @preprocess step we set up a suitable region&lt;br /&gt;
g.region n=80 s=0 w=0 e=120 res=10 -p&lt;br /&gt;
&lt;br /&gt;
# First @test the rand function. Create a 3d vector map with attribute table&lt;br /&gt;
# The validation is based on @vector map with a @precision=3&lt;br /&gt;
v.random --o -z output=test_random_vect_1 n=20 zmin=0 zmax=100 seed=501&lt;br /&gt;
# Now the attribute @table should be validated. Booth maps are identical&lt;br /&gt;
v.random --o -z output=test_random_vect_2 n=20 zmin=0 zmax=100 column=height seed=501&lt;br /&gt;
&lt;br /&gt;
# Second @test the drand48 function. Create a 3d vector map with attribute table&lt;br /&gt;
# The validation is based on @vector map with a @precision=3&lt;br /&gt;
v.random --o -zd output=test_random_vect_3 n=20 zmin=0 zmax=100 seed=501&lt;br /&gt;
# Now the attribute @table should be validated. Booth maps are identical&lt;br /&gt;
v.random --o -zd output=test_random_vect_4 n=20 zmin=0 zmax=100 column=height seed=501&lt;br /&gt;
&lt;br /&gt;
# Export the generated data as references&lt;br /&gt;
# v.out.ascii --o format=point dp=3 input=test_random_vect_1 output=test_random_vect_1.ref&lt;br /&gt;
# db.select &amp;quot;select * from test_random_vect_2&amp;quot; &amp;gt; test_random_vect_2.ref&lt;br /&gt;
# v.out.ascii --o format=point dp=3 input=test_random_vect_3 output=test_random_vect_3.ref&lt;br /&gt;
# db.select &amp;quot;select * from test_random_vect_4&amp;quot; &amp;gt; test_random_vect_4.ref&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the v.random directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r--  1 soeren users  460 18. Jun 01:20 test_random_vect_1.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  257 18. Jun 01:20 test_random_vect_2.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  455 18. Jun 01:20 test_random_vect_3.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  256 18. Jun 01:20 test_random_vect_4.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test.r3.out.vtk.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This script tests the export of voxel data&lt;br /&gt;
# into the VTK format. Almost all options of&lt;br /&gt;
# r3.out.vtk are tested. Validation data for each test&lt;br /&gt;
# is located in the module source directory&lt;br /&gt;
&lt;br /&gt;
# We need to set a specific region in the&lt;br /&gt;
# @preprocess step of this test. We generate&lt;br /&gt;
# raster and voxel data with r.mapcalc and r3.mapcalc&lt;br /&gt;
# The region setting should work for UTM and LL test locations&lt;br /&gt;
g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3&lt;br /&gt;
# Now generate two elevation maps, we have 8 rows and use&lt;br /&gt;
# them for elevation computation. The rows are counted from north&lt;br /&gt;
# to south. So in the south the elevation must have a maximum.&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_bottom = row()&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_top = row() + 50&amp;quot;&lt;br /&gt;
# Now create a voxel map with value = col + row + depth. &lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume = col() + row() + depth()&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_null = if(row() == 2 || row() == 7, null(), volume)&amp;quot;&lt;br /&gt;
# Create the rgb maps&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_rgb = volume_null * 5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# The first @test just exports the volume map as cell and point data&lt;br /&gt;
# using a low precision and replaces the default null value with 0&lt;br /&gt;
# the created @files should be compared with the reference data&lt;br /&gt;
r3.out.vtk --o input=volume_null output=test_volume_null_1_cells.vtk dp=3 null=0&lt;br /&gt;
r3.out.vtk -p --o input=volume_null output=test_volume_null_1_points.vtk dp=3 null=0&lt;br /&gt;
&lt;br /&gt;
# The second @test adds rgb and vector maps. We re-use the created volume map&lt;br /&gt;
# for vector creation. The rgb value must range fom 0 - 255. The generated @files&lt;br /&gt;
# should be compared with the reference data.&lt;br /&gt;
r3.out.vtk --o rgbmaps=volume_rgb,volume_rgb,volume_rgb vectormaps=volume_null,volume_null,volume_null input=volume_null output=test_volume_null_1_cells_rgb_vect.vtk dp=3 null=-1.0&lt;br /&gt;
r3.out.vtk -p --o rgbmaps=volume_rgb,volume_rgb,volume_rgb vectormaps=volume_null,volume_null,volume_null input=volume_null output=test_volume_null_1_points_rgb_vect.vtk dp=3 null=-1.0&lt;br /&gt;
&lt;br /&gt;
# The third @test uses raster maps to create volume data with an elevation surface&lt;br /&gt;
# The maximum elevation should be in the south. Reference @files are present for validation.&lt;br /&gt;
r3.out.vtk -s --o top=elev_top bottom=elev_bottom input=volume_null output=test_volume_null_1_cells_elevation.vtk dp=3 null=0&lt;br /&gt;
r3.out.vtk -sp --o top=elev_top bottom=elev_bottom input=volume_null output=test_volume_null_1_points_elevation.vtk dp=3 null=0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the r3.out.vtk directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r-- 1 soeren users 104556 16. Jun 18:14 test_volume_null_1_cells_elevation.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   3434 16. Jun 18:14 test_volume_null_1_cells.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users  22749 16. Jun 18:14 test_volume_null_1_cells_rgb_vect.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users  13360 16. Jun 18:14 test_volume_null_1_points_elevation.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   3435 16. Jun 18:14 test_volume_null_1_points.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users  22750 16. Jun 18:14 test_volume_null_1_points_rgb_vect.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test.r3.cross.rast.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This script tests the r3.cross.rast module to compute&lt;br /&gt;
# cross section raster maps based on a raster3d and elevation map&lt;br /&gt;
&lt;br /&gt;
# We need to set a specific region in the&lt;br /&gt;
# @preprocess step of this test. We generate&lt;br /&gt;
# raster and voxel data with r.mapcalc and r3.mapcalc&lt;br /&gt;
# The region setting should work for UTM and LL test locations&lt;br /&gt;
g.region s=0 n=80 w=0 e=100 b=0 t=50 res=10 res3=10 -p3&lt;br /&gt;
# We create several elevation maps to create slices of the voxel map&lt;br /&gt;
# We start from bottom and raise to the top. Value equal or greater 50 &lt;br /&gt;
# should generate grass NULL values&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_0 = 0&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_1 = 5&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_2 = 15&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_3 = 25&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_4 = 35&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_5 = 45&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_NAN = 50&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_cross = float(col()* 5)&amp;quot;&lt;br /&gt;
# Now create a voxel map with value = col + row + depth. &lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume = col() + row() + depth()&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_null = if(row() == 1 || row() == 5, null(), volume)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# We @test the creation of slices and a cross section of the voxel map. Reference data&lt;br /&gt;
# for @raster map validation is located in the r3.cross.rast source directory.&lt;br /&gt;
# Slice 0 and 1 should be identical. The last slice should consist only of grass NULL values&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_0 output=test_cross_section_slice_0&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_1 output=test_cross_section_slice_1&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_2 output=test_cross_section_slice_2&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_3 output=test_cross_section_slice_3&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_4 output=test_cross_section_slice_4&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_5 output=test_cross_section_slice_5&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_NAN output=test_cross_section_slice_NAN&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_cross output=test_cross_section_result&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the r3.cross.rast directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r-- 1 soeren users   264 16. Jun 18:14 test_cross_section_result.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   264 16. Jun 18:14 test_cross_section_slice_0.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   264 16. Jun 18:14 test_cross_section_slice_1.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   269 16. Jun 18:14 test_cross_section_slice_2.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   273 16. Jun 18:14 test_cross_section_slice_3.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   276 16. Jun 18:14 test_cross_section_slice_4.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   279 16. Jun 18:14 test_cross_section_slice_5.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   222 16. Jun 18:14 test_cross_section_slice_NAN.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== test.r3.out.ascii.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Tests for r3.out.ascii and r3.in.ascii&lt;br /&gt;
# This script tests the export of voxel data using r3.out.ascii&lt;br /&gt;
# as well as the import of the generated data with r3.in.ascii&lt;br /&gt;
# using different row and depth ordering options.&lt;br /&gt;
&lt;br /&gt;
# We set up a specific region in the&lt;br /&gt;
# @preprocess step of this test. We generate&lt;br /&gt;
# voxel data with r3.mapcalc. The region setting&lt;br /&gt;
# should work for UTM and LL test locations&lt;br /&gt;
g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3&lt;br /&gt;
# Now create several (float, double, null value) voxel map&lt;br /&gt;
# with value = col + row + depth.&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_float = float(col() + row() + depth())&amp;quot;&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double = double(col() + row() + depth())&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_float_null = if(row() == 1 || row() == 5, null(), volume_float)&amp;quot;&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double_null = if(row() == 1 || row() == 5, null(), volume_double)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# We export float data in the first @test using different order and precision&lt;br /&gt;
# as text @files for valdiation of correct ordering and null data handling&lt;br /&gt;
r3.out.ascii --o     input=volume_float_null output=test_float_nsbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -r  input=volume_float_null output=test_float_snbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -d  input=volume_float_null output=test_float_nstb_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -rd input=volume_float_null output=test_float_sntb_null.txt dp=0 null=*&lt;br /&gt;
# Different precision and null values than default&lt;br /&gt;
r3.out.ascii --o     input=volume_float_null output=test_float_nsbt_null_prec5.txt dp=5 null=-1000&lt;br /&gt;
r3.out.ascii --o -rd input=volume_float_null output=test_float_sntb_null_prec8.txt dp=8 null=-2000&lt;br /&gt;
# Test the no header and grass6 compatibility flags&lt;br /&gt;
r3.out.ascii --o -h input=volume_float_null output=test_float_nsbt_null_no_header.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -c input=volume_float_null output=test_float_nsbt_null_grass6_comp_1.txt dp=3 null=*&lt;br /&gt;
# Any row or depth order should be ignored in case grass6 compatibility is enabled&lt;br /&gt;
# The rsult of comp_1, _2 and _3 must be identical&lt;br /&gt;
r3.out.ascii --o -cr  input=volume_float_null output=test_float_nsbt_null_grass6_comp_2.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -crd input=volume_float_null output=test_float_nsbt_null_grass6_comp_3.txt dp=3 null=*&lt;br /&gt;
&lt;br /&gt;
# We export double data in the second @test using different order and precision&lt;br /&gt;
# as text @files for valdiation of correct ordering and null data handling. Its hte same&lt;br /&gt;
# procedure as with float data&lt;br /&gt;
r3.out.ascii --o     input=volume_double_null output=test_double_nsbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -r  input=volume_double_null output=test_double_snbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -d  input=volume_double_null output=test_double_nstb_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -rd input=volume_double_null output=test_double_sntb_null.txt dp=0 null=*&lt;br /&gt;
# Different precision and null values than default&lt;br /&gt;
r3.out.ascii --o     input=volume_double_null output=test_double_nsbt_null_prec5.txt dp=5 null=-1000&lt;br /&gt;
r3.out.ascii --o -rd input=volume_double_null output=test_double_sntb_null_prec8.txt dp=8 null=-2000&lt;br /&gt;
# Test the no header and grass6 compatibility flags&lt;br /&gt;
r3.out.ascii --o -h input=volume_double_null output=test_double_nsbt_null_no_header.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -c input=volume_double_null output=test_double_nsbt_null_grass6_comp_1.txt dp=3 null=*&lt;br /&gt;
# Any row or depth order should be ignored in case grass6 compatibility is enabled&lt;br /&gt;
# The result of comp_1, _2 and _3 must be identical&lt;br /&gt;
r3.out.ascii --o -cr  input=volume_double_null output=test_double_nsbt_null_grass6_comp_2.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -crd input=volume_double_null output=test_double_nsbt_null_grass6_comp_3.txt dp=3 null=*&lt;br /&gt;
&lt;br /&gt;
# In the third @test we import all the generated data using r3.in.ascii&lt;br /&gt;
# The created @raster maps should be identical to the map &amp;quot;volume_double_null&amp;quot;&lt;br /&gt;
# The export of the created g3d map should use as @precision=0 for data validation&lt;br /&gt;
# The same raster name is used for all the imported data and so for the validation reference file&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nsbt_null.txt nv=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_snbt_null.txt nv=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nstb_null.txt nv=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_sntb_null.txt nv=*&lt;br /&gt;
# Different precision and null values than default&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nsbt_null_prec5.txt nv=-1000&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_sntb_null_prec8.txt nv=-2000&lt;br /&gt;
# Any row or depth order should be ignored in case grass6 compatibility is enabled&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nsbt_null_grass6_comp_1.txt&lt;br /&gt;
&lt;br /&gt;
# In this @preprocess step for the last test we create a large region and&lt;br /&gt;
# generate large input data to test the handling of large files&lt;br /&gt;
g.region s=0 n=800 w=0 e=1200 b=0 t=50 res=10 res3=1.5 -p3&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double_large = double(col() + row() + depth())&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double_null_large = if(row() == 1 || row() == 5, null(), volume_double_large)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Now @test the export and import of large data without validation&lt;br /&gt;
r3.out.ascii --o input=volume_double_null_large output=test_double_nsbt_null_large.txt dp=0 null=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null_large input=test_double_nsbt_null_large.txt nv=*&lt;br /&gt;
# Just for the logs&lt;br /&gt;
r3.info test_double_nsbt_null_large&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the r3.out.ascii directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_double_nsbt_null_grass6_comp_1.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_double_nsbt_null_grass6_comp_2.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_double_nsbt_null_grass6_comp_3.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2751 17. Jun 21:36 test_double_nsbt_null_no_header.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  4103 17. Jun 21:36 test_double_nsbt_null_prec5.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_nsbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_nstb_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_snbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  5183 17. Jun 21:36 test_double_sntb_null_prec8.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_sntb_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_float_nsbt_null_grass6_comp_1.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_float_nsbt_null_grass6_comp_2.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_float_nsbt_null_grass6_comp_3.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2751 17. Jun 21:36 test_float_nsbt_null_no_header.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  4103 17. Jun 21:36 test_float_nsbt_null_prec5.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_nsbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_nstb_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_snbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  5183 17. Jun 21:36 test_float_sntb_null_prec8.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_sntb_null.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test framework: ==&lt;br /&gt;
&lt;br /&gt;
What the test framework should do:&lt;br /&gt;
&lt;br /&gt;
* Creation of a test mapset for each test case in a specific test location located in the grass sources&lt;br /&gt;
* Setting the environment variables to the test location and grass installation (grass environment to run modules)&lt;br /&gt;
* Parsing and interpretation and execution of test scripts&lt;br /&gt;
* Support of several test scripts in a single module directory&lt;br /&gt;
* Run of location specific test scripts (only LL or UTM test scripts)&lt;br /&gt;
* Handles module test results codes and stderr messages&lt;br /&gt;
* Validation of module output based on reference data and data type annotations in the test description&lt;br /&gt;
* Creates a HTML report for single modules and the whole test run&lt;br /&gt;
* Deletion of the generated test mapset to clean up the test location&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
* All test cases must be implemented as text files in shell style including annotations in comment blocks&lt;br /&gt;
* The test framework should be implemented in Python, parsing and analyzing and executing the test cases line by line&lt;br /&gt;
* The Make-System must be modified to start the tests by typing &amp;quot;make tests&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Test framework Python approach === &lt;br /&gt;
&lt;br /&gt;
I suggest the following Python classes:&lt;br /&gt;
* TestBase class - implements the test logic&lt;br /&gt;
** LatLongTest class - for LatLong test location initialization and test run, derived from TestBase class&lt;br /&gt;
** UTMTest class - for UTM test location initialization and test run, derived from TestBase class&lt;br /&gt;
* A CommandBase class - implements command line specific methods and attributes and executes a command, logging return value and stderr using the subprocess module&lt;br /&gt;
** PreProcess class - derived from CommandBase class for preprocess execution&lt;br /&gt;
** TestCase class - derived from CommandBase class for test execution&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
The TestBase class implementing the following methods:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class TestBase:&lt;br /&gt;
  def StartGrassSession(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Abstract method, should be overwritten in a subclass&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
  def Run(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Create the environment variables for the grass session, create a mapset and execute all tests&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    self.StartGrassSession()&lt;br /&gt;
    self.CreateTestMapset()&lt;br /&gt;
    self.CheckForReferenceFiles()&lt;br /&gt;
    self.ExecuteAll()&lt;br /&gt;
  &lt;br /&gt;
  def CreateTestMapset(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Creates a temporary mapset for the test using g.mapset&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
  &lt;br /&gt;
  def CreateExecutionOrder(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    * Reads the entire test case into memory and parses the file line by line&lt;br /&gt;
    * Creates the execution order list as internal structure to store specific execution settings&lt;br /&gt;
    * For each command in the test case a specific CommandBase object is created and stored in the execution order list&lt;br /&gt;
    * TestCase objects store the validation type (@file, ...) and the validation precision (@precision=1) ... and maybe more&lt;br /&gt;
   &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   pass&lt;br /&gt;
  &lt;br /&gt;
  def ExecuteAll(self):&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  * Calls ExecuteTest or ExecutePreProcess for each entry in the execution order list&lt;br /&gt;
  * Summarize the HTML and text summary content for each entry in the list&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  pass&lt;br /&gt;
  &lt;br /&gt;
  def ExecuteTest(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    * Execute a single test command using the TestCase object &lt;br /&gt;
    * Logs stderr and return value from TestCase object&lt;br /&gt;
    * Analyses return value and stderr in case of an error&lt;br /&gt;
    * Checks for new generated maps/files of the command &lt;br /&gt;
    * Checks if reference files are present&lt;br /&gt;
    * Export data with data specific commands (r/r3/v.out.ascii, r/r3.colors.out, ...)&lt;br /&gt;
    * Compares reference files with exported files&lt;br /&gt;
    * Creates HTML and text logfile entry&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
  &lt;br /&gt;
  def CheckForReferenceFiles(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Lists all available reference files of a directory in an internal dict, &lt;br /&gt;
    base name, path and full name are stored&amp;quot;&amp;quot;&amp;quot; &lt;br /&gt;
    pass&lt;br /&gt;
  &lt;br /&gt;
  def ExecutePreprocess(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    * Execute a single preprocess command using the PreProcess object &lt;br /&gt;
    * Logs stderr and return value from PreProcess object&lt;br /&gt;
    * Analyses return value and stderr in case of an error&lt;br /&gt;
    * Creates HTML and text logfile entry&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
   &lt;br /&gt;
  def CompareVectorMap(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    * Exports vector map with v.out.ascii using the default or specific TestCase precision&lt;br /&gt;
    * Compares exported file with reference file&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
   &lt;br /&gt;
  def CompareRasterMap(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    * Exports raster map with r.out.ascii using the default or specific TestCase precision&lt;br /&gt;
    * Compares exported file with reference file&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
     &lt;br /&gt;
  def CompareRaster3dMap(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    * Exports raster3d map with r3.out.ascii using the default or specific TestCase precision&lt;br /&gt;
    * Compares exported file with reference file&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
  &lt;br /&gt;
  def CompareColor(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   * Export raster color with r.colors.out&lt;br /&gt;
   * Compares exported file with reference file&lt;br /&gt;
   &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   pass&lt;br /&gt;
  &lt;br /&gt;
  def CompareColor3d(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   * Export raster3d color with r3.colors.out&lt;br /&gt;
   * Compares exported file with reference file&lt;br /&gt;
   &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   pass&lt;br /&gt;
  &lt;br /&gt;
  def CreateHTMLTestSummary(self):&lt;br /&gt;
    pass&lt;br /&gt;
  &lt;br /&gt;
  def CreateTextTestSummary(self):&lt;br /&gt;
    pass&lt;br /&gt;
  &lt;br /&gt;
  def CleanUp(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot; Remove the temporary test mapset and all generated test files &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
  &lt;br /&gt;
# ... many more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The LatLongTest implements the following method:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class LatLongTest(BaseTest):&lt;br /&gt;
  def StartGrassSession(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;starts the grass7 session in a LatLong test location&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The UTMTest implements the following method:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
class UTMTest(BaseTest):&lt;br /&gt;
  def StartGrassSession(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;starts the grass7 session in a UTM test location&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The CommandBase class:&lt;br /&gt;
&lt;br /&gt;
* Uses the subprocess module to execute a command&lt;br /&gt;
* Is able to identify some shell specific commands in the command line (&amp;quot;&amp;amp;&amp;amp;, |, &amp;lt;, &amp;gt;&amp;quot;)&lt;br /&gt;
* Acts as a very simple shell interpreter &lt;br /&gt;
** In case if &amp;quot;|&amp;quot; connects multiple commands in a command line with subprocess.PIPE&lt;br /&gt;
** In case of &amp;quot;&amp;gt;&amp;quot; or &amp;quot;&amp;lt;&amp;quot; uses stdout or stdin io&lt;br /&gt;
** No support for complex shell functionality (for, test, ...)&lt;br /&gt;
&lt;br /&gt;
=== Make system ===&lt;br /&gt;
&lt;br /&gt;
New rules should be added to the make system so that:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make test ll&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Will start recursively library and/or module tests from the current directory in the LatLong test location.&lt;br /&gt;
The Make system should execute the Python test framework main Python file in each Module or Library directory.&lt;br /&gt;
I guess test specific entries must be added to the modules and library Makefiles?&lt;br /&gt;
&lt;br /&gt;
== Timeline and status ==&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
== Interested people == &lt;br /&gt;
&lt;br /&gt;
* [[User:huhabla | Sören Gebbert]]&lt;br /&gt;
* [[User:AnneGhisla| Anne Ghisla]]&lt;br /&gt;
* [[User:Landa|Martin Landa]]&lt;br /&gt;
* Add your name here&lt;br /&gt;
&lt;br /&gt;
[[Category: Development]]&lt;br /&gt;
[[Category: Testing]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Test_Suite&amp;diff=13781</id>
		<title>Test Suite</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Test_Suite&amp;diff=13781"/>
		<updated>2011-07-01T20:00:13Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= GRASS Test Suite =&lt;br /&gt;
&lt;br /&gt;
We aim at creating a comprehensive test suite for GRASS modules and libraries.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
See what has been done so far by Sören Gebbert and others here: [[Development#QA]] and the good [[http://www.vtk.org/Wiki/images/b/bc/Testing.cover.txt | VKT test suite]]&lt;br /&gt;
&lt;br /&gt;
Keep an eye on [[GRASS_7_ideas_collection#Complete_GRASS_Test_Suite:_see_activity_on_Test_Suite_development_page | GRASS 7 ideas collection]]&lt;br /&gt;
&lt;br /&gt;
== Main picture ==&lt;br /&gt;
&lt;br /&gt;
We plan to run unittests and integration tests for both libraries and modules. The test suite will be run after compilation, with a command like:&lt;br /&gt;
&lt;br /&gt;
  $ make tests [ proj ]&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
* proj: run the tests with a [list of] CRS, so that reprojection and map unit handling are tested.&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
Tests are executed recursively. If the &amp;quot;make tests&amp;quot; command is executed in the root source folder all libraries and modules are tested. To test only the libraries you need to switch in the '''lib''' directory and execute &amp;quot;make tests&amp;quot;. If you want to test only raster modules switch into the '''raster''' directory and run &amp;quot;make tests&amp;quot;, same for other modules directories. To test a single module switch into the module directory and run &amp;quot;make tests&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Tests == &lt;br /&gt;
&lt;br /&gt;
=== Modules ===&lt;br /&gt;
Tests are targeted to cover all modules as well as library test modules.&lt;br /&gt;
&lt;br /&gt;
The modules tests should as independent as possible from other GRASS modules.&lt;br /&gt;
&lt;br /&gt;
Tests are written as simple shell script with annotations. Test script should start with '''test.''' followed by the module name i.e. '''r.mapcalc.''' and further ending with '''.sh'''. Example '''test.r.mapcalc.1.sh'''. All test should be well documented using shell comments.&lt;br /&gt;
&lt;br /&gt;
The framework will execute all test scripts starting with '''test.''' and ending with '''.sh''' located in module or library directories.&lt;br /&gt;
&lt;br /&gt;
Annotations are integrated in the test documentation (simple shell comments) and specify pre-processing steps, the tests and the type of the data to validate. The following annotations should be supported:&lt;br /&gt;
&lt;br /&gt;
* The '''@preprocess''' annotation&lt;br /&gt;
** All commands below this annotation are handled as preprocessing steps for the tests. &lt;br /&gt;
** If any of the preprocess commands fail, the framework should stop testing an create a detailed error report. &lt;br /&gt;
** Preprocessing steps may be data generation, region settings and so on.&lt;br /&gt;
** The preprocess annotation is valid till a '''@test''' annotation specifies the begin of a test&lt;br /&gt;
** Preprocess annotations can be specified at between tests&lt;br /&gt;
* The '''@test''' annotation&lt;br /&gt;
** All command below a this annotation are handled as tests by the framework&lt;br /&gt;
** The test annotation must be integrated in the comment block which describes the test&lt;br /&gt;
** Data validation is performed by the framework for tests if reference data is present&lt;br /&gt;
** The test annotation is valid till a '''@preprocess''' annotation specifies the begin of a preprocess block for further test runs&lt;br /&gt;
** The data type annotations&lt;br /&gt;
*** Data type annotations should be specified in the same comment block as the '''@test''' annotation&lt;br /&gt;
*** Data type annotations specify the grass data types which should be validated with reference data&lt;br /&gt;
*** The following data type annotations should be specified&lt;br /&gt;
**** '''@file''' the framework should compare the reference data with files&lt;br /&gt;
**** '''@raster''' the framework should compare the reference data with raster maps using r.out.ascii for export&lt;br /&gt;
**** '''@vector''' the framework should compare the reference data with vector maps using v.out.ascii for export&lt;br /&gt;
**** '''@raster3d''' the framework should compare the reference data with raster3d maps using r3.out.ascii for export&lt;br /&gt;
**** '''@color''' the framework should compare the reference data with color rules using r.color.out for export&lt;br /&gt;
**** '''@color3d''' the framework should compare the reference data with 3d color rules using r3.color.out for export&lt;br /&gt;
**** '''@table''' the framework should compare the reference data with SQL tables  using db.select for export&lt;br /&gt;
**** ... please add more&lt;br /&gt;
** The '''@precision=[positive integer]''' annotation&lt;br /&gt;
*** Should be located in a test comment block&lt;br /&gt;
*** Specifies the precision to use to export grass data for validation with reference files&lt;br /&gt;
*** In case the precision is not provided the default behavior of the export module is used&lt;br /&gt;
&lt;br /&gt;
Reference data for validation must be located in the module/library directory. The reference data names must be identical with the generated data (files, maps, ...) except that reference data always has a '''.ref''' suffix.  &lt;br /&gt;
&lt;br /&gt;
Tests are in each module's and in each library's folder. To test library functions special modules must be implemented. Library test modules test the library functions directly and should be written in C. Have a look at the test directories in the g3d, gpde and gmath libraries of grass7.&lt;br /&gt;
&lt;br /&gt;
Framework should be able to generate and compare grass data types: raster, vector, raster3d, general, db, icon, imagery, d.*?&lt;br /&gt;
&lt;br /&gt;
wxGUI testing should be tested separately.&lt;br /&gt;
&lt;br /&gt;
Automated tests on server generates HTML report. Test several platforms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here some examples already available in grass7:&lt;br /&gt;
&lt;br /&gt;
=== test.v.random.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This is a simple test for v.random&lt;br /&gt;
# We create several identical pseudo random points maps :)&lt;br /&gt;
# using the seed option for rand and drand48&lt;br /&gt;
&lt;br /&gt;
# In the @preprocess step we set up a suitable region&lt;br /&gt;
g.region n=80 s=0 w=0 e=120 res=10 -p&lt;br /&gt;
&lt;br /&gt;
# First @test the rand function. Create a 3d vector map with attribute table&lt;br /&gt;
# The validation is based on @vector map with a @precision=3&lt;br /&gt;
v.random --o -z output=test_random_vect_1 n=20 zmin=0 zmax=100 seed=501&lt;br /&gt;
# Now the attribute @table should be validated. Booth maps are identical&lt;br /&gt;
v.random --o -z output=test_random_vect_2 n=20 zmin=0 zmax=100 column=height seed=501&lt;br /&gt;
&lt;br /&gt;
# Second @test the drand48 function. Create a 3d vector map with attribute table&lt;br /&gt;
# The validation is based on @vector map with a @precision=3&lt;br /&gt;
v.random --o -zd output=test_random_vect_3 n=20 zmin=0 zmax=100 seed=501&lt;br /&gt;
# Now the attribute @table should be validated. Booth maps are identical&lt;br /&gt;
v.random --o -zd output=test_random_vect_4 n=20 zmin=0 zmax=100 column=height seed=501&lt;br /&gt;
&lt;br /&gt;
# Export the generated data as references&lt;br /&gt;
# v.out.ascii --o format=point dp=3 input=test_random_vect_1 output=test_random_vect_1.ref&lt;br /&gt;
# db.select &amp;quot;select * from test_random_vect_2&amp;quot; &amp;gt; test_random_vect_2.ref&lt;br /&gt;
# v.out.ascii --o format=point dp=3 input=test_random_vect_3 output=test_random_vect_3.ref&lt;br /&gt;
# db.select &amp;quot;select * from test_random_vect_4&amp;quot; &amp;gt; test_random_vect_4.ref&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the v.random directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r--  1 soeren users  460 18. Jun 01:20 test_random_vect_1.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  257 18. Jun 01:20 test_random_vect_2.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  455 18. Jun 01:20 test_random_vect_3.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  256 18. Jun 01:20 test_random_vect_4.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test.r3.out.vtk.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This script tests the export of voxel data&lt;br /&gt;
# into the VTK format. Almost all options of&lt;br /&gt;
# r3.out.vtk are tested. Validation data for each test&lt;br /&gt;
# is located in the module source directory&lt;br /&gt;
&lt;br /&gt;
# We need to set a specific region in the&lt;br /&gt;
# @preprocess step of this test. We generate&lt;br /&gt;
# raster and voxel data with r.mapcalc and r3.mapcalc&lt;br /&gt;
# The region setting should work for UTM and LL test locations&lt;br /&gt;
g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3&lt;br /&gt;
# Now generate two elevation maps, we have 8 rows and use&lt;br /&gt;
# them for elevation computation. The rows are counted from north&lt;br /&gt;
# to south. So in the south the elevation must have a maximum.&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_bottom = row()&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_top = row() + 50&amp;quot;&lt;br /&gt;
# Now create a voxel map with value = col + row + depth. &lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume = col() + row() + depth()&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_null = if(row() == 2 || row() == 7, null(), volume)&amp;quot;&lt;br /&gt;
# Create the rgb maps&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_rgb = volume_null * 5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# The first @test just exports the volume map as cell and point data&lt;br /&gt;
# using a low precision and replaces the default null value with 0&lt;br /&gt;
# the created @files should be compared with the reference data&lt;br /&gt;
r3.out.vtk --o input=volume_null output=test_volume_null_1_cells.vtk dp=3 null=0&lt;br /&gt;
r3.out.vtk -p --o input=volume_null output=test_volume_null_1_points.vtk dp=3 null=0&lt;br /&gt;
&lt;br /&gt;
# The second @test adds rgb and vector maps. We re-use the created volume map&lt;br /&gt;
# for vector creation. The rgb value must range fom 0 - 255. The generated @files&lt;br /&gt;
# should be compared with the reference data.&lt;br /&gt;
r3.out.vtk --o rgbmaps=volume_rgb,volume_rgb,volume_rgb vectormaps=volume_null,volume_null,volume_null input=volume_null output=test_volume_null_1_cells_rgb_vect.vtk dp=3 null=-1.0&lt;br /&gt;
r3.out.vtk -p --o rgbmaps=volume_rgb,volume_rgb,volume_rgb vectormaps=volume_null,volume_null,volume_null input=volume_null output=test_volume_null_1_points_rgb_vect.vtk dp=3 null=-1.0&lt;br /&gt;
&lt;br /&gt;
# The third @test uses raster maps to create volume data with an elevation surface&lt;br /&gt;
# The maximum elevation should be in the south. Reference @files are present for validation.&lt;br /&gt;
r3.out.vtk -s --o top=elev_top bottom=elev_bottom input=volume_null output=test_volume_null_1_cells_elevation.vtk dp=3 null=0&lt;br /&gt;
r3.out.vtk -sp --o top=elev_top bottom=elev_bottom input=volume_null output=test_volume_null_1_points_elevation.vtk dp=3 null=0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the r3.out.vtk directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r-- 1 soeren users 104556 16. Jun 18:14 test_volume_null_1_cells_elevation.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   3434 16. Jun 18:14 test_volume_null_1_cells.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users  22749 16. Jun 18:14 test_volume_null_1_cells_rgb_vect.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users  13360 16. Jun 18:14 test_volume_null_1_points_elevation.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   3435 16. Jun 18:14 test_volume_null_1_points.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users  22750 16. Jun 18:14 test_volume_null_1_points_rgb_vect.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test.r3.cross.rast.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This script tests the r3.cross.rast module to compute&lt;br /&gt;
# cross section raster maps based on a raster3d and elevation map&lt;br /&gt;
&lt;br /&gt;
# We need to set a specific region in the&lt;br /&gt;
# @preprocess step of this test. We generate&lt;br /&gt;
# raster and voxel data with r.mapcalc and r3.mapcalc&lt;br /&gt;
# The region setting should work for UTM and LL test locations&lt;br /&gt;
g.region s=0 n=80 w=0 e=100 b=0 t=50 res=10 res3=10 -p3&lt;br /&gt;
# We create several elevation maps to create slices of the voxel map&lt;br /&gt;
# We start from bottom and raise to the top. Value equal or greater 50 &lt;br /&gt;
# should generate grass NULL values&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_0 = 0&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_1 = 5&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_2 = 15&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_3 = 25&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_4 = 35&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_5 = 45&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_NAN = 50&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_cross = float(col()* 5)&amp;quot;&lt;br /&gt;
# Now create a voxel map with value = col + row + depth. &lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume = col() + row() + depth()&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_null = if(row() == 1 || row() == 5, null(), volume)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# We @test the creation of slices and a cross section of the voxel map. Reference data&lt;br /&gt;
# for @raster map validation is located in the r3.cross.rast source directory.&lt;br /&gt;
# Slice 0 and 1 should be identical. The last slice should consist only of grass NULL values&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_0 output=test_cross_section_slice_0&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_1 output=test_cross_section_slice_1&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_2 output=test_cross_section_slice_2&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_3 output=test_cross_section_slice_3&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_4 output=test_cross_section_slice_4&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_5 output=test_cross_section_slice_5&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_NAN output=test_cross_section_slice_NAN&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_cross output=test_cross_section_result&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the r3.cross.rast directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r-- 1 soeren users   264 16. Jun 18:14 test_cross_section_result.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   264 16. Jun 18:14 test_cross_section_slice_0.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   264 16. Jun 18:14 test_cross_section_slice_1.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   269 16. Jun 18:14 test_cross_section_slice_2.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   273 16. Jun 18:14 test_cross_section_slice_3.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   276 16. Jun 18:14 test_cross_section_slice_4.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   279 16. Jun 18:14 test_cross_section_slice_5.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   222 16. Jun 18:14 test_cross_section_slice_NAN.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== test.r3.out.ascii.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Tests for r3.out.ascii and r3.in.ascii&lt;br /&gt;
# This script tests the export of voxel data using r3.out.ascii&lt;br /&gt;
# as well as the import of the generated data with r3.in.ascii&lt;br /&gt;
# using different row and depth ordering options.&lt;br /&gt;
&lt;br /&gt;
# We set up a specific region in the&lt;br /&gt;
# @preprocess step of this test. We generate&lt;br /&gt;
# voxel data with r3.mapcalc. The region setting&lt;br /&gt;
# should work for UTM and LL test locations&lt;br /&gt;
g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3&lt;br /&gt;
# Now create several (float, double, null value) voxel map&lt;br /&gt;
# with value = col + row + depth.&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_float = float(col() + row() + depth())&amp;quot;&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double = double(col() + row() + depth())&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_float_null = if(row() == 1 || row() == 5, null(), volume_float)&amp;quot;&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double_null = if(row() == 1 || row() == 5, null(), volume_double)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# We export float data in the first @test using different order and precision&lt;br /&gt;
# as text @files for valdiation of correct ordering and null data handling&lt;br /&gt;
r3.out.ascii --o     input=volume_float_null output=test_float_nsbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -r  input=volume_float_null output=test_float_snbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -d  input=volume_float_null output=test_float_nstb_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -rd input=volume_float_null output=test_float_sntb_null.txt dp=0 null=*&lt;br /&gt;
# Different precision and null values than default&lt;br /&gt;
r3.out.ascii --o     input=volume_float_null output=test_float_nsbt_null_prec5.txt dp=5 null=-1000&lt;br /&gt;
r3.out.ascii --o -rd input=volume_float_null output=test_float_sntb_null_prec8.txt dp=8 null=-2000&lt;br /&gt;
# Test the no header and grass6 compatibility flags&lt;br /&gt;
r3.out.ascii --o -h input=volume_float_null output=test_float_nsbt_null_no_header.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -c input=volume_float_null output=test_float_nsbt_null_grass6_comp_1.txt dp=3 null=*&lt;br /&gt;
# Any row or depth order should be ignored in case grass6 compatibility is enabled&lt;br /&gt;
# The rsult of comp_1, _2 and _3 must be identical&lt;br /&gt;
r3.out.ascii --o -cr  input=volume_float_null output=test_float_nsbt_null_grass6_comp_2.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -crd input=volume_float_null output=test_float_nsbt_null_grass6_comp_3.txt dp=3 null=*&lt;br /&gt;
&lt;br /&gt;
# We export double data in the second @test using different order and precision&lt;br /&gt;
# as text @files for valdiation of correct ordering and null data handling. Its hte same&lt;br /&gt;
# procedure as with float data&lt;br /&gt;
r3.out.ascii --o     input=volume_double_null output=test_double_nsbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -r  input=volume_double_null output=test_double_snbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -d  input=volume_double_null output=test_double_nstb_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -rd input=volume_double_null output=test_double_sntb_null.txt dp=0 null=*&lt;br /&gt;
# Different precision and null values than default&lt;br /&gt;
r3.out.ascii --o     input=volume_double_null output=test_double_nsbt_null_prec5.txt dp=5 null=-1000&lt;br /&gt;
r3.out.ascii --o -rd input=volume_double_null output=test_double_sntb_null_prec8.txt dp=8 null=-2000&lt;br /&gt;
# Test the no header and grass6 compatibility flags&lt;br /&gt;
r3.out.ascii --o -h input=volume_double_null output=test_double_nsbt_null_no_header.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -c input=volume_double_null output=test_double_nsbt_null_grass6_comp_1.txt dp=3 null=*&lt;br /&gt;
# Any row or depth order should be ignored in case grass6 compatibility is enabled&lt;br /&gt;
# The result of comp_1, _2 and _3 must be identical&lt;br /&gt;
r3.out.ascii --o -cr  input=volume_double_null output=test_double_nsbt_null_grass6_comp_2.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -crd input=volume_double_null output=test_double_nsbt_null_grass6_comp_3.txt dp=3 null=*&lt;br /&gt;
&lt;br /&gt;
# In the third @test we import all the generated data using r3.in.ascii&lt;br /&gt;
# The created @raster maps should be identical to the map &amp;quot;volume_double_null&amp;quot;&lt;br /&gt;
# The export of the created g3d map should use as @precision=0 for data validation&lt;br /&gt;
# The same raster name is used for all the imported data and so for the validation reference file&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nsbt_null.txt nv=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_snbt_null.txt nv=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nstb_null.txt nv=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_sntb_null.txt nv=*&lt;br /&gt;
# Different precision and null values than default&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nsbt_null_prec5.txt nv=-1000&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_sntb_null_prec8.txt nv=-2000&lt;br /&gt;
# Any row or depth order should be ignored in case grass6 compatibility is enabled&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nsbt_null_grass6_comp_1.txt&lt;br /&gt;
&lt;br /&gt;
# In this @preprocess step for the last test we create a large region and&lt;br /&gt;
# generate large input data to test the handling of large files&lt;br /&gt;
g.region s=0 n=800 w=0 e=1200 b=0 t=50 res=10 res3=1.5 -p3&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double_large = double(col() + row() + depth())&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double_null_large = if(row() == 1 || row() == 5, null(), volume_double_large)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Now @test the export and import of large data without validation&lt;br /&gt;
r3.out.ascii --o input=volume_double_null_large output=test_double_nsbt_null_large.txt dp=0 null=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null_large input=test_double_nsbt_null_large.txt nv=*&lt;br /&gt;
# Just for the logs&lt;br /&gt;
r3.info test_double_nsbt_null_large&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the r3.out.ascii directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_double_nsbt_null_grass6_comp_1.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_double_nsbt_null_grass6_comp_2.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_double_nsbt_null_grass6_comp_3.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2751 17. Jun 21:36 test_double_nsbt_null_no_header.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  4103 17. Jun 21:36 test_double_nsbt_null_prec5.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_nsbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_nstb_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_snbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  5183 17. Jun 21:36 test_double_sntb_null_prec8.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_sntb_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_float_nsbt_null_grass6_comp_1.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_float_nsbt_null_grass6_comp_2.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_float_nsbt_null_grass6_comp_3.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2751 17. Jun 21:36 test_float_nsbt_null_no_header.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  4103 17. Jun 21:36 test_float_nsbt_null_prec5.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_nsbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_nstb_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_snbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  5183 17. Jun 21:36 test_float_sntb_null_prec8.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_sntb_null.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test framework: ==&lt;br /&gt;
&lt;br /&gt;
What the test framework should do:&lt;br /&gt;
&lt;br /&gt;
* Creation of a test mapset for each test case in a specific test location located in the grass sources&lt;br /&gt;
* Setting the environment variables to the test location and grass installation (grass environment to run modules)&lt;br /&gt;
* Parsing and interpretation and execution of test scripts&lt;br /&gt;
* Support of several test scripts in a single module directory&lt;br /&gt;
* Run of location specific test scripts (only LL or UTM test scripts)&lt;br /&gt;
* Handles module test results codes and stderr messages&lt;br /&gt;
* Validation of module output based on reference data and data type annotations in the test description&lt;br /&gt;
* Creates a HTML report for single modules and the whole test run&lt;br /&gt;
* Deletion of the generated test mapset to clean up the test location&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
* All test cases must be implemented as text files in shell style including annotations in comment blocks&lt;br /&gt;
* The test framework should be implemented in Python, parsing and analyzing and executing the test cases line by line&lt;br /&gt;
* The Make-System must be modified to start the tests by typing &amp;quot;make tests&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Test framework Python approach === &lt;br /&gt;
&lt;br /&gt;
I suggest the following Python classes:&lt;br /&gt;
* TestBase class - implements the test logic&lt;br /&gt;
** LatLongTest class - for LatLong test location initialization and test run, derived from TestBase class&lt;br /&gt;
** UTMTest class - for UTM test location initialization and test run, derived from TestBase class&lt;br /&gt;
* A CommandBase class - implements command line specific methods and attributes and executes a command, logging return value and stderr using the subprocess module&lt;br /&gt;
** PreProcess class - derived from CommandBase class for preprocess execution&lt;br /&gt;
** TestCase class - derived from CommandBase class for test execution&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
The TestBase class implementing the following methods:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
class TestBase:&lt;br /&gt;
  def StartGrassSession(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Abstract method, should be overwritten in a subclass&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
  def Run(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Create the environment variables for the grass session, create a mapset and execute all tests&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    self.StartGrassSession()&lt;br /&gt;
    self.CreateTestMapset()&lt;br /&gt;
    self.CheckForReferenceFiles()&lt;br /&gt;
    self.ExecuteAll()&lt;br /&gt;
  &lt;br /&gt;
  def CreateTestMapset(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Creates a temporary mapset for the test using g.mapset&amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
  &lt;br /&gt;
  def CreateExecutionOrder(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    * Reads the entire test case into memory and parses the file line by line&lt;br /&gt;
    * Creates the execution order list as internal structure to store specific execution settings&lt;br /&gt;
    * For each command in the test case a specific CommandBase object is created and stored in the execution order list&lt;br /&gt;
    * TestCase objects store the validation type (@file, ...) and the validation precision (@precision=1) ... and maybe more&lt;br /&gt;
   &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   pass&lt;br /&gt;
  &lt;br /&gt;
  def ExecuteAll(self):&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  * Calls ExecuteTest or ExecutePreProcess for each entry in the execution order list&lt;br /&gt;
  * Summarize the HTML and text summary content for each entry in the list&lt;br /&gt;
  &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
  pass&lt;br /&gt;
  &lt;br /&gt;
  def ExecuteTest(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    * Execute a single test command using the TestCase object &lt;br /&gt;
    * Logs stderr and return value from TestCase object&lt;br /&gt;
    * Analyses return value and stderr in case of an error&lt;br /&gt;
    * Checks for new generated maps/files of the command &lt;br /&gt;
    * Checks if reference files are present&lt;br /&gt;
    * Export data with data specific commands (r/r3/v.out.ascii, r/r3.colors.out, ...)&lt;br /&gt;
    * Compares reference files with exported files&lt;br /&gt;
    * Creates HTML and text logfile entry&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
  &lt;br /&gt;
  def CheckForReferenceFiles(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;Lists all available reference files of a directory in an internal dict, &lt;br /&gt;
    base name, path and full name are stored&amp;quot;&amp;quot;&amp;quot; &lt;br /&gt;
    pass&lt;br /&gt;
  &lt;br /&gt;
  def ExecutePreprocess(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    * Execute a single preprocess command using the PreProcess object &lt;br /&gt;
    * Logs stderr and return value from PreProcess object&lt;br /&gt;
    * Analyses return value and stderr in case of an error&lt;br /&gt;
    * Creates HTML and text logfile entry&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
   &lt;br /&gt;
  def CompareVectorMap(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    * Exports vector map with v.out.ascii using the default or specific TestCase precision&lt;br /&gt;
    * Compares exported file with reference file&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
   &lt;br /&gt;
  def CompareRasterMap(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    * Exports raster map with r.out.ascii using the default or specific TestCase precision&lt;br /&gt;
    * Compares exported file with reference file&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
     &lt;br /&gt;
  def CompareRaster3dMap(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    * Exports raster3d map with r3.out.ascii using the default or specific TestCase precision&lt;br /&gt;
    * Compares exported file with reference file&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
  &lt;br /&gt;
  def CompareColor(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   * Export raster color with r.colors.out&lt;br /&gt;
   * Compares exported file with reference file&lt;br /&gt;
   &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   pass&lt;br /&gt;
  &lt;br /&gt;
  def CompareColor3d(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   * Export raster3d color with r3.colors.out&lt;br /&gt;
   * Compares exported file with reference file&lt;br /&gt;
   &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
   pass&lt;br /&gt;
  &lt;br /&gt;
  def CreateHTMLTestSummary(self):&lt;br /&gt;
    pass&lt;br /&gt;
  &lt;br /&gt;
  def CreateTextTestSummary(self):&lt;br /&gt;
    pass&lt;br /&gt;
  &lt;br /&gt;
  def CleanUp(self):&lt;br /&gt;
    &amp;quot;&amp;quot;&amp;quot; Remove the temporary test mapset and all generated test files &amp;quot;&amp;quot;&amp;quot;&lt;br /&gt;
    pass&lt;br /&gt;
  &lt;br /&gt;
# ... many more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The LatLongTest implements the following method:&lt;br /&gt;
&lt;br /&gt;
* StartGrassSession&lt;br /&gt;
** starts the grass7 session in a LatLong test location&lt;br /&gt;
&lt;br /&gt;
The UTMTest implements the following method:&lt;br /&gt;
&lt;br /&gt;
* StartGrassSession&lt;br /&gt;
** starts the grass7 session in an UTM test location&lt;br /&gt;
&lt;br /&gt;
The CommandBase class:&lt;br /&gt;
&lt;br /&gt;
* Uses the subprocess module to execute a command&lt;br /&gt;
* Is able to identify some shell specific commands in the command line (&amp;quot;&amp;amp;&amp;amp;, |, &amp;lt;, &amp;gt;&amp;quot;)&lt;br /&gt;
* Acts as a very simple shell interpreter &lt;br /&gt;
** In case if &amp;quot;|&amp;quot; connects multiple commands in a command line with subprocess.PIPE&lt;br /&gt;
** In case of &amp;quot;&amp;gt;&amp;quot; or &amp;quot;&amp;lt;&amp;quot; uses stdout or stdin io&lt;br /&gt;
** No support for complex shell functionality (for, test, ...)&lt;br /&gt;
&lt;br /&gt;
=== Make system ===&lt;br /&gt;
&lt;br /&gt;
New rules should be added to the make system so that:&lt;br /&gt;
&amp;lt;source land=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
make test ll&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
Will start recursively library and/or module tests from the current directory in the LatLong test location.&lt;br /&gt;
The Make system should execute the Python test framework main Python file in each Module or Library directory.&lt;br /&gt;
I guess test specific entries must be added to the modules and library Makefiles?&lt;br /&gt;
&lt;br /&gt;
== Timeline and status ==&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
== Interested people == &lt;br /&gt;
&lt;br /&gt;
* [[User:huhabla | Sören Gebbert]]&lt;br /&gt;
* [[User:AnneGhisla| Anne Ghisla]]&lt;br /&gt;
* [[User:Landa|Martin Landa]]&lt;br /&gt;
* Add your name here&lt;br /&gt;
&lt;br /&gt;
[[Category: Development]]&lt;br /&gt;
[[Category: Testing]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Test_Suite&amp;diff=13780</id>
		<title>Test Suite</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Test_Suite&amp;diff=13780"/>
		<updated>2011-07-01T19:45:10Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Implementation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= GRASS Test Suite =&lt;br /&gt;
&lt;br /&gt;
We aim at creating a comprehensive test suite for GRASS modules and libraries.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
See what has been done so far by Sören Gebbert and others here: [[Development#QA]] and the good [[http://www.vtk.org/Wiki/images/b/bc/Testing.cover.txt | VKT test suite]]&lt;br /&gt;
&lt;br /&gt;
Keep an eye on [[GRASS_7_ideas_collection#Complete_GRASS_Test_Suite:_see_activity_on_Test_Suite_development_page | GRASS 7 ideas collection]]&lt;br /&gt;
&lt;br /&gt;
== Main picture ==&lt;br /&gt;
&lt;br /&gt;
We plan to run unittests and integration tests for both libraries and modules. The test suite will be run after compilation, with a command like:&lt;br /&gt;
&lt;br /&gt;
  $ make tests [ proj ]&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
* proj: run the tests with a [list of] CRS, so that reprojection and map unit handling are tested.&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
Tests are executed recursively. If the &amp;quot;make tests&amp;quot; command is executed in the root source folder all libraries and modules are tested. To test only the libraries you need to switch in the '''lib''' directory and execute &amp;quot;make tests&amp;quot;. If you want to test only raster modules switch into the '''raster''' directory and run &amp;quot;make tests&amp;quot;, same for other modules directories. To test a single module switch into the module directory and run &amp;quot;make tests&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Tests == &lt;br /&gt;
&lt;br /&gt;
=== Modules ===&lt;br /&gt;
Tests are targeted to cover all modules as well as library test modules.&lt;br /&gt;
&lt;br /&gt;
The modules tests should as independent as possible from other GRASS modules.&lt;br /&gt;
&lt;br /&gt;
Tests are written as simple shell script with annotations. Test script should start with '''test.''' followed by the module name i.e. '''r.mapcalc.''' and further ending with '''.sh'''. Example '''test.r.mapcalc.1.sh'''. All test should be well documented using shell comments.&lt;br /&gt;
&lt;br /&gt;
The framework will execute all test scripts starting with '''test.''' and ending with '''.sh''' located in module or library directories.&lt;br /&gt;
&lt;br /&gt;
Annotations are integrated in the test documentation (simple shell comments) and specify pre-processing steps, the tests and the type of the data to validate. The following annotations should be supported:&lt;br /&gt;
&lt;br /&gt;
* The '''@preprocess''' annotation&lt;br /&gt;
** All commands below this annotation are handled as preprocessing steps for the tests. &lt;br /&gt;
** If any of the preprocess commands fail, the framework should stop testing an create a detailed error report. &lt;br /&gt;
** Preprocessing steps may be data generation, region settings and so on.&lt;br /&gt;
** The preprocess annotation is valid till a '''@test''' annotation specifies the begin of a test&lt;br /&gt;
** Preprocess annotations can be specified at between tests&lt;br /&gt;
* The '''@test''' annotation&lt;br /&gt;
** All command below a this annotation are handled as tests by the framework&lt;br /&gt;
** The test annotation must be integrated in the comment block which describes the test&lt;br /&gt;
** Data validation is performed by the framework for tests if reference data is present&lt;br /&gt;
** The test annotation is valid till a '''@preprocess''' annotation specifies the begin of a preprocess block for further test runs&lt;br /&gt;
** The data type annotations&lt;br /&gt;
*** Data type annotations should be specified in the same comment block as the '''@test''' annotation&lt;br /&gt;
*** Data type annotations specify the grass data types which should be validated with reference data&lt;br /&gt;
*** The following data type annotations should be specified&lt;br /&gt;
**** '''@file''' the framework should compare the reference data with files&lt;br /&gt;
**** '''@raster''' the framework should compare the reference data with raster maps using r.out.ascii for export&lt;br /&gt;
**** '''@vector''' the framework should compare the reference data with vector maps using v.out.ascii for export&lt;br /&gt;
**** '''@raster3d''' the framework should compare the reference data with raster3d maps using r3.out.ascii for export&lt;br /&gt;
**** '''@color''' the framework should compare the reference data with color rules using r.color.out for export&lt;br /&gt;
**** '''@color3d''' the framework should compare the reference data with 3d color rules using r3.color.out for export&lt;br /&gt;
**** '''@table''' the framework should compare the reference data with SQL tables  using db.select for export&lt;br /&gt;
**** ... please add more&lt;br /&gt;
** The '''@precision=[positive integer]''' annotation&lt;br /&gt;
*** Should be located in a test comment block&lt;br /&gt;
*** Specifies the precision to use to export grass data for validation with reference files&lt;br /&gt;
*** In case the precision is not provided the default behavior of the export module is used&lt;br /&gt;
&lt;br /&gt;
Reference data for validation must be located in the module/library directory. The reference data names must be identical with the generated data (files, maps, ...) except that reference data always has a '''.ref''' suffix.  &lt;br /&gt;
&lt;br /&gt;
Tests are in each module's and in each library's folder. To test library functions special modules must be implemented. Library test modules test the library functions directly and should be written in C. Have a look at the test directories in the g3d, gpde and gmath libraries of grass7.&lt;br /&gt;
&lt;br /&gt;
Framework should be able to generate and compare grass data types: raster, vector, raster3d, general, db, icon, imagery, d.*?&lt;br /&gt;
&lt;br /&gt;
wxGUI testing should be tested separately.&lt;br /&gt;
&lt;br /&gt;
Automated tests on server generates HTML report. Test several platforms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here some examples already available in grass7:&lt;br /&gt;
&lt;br /&gt;
=== test.v.random.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This is a simple test for v.random&lt;br /&gt;
# We create several identical pseudo random points maps :)&lt;br /&gt;
# using the seed option for rand and drand48&lt;br /&gt;
&lt;br /&gt;
# In the @preprocess step we set up a suitable region&lt;br /&gt;
g.region n=80 s=0 w=0 e=120 res=10 -p&lt;br /&gt;
&lt;br /&gt;
# First @test the rand function. Create a 3d vector map with attribute table&lt;br /&gt;
# The validation is based on @vector map with a @precision=3&lt;br /&gt;
v.random --o -z output=test_random_vect_1 n=20 zmin=0 zmax=100 seed=501&lt;br /&gt;
# Now the attribute @table should be validated. Booth maps are identical&lt;br /&gt;
v.random --o -z output=test_random_vect_2 n=20 zmin=0 zmax=100 column=height seed=501&lt;br /&gt;
&lt;br /&gt;
# Second @test the drand48 function. Create a 3d vector map with attribute table&lt;br /&gt;
# The validation is based on @vector map with a @precision=3&lt;br /&gt;
v.random --o -zd output=test_random_vect_3 n=20 zmin=0 zmax=100 seed=501&lt;br /&gt;
# Now the attribute @table should be validated. Booth maps are identical&lt;br /&gt;
v.random --o -zd output=test_random_vect_4 n=20 zmin=0 zmax=100 column=height seed=501&lt;br /&gt;
&lt;br /&gt;
# Export the generated data as references&lt;br /&gt;
# v.out.ascii --o format=point dp=3 input=test_random_vect_1 output=test_random_vect_1.ref&lt;br /&gt;
# db.select &amp;quot;select * from test_random_vect_2&amp;quot; &amp;gt; test_random_vect_2.ref&lt;br /&gt;
# v.out.ascii --o format=point dp=3 input=test_random_vect_3 output=test_random_vect_3.ref&lt;br /&gt;
# db.select &amp;quot;select * from test_random_vect_4&amp;quot; &amp;gt; test_random_vect_4.ref&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the v.random directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r--  1 soeren users  460 18. Jun 01:20 test_random_vect_1.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  257 18. Jun 01:20 test_random_vect_2.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  455 18. Jun 01:20 test_random_vect_3.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  256 18. Jun 01:20 test_random_vect_4.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test.r3.out.vtk.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This script tests the export of voxel data&lt;br /&gt;
# into the VTK format. Almost all options of&lt;br /&gt;
# r3.out.vtk are tested. Validation data for each test&lt;br /&gt;
# is located in the module source directory&lt;br /&gt;
&lt;br /&gt;
# We need to set a specific region in the&lt;br /&gt;
# @preprocess step of this test. We generate&lt;br /&gt;
# raster and voxel data with r.mapcalc and r3.mapcalc&lt;br /&gt;
# The region setting should work for UTM and LL test locations&lt;br /&gt;
g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3&lt;br /&gt;
# Now generate two elevation maps, we have 8 rows and use&lt;br /&gt;
# them for elevation computation. The rows are counted from north&lt;br /&gt;
# to south. So in the south the elevation must have a maximum.&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_bottom = row()&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_top = row() + 50&amp;quot;&lt;br /&gt;
# Now create a voxel map with value = col + row + depth. &lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume = col() + row() + depth()&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_null = if(row() == 2 || row() == 7, null(), volume)&amp;quot;&lt;br /&gt;
# Create the rgb maps&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_rgb = volume_null * 5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# The first @test just exports the volume map as cell and point data&lt;br /&gt;
# using a low precision and replaces the default null value with 0&lt;br /&gt;
# the created @files should be compared with the reference data&lt;br /&gt;
r3.out.vtk --o input=volume_null output=test_volume_null_1_cells.vtk dp=3 null=0&lt;br /&gt;
r3.out.vtk -p --o input=volume_null output=test_volume_null_1_points.vtk dp=3 null=0&lt;br /&gt;
&lt;br /&gt;
# The second @test adds rgb and vector maps. We re-use the created volume map&lt;br /&gt;
# for vector creation. The rgb value must range fom 0 - 255. The generated @files&lt;br /&gt;
# should be compared with the reference data.&lt;br /&gt;
r3.out.vtk --o rgbmaps=volume_rgb,volume_rgb,volume_rgb vectormaps=volume_null,volume_null,volume_null input=volume_null output=test_volume_null_1_cells_rgb_vect.vtk dp=3 null=-1.0&lt;br /&gt;
r3.out.vtk -p --o rgbmaps=volume_rgb,volume_rgb,volume_rgb vectormaps=volume_null,volume_null,volume_null input=volume_null output=test_volume_null_1_points_rgb_vect.vtk dp=3 null=-1.0&lt;br /&gt;
&lt;br /&gt;
# The third @test uses raster maps to create volume data with an elevation surface&lt;br /&gt;
# The maximum elevation should be in the south. Reference @files are present for validation.&lt;br /&gt;
r3.out.vtk -s --o top=elev_top bottom=elev_bottom input=volume_null output=test_volume_null_1_cells_elevation.vtk dp=3 null=0&lt;br /&gt;
r3.out.vtk -sp --o top=elev_top bottom=elev_bottom input=volume_null output=test_volume_null_1_points_elevation.vtk dp=3 null=0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the r3.out.vtk directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r-- 1 soeren users 104556 16. Jun 18:14 test_volume_null_1_cells_elevation.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   3434 16. Jun 18:14 test_volume_null_1_cells.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users  22749 16. Jun 18:14 test_volume_null_1_cells_rgb_vect.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users  13360 16. Jun 18:14 test_volume_null_1_points_elevation.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   3435 16. Jun 18:14 test_volume_null_1_points.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users  22750 16. Jun 18:14 test_volume_null_1_points_rgb_vect.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test.r3.cross.rast.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This script tests the r3.cross.rast module to compute&lt;br /&gt;
# cross section raster maps based on a raster3d and elevation map&lt;br /&gt;
&lt;br /&gt;
# We need to set a specific region in the&lt;br /&gt;
# @preprocess step of this test. We generate&lt;br /&gt;
# raster and voxel data with r.mapcalc and r3.mapcalc&lt;br /&gt;
# The region setting should work for UTM and LL test locations&lt;br /&gt;
g.region s=0 n=80 w=0 e=100 b=0 t=50 res=10 res3=10 -p3&lt;br /&gt;
# We create several elevation maps to create slices of the voxel map&lt;br /&gt;
# We start from bottom and raise to the top. Value equal or greater 50 &lt;br /&gt;
# should generate grass NULL values&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_0 = 0&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_1 = 5&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_2 = 15&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_3 = 25&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_4 = 35&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_5 = 45&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_NAN = 50&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_cross = float(col()* 5)&amp;quot;&lt;br /&gt;
# Now create a voxel map with value = col + row + depth. &lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume = col() + row() + depth()&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_null = if(row() == 1 || row() == 5, null(), volume)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# We @test the creation of slices and a cross section of the voxel map. Reference data&lt;br /&gt;
# for @raster map validation is located in the r3.cross.rast source directory.&lt;br /&gt;
# Slice 0 and 1 should be identical. The last slice should consist only of grass NULL values&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_0 output=test_cross_section_slice_0&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_1 output=test_cross_section_slice_1&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_2 output=test_cross_section_slice_2&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_3 output=test_cross_section_slice_3&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_4 output=test_cross_section_slice_4&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_5 output=test_cross_section_slice_5&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_NAN output=test_cross_section_slice_NAN&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_cross output=test_cross_section_result&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the r3.cross.rast directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r-- 1 soeren users   264 16. Jun 18:14 test_cross_section_result.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   264 16. Jun 18:14 test_cross_section_slice_0.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   264 16. Jun 18:14 test_cross_section_slice_1.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   269 16. Jun 18:14 test_cross_section_slice_2.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   273 16. Jun 18:14 test_cross_section_slice_3.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   276 16. Jun 18:14 test_cross_section_slice_4.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   279 16. Jun 18:14 test_cross_section_slice_5.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   222 16. Jun 18:14 test_cross_section_slice_NAN.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== test.r3.out.ascii.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Tests for r3.out.ascii and r3.in.ascii&lt;br /&gt;
# This script tests the export of voxel data using r3.out.ascii&lt;br /&gt;
# as well as the import of the generated data with r3.in.ascii&lt;br /&gt;
# using different row and depth ordering options.&lt;br /&gt;
&lt;br /&gt;
# We set up a specific region in the&lt;br /&gt;
# @preprocess step of this test. We generate&lt;br /&gt;
# voxel data with r3.mapcalc. The region setting&lt;br /&gt;
# should work for UTM and LL test locations&lt;br /&gt;
g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3&lt;br /&gt;
# Now create several (float, double, null value) voxel map&lt;br /&gt;
# with value = col + row + depth.&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_float = float(col() + row() + depth())&amp;quot;&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double = double(col() + row() + depth())&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_float_null = if(row() == 1 || row() == 5, null(), volume_float)&amp;quot;&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double_null = if(row() == 1 || row() == 5, null(), volume_double)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# We export float data in the first @test using different order and precision&lt;br /&gt;
# as text @files for valdiation of correct ordering and null data handling&lt;br /&gt;
r3.out.ascii --o     input=volume_float_null output=test_float_nsbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -r  input=volume_float_null output=test_float_snbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -d  input=volume_float_null output=test_float_nstb_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -rd input=volume_float_null output=test_float_sntb_null.txt dp=0 null=*&lt;br /&gt;
# Different precision and null values than default&lt;br /&gt;
r3.out.ascii --o     input=volume_float_null output=test_float_nsbt_null_prec5.txt dp=5 null=-1000&lt;br /&gt;
r3.out.ascii --o -rd input=volume_float_null output=test_float_sntb_null_prec8.txt dp=8 null=-2000&lt;br /&gt;
# Test the no header and grass6 compatibility flags&lt;br /&gt;
r3.out.ascii --o -h input=volume_float_null output=test_float_nsbt_null_no_header.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -c input=volume_float_null output=test_float_nsbt_null_grass6_comp_1.txt dp=3 null=*&lt;br /&gt;
# Any row or depth order should be ignored in case grass6 compatibility is enabled&lt;br /&gt;
# The rsult of comp_1, _2 and _3 must be identical&lt;br /&gt;
r3.out.ascii --o -cr  input=volume_float_null output=test_float_nsbt_null_grass6_comp_2.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -crd input=volume_float_null output=test_float_nsbt_null_grass6_comp_3.txt dp=3 null=*&lt;br /&gt;
&lt;br /&gt;
# We export double data in the second @test using different order and precision&lt;br /&gt;
# as text @files for valdiation of correct ordering and null data handling. Its hte same&lt;br /&gt;
# procedure as with float data&lt;br /&gt;
r3.out.ascii --o     input=volume_double_null output=test_double_nsbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -r  input=volume_double_null output=test_double_snbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -d  input=volume_double_null output=test_double_nstb_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -rd input=volume_double_null output=test_double_sntb_null.txt dp=0 null=*&lt;br /&gt;
# Different precision and null values than default&lt;br /&gt;
r3.out.ascii --o     input=volume_double_null output=test_double_nsbt_null_prec5.txt dp=5 null=-1000&lt;br /&gt;
r3.out.ascii --o -rd input=volume_double_null output=test_double_sntb_null_prec8.txt dp=8 null=-2000&lt;br /&gt;
# Test the no header and grass6 compatibility flags&lt;br /&gt;
r3.out.ascii --o -h input=volume_double_null output=test_double_nsbt_null_no_header.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -c input=volume_double_null output=test_double_nsbt_null_grass6_comp_1.txt dp=3 null=*&lt;br /&gt;
# Any row or depth order should be ignored in case grass6 compatibility is enabled&lt;br /&gt;
# The result of comp_1, _2 and _3 must be identical&lt;br /&gt;
r3.out.ascii --o -cr  input=volume_double_null output=test_double_nsbt_null_grass6_comp_2.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -crd input=volume_double_null output=test_double_nsbt_null_grass6_comp_3.txt dp=3 null=*&lt;br /&gt;
&lt;br /&gt;
# In the third @test we import all the generated data using r3.in.ascii&lt;br /&gt;
# The created @raster maps should be identical to the map &amp;quot;volume_double_null&amp;quot;&lt;br /&gt;
# The export of the created g3d map should use as @precision=0 for data validation&lt;br /&gt;
# The same raster name is used for all the imported data and so for the validation reference file&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nsbt_null.txt nv=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_snbt_null.txt nv=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nstb_null.txt nv=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_sntb_null.txt nv=*&lt;br /&gt;
# Different precision and null values than default&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nsbt_null_prec5.txt nv=-1000&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_sntb_null_prec8.txt nv=-2000&lt;br /&gt;
# Any row or depth order should be ignored in case grass6 compatibility is enabled&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nsbt_null_grass6_comp_1.txt&lt;br /&gt;
&lt;br /&gt;
# In this @preprocess step for the last test we create a large region and&lt;br /&gt;
# generate large input data to test the handling of large files&lt;br /&gt;
g.region s=0 n=800 w=0 e=1200 b=0 t=50 res=10 res3=1.5 -p3&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double_large = double(col() + row() + depth())&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double_null_large = if(row() == 1 || row() == 5, null(), volume_double_large)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Now @test the export and import of large data without validation&lt;br /&gt;
r3.out.ascii --o input=volume_double_null_large output=test_double_nsbt_null_large.txt dp=0 null=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null_large input=test_double_nsbt_null_large.txt nv=*&lt;br /&gt;
# Just for the logs&lt;br /&gt;
r3.info test_double_nsbt_null_large&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the r3.out.ascii directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_double_nsbt_null_grass6_comp_1.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_double_nsbt_null_grass6_comp_2.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_double_nsbt_null_grass6_comp_3.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2751 17. Jun 21:36 test_double_nsbt_null_no_header.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  4103 17. Jun 21:36 test_double_nsbt_null_prec5.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_nsbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_nstb_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_snbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  5183 17. Jun 21:36 test_double_sntb_null_prec8.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_sntb_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_float_nsbt_null_grass6_comp_1.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_float_nsbt_null_grass6_comp_2.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_float_nsbt_null_grass6_comp_3.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2751 17. Jun 21:36 test_float_nsbt_null_no_header.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  4103 17. Jun 21:36 test_float_nsbt_null_prec5.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_nsbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_nstb_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_snbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  5183 17. Jun 21:36 test_float_sntb_null_prec8.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_sntb_null.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test framework: ==&lt;br /&gt;
&lt;br /&gt;
What the test framework should do:&lt;br /&gt;
&lt;br /&gt;
* Creation of a test mapset for each test case in a specific test location located in the grass sources&lt;br /&gt;
* Setting the environment variables to the test location and grass installation (grass environment to run modules)&lt;br /&gt;
* Parsing and interpretation and execution of test scripts&lt;br /&gt;
* Support of several test scripts in a single module directory&lt;br /&gt;
* Run of location specific test scripts (only LL or UTM test scripts)&lt;br /&gt;
* Handles module test results codes and stderr messages&lt;br /&gt;
* Validation of module output based on reference data and data type annotations in the test description&lt;br /&gt;
* Creates a HTML report for single modules and the whole test run&lt;br /&gt;
* Deletion of the generated test mapset to clean up the test location&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
* All test cases must be implemented as text files in shell style including annotations in comment blocks&lt;br /&gt;
* The test framework should be implemented in Python, parsing and analyzing and executing the test cases line by line&lt;br /&gt;
* The Make-System must be modified to start the tests by typing &amp;quot;make tests&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Test framework Python approach === &lt;br /&gt;
&lt;br /&gt;
I suggest the following Python classes:&lt;br /&gt;
* TestBase class - implements the test logic&lt;br /&gt;
** LatLongTest class - for LatLong test location initialization and test run, derived from TestBase class&lt;br /&gt;
** UTMTest class - for UTM test location initialization and test run, derived from TestBase class&lt;br /&gt;
* A CommandBase class - implements command line specific methods and attributes and executes a command, logging return value and stderr using the subprocess module&lt;br /&gt;
** PreProcess class - derived from CommandBase class for preprocess execution&lt;br /&gt;
** TestCase class - derived from CommandBase class for test execution&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
The TestBase class implementing the following methods:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
* StartGrassSession&lt;br /&gt;
** Abstract method, should be overwritten in a subclass&lt;br /&gt;
* Run&lt;br /&gt;
** Calls StartGrassSession&lt;br /&gt;
** Calls CreateTestMapset &lt;br /&gt;
** Calls ExecuteAll&lt;br /&gt;
* CreateTestMapset&lt;br /&gt;
** Creates a temporary mapset for the test using g.mapset&lt;br /&gt;
* CreateExecutionOrder&lt;br /&gt;
** Reads the entire test case into memory and parses the file line by line&lt;br /&gt;
** Creates the execution order list as internal structure to store specific execution settings&lt;br /&gt;
** For each command in the test case a specific CommandBase object is created and stored in the execution order list&lt;br /&gt;
** TestCase objects store the validation type (@file, ...) and the validation precision (@precision=1) ... and maybe more&lt;br /&gt;
* ExecuteAll&lt;br /&gt;
** Calls ExecuteTest or ExecutePreProcess for each entry in the execution order list&lt;br /&gt;
** Summarize the HTML and text summary content for each entry in the list&lt;br /&gt;
* ExecuteTest&lt;br /&gt;
** Execute a single test command using the TestCase object &lt;br /&gt;
** Logs stderr and return value from TestCase object&lt;br /&gt;
** Analyses return value and stderr in case of an error&lt;br /&gt;
** Checks for new generated maps/files of the command &lt;br /&gt;
** Checks if reference files are present&lt;br /&gt;
** Export data with data specific commands (r/r3/v.out.ascii, r/r3.colors.out, ...)&lt;br /&gt;
** Compares reference files with exported files&lt;br /&gt;
** Creates HTML and text logfile entry&lt;br /&gt;
* CheckForReferenceFiles&lt;br /&gt;
** Lists all available reference files of a directory in an internal dict, base name, path and full name are stored&lt;br /&gt;
* ExecutePreprocess&lt;br /&gt;
** Execute a single preprocess command using the PreProcess object &lt;br /&gt;
** Logs stderr and return value from PreProcess object&lt;br /&gt;
** Analyses return value and stderr in case of an error&lt;br /&gt;
** Creates HTML and text logfile entry&lt;br /&gt;
* CompareVectorMap&lt;br /&gt;
** Exports vector map with v.out.ascii using the default or specific TestCase precision&lt;br /&gt;
** Compares exported file with reference file&lt;br /&gt;
* CompareRasterMap&lt;br /&gt;
** Export raster map with r.out.ascii using the default or specific TestCase precision&lt;br /&gt;
** Compares exported file with reference file&lt;br /&gt;
* CompareRaster3dMaps&lt;br /&gt;
** Exports raster3d map with r3.out.ascii using the default or specific TestCase precision&lt;br /&gt;
** Compares exported file with reference file&lt;br /&gt;
* CompareColor&lt;br /&gt;
** Export raster color with r.colors.out&lt;br /&gt;
** Compares exported file with reference file&lt;br /&gt;
* CompareColor3d&lt;br /&gt;
** Export raster3d color with r3.colors.out&lt;br /&gt;
** Compares exported file with reference file&lt;br /&gt;
* CreateHTMLTestSummary&lt;br /&gt;
* CreateTextTestSummary&lt;br /&gt;
* CleanUp&lt;br /&gt;
** Remove the temporary test mapset and all generated test files&lt;br /&gt;
* ... many more&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The LatLongTest implements the following method:&lt;br /&gt;
&lt;br /&gt;
* StartGrassSession&lt;br /&gt;
** starts the grass7 session in a LatLong test location&lt;br /&gt;
&lt;br /&gt;
The UTMTest implements the following method:&lt;br /&gt;
&lt;br /&gt;
* StartGrassSession&lt;br /&gt;
** starts the grass7 session in an UTM test location&lt;br /&gt;
&lt;br /&gt;
The CommandBase class:&lt;br /&gt;
&lt;br /&gt;
* Uses the subprocess module to execute a command&lt;br /&gt;
* Is able to identify some shell specific commands in the command line (&amp;quot;&amp;amp;&amp;amp;, |, &amp;lt;, &amp;gt;&amp;quot;)&lt;br /&gt;
* Acts as a very simple shell interpreter &lt;br /&gt;
** In case if &amp;quot;|&amp;quot; connects multiple commands in a command line with subprocess.PIPE&lt;br /&gt;
** In case of &amp;quot;&amp;gt;&amp;quot; or &amp;quot;&amp;lt;&amp;quot; uses stdout or stdin io&lt;br /&gt;
** No support for complex shell functionality (for, test, ...)&lt;br /&gt;
&lt;br /&gt;
=== Make system ===&lt;br /&gt;
&lt;br /&gt;
New rules should be added to the make system so that:&lt;br /&gt;
{{{&lt;br /&gt;
make test ll&lt;br /&gt;
}}}&lt;br /&gt;
Will start recursively library and/or module tests from the current directory in the LatLong test location.&lt;br /&gt;
The Make system should execute the Python test framework main Python file in each Module or Library directory.&lt;br /&gt;
I guess test specific entries must be added to the modules and library Makefiles?&lt;br /&gt;
&lt;br /&gt;
== Timeline and status ==&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
== Interested people == &lt;br /&gt;
&lt;br /&gt;
* [[User:huhabla | Sören Gebbert]]&lt;br /&gt;
* [[User:AnneGhisla| Anne Ghisla]]&lt;br /&gt;
* [[User:Landa|Martin Landa]]&lt;br /&gt;
* Add your name here&lt;br /&gt;
&lt;br /&gt;
[[Category: Development]]&lt;br /&gt;
[[Category: Testing]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Test_Suite&amp;diff=13779</id>
		<title>Test Suite</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Test_Suite&amp;diff=13779"/>
		<updated>2011-07-01T19:35:07Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Test framework Python approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= GRASS Test Suite =&lt;br /&gt;
&lt;br /&gt;
We aim at creating a comprehensive test suite for GRASS modules and libraries.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
See what has been done so far by Sören Gebbert and others here: [[Development#QA]] and the good [[http://www.vtk.org/Wiki/images/b/bc/Testing.cover.txt | VKT test suite]]&lt;br /&gt;
&lt;br /&gt;
Keep an eye on [[GRASS_7_ideas_collection#Complete_GRASS_Test_Suite:_see_activity_on_Test_Suite_development_page | GRASS 7 ideas collection]]&lt;br /&gt;
&lt;br /&gt;
== Main picture ==&lt;br /&gt;
&lt;br /&gt;
We plan to run unittests and integration tests for both libraries and modules. The test suite will be run after compilation, with a command like:&lt;br /&gt;
&lt;br /&gt;
  $ make tests [ proj ]&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
* proj: run the tests with a [list of] CRS, so that reprojection and map unit handling are tested.&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
Tests are executed recursively. If the &amp;quot;make tests&amp;quot; command is executed in the root source folder all libraries and modules are tested. To test only the libraries you need to switch in the '''lib''' directory and execute &amp;quot;make tests&amp;quot;. If you want to test only raster modules switch into the '''raster''' directory and run &amp;quot;make tests&amp;quot;, same for other modules directories. To test a single module switch into the module directory and run &amp;quot;make tests&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Tests == &lt;br /&gt;
&lt;br /&gt;
=== Modules ===&lt;br /&gt;
Tests are targeted to cover all modules as well as library test modules.&lt;br /&gt;
&lt;br /&gt;
The modules tests should as independent as possible from other GRASS modules.&lt;br /&gt;
&lt;br /&gt;
Tests are written as simple shell script with annotations. Test script should start with '''test.''' followed by the module name i.e. '''r.mapcalc.''' and further ending with '''.sh'''. Example '''test.r.mapcalc.1.sh'''. All test should be well documented using shell comments.&lt;br /&gt;
&lt;br /&gt;
The framework will execute all test scripts starting with '''test.''' and ending with '''.sh''' located in module or library directories.&lt;br /&gt;
&lt;br /&gt;
Annotations are integrated in the test documentation (simple shell comments) and specify pre-processing steps, the tests and the type of the data to validate. The following annotations should be supported:&lt;br /&gt;
&lt;br /&gt;
* The '''@preprocess''' annotation&lt;br /&gt;
** All commands below this annotation are handled as preprocessing steps for the tests. &lt;br /&gt;
** If any of the preprocess commands fail, the framework should stop testing an create a detailed error report. &lt;br /&gt;
** Preprocessing steps may be data generation, region settings and so on.&lt;br /&gt;
** The preprocess annotation is valid till a '''@test''' annotation specifies the begin of a test&lt;br /&gt;
** Preprocess annotations can be specified at between tests&lt;br /&gt;
* The '''@test''' annotation&lt;br /&gt;
** All command below a this annotation are handled as tests by the framework&lt;br /&gt;
** The test annotation must be integrated in the comment block which describes the test&lt;br /&gt;
** Data validation is performed by the framework for tests if reference data is present&lt;br /&gt;
** The test annotation is valid till a '''@preprocess''' annotation specifies the begin of a preprocess block for further test runs&lt;br /&gt;
** The data type annotations&lt;br /&gt;
*** Data type annotations should be specified in the same comment block as the '''@test''' annotation&lt;br /&gt;
*** Data type annotations specify the grass data types which should be validated with reference data&lt;br /&gt;
*** The following data type annotations should be specified&lt;br /&gt;
**** '''@file''' the framework should compare the reference data with files&lt;br /&gt;
**** '''@raster''' the framework should compare the reference data with raster maps using r.out.ascii for export&lt;br /&gt;
**** '''@vector''' the framework should compare the reference data with vector maps using v.out.ascii for export&lt;br /&gt;
**** '''@raster3d''' the framework should compare the reference data with raster3d maps using r3.out.ascii for export&lt;br /&gt;
**** '''@color''' the framework should compare the reference data with color rules using r.color.out for export&lt;br /&gt;
**** '''@color3d''' the framework should compare the reference data with 3d color rules using r3.color.out for export&lt;br /&gt;
**** '''@table''' the framework should compare the reference data with SQL tables  using db.select for export&lt;br /&gt;
**** ... please add more&lt;br /&gt;
** The '''@precision=[positive integer]''' annotation&lt;br /&gt;
*** Should be located in a test comment block&lt;br /&gt;
*** Specifies the precision to use to export grass data for validation with reference files&lt;br /&gt;
*** In case the precision is not provided the default behavior of the export module is used&lt;br /&gt;
&lt;br /&gt;
Reference data for validation must be located in the module/library directory. The reference data names must be identical with the generated data (files, maps, ...) except that reference data always has a '''.ref''' suffix.  &lt;br /&gt;
&lt;br /&gt;
Tests are in each module's and in each library's folder. To test library functions special modules must be implemented. Library test modules test the library functions directly and should be written in C. Have a look at the test directories in the g3d, gpde and gmath libraries of grass7.&lt;br /&gt;
&lt;br /&gt;
Framework should be able to generate and compare grass data types: raster, vector, raster3d, general, db, icon, imagery, d.*?&lt;br /&gt;
&lt;br /&gt;
wxGUI testing should be tested separately.&lt;br /&gt;
&lt;br /&gt;
Automated tests on server generates HTML report. Test several platforms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here some examples already available in grass7:&lt;br /&gt;
&lt;br /&gt;
=== test.v.random.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This is a simple test for v.random&lt;br /&gt;
# We create several identical pseudo random points maps :)&lt;br /&gt;
# using the seed option for rand and drand48&lt;br /&gt;
&lt;br /&gt;
# In the @preprocess step we set up a suitable region&lt;br /&gt;
g.region n=80 s=0 w=0 e=120 res=10 -p&lt;br /&gt;
&lt;br /&gt;
# First @test the rand function. Create a 3d vector map with attribute table&lt;br /&gt;
# The validation is based on @vector map with a @precision=3&lt;br /&gt;
v.random --o -z output=test_random_vect_1 n=20 zmin=0 zmax=100 seed=501&lt;br /&gt;
# Now the attribute @table should be validated. Booth maps are identical&lt;br /&gt;
v.random --o -z output=test_random_vect_2 n=20 zmin=0 zmax=100 column=height seed=501&lt;br /&gt;
&lt;br /&gt;
# Second @test the drand48 function. Create a 3d vector map with attribute table&lt;br /&gt;
# The validation is based on @vector map with a @precision=3&lt;br /&gt;
v.random --o -zd output=test_random_vect_3 n=20 zmin=0 zmax=100 seed=501&lt;br /&gt;
# Now the attribute @table should be validated. Booth maps are identical&lt;br /&gt;
v.random --o -zd output=test_random_vect_4 n=20 zmin=0 zmax=100 column=height seed=501&lt;br /&gt;
&lt;br /&gt;
# Export the generated data as references&lt;br /&gt;
# v.out.ascii --o format=point dp=3 input=test_random_vect_1 output=test_random_vect_1.ref&lt;br /&gt;
# db.select &amp;quot;select * from test_random_vect_2&amp;quot; &amp;gt; test_random_vect_2.ref&lt;br /&gt;
# v.out.ascii --o format=point dp=3 input=test_random_vect_3 output=test_random_vect_3.ref&lt;br /&gt;
# db.select &amp;quot;select * from test_random_vect_4&amp;quot; &amp;gt; test_random_vect_4.ref&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the v.random directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r--  1 soeren users  460 18. Jun 01:20 test_random_vect_1.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  257 18. Jun 01:20 test_random_vect_2.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  455 18. Jun 01:20 test_random_vect_3.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  256 18. Jun 01:20 test_random_vect_4.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test.r3.out.vtk.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This script tests the export of voxel data&lt;br /&gt;
# into the VTK format. Almost all options of&lt;br /&gt;
# r3.out.vtk are tested. Validation data for each test&lt;br /&gt;
# is located in the module source directory&lt;br /&gt;
&lt;br /&gt;
# We need to set a specific region in the&lt;br /&gt;
# @preprocess step of this test. We generate&lt;br /&gt;
# raster and voxel data with r.mapcalc and r3.mapcalc&lt;br /&gt;
# The region setting should work for UTM and LL test locations&lt;br /&gt;
g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3&lt;br /&gt;
# Now generate two elevation maps, we have 8 rows and use&lt;br /&gt;
# them for elevation computation. The rows are counted from north&lt;br /&gt;
# to south. So in the south the elevation must have a maximum.&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_bottom = row()&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_top = row() + 50&amp;quot;&lt;br /&gt;
# Now create a voxel map with value = col + row + depth. &lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume = col() + row() + depth()&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_null = if(row() == 2 || row() == 7, null(), volume)&amp;quot;&lt;br /&gt;
# Create the rgb maps&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_rgb = volume_null * 5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# The first @test just exports the volume map as cell and point data&lt;br /&gt;
# using a low precision and replaces the default null value with 0&lt;br /&gt;
# the created @files should be compared with the reference data&lt;br /&gt;
r3.out.vtk --o input=volume_null output=test_volume_null_1_cells.vtk dp=3 null=0&lt;br /&gt;
r3.out.vtk -p --o input=volume_null output=test_volume_null_1_points.vtk dp=3 null=0&lt;br /&gt;
&lt;br /&gt;
# The second @test adds rgb and vector maps. We re-use the created volume map&lt;br /&gt;
# for vector creation. The rgb value must range fom 0 - 255. The generated @files&lt;br /&gt;
# should be compared with the reference data.&lt;br /&gt;
r3.out.vtk --o rgbmaps=volume_rgb,volume_rgb,volume_rgb vectormaps=volume_null,volume_null,volume_null input=volume_null output=test_volume_null_1_cells_rgb_vect.vtk dp=3 null=-1.0&lt;br /&gt;
r3.out.vtk -p --o rgbmaps=volume_rgb,volume_rgb,volume_rgb vectormaps=volume_null,volume_null,volume_null input=volume_null output=test_volume_null_1_points_rgb_vect.vtk dp=3 null=-1.0&lt;br /&gt;
&lt;br /&gt;
# The third @test uses raster maps to create volume data with an elevation surface&lt;br /&gt;
# The maximum elevation should be in the south. Reference @files are present for validation.&lt;br /&gt;
r3.out.vtk -s --o top=elev_top bottom=elev_bottom input=volume_null output=test_volume_null_1_cells_elevation.vtk dp=3 null=0&lt;br /&gt;
r3.out.vtk -sp --o top=elev_top bottom=elev_bottom input=volume_null output=test_volume_null_1_points_elevation.vtk dp=3 null=0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the r3.out.vtk directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r-- 1 soeren users 104556 16. Jun 18:14 test_volume_null_1_cells_elevation.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   3434 16. Jun 18:14 test_volume_null_1_cells.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users  22749 16. Jun 18:14 test_volume_null_1_cells_rgb_vect.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users  13360 16. Jun 18:14 test_volume_null_1_points_elevation.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   3435 16. Jun 18:14 test_volume_null_1_points.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users  22750 16. Jun 18:14 test_volume_null_1_points_rgb_vect.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test.r3.cross.rast.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This script tests the r3.cross.rast module to compute&lt;br /&gt;
# cross section raster maps based on a raster3d and elevation map&lt;br /&gt;
&lt;br /&gt;
# We need to set a specific region in the&lt;br /&gt;
# @preprocess step of this test. We generate&lt;br /&gt;
# raster and voxel data with r.mapcalc and r3.mapcalc&lt;br /&gt;
# The region setting should work for UTM and LL test locations&lt;br /&gt;
g.region s=0 n=80 w=0 e=100 b=0 t=50 res=10 res3=10 -p3&lt;br /&gt;
# We create several elevation maps to create slices of the voxel map&lt;br /&gt;
# We start from bottom and raise to the top. Value equal or greater 50 &lt;br /&gt;
# should generate grass NULL values&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_0 = 0&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_1 = 5&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_2 = 15&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_3 = 25&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_4 = 35&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_5 = 45&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_NAN = 50&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_cross = float(col()* 5)&amp;quot;&lt;br /&gt;
# Now create a voxel map with value = col + row + depth. &lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume = col() + row() + depth()&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_null = if(row() == 1 || row() == 5, null(), volume)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# We @test the creation of slices and a cross section of the voxel map. Reference data&lt;br /&gt;
# for @raster map validation is located in the r3.cross.rast source directory.&lt;br /&gt;
# Slice 0 and 1 should be identical. The last slice should consist only of grass NULL values&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_0 output=test_cross_section_slice_0&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_1 output=test_cross_section_slice_1&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_2 output=test_cross_section_slice_2&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_3 output=test_cross_section_slice_3&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_4 output=test_cross_section_slice_4&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_5 output=test_cross_section_slice_5&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_NAN output=test_cross_section_slice_NAN&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_cross output=test_cross_section_result&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the r3.cross.rast directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r-- 1 soeren users   264 16. Jun 18:14 test_cross_section_result.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   264 16. Jun 18:14 test_cross_section_slice_0.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   264 16. Jun 18:14 test_cross_section_slice_1.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   269 16. Jun 18:14 test_cross_section_slice_2.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   273 16. Jun 18:14 test_cross_section_slice_3.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   276 16. Jun 18:14 test_cross_section_slice_4.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   279 16. Jun 18:14 test_cross_section_slice_5.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   222 16. Jun 18:14 test_cross_section_slice_NAN.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== test.r3.out.ascii.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Tests for r3.out.ascii and r3.in.ascii&lt;br /&gt;
# This script tests the export of voxel data using r3.out.ascii&lt;br /&gt;
# as well as the import of the generated data with r3.in.ascii&lt;br /&gt;
# using different row and depth ordering options.&lt;br /&gt;
&lt;br /&gt;
# We set up a specific region in the&lt;br /&gt;
# @preprocess step of this test. We generate&lt;br /&gt;
# voxel data with r3.mapcalc. The region setting&lt;br /&gt;
# should work for UTM and LL test locations&lt;br /&gt;
g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3&lt;br /&gt;
# Now create several (float, double, null value) voxel map&lt;br /&gt;
# with value = col + row + depth.&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_float = float(col() + row() + depth())&amp;quot;&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double = double(col() + row() + depth())&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_float_null = if(row() == 1 || row() == 5, null(), volume_float)&amp;quot;&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double_null = if(row() == 1 || row() == 5, null(), volume_double)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# We export float data in the first @test using different order and precision&lt;br /&gt;
# as text @files for valdiation of correct ordering and null data handling&lt;br /&gt;
r3.out.ascii --o     input=volume_float_null output=test_float_nsbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -r  input=volume_float_null output=test_float_snbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -d  input=volume_float_null output=test_float_nstb_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -rd input=volume_float_null output=test_float_sntb_null.txt dp=0 null=*&lt;br /&gt;
# Different precision and null values than default&lt;br /&gt;
r3.out.ascii --o     input=volume_float_null output=test_float_nsbt_null_prec5.txt dp=5 null=-1000&lt;br /&gt;
r3.out.ascii --o -rd input=volume_float_null output=test_float_sntb_null_prec8.txt dp=8 null=-2000&lt;br /&gt;
# Test the no header and grass6 compatibility flags&lt;br /&gt;
r3.out.ascii --o -h input=volume_float_null output=test_float_nsbt_null_no_header.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -c input=volume_float_null output=test_float_nsbt_null_grass6_comp_1.txt dp=3 null=*&lt;br /&gt;
# Any row or depth order should be ignored in case grass6 compatibility is enabled&lt;br /&gt;
# The rsult of comp_1, _2 and _3 must be identical&lt;br /&gt;
r3.out.ascii --o -cr  input=volume_float_null output=test_float_nsbt_null_grass6_comp_2.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -crd input=volume_float_null output=test_float_nsbt_null_grass6_comp_3.txt dp=3 null=*&lt;br /&gt;
&lt;br /&gt;
# We export double data in the second @test using different order and precision&lt;br /&gt;
# as text @files for valdiation of correct ordering and null data handling. Its hte same&lt;br /&gt;
# procedure as with float data&lt;br /&gt;
r3.out.ascii --o     input=volume_double_null output=test_double_nsbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -r  input=volume_double_null output=test_double_snbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -d  input=volume_double_null output=test_double_nstb_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -rd input=volume_double_null output=test_double_sntb_null.txt dp=0 null=*&lt;br /&gt;
# Different precision and null values than default&lt;br /&gt;
r3.out.ascii --o     input=volume_double_null output=test_double_nsbt_null_prec5.txt dp=5 null=-1000&lt;br /&gt;
r3.out.ascii --o -rd input=volume_double_null output=test_double_sntb_null_prec8.txt dp=8 null=-2000&lt;br /&gt;
# Test the no header and grass6 compatibility flags&lt;br /&gt;
r3.out.ascii --o -h input=volume_double_null output=test_double_nsbt_null_no_header.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -c input=volume_double_null output=test_double_nsbt_null_grass6_comp_1.txt dp=3 null=*&lt;br /&gt;
# Any row or depth order should be ignored in case grass6 compatibility is enabled&lt;br /&gt;
# The result of comp_1, _2 and _3 must be identical&lt;br /&gt;
r3.out.ascii --o -cr  input=volume_double_null output=test_double_nsbt_null_grass6_comp_2.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -crd input=volume_double_null output=test_double_nsbt_null_grass6_comp_3.txt dp=3 null=*&lt;br /&gt;
&lt;br /&gt;
# In the third @test we import all the generated data using r3.in.ascii&lt;br /&gt;
# The created @raster maps should be identical to the map &amp;quot;volume_double_null&amp;quot;&lt;br /&gt;
# The export of the created g3d map should use as @precision=0 for data validation&lt;br /&gt;
# The same raster name is used for all the imported data and so for the validation reference file&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nsbt_null.txt nv=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_snbt_null.txt nv=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nstb_null.txt nv=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_sntb_null.txt nv=*&lt;br /&gt;
# Different precision and null values than default&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nsbt_null_prec5.txt nv=-1000&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_sntb_null_prec8.txt nv=-2000&lt;br /&gt;
# Any row or depth order should be ignored in case grass6 compatibility is enabled&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nsbt_null_grass6_comp_1.txt&lt;br /&gt;
&lt;br /&gt;
# In this @preprocess step for the last test we create a large region and&lt;br /&gt;
# generate large input data to test the handling of large files&lt;br /&gt;
g.region s=0 n=800 w=0 e=1200 b=0 t=50 res=10 res3=1.5 -p3&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double_large = double(col() + row() + depth())&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double_null_large = if(row() == 1 || row() == 5, null(), volume_double_large)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Now @test the export and import of large data without validation&lt;br /&gt;
r3.out.ascii --o input=volume_double_null_large output=test_double_nsbt_null_large.txt dp=0 null=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null_large input=test_double_nsbt_null_large.txt nv=*&lt;br /&gt;
# Just for the logs&lt;br /&gt;
r3.info test_double_nsbt_null_large&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the r3.out.ascii directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_double_nsbt_null_grass6_comp_1.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_double_nsbt_null_grass6_comp_2.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_double_nsbt_null_grass6_comp_3.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2751 17. Jun 21:36 test_double_nsbt_null_no_header.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  4103 17. Jun 21:36 test_double_nsbt_null_prec5.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_nsbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_nstb_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_snbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  5183 17. Jun 21:36 test_double_sntb_null_prec8.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_sntb_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_float_nsbt_null_grass6_comp_1.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_float_nsbt_null_grass6_comp_2.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_float_nsbt_null_grass6_comp_3.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2751 17. Jun 21:36 test_float_nsbt_null_no_header.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  4103 17. Jun 21:36 test_float_nsbt_null_prec5.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_nsbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_nstb_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_snbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  5183 17. Jun 21:36 test_float_sntb_null_prec8.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_sntb_null.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test framework: ==&lt;br /&gt;
&lt;br /&gt;
What the test framework should do:&lt;br /&gt;
&lt;br /&gt;
* Creation of a test mapset for each test case in a specific test location located in the grass sources&lt;br /&gt;
* Setting the environment variables to the test location and grass installation (grass environment to run modules)&lt;br /&gt;
* Parsing and interpretation and execution of test scripts&lt;br /&gt;
* Support of several test scripts in a single module directory&lt;br /&gt;
* Run of location specific test scripts (only LL or UTM test scripts)&lt;br /&gt;
* Handles module test results codes and stderr messages&lt;br /&gt;
* Validation of module output based on reference data and data type annotations in the test description&lt;br /&gt;
* Creates a HTML report for single modules and the whole test run&lt;br /&gt;
* Deletion of the generated test mapset to clean up the test location&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
* All test cases must be implemented as text files in shell style including annotations in comment blocks&lt;br /&gt;
* The test framework should be implemented in Python, parsing and analyzing and executing the test cases line by line&lt;br /&gt;
* The Make-System must be modified to start the tests by typing &amp;quot;make tests&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Test framework Python approach === &lt;br /&gt;
&lt;br /&gt;
I suggest the following Python classes:&lt;br /&gt;
* TestBase class - implements the test logic&lt;br /&gt;
** LatLongTest class - for LatLong test location initialization and test run, derived from TestBase class&lt;br /&gt;
** UTMTest class - for UTM test location initialization and test run, derived from TestBase class&lt;br /&gt;
* A CommandBase class - implements command line specific methods and attributes and executes a command, logging return value and stderr using the subprocess module&lt;br /&gt;
** PreProcess class - derived from CommandBase class for preprocess execution&lt;br /&gt;
** TestCase class - derived from CommandBase class for test execution&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
The TestBase class implementing the following methods:&lt;br /&gt;
&lt;br /&gt;
* StartGrassSession&lt;br /&gt;
** Abstract method, should be overwritten in a subclass&lt;br /&gt;
* Run&lt;br /&gt;
** Calls StartGrassSession&lt;br /&gt;
** Calls CreateTestMapset &lt;br /&gt;
** Calls ExecuteAll&lt;br /&gt;
* CreateTestMapset&lt;br /&gt;
** Creates a temporary mapset for the test using g.mapset&lt;br /&gt;
* CreateExecutionOrder&lt;br /&gt;
** Reads the entire test case into memory and parses the file line by line&lt;br /&gt;
** Creates the execution order list as internal structure to store specific execution settings&lt;br /&gt;
** For each command in the test case a specific CommandBase object is created and stored in the execution order list&lt;br /&gt;
** TestCase objects store the validation type (@file, ...) and the validation precision (@precision=1) ... and maybe more&lt;br /&gt;
* ExecuteAll&lt;br /&gt;
** Calls ExecuteTest or ExecutePreProcess for each entry in the execution order list&lt;br /&gt;
** Summarize the HTML and text summary content for each entry in the list&lt;br /&gt;
* ExecuteTest&lt;br /&gt;
** Execute a single test command using the TestCase object &lt;br /&gt;
** Logs stderr and return value from TestCase object&lt;br /&gt;
** Analyses return value and stderr in case of an error&lt;br /&gt;
** Checks for new generated maps/files of the command &lt;br /&gt;
** Checks if reference files are present&lt;br /&gt;
** Export data with data specific commands (r/r3/v.out.ascii, r/r3.colors.out, ...)&lt;br /&gt;
** Compares reference files with exported files&lt;br /&gt;
** Creates HTML and text logfile entry&lt;br /&gt;
* CheckForReferenceFiles&lt;br /&gt;
** Lists all available reference files of a directory in an internal dict, base name, path and full name are stored&lt;br /&gt;
* ExecutePreprocess&lt;br /&gt;
** Execute a single preprocess command using the PreProcess object &lt;br /&gt;
** Logs stderr and return value from PreProcess object&lt;br /&gt;
** Analyses return value and stderr in case of an error&lt;br /&gt;
** Creates HTML and text logfile entry&lt;br /&gt;
* CompareVectorMap&lt;br /&gt;
** Exports vector map with v.out.ascii using the default or specific TestCase precision&lt;br /&gt;
** Compares exported file with reference file&lt;br /&gt;
* CompareRasterMap&lt;br /&gt;
** Export raster map with r.out.ascii using the default or specific TestCase precision&lt;br /&gt;
** Compares exported file with reference file&lt;br /&gt;
* CompareRaster3dMaps&lt;br /&gt;
** Exports raster3d map with r3.out.ascii using the default or specific TestCase precision&lt;br /&gt;
** Compares exported file with reference file&lt;br /&gt;
* CompareColor&lt;br /&gt;
** Export raster color with r.colors.out&lt;br /&gt;
** Compares exported file with reference file&lt;br /&gt;
* CompareColor3d&lt;br /&gt;
** Export raster3d color with r3.colors.out&lt;br /&gt;
** Compares exported file with reference file&lt;br /&gt;
* CreateHTMLTestSummary&lt;br /&gt;
* CreateTextTestSummary&lt;br /&gt;
* CleanUp&lt;br /&gt;
** Remove the temporary test mapset and all generated test files&lt;br /&gt;
* ... many more&lt;br /&gt;
&lt;br /&gt;
The LatLongTest implements the following method:&lt;br /&gt;
&lt;br /&gt;
* StartGrassSession&lt;br /&gt;
** starts the grass7 session in a LatLong test location&lt;br /&gt;
&lt;br /&gt;
The UTMTest implements the following method:&lt;br /&gt;
&lt;br /&gt;
* StartGrassSession&lt;br /&gt;
** starts the grass7 session in an UTM test location&lt;br /&gt;
&lt;br /&gt;
The CommandBase class:&lt;br /&gt;
&lt;br /&gt;
* Uses the subprocess module to execute a command&lt;br /&gt;
* Is able to identify some shell specific commands in the command line (&amp;quot;&amp;amp;&amp;amp;, |, &amp;lt;, &amp;gt;&amp;quot;)&lt;br /&gt;
* Acts as a very simple shell interpreter &lt;br /&gt;
** In case if &amp;quot;|&amp;quot; connects multiple commands in a command line with subprocess.PIPE&lt;br /&gt;
** In case of &amp;quot;&amp;gt;&amp;quot; or &amp;quot;&amp;lt;&amp;quot; uses stdout or stdin io&lt;br /&gt;
** No support for complex shell functionality (for, test, ...)&lt;br /&gt;
&lt;br /&gt;
== Timeline and status ==&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
== Interested people == &lt;br /&gt;
&lt;br /&gt;
* [[User:huhabla | Sören Gebbert]]&lt;br /&gt;
* [[User:AnneGhisla| Anne Ghisla]]&lt;br /&gt;
* [[User:Landa|Martin Landa]]&lt;br /&gt;
* Add your name here&lt;br /&gt;
&lt;br /&gt;
[[Category: Development]]&lt;br /&gt;
[[Category: Testing]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Test_Suite&amp;diff=13778</id>
		<title>Test Suite</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Test_Suite&amp;diff=13778"/>
		<updated>2011-07-01T19:04:58Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Test framework Python approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= GRASS Test Suite =&lt;br /&gt;
&lt;br /&gt;
We aim at creating a comprehensive test suite for GRASS modules and libraries.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
See what has been done so far by Sören Gebbert and others here: [[Development#QA]] and the good [[http://www.vtk.org/Wiki/images/b/bc/Testing.cover.txt | VKT test suite]]&lt;br /&gt;
&lt;br /&gt;
Keep an eye on [[GRASS_7_ideas_collection#Complete_GRASS_Test_Suite:_see_activity_on_Test_Suite_development_page | GRASS 7 ideas collection]]&lt;br /&gt;
&lt;br /&gt;
== Main picture ==&lt;br /&gt;
&lt;br /&gt;
We plan to run unittests and integration tests for both libraries and modules. The test suite will be run after compilation, with a command like:&lt;br /&gt;
&lt;br /&gt;
  $ make tests [ proj ]&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
* proj: run the tests with a [list of] CRS, so that reprojection and map unit handling are tested.&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
Tests are executed recursively. If the &amp;quot;make tests&amp;quot; command is executed in the root source folder all libraries and modules are tested. To test only the libraries you need to switch in the '''lib''' directory and execute &amp;quot;make tests&amp;quot;. If you want to test only raster modules switch into the '''raster''' directory and run &amp;quot;make tests&amp;quot;, same for other modules directories. To test a single module switch into the module directory and run &amp;quot;make tests&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Tests == &lt;br /&gt;
&lt;br /&gt;
=== Modules ===&lt;br /&gt;
Tests are targeted to cover all modules as well as library test modules.&lt;br /&gt;
&lt;br /&gt;
The modules tests should as independent as possible from other GRASS modules.&lt;br /&gt;
&lt;br /&gt;
Tests are written as simple shell script with annotations. Test script should start with '''test.''' followed by the module name i.e. '''r.mapcalc.''' and further ending with '''.sh'''. Example '''test.r.mapcalc.1.sh'''. All test should be well documented using shell comments.&lt;br /&gt;
&lt;br /&gt;
The framework will execute all test scripts starting with '''test.''' and ending with '''.sh''' located in module or library directories.&lt;br /&gt;
&lt;br /&gt;
Annotations are integrated in the test documentation (simple shell comments) and specify pre-processing steps, the tests and the type of the data to validate. The following annotations should be supported:&lt;br /&gt;
&lt;br /&gt;
* The '''@preprocess''' annotation&lt;br /&gt;
** All commands below this annotation are handled as preprocessing steps for the tests. &lt;br /&gt;
** If any of the preprocess commands fail, the framework should stop testing an create a detailed error report. &lt;br /&gt;
** Preprocessing steps may be data generation, region settings and so on.&lt;br /&gt;
** The preprocess annotation is valid till a '''@test''' annotation specifies the begin of a test&lt;br /&gt;
** Preprocess annotations can be specified at between tests&lt;br /&gt;
* The '''@test''' annotation&lt;br /&gt;
** All command below a this annotation are handled as tests by the framework&lt;br /&gt;
** The test annotation must be integrated in the comment block which describes the test&lt;br /&gt;
** Data validation is performed by the framework for tests if reference data is present&lt;br /&gt;
** The test annotation is valid till a '''@preprocess''' annotation specifies the begin of a preprocess block for further test runs&lt;br /&gt;
** The data type annotations&lt;br /&gt;
*** Data type annotations should be specified in the same comment block as the '''@test''' annotation&lt;br /&gt;
*** Data type annotations specify the grass data types which should be validated with reference data&lt;br /&gt;
*** The following data type annotations should be specified&lt;br /&gt;
**** '''@file''' the framework should compare the reference data with files&lt;br /&gt;
**** '''@raster''' the framework should compare the reference data with raster maps using r.out.ascii for export&lt;br /&gt;
**** '''@vector''' the framework should compare the reference data with vector maps using v.out.ascii for export&lt;br /&gt;
**** '''@raster3d''' the framework should compare the reference data with raster3d maps using r3.out.ascii for export&lt;br /&gt;
**** '''@color''' the framework should compare the reference data with color rules using r.color.out for export&lt;br /&gt;
**** '''@color3d''' the framework should compare the reference data with 3d color rules using r3.color.out for export&lt;br /&gt;
**** '''@table''' the framework should compare the reference data with SQL tables  using db.select for export&lt;br /&gt;
**** ... please add more&lt;br /&gt;
** The '''@precision=[positive integer]''' annotation&lt;br /&gt;
*** Should be located in a test comment block&lt;br /&gt;
*** Specifies the precision to use to export grass data for validation with reference files&lt;br /&gt;
*** In case the precision is not provided the default behavior of the export module is used&lt;br /&gt;
&lt;br /&gt;
Reference data for validation must be located in the module/library directory. The reference data names must be identical with the generated data (files, maps, ...) except that reference data always has a '''.ref''' suffix.  &lt;br /&gt;
&lt;br /&gt;
Tests are in each module's and in each library's folder. To test library functions special modules must be implemented. Library test modules test the library functions directly and should be written in C. Have a look at the test directories in the g3d, gpde and gmath libraries of grass7.&lt;br /&gt;
&lt;br /&gt;
Framework should be able to generate and compare grass data types: raster, vector, raster3d, general, db, icon, imagery, d.*?&lt;br /&gt;
&lt;br /&gt;
wxGUI testing should be tested separately.&lt;br /&gt;
&lt;br /&gt;
Automated tests on server generates HTML report. Test several platforms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here some examples already available in grass7:&lt;br /&gt;
&lt;br /&gt;
=== test.v.random.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This is a simple test for v.random&lt;br /&gt;
# We create several identical pseudo random points maps :)&lt;br /&gt;
# using the seed option for rand and drand48&lt;br /&gt;
&lt;br /&gt;
# In the @preprocess step we set up a suitable region&lt;br /&gt;
g.region n=80 s=0 w=0 e=120 res=10 -p&lt;br /&gt;
&lt;br /&gt;
# First @test the rand function. Create a 3d vector map with attribute table&lt;br /&gt;
# The validation is based on @vector map with a @precision=3&lt;br /&gt;
v.random --o -z output=test_random_vect_1 n=20 zmin=0 zmax=100 seed=501&lt;br /&gt;
# Now the attribute @table should be validated. Booth maps are identical&lt;br /&gt;
v.random --o -z output=test_random_vect_2 n=20 zmin=0 zmax=100 column=height seed=501&lt;br /&gt;
&lt;br /&gt;
# Second @test the drand48 function. Create a 3d vector map with attribute table&lt;br /&gt;
# The validation is based on @vector map with a @precision=3&lt;br /&gt;
v.random --o -zd output=test_random_vect_3 n=20 zmin=0 zmax=100 seed=501&lt;br /&gt;
# Now the attribute @table should be validated. Booth maps are identical&lt;br /&gt;
v.random --o -zd output=test_random_vect_4 n=20 zmin=0 zmax=100 column=height seed=501&lt;br /&gt;
&lt;br /&gt;
# Export the generated data as references&lt;br /&gt;
# v.out.ascii --o format=point dp=3 input=test_random_vect_1 output=test_random_vect_1.ref&lt;br /&gt;
# db.select &amp;quot;select * from test_random_vect_2&amp;quot; &amp;gt; test_random_vect_2.ref&lt;br /&gt;
# v.out.ascii --o format=point dp=3 input=test_random_vect_3 output=test_random_vect_3.ref&lt;br /&gt;
# db.select &amp;quot;select * from test_random_vect_4&amp;quot; &amp;gt; test_random_vect_4.ref&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the v.random directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r--  1 soeren users  460 18. Jun 01:20 test_random_vect_1.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  257 18. Jun 01:20 test_random_vect_2.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  455 18. Jun 01:20 test_random_vect_3.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  256 18. Jun 01:20 test_random_vect_4.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test.r3.out.vtk.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This script tests the export of voxel data&lt;br /&gt;
# into the VTK format. Almost all options of&lt;br /&gt;
# r3.out.vtk are tested. Validation data for each test&lt;br /&gt;
# is located in the module source directory&lt;br /&gt;
&lt;br /&gt;
# We need to set a specific region in the&lt;br /&gt;
# @preprocess step of this test. We generate&lt;br /&gt;
# raster and voxel data with r.mapcalc and r3.mapcalc&lt;br /&gt;
# The region setting should work for UTM and LL test locations&lt;br /&gt;
g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3&lt;br /&gt;
# Now generate two elevation maps, we have 8 rows and use&lt;br /&gt;
# them for elevation computation. The rows are counted from north&lt;br /&gt;
# to south. So in the south the elevation must have a maximum.&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_bottom = row()&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_top = row() + 50&amp;quot;&lt;br /&gt;
# Now create a voxel map with value = col + row + depth. &lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume = col() + row() + depth()&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_null = if(row() == 2 || row() == 7, null(), volume)&amp;quot;&lt;br /&gt;
# Create the rgb maps&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_rgb = volume_null * 5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# The first @test just exports the volume map as cell and point data&lt;br /&gt;
# using a low precision and replaces the default null value with 0&lt;br /&gt;
# the created @files should be compared with the reference data&lt;br /&gt;
r3.out.vtk --o input=volume_null output=test_volume_null_1_cells.vtk dp=3 null=0&lt;br /&gt;
r3.out.vtk -p --o input=volume_null output=test_volume_null_1_points.vtk dp=3 null=0&lt;br /&gt;
&lt;br /&gt;
# The second @test adds rgb and vector maps. We re-use the created volume map&lt;br /&gt;
# for vector creation. The rgb value must range fom 0 - 255. The generated @files&lt;br /&gt;
# should be compared with the reference data.&lt;br /&gt;
r3.out.vtk --o rgbmaps=volume_rgb,volume_rgb,volume_rgb vectormaps=volume_null,volume_null,volume_null input=volume_null output=test_volume_null_1_cells_rgb_vect.vtk dp=3 null=-1.0&lt;br /&gt;
r3.out.vtk -p --o rgbmaps=volume_rgb,volume_rgb,volume_rgb vectormaps=volume_null,volume_null,volume_null input=volume_null output=test_volume_null_1_points_rgb_vect.vtk dp=3 null=-1.0&lt;br /&gt;
&lt;br /&gt;
# The third @test uses raster maps to create volume data with an elevation surface&lt;br /&gt;
# The maximum elevation should be in the south. Reference @files are present for validation.&lt;br /&gt;
r3.out.vtk -s --o top=elev_top bottom=elev_bottom input=volume_null output=test_volume_null_1_cells_elevation.vtk dp=3 null=0&lt;br /&gt;
r3.out.vtk -sp --o top=elev_top bottom=elev_bottom input=volume_null output=test_volume_null_1_points_elevation.vtk dp=3 null=0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the r3.out.vtk directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r-- 1 soeren users 104556 16. Jun 18:14 test_volume_null_1_cells_elevation.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   3434 16. Jun 18:14 test_volume_null_1_cells.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users  22749 16. Jun 18:14 test_volume_null_1_cells_rgb_vect.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users  13360 16. Jun 18:14 test_volume_null_1_points_elevation.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   3435 16. Jun 18:14 test_volume_null_1_points.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users  22750 16. Jun 18:14 test_volume_null_1_points_rgb_vect.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test.r3.cross.rast.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This script tests the r3.cross.rast module to compute&lt;br /&gt;
# cross section raster maps based on a raster3d and elevation map&lt;br /&gt;
&lt;br /&gt;
# We need to set a specific region in the&lt;br /&gt;
# @preprocess step of this test. We generate&lt;br /&gt;
# raster and voxel data with r.mapcalc and r3.mapcalc&lt;br /&gt;
# The region setting should work for UTM and LL test locations&lt;br /&gt;
g.region s=0 n=80 w=0 e=100 b=0 t=50 res=10 res3=10 -p3&lt;br /&gt;
# We create several elevation maps to create slices of the voxel map&lt;br /&gt;
# We start from bottom and raise to the top. Value equal or greater 50 &lt;br /&gt;
# should generate grass NULL values&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_0 = 0&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_1 = 5&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_2 = 15&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_3 = 25&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_4 = 35&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_5 = 45&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_NAN = 50&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_cross = float(col()* 5)&amp;quot;&lt;br /&gt;
# Now create a voxel map with value = col + row + depth. &lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume = col() + row() + depth()&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_null = if(row() == 1 || row() == 5, null(), volume)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# We @test the creation of slices and a cross section of the voxel map. Reference data&lt;br /&gt;
# for @raster map validation is located in the r3.cross.rast source directory.&lt;br /&gt;
# Slice 0 and 1 should be identical. The last slice should consist only of grass NULL values&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_0 output=test_cross_section_slice_0&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_1 output=test_cross_section_slice_1&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_2 output=test_cross_section_slice_2&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_3 output=test_cross_section_slice_3&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_4 output=test_cross_section_slice_4&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_5 output=test_cross_section_slice_5&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_NAN output=test_cross_section_slice_NAN&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_cross output=test_cross_section_result&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the r3.cross.rast directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r-- 1 soeren users   264 16. Jun 18:14 test_cross_section_result.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   264 16. Jun 18:14 test_cross_section_slice_0.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   264 16. Jun 18:14 test_cross_section_slice_1.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   269 16. Jun 18:14 test_cross_section_slice_2.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   273 16. Jun 18:14 test_cross_section_slice_3.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   276 16. Jun 18:14 test_cross_section_slice_4.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   279 16. Jun 18:14 test_cross_section_slice_5.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   222 16. Jun 18:14 test_cross_section_slice_NAN.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== test.r3.out.ascii.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Tests for r3.out.ascii and r3.in.ascii&lt;br /&gt;
# This script tests the export of voxel data using r3.out.ascii&lt;br /&gt;
# as well as the import of the generated data with r3.in.ascii&lt;br /&gt;
# using different row and depth ordering options.&lt;br /&gt;
&lt;br /&gt;
# We set up a specific region in the&lt;br /&gt;
# @preprocess step of this test. We generate&lt;br /&gt;
# voxel data with r3.mapcalc. The region setting&lt;br /&gt;
# should work for UTM and LL test locations&lt;br /&gt;
g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3&lt;br /&gt;
# Now create several (float, double, null value) voxel map&lt;br /&gt;
# with value = col + row + depth.&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_float = float(col() + row() + depth())&amp;quot;&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double = double(col() + row() + depth())&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_float_null = if(row() == 1 || row() == 5, null(), volume_float)&amp;quot;&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double_null = if(row() == 1 || row() == 5, null(), volume_double)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# We export float data in the first @test using different order and precision&lt;br /&gt;
# as text @files for valdiation of correct ordering and null data handling&lt;br /&gt;
r3.out.ascii --o     input=volume_float_null output=test_float_nsbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -r  input=volume_float_null output=test_float_snbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -d  input=volume_float_null output=test_float_nstb_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -rd input=volume_float_null output=test_float_sntb_null.txt dp=0 null=*&lt;br /&gt;
# Different precision and null values than default&lt;br /&gt;
r3.out.ascii --o     input=volume_float_null output=test_float_nsbt_null_prec5.txt dp=5 null=-1000&lt;br /&gt;
r3.out.ascii --o -rd input=volume_float_null output=test_float_sntb_null_prec8.txt dp=8 null=-2000&lt;br /&gt;
# Test the no header and grass6 compatibility flags&lt;br /&gt;
r3.out.ascii --o -h input=volume_float_null output=test_float_nsbt_null_no_header.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -c input=volume_float_null output=test_float_nsbt_null_grass6_comp_1.txt dp=3 null=*&lt;br /&gt;
# Any row or depth order should be ignored in case grass6 compatibility is enabled&lt;br /&gt;
# The rsult of comp_1, _2 and _3 must be identical&lt;br /&gt;
r3.out.ascii --o -cr  input=volume_float_null output=test_float_nsbt_null_grass6_comp_2.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -crd input=volume_float_null output=test_float_nsbt_null_grass6_comp_3.txt dp=3 null=*&lt;br /&gt;
&lt;br /&gt;
# We export double data in the second @test using different order and precision&lt;br /&gt;
# as text @files for valdiation of correct ordering and null data handling. Its hte same&lt;br /&gt;
# procedure as with float data&lt;br /&gt;
r3.out.ascii --o     input=volume_double_null output=test_double_nsbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -r  input=volume_double_null output=test_double_snbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -d  input=volume_double_null output=test_double_nstb_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -rd input=volume_double_null output=test_double_sntb_null.txt dp=0 null=*&lt;br /&gt;
# Different precision and null values than default&lt;br /&gt;
r3.out.ascii --o     input=volume_double_null output=test_double_nsbt_null_prec5.txt dp=5 null=-1000&lt;br /&gt;
r3.out.ascii --o -rd input=volume_double_null output=test_double_sntb_null_prec8.txt dp=8 null=-2000&lt;br /&gt;
# Test the no header and grass6 compatibility flags&lt;br /&gt;
r3.out.ascii --o -h input=volume_double_null output=test_double_nsbt_null_no_header.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -c input=volume_double_null output=test_double_nsbt_null_grass6_comp_1.txt dp=3 null=*&lt;br /&gt;
# Any row or depth order should be ignored in case grass6 compatibility is enabled&lt;br /&gt;
# The result of comp_1, _2 and _3 must be identical&lt;br /&gt;
r3.out.ascii --o -cr  input=volume_double_null output=test_double_nsbt_null_grass6_comp_2.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -crd input=volume_double_null output=test_double_nsbt_null_grass6_comp_3.txt dp=3 null=*&lt;br /&gt;
&lt;br /&gt;
# In the third @test we import all the generated data using r3.in.ascii&lt;br /&gt;
# The created @raster maps should be identical to the map &amp;quot;volume_double_null&amp;quot;&lt;br /&gt;
# The export of the created g3d map should use as @precision=0 for data validation&lt;br /&gt;
# The same raster name is used for all the imported data and so for the validation reference file&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nsbt_null.txt nv=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_snbt_null.txt nv=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nstb_null.txt nv=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_sntb_null.txt nv=*&lt;br /&gt;
# Different precision and null values than default&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nsbt_null_prec5.txt nv=-1000&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_sntb_null_prec8.txt nv=-2000&lt;br /&gt;
# Any row or depth order should be ignored in case grass6 compatibility is enabled&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nsbt_null_grass6_comp_1.txt&lt;br /&gt;
&lt;br /&gt;
# In this @preprocess step for the last test we create a large region and&lt;br /&gt;
# generate large input data to test the handling of large files&lt;br /&gt;
g.region s=0 n=800 w=0 e=1200 b=0 t=50 res=10 res3=1.5 -p3&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double_large = double(col() + row() + depth())&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double_null_large = if(row() == 1 || row() == 5, null(), volume_double_large)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Now @test the export and import of large data without validation&lt;br /&gt;
r3.out.ascii --o input=volume_double_null_large output=test_double_nsbt_null_large.txt dp=0 null=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null_large input=test_double_nsbt_null_large.txt nv=*&lt;br /&gt;
# Just for the logs&lt;br /&gt;
r3.info test_double_nsbt_null_large&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the r3.out.ascii directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_double_nsbt_null_grass6_comp_1.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_double_nsbt_null_grass6_comp_2.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_double_nsbt_null_grass6_comp_3.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2751 17. Jun 21:36 test_double_nsbt_null_no_header.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  4103 17. Jun 21:36 test_double_nsbt_null_prec5.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_nsbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_nstb_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_snbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  5183 17. Jun 21:36 test_double_sntb_null_prec8.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_sntb_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_float_nsbt_null_grass6_comp_1.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_float_nsbt_null_grass6_comp_2.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_float_nsbt_null_grass6_comp_3.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2751 17. Jun 21:36 test_float_nsbt_null_no_header.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  4103 17. Jun 21:36 test_float_nsbt_null_prec5.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_nsbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_nstb_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_snbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  5183 17. Jun 21:36 test_float_sntb_null_prec8.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_sntb_null.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test framework: ==&lt;br /&gt;
&lt;br /&gt;
What the test framework should do:&lt;br /&gt;
&lt;br /&gt;
* Creation of a test mapset for each test case in a specific test location located in the grass sources&lt;br /&gt;
* Setting the environment variables to the test location and grass installation (grass environment to run modules)&lt;br /&gt;
* Parsing and interpretation and execution of test scripts&lt;br /&gt;
* Support of several test scripts in a single module directory&lt;br /&gt;
* Run of location specific test scripts (only LL or UTM test scripts)&lt;br /&gt;
* Handles module test results codes and stderr messages&lt;br /&gt;
* Validation of module output based on reference data and data type annotations in the test description&lt;br /&gt;
* Creates a HTML report for single modules and the whole test run&lt;br /&gt;
* Deletion of the generated test mapset to clean up the test location&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
* All test cases must be implemented as text files in shell style including annotations in comment blocks&lt;br /&gt;
* The test framework should be implemented in Python, parsing and analyzing and executing the test cases line by line&lt;br /&gt;
* The Make-System must be modified to start the tests by typing &amp;quot;make tests&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Test framework Python approach === &lt;br /&gt;
&lt;br /&gt;
I suggest the following Python classes:&lt;br /&gt;
* Base test class - implements the test logic&lt;br /&gt;
** LatLong test class - for LatLong test location initialization and test run, derived from base test class&lt;br /&gt;
** UTM test class - for UTM test location initialization and test run, derived from base test class&lt;br /&gt;
* A command class - implements command line specific methods and attributes and executes a command, logging return value and stderr&lt;br /&gt;
** PreProcess class - derived from command class for preprocess execution&lt;br /&gt;
** TestCase class - derived from command class for test execution&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
The base class implementing the following methods:&lt;br /&gt;
&lt;br /&gt;
* CreateTestMapset&lt;br /&gt;
** Creates a temporary mapset for the test&lt;br /&gt;
* CreateExecutionOrder&lt;br /&gt;
** Reads the entire test case into memory and parses the file line by line&lt;br /&gt;
** Creates the execution order list as internal structure to store specific execution settings&lt;br /&gt;
** For each command in the test case a specific command object is created and stored in the execution order list&lt;br /&gt;
** TestCase objects store the validation type (@file, ...) and the validation precision (@precision=1) ... and maybe more&lt;br /&gt;
* ExecuteAll&lt;br /&gt;
** Calls ExecuteTest or ExecutePreProcess for each entry in the execution order list&lt;br /&gt;
* ExecuteTest&lt;br /&gt;
** Execute a single test command using the TestCase object &lt;br /&gt;
** Logs stderr and return value from TestCase object&lt;br /&gt;
** Analyses return value and stderr in case of an error&lt;br /&gt;
** Checks for new generated maps/files of the command &lt;br /&gt;
** Checks if reference files are present&lt;br /&gt;
** Export data with data specific commands (r/r3/v.out.ascii, r/r3.colors.out, ...)&lt;br /&gt;
** Compares reference files with exported files&lt;br /&gt;
** Creates HTML and text logfile entry&lt;br /&gt;
* CheckForReferenceFiles&lt;br /&gt;
** Lists all available reference files of a directory in an internal dict, base name, path and full name are stored&lt;br /&gt;
* ExecutePreprocess&lt;br /&gt;
** Execute a single preprocess command using the PreProcess object &lt;br /&gt;
** Logs stderr and return value from PreProcess object&lt;br /&gt;
** Analyses return value and stderr in case of an error&lt;br /&gt;
** Creates HTML and text logfile entry&lt;br /&gt;
* CompareVectorMap&lt;br /&gt;
** Exports vector map with v.out.ascii using the default or specific TestCase precision&lt;br /&gt;
** Compares exported file with reference file&lt;br /&gt;
* CompareRasterMap&lt;br /&gt;
** Export raster map with r.out.ascii using the default or specific TestCase precision&lt;br /&gt;
** Compares exported file with reference file&lt;br /&gt;
* CompareRaster3dMaps&lt;br /&gt;
** Exports raster3d map with r3.out.ascii using the default or specific TestCase precision&lt;br /&gt;
** Compares exported file with reference file&lt;br /&gt;
* CompareColor&lt;br /&gt;
** Export raster color with r.colors.out&lt;br /&gt;
** Compares exported file with reference file&lt;br /&gt;
* CompareColor3d&lt;br /&gt;
** Export raster3d color with r3.colors.out&lt;br /&gt;
** Compares exported file with reference file&lt;br /&gt;
* CreateHTMLTestSummary&lt;br /&gt;
* CreateTextTestSummary&lt;br /&gt;
* CleanUp&lt;br /&gt;
** Remove the temporary test mapset and all generated test files&lt;br /&gt;
&lt;br /&gt;
== Timeline and status ==&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
== Interested people == &lt;br /&gt;
&lt;br /&gt;
* [[User:huhabla | Sören Gebbert]]&lt;br /&gt;
* [[User:AnneGhisla| Anne Ghisla]]&lt;br /&gt;
* [[User:Landa|Martin Landa]]&lt;br /&gt;
* Add your name here&lt;br /&gt;
&lt;br /&gt;
[[Category: Development]]&lt;br /&gt;
[[Category: Testing]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Test_Suite&amp;diff=13777</id>
		<title>Test Suite</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Test_Suite&amp;diff=13777"/>
		<updated>2011-07-01T18:49:40Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= GRASS Test Suite =&lt;br /&gt;
&lt;br /&gt;
We aim at creating a comprehensive test suite for GRASS modules and libraries.&lt;br /&gt;
&lt;br /&gt;
== Background ==&lt;br /&gt;
&lt;br /&gt;
See what has been done so far by Sören Gebbert and others here: [[Development#QA]] and the good [[http://www.vtk.org/Wiki/images/b/bc/Testing.cover.txt | VKT test suite]]&lt;br /&gt;
&lt;br /&gt;
Keep an eye on [[GRASS_7_ideas_collection#Complete_GRASS_Test_Suite:_see_activity_on_Test_Suite_development_page | GRASS 7 ideas collection]]&lt;br /&gt;
&lt;br /&gt;
== Main picture ==&lt;br /&gt;
&lt;br /&gt;
We plan to run unittests and integration tests for both libraries and modules. The test suite will be run after compilation, with a command like:&lt;br /&gt;
&lt;br /&gt;
  $ make tests [ proj ]&lt;br /&gt;
&lt;br /&gt;
Options:&lt;br /&gt;
* proj: run the tests with a [list of] CRS, so that reprojection and map unit handling are tested.&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
Tests are executed recursively. If the &amp;quot;make tests&amp;quot; command is executed in the root source folder all libraries and modules are tested. To test only the libraries you need to switch in the '''lib''' directory and execute &amp;quot;make tests&amp;quot;. If you want to test only raster modules switch into the '''raster''' directory and run &amp;quot;make tests&amp;quot;, same for other modules directories. To test a single module switch into the module directory and run &amp;quot;make tests&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Tests == &lt;br /&gt;
&lt;br /&gt;
=== Modules ===&lt;br /&gt;
Tests are targeted to cover all modules as well as library test modules.&lt;br /&gt;
&lt;br /&gt;
The modules tests should as independent as possible from other GRASS modules.&lt;br /&gt;
&lt;br /&gt;
Tests are written as simple shell script with annotations. Test script should start with '''test.''' followed by the module name i.e. '''r.mapcalc.''' and further ending with '''.sh'''. Example '''test.r.mapcalc.1.sh'''. All test should be well documented using shell comments.&lt;br /&gt;
&lt;br /&gt;
The framework will execute all test scripts starting with '''test.''' and ending with '''.sh''' located in module or library directories.&lt;br /&gt;
&lt;br /&gt;
Annotations are integrated in the test documentation (simple shell comments) and specify pre-processing steps, the tests and the type of the data to validate. The following annotations should be supported:&lt;br /&gt;
&lt;br /&gt;
* The '''@preprocess''' annotation&lt;br /&gt;
** All commands below this annotation are handled as preprocessing steps for the tests. &lt;br /&gt;
** If any of the preprocess commands fail, the framework should stop testing an create a detailed error report. &lt;br /&gt;
** Preprocessing steps may be data generation, region settings and so on.&lt;br /&gt;
** The preprocess annotation is valid till a '''@test''' annotation specifies the begin of a test&lt;br /&gt;
** Preprocess annotations can be specified at between tests&lt;br /&gt;
* The '''@test''' annotation&lt;br /&gt;
** All command below a this annotation are handled as tests by the framework&lt;br /&gt;
** The test annotation must be integrated in the comment block which describes the test&lt;br /&gt;
** Data validation is performed by the framework for tests if reference data is present&lt;br /&gt;
** The test annotation is valid till a '''@preprocess''' annotation specifies the begin of a preprocess block for further test runs&lt;br /&gt;
** The data type annotations&lt;br /&gt;
*** Data type annotations should be specified in the same comment block as the '''@test''' annotation&lt;br /&gt;
*** Data type annotations specify the grass data types which should be validated with reference data&lt;br /&gt;
*** The following data type annotations should be specified&lt;br /&gt;
**** '''@file''' the framework should compare the reference data with files&lt;br /&gt;
**** '''@raster''' the framework should compare the reference data with raster maps using r.out.ascii for export&lt;br /&gt;
**** '''@vector''' the framework should compare the reference data with vector maps using v.out.ascii for export&lt;br /&gt;
**** '''@raster3d''' the framework should compare the reference data with raster3d maps using r3.out.ascii for export&lt;br /&gt;
**** '''@color''' the framework should compare the reference data with color rules using r.color.out for export&lt;br /&gt;
**** '''@color3d''' the framework should compare the reference data with 3d color rules using r3.color.out for export&lt;br /&gt;
**** '''@table''' the framework should compare the reference data with SQL tables  using db.select for export&lt;br /&gt;
**** ... please add more&lt;br /&gt;
** The '''@precision=[positive integer]''' annotation&lt;br /&gt;
*** Should be located in a test comment block&lt;br /&gt;
*** Specifies the precision to use to export grass data for validation with reference files&lt;br /&gt;
*** In case the precision is not provided the default behavior of the export module is used&lt;br /&gt;
&lt;br /&gt;
Reference data for validation must be located in the module/library directory. The reference data names must be identical with the generated data (files, maps, ...) except that reference data always has a '''.ref''' suffix.  &lt;br /&gt;
&lt;br /&gt;
Tests are in each module's and in each library's folder. To test library functions special modules must be implemented. Library test modules test the library functions directly and should be written in C. Have a look at the test directories in the g3d, gpde and gmath libraries of grass7.&lt;br /&gt;
&lt;br /&gt;
Framework should be able to generate and compare grass data types: raster, vector, raster3d, general, db, icon, imagery, d.*?&lt;br /&gt;
&lt;br /&gt;
wxGUI testing should be tested separately.&lt;br /&gt;
&lt;br /&gt;
Automated tests on server generates HTML report. Test several platforms.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here some examples already available in grass7:&lt;br /&gt;
&lt;br /&gt;
=== test.v.random.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This is a simple test for v.random&lt;br /&gt;
# We create several identical pseudo random points maps :)&lt;br /&gt;
# using the seed option for rand and drand48&lt;br /&gt;
&lt;br /&gt;
# In the @preprocess step we set up a suitable region&lt;br /&gt;
g.region n=80 s=0 w=0 e=120 res=10 -p&lt;br /&gt;
&lt;br /&gt;
# First @test the rand function. Create a 3d vector map with attribute table&lt;br /&gt;
# The validation is based on @vector map with a @precision=3&lt;br /&gt;
v.random --o -z output=test_random_vect_1 n=20 zmin=0 zmax=100 seed=501&lt;br /&gt;
# Now the attribute @table should be validated. Booth maps are identical&lt;br /&gt;
v.random --o -z output=test_random_vect_2 n=20 zmin=0 zmax=100 column=height seed=501&lt;br /&gt;
&lt;br /&gt;
# Second @test the drand48 function. Create a 3d vector map with attribute table&lt;br /&gt;
# The validation is based on @vector map with a @precision=3&lt;br /&gt;
v.random --o -zd output=test_random_vect_3 n=20 zmin=0 zmax=100 seed=501&lt;br /&gt;
# Now the attribute @table should be validated. Booth maps are identical&lt;br /&gt;
v.random --o -zd output=test_random_vect_4 n=20 zmin=0 zmax=100 column=height seed=501&lt;br /&gt;
&lt;br /&gt;
# Export the generated data as references&lt;br /&gt;
# v.out.ascii --o format=point dp=3 input=test_random_vect_1 output=test_random_vect_1.ref&lt;br /&gt;
# db.select &amp;quot;select * from test_random_vect_2&amp;quot; &amp;gt; test_random_vect_2.ref&lt;br /&gt;
# v.out.ascii --o format=point dp=3 input=test_random_vect_3 output=test_random_vect_3.ref&lt;br /&gt;
# db.select &amp;quot;select * from test_random_vect_4&amp;quot; &amp;gt; test_random_vect_4.ref&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the v.random directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r--  1 soeren users  460 18. Jun 01:20 test_random_vect_1.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  257 18. Jun 01:20 test_random_vect_2.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  455 18. Jun 01:20 test_random_vect_3.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  256 18. Jun 01:20 test_random_vect_4.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test.r3.out.vtk.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This script tests the export of voxel data&lt;br /&gt;
# into the VTK format. Almost all options of&lt;br /&gt;
# r3.out.vtk are tested. Validation data for each test&lt;br /&gt;
# is located in the module source directory&lt;br /&gt;
&lt;br /&gt;
# We need to set a specific region in the&lt;br /&gt;
# @preprocess step of this test. We generate&lt;br /&gt;
# raster and voxel data with r.mapcalc and r3.mapcalc&lt;br /&gt;
# The region setting should work for UTM and LL test locations&lt;br /&gt;
g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3&lt;br /&gt;
# Now generate two elevation maps, we have 8 rows and use&lt;br /&gt;
# them for elevation computation. The rows are counted from north&lt;br /&gt;
# to south. So in the south the elevation must have a maximum.&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_bottom = row()&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_top = row() + 50&amp;quot;&lt;br /&gt;
# Now create a voxel map with value = col + row + depth. &lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume = col() + row() + depth()&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_null = if(row() == 2 || row() == 7, null(), volume)&amp;quot;&lt;br /&gt;
# Create the rgb maps&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_rgb = volume_null * 5&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# The first @test just exports the volume map as cell and point data&lt;br /&gt;
# using a low precision and replaces the default null value with 0&lt;br /&gt;
# the created @files should be compared with the reference data&lt;br /&gt;
r3.out.vtk --o input=volume_null output=test_volume_null_1_cells.vtk dp=3 null=0&lt;br /&gt;
r3.out.vtk -p --o input=volume_null output=test_volume_null_1_points.vtk dp=3 null=0&lt;br /&gt;
&lt;br /&gt;
# The second @test adds rgb and vector maps. We re-use the created volume map&lt;br /&gt;
# for vector creation. The rgb value must range fom 0 - 255. The generated @files&lt;br /&gt;
# should be compared with the reference data.&lt;br /&gt;
r3.out.vtk --o rgbmaps=volume_rgb,volume_rgb,volume_rgb vectormaps=volume_null,volume_null,volume_null input=volume_null output=test_volume_null_1_cells_rgb_vect.vtk dp=3 null=-1.0&lt;br /&gt;
r3.out.vtk -p --o rgbmaps=volume_rgb,volume_rgb,volume_rgb vectormaps=volume_null,volume_null,volume_null input=volume_null output=test_volume_null_1_points_rgb_vect.vtk dp=3 null=-1.0&lt;br /&gt;
&lt;br /&gt;
# The third @test uses raster maps to create volume data with an elevation surface&lt;br /&gt;
# The maximum elevation should be in the south. Reference @files are present for validation.&lt;br /&gt;
r3.out.vtk -s --o top=elev_top bottom=elev_bottom input=volume_null output=test_volume_null_1_cells_elevation.vtk dp=3 null=0&lt;br /&gt;
r3.out.vtk -sp --o top=elev_top bottom=elev_bottom input=volume_null output=test_volume_null_1_points_elevation.vtk dp=3 null=0&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the r3.out.vtk directory:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r-- 1 soeren users 104556 16. Jun 18:14 test_volume_null_1_cells_elevation.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   3434 16. Jun 18:14 test_volume_null_1_cells.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users  22749 16. Jun 18:14 test_volume_null_1_cells_rgb_vect.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users  13360 16. Jun 18:14 test_volume_null_1_points_elevation.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   3435 16. Jun 18:14 test_volume_null_1_points.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users  22750 16. Jun 18:14 test_volume_null_1_points_rgb_vect.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== test.r3.cross.rast.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# This script tests the r3.cross.rast module to compute&lt;br /&gt;
# cross section raster maps based on a raster3d and elevation map&lt;br /&gt;
&lt;br /&gt;
# We need to set a specific region in the&lt;br /&gt;
# @preprocess step of this test. We generate&lt;br /&gt;
# raster and voxel data with r.mapcalc and r3.mapcalc&lt;br /&gt;
# The region setting should work for UTM and LL test locations&lt;br /&gt;
g.region s=0 n=80 w=0 e=100 b=0 t=50 res=10 res3=10 -p3&lt;br /&gt;
# We create several elevation maps to create slices of the voxel map&lt;br /&gt;
# We start from bottom and raise to the top. Value equal or greater 50 &lt;br /&gt;
# should generate grass NULL values&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_0 = 0&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_1 = 5&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_2 = 15&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_3 = 25&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_4 = 35&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_5 = 45&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_NAN = 50&amp;quot;&lt;br /&gt;
r.mapcalc --o expr=&amp;quot;elev_cross = float(col()* 5)&amp;quot;&lt;br /&gt;
# Now create a voxel map with value = col + row + depth. &lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume = col() + row() + depth()&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_null = if(row() == 1 || row() == 5, null(), volume)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# We @test the creation of slices and a cross section of the voxel map. Reference data&lt;br /&gt;
# for @raster map validation is located in the r3.cross.rast source directory.&lt;br /&gt;
# Slice 0 and 1 should be identical. The last slice should consist only of grass NULL values&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_0 output=test_cross_section_slice_0&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_1 output=test_cross_section_slice_1&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_2 output=test_cross_section_slice_2&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_3 output=test_cross_section_slice_3&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_4 output=test_cross_section_slice_4&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_5 output=test_cross_section_slice_5&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_NAN output=test_cross_section_slice_NAN&lt;br /&gt;
r3.cross.rast --o input=volume_null elevation=elev_cross output=test_cross_section_result&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the r3.cross.rast directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r-- 1 soeren users   264 16. Jun 18:14 test_cross_section_result.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   264 16. Jun 18:14 test_cross_section_slice_0.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   264 16. Jun 18:14 test_cross_section_slice_1.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   269 16. Jun 18:14 test_cross_section_slice_2.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   273 16. Jun 18:14 test_cross_section_slice_3.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   276 16. Jun 18:14 test_cross_section_slice_4.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   279 16. Jun 18:14 test_cross_section_slice_5.ref&lt;br /&gt;
-rw-r--r-- 1 soeren users   222 16. Jun 18:14 test_cross_section_slice_NAN.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== test.r3.out.ascii.sh ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Tests for r3.out.ascii and r3.in.ascii&lt;br /&gt;
# This script tests the export of voxel data using r3.out.ascii&lt;br /&gt;
# as well as the import of the generated data with r3.in.ascii&lt;br /&gt;
# using different row and depth ordering options.&lt;br /&gt;
&lt;br /&gt;
# We set up a specific region in the&lt;br /&gt;
# @preprocess step of this test. We generate&lt;br /&gt;
# voxel data with r3.mapcalc. The region setting&lt;br /&gt;
# should work for UTM and LL test locations&lt;br /&gt;
g.region s=0 n=80 w=0 e=120 b=0 t=50 res=10 res3=10 -p3&lt;br /&gt;
# Now create several (float, double, null value) voxel map&lt;br /&gt;
# with value = col + row + depth.&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_float = float(col() + row() + depth())&amp;quot;&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double = double(col() + row() + depth())&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_float_null = if(row() == 1 || row() == 5, null(), volume_float)&amp;quot;&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double_null = if(row() == 1 || row() == 5, null(), volume_double)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# We export float data in the first @test using different order and precision&lt;br /&gt;
# as text @files for valdiation of correct ordering and null data handling&lt;br /&gt;
r3.out.ascii --o     input=volume_float_null output=test_float_nsbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -r  input=volume_float_null output=test_float_snbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -d  input=volume_float_null output=test_float_nstb_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -rd input=volume_float_null output=test_float_sntb_null.txt dp=0 null=*&lt;br /&gt;
# Different precision and null values than default&lt;br /&gt;
r3.out.ascii --o     input=volume_float_null output=test_float_nsbt_null_prec5.txt dp=5 null=-1000&lt;br /&gt;
r3.out.ascii --o -rd input=volume_float_null output=test_float_sntb_null_prec8.txt dp=8 null=-2000&lt;br /&gt;
# Test the no header and grass6 compatibility flags&lt;br /&gt;
r3.out.ascii --o -h input=volume_float_null output=test_float_nsbt_null_no_header.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -c input=volume_float_null output=test_float_nsbt_null_grass6_comp_1.txt dp=3 null=*&lt;br /&gt;
# Any row or depth order should be ignored in case grass6 compatibility is enabled&lt;br /&gt;
# The rsult of comp_1, _2 and _3 must be identical&lt;br /&gt;
r3.out.ascii --o -cr  input=volume_float_null output=test_float_nsbt_null_grass6_comp_2.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -crd input=volume_float_null output=test_float_nsbt_null_grass6_comp_3.txt dp=3 null=*&lt;br /&gt;
&lt;br /&gt;
# We export double data in the second @test using different order and precision&lt;br /&gt;
# as text @files for valdiation of correct ordering and null data handling. Its hte same&lt;br /&gt;
# procedure as with float data&lt;br /&gt;
r3.out.ascii --o     input=volume_double_null output=test_double_nsbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -r  input=volume_double_null output=test_double_snbt_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -d  input=volume_double_null output=test_double_nstb_null.txt dp=0 null=*&lt;br /&gt;
r3.out.ascii --o -rd input=volume_double_null output=test_double_sntb_null.txt dp=0 null=*&lt;br /&gt;
# Different precision and null values than default&lt;br /&gt;
r3.out.ascii --o     input=volume_double_null output=test_double_nsbt_null_prec5.txt dp=5 null=-1000&lt;br /&gt;
r3.out.ascii --o -rd input=volume_double_null output=test_double_sntb_null_prec8.txt dp=8 null=-2000&lt;br /&gt;
# Test the no header and grass6 compatibility flags&lt;br /&gt;
r3.out.ascii --o -h input=volume_double_null output=test_double_nsbt_null_no_header.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -c input=volume_double_null output=test_double_nsbt_null_grass6_comp_1.txt dp=3 null=*&lt;br /&gt;
# Any row or depth order should be ignored in case grass6 compatibility is enabled&lt;br /&gt;
# The result of comp_1, _2 and _3 must be identical&lt;br /&gt;
r3.out.ascii --o -cr  input=volume_double_null output=test_double_nsbt_null_grass6_comp_2.txt dp=3 null=*&lt;br /&gt;
r3.out.ascii --o -crd input=volume_double_null output=test_double_nsbt_null_grass6_comp_3.txt dp=3 null=*&lt;br /&gt;
&lt;br /&gt;
# In the third @test we import all the generated data using r3.in.ascii&lt;br /&gt;
# The created @raster maps should be identical to the map &amp;quot;volume_double_null&amp;quot;&lt;br /&gt;
# The export of the created g3d map should use as @precision=0 for data validation&lt;br /&gt;
# The same raster name is used for all the imported data and so for the validation reference file&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nsbt_null.txt nv=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_snbt_null.txt nv=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nstb_null.txt nv=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_sntb_null.txt nv=*&lt;br /&gt;
# Different precision and null values than default&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nsbt_null_prec5.txt nv=-1000&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_sntb_null_prec8.txt nv=-2000&lt;br /&gt;
# Any row or depth order should be ignored in case grass6 compatibility is enabled&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null input=test_double_nsbt_null_grass6_comp_1.txt&lt;br /&gt;
&lt;br /&gt;
# In this @preprocess step for the last test we create a large region and&lt;br /&gt;
# generate large input data to test the handling of large files&lt;br /&gt;
g.region s=0 n=800 w=0 e=1200 b=0 t=50 res=10 res3=1.5 -p3&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double_large = double(col() + row() + depth())&amp;quot;&lt;br /&gt;
# Add null value information&lt;br /&gt;
r3.mapcalc --o expr=&amp;quot;volume_double_null_large = if(row() == 1 || row() == 5, null(), volume_double_large)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# Now @test the export and import of large data without validation&lt;br /&gt;
r3.out.ascii --o input=volume_double_null_large output=test_double_nsbt_null_large.txt dp=0 null=*&lt;br /&gt;
r3.in.ascii --o output=test_double_nsbt_null_large input=test_double_nsbt_null_large.txt nv=*&lt;br /&gt;
# Just for the logs&lt;br /&gt;
r3.info test_double_nsbt_null_large&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following reference files are located in the r3.out.ascii directory:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_double_nsbt_null_grass6_comp_1.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_double_nsbt_null_grass6_comp_2.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_double_nsbt_null_grass6_comp_3.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2751 17. Jun 21:36 test_double_nsbt_null_no_header.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  4103 17. Jun 21:36 test_double_nsbt_null_prec5.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_nsbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_nstb_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_snbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  5183 17. Jun 21:36 test_double_sntb_null_prec8.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_double_sntb_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_float_nsbt_null_grass6_comp_1.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_float_nsbt_null_grass6_comp_2.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2875 17. Jun 21:36 test_float_nsbt_null_grass6_comp_3.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  2751 17. Jun 21:36 test_float_nsbt_null_no_header.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  4103 17. Jun 21:36 test_float_nsbt_null_prec5.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_nsbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_nstb_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_snbt_null.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  5183 17. Jun 21:36 test_float_sntb_null_prec8.ref&lt;br /&gt;
-rw-r--r--  1 soeren users  1463 17. Jun 21:36 test_float_sntb_null.ref&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Test framework: ==&lt;br /&gt;
&lt;br /&gt;
What the test framework should do:&lt;br /&gt;
&lt;br /&gt;
* Creation of a test mapset for each test case in a specific test location located in the grass sources&lt;br /&gt;
* Setting the environment variables to the test location and grass installation (grass environment to run modules)&lt;br /&gt;
* Parsing and interpretation and execution of test scripts&lt;br /&gt;
* Support of several test scripts in a single module directory&lt;br /&gt;
* Run of location specific test scripts (only LL or UTM test scripts)&lt;br /&gt;
* Handles module test results codes and stderr messages&lt;br /&gt;
* Validation of module output based on reference data and data type annotations in the test description&lt;br /&gt;
* Creates a HTML report for single modules and the whole test run&lt;br /&gt;
* Deletion of the generated test mapset to clean up the test location&lt;br /&gt;
&lt;br /&gt;
== Implementation ==&lt;br /&gt;
&lt;br /&gt;
* All test cases must be implemented as text files in shell style including annotations in comment blocks&lt;br /&gt;
* The test framework should be implemented in Python, parsing and analyzing and executing the test cases line by line&lt;br /&gt;
* The Make-System must be modified to start the tests by typing &amp;quot;make tests&amp;quot;&lt;br /&gt;
&lt;br /&gt;
=== Test framework Python approach === &lt;br /&gt;
&lt;br /&gt;
I suggest the following Python classes:&lt;br /&gt;
* Base test class - implements the test logic&lt;br /&gt;
** LatLong test class - for LatLong test location initialization and test run, derived from base test class&lt;br /&gt;
** UTM test class - for UTM test location initialization and test run, derived from base test class&lt;br /&gt;
* A command class - implements command line specific methods and attributes and executes a command, logging return value and stderr&lt;br /&gt;
** PreProcess class - derived from command class for preprocess execution&lt;br /&gt;
** TestCase class - derived from command class for test execution&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
The base class implementing the following methods:&lt;br /&gt;
&lt;br /&gt;
* CreateExecutionOrder&lt;br /&gt;
** Reads the entire test case into memory and parses the file line by line&lt;br /&gt;
** Creates the execution order as internal structure to store specific execution settings&lt;br /&gt;
** For each command in the test case a specific command object is created&lt;br /&gt;
** TestCase classes store the validation type and the precision ... maybe more&lt;br /&gt;
* ExecuteTest&lt;br /&gt;
** Exexute a single test command using the TestCase object &lt;br /&gt;
** checks for reference files&lt;br /&gt;
** Logs stderr and return value from TestCase object&lt;br /&gt;
** Analyses return value and stderr in case of an error&lt;br /&gt;
** Creates HTML and text logfile entry&lt;br /&gt;
* CheckForValidationFiles&lt;br /&gt;
* ExecutePreprocess&lt;br /&gt;
* CompareVectorMaps&lt;br /&gt;
* CompareRasterMaps&lt;br /&gt;
* CompareRaster3dMaps&lt;br /&gt;
* CompareColor&lt;br /&gt;
* CompareColor3d&lt;br /&gt;
* CreateHTMLTestSummary&lt;br /&gt;
* CreateTextTestSummary&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Timeline and status ==&lt;br /&gt;
&lt;br /&gt;
TBD&lt;br /&gt;
&lt;br /&gt;
== Interested people == &lt;br /&gt;
&lt;br /&gt;
* [[User:huhabla | Sören Gebbert]]&lt;br /&gt;
* [[User:AnneGhisla| Anne Ghisla]]&lt;br /&gt;
* [[User:Landa|Martin Landa]]&lt;br /&gt;
* Add your name here&lt;br /&gt;
&lt;br /&gt;
[[Category: Development]]&lt;br /&gt;
[[Category: Testing]]&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Temporal_extension_for_GRASS_GIS_7&amp;diff=13768</id>
		<title>Temporal extension for GRASS GIS 7</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Temporal_extension_for_GRASS_GIS_7&amp;diff=13768"/>
		<updated>2011-06-30T05:26:04Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* This page has been moved to New trac based wiki */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= This page has been moved to [http://trac.osgeo.org/grass/wiki/Grass7/TemporalExtension New trac based wiki] =&lt;br /&gt;
&lt;br /&gt;
= Adding the time dimension to GRASS GIS raster, vector and voxel data types for field based applications using a time stamp approach =&lt;br /&gt;
&lt;br /&gt;
== Time stamps in SQL tables ==&lt;br /&gt;
&lt;br /&gt;
Raster, vector and voxel maps in GRASS GIS will have temporal attributes by default:&lt;br /&gt;
* Creation time&lt;br /&gt;
* Modification time&lt;br /&gt;
* An absolute or relative time stamp&lt;br /&gt;
** absolute: &lt;br /&gt;
*** start date&lt;br /&gt;
*** end date&lt;br /&gt;
** relative&lt;br /&gt;
*** a relative time stamp&lt;br /&gt;
&lt;br /&gt;
To store the time stamps and to enable temporal queries a SQL DBMS, capable of temporal datatypes, will be used. As default a Sqlite3 database will be used to store map specific informations in database files. Additionally Postgresql should be supported too.&lt;br /&gt;
&lt;br /&gt;
In case of SQlite a GRASS SQL database file is created for each mapset in a location. Views are used to access the raster, vector or raster3d map entries of different mapset databases at once.&lt;br /&gt;
&lt;br /&gt;
The time stamps as well as attributes and map specific meta data of all created maps in GRASS GIS will be stored in SQL tables in the GRASS SQL databases. The entries in the SQL tables will be created or updated automatically while creation, modification or removement of maps. For each GRASS datatype (raster, raster3d and vector) four SQL tables will be added to GRASS SQL databases at mapset creation:&lt;br /&gt;
&lt;br /&gt;
* The '''base table''' has an equal layout for raster, vector and raster3d maps. This table stores:&lt;br /&gt;
** The '''id''' which is of type string. As '''id''' the raster, raster3d or vector map names should be used, because these must be unique in a mapset and can be used as primary  key&lt;br /&gt;
** The '''temporal type''' specifies if the time stamp is relative or absolute  &lt;br /&gt;
** The '''creation date''' is of type datetime&lt;br /&gt;
** The '''modification date''' is of type datetime&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* The '''absolute time table''' to store the absolute time stamps for each map. The layout is equal for raster, raster3d and vector maps. This table stores:&lt;br /&gt;
** The '''id''' as primary key&lt;br /&gt;
** The '''start time stamp''' is of type datetime&lt;br /&gt;
** The '''end time stamp'''is of type datetime&lt;br /&gt;
** The '''time zone'''is of type integer&lt;br /&gt;
&lt;br /&gt;
* The '''relative time table''' to store the relative time stamps for each map. The layout is equal for raster, raster3d and vector maps. This table stores:&lt;br /&gt;
** The '''id''' as primary key&lt;br /&gt;
** The '''relative time stamp''' is of type datetime&lt;br /&gt;
&lt;br /&gt;
A map can only have an absolute or relative time stamp. &lt;br /&gt;
&lt;br /&gt;
* The '''metadata table''' is specific for each grass data type. It stores the spatial and temporal extent as well as map specific attributes (creator, range, cell type, features, registered spacetime datasets, ...)&lt;br /&gt;
&lt;br /&gt;
In long term these kind of SQL tables may replace the text file based storage of map metadata, database links and time stamps.&lt;br /&gt;
&lt;br /&gt;
== New temporal GRASS datatypes ==&lt;br /&gt;
&lt;br /&gt;
To manage temporal raster, raster3d and vector objects, three new datatypes will be added to GRASS GIS: Spacetime raster, vector and voxel datasets. Additionally thematic spatio-temporal datasets will be added to handle thematic related spacetime datasets of different type.&lt;br /&gt;
&lt;br /&gt;
Maps can be registered and unregistered in spacetime datasets. Maps are registered by id (name). All available spatio-temporal data is availabe in SQL tables. Cross referencing must be implemented (maps storing the spacetime datasets in which they are registered and vis versa)&lt;br /&gt;
Spacetime datasets have absolute or relative time type, these types cant be mixed up but converted.&lt;br /&gt;
&lt;br /&gt;
A temporal resolution can be set for each spacetime dataset (1s - decades) defining the granularity of the datasets (like the resolution settings for raster/voxel maps).&lt;br /&gt;
&lt;br /&gt;
The new spacetime datasets are handled like raster or vector maps. They are registered in mapset specific tables with creation and modification date and absolute/relative time stamp.&lt;br /&gt;
&lt;br /&gt;
=== Raster spacetime datasets ===&lt;br /&gt;
&lt;br /&gt;
The raster spacetime datasets store raster map specific attributes and metadata:&lt;br /&gt;
* The spatial extent (e, w, n, s)&lt;br /&gt;
* The temporal extent (start and end time or duration)&lt;br /&gt;
* The data range (min and max)&lt;br /&gt;
* The raster datatype (CELL, FCELL, DCELL, MIXED)&lt;br /&gt;
&lt;br /&gt;
All these table entries are computed or updated via trigger from all registered raster maps when maps are added or removed.&lt;br /&gt;
&lt;br /&gt;
Table layout:&lt;br /&gt;
&lt;br /&gt;
The base spacetime tables are equal to the raster/vector and raster3d one.&lt;br /&gt;
&lt;br /&gt;
* '''Spacetime metadata raster table'''&lt;br /&gt;
** '''id''' the name of the spacetime raster table&lt;br /&gt;
** '''temporal type''' relative or absolute&lt;br /&gt;
** '''Raster register table name''' the name of the table storing the ids (names) of all registered raster maps&lt;br /&gt;
** '''spatial extent''' (4 columns: e, w, s,n) of all registered raster maps&lt;br /&gt;
** '''temporal exten'''t of all registered raster maps&lt;br /&gt;
** '''data range''' of all registered raster maps&lt;br /&gt;
** ...&lt;br /&gt;
&lt;br /&gt;
=== Raster3d spacetime datasets ===&lt;br /&gt;
&lt;br /&gt;
The raster3d spacetime tables are equal to the raster spacetime tablse, except that the spatial extent is computed based on east, west, south, north, top and bottom.&lt;br /&gt;
&lt;br /&gt;
=== Vector spacetime datasets ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== New temporal modules ==&lt;br /&gt;
&lt;br /&gt;
New temporal modules must be implemented for registration and un-registration and extraction of raster, voxel and vector maps in süacetime datasets:&lt;br /&gt;
* tr.register, tr.unregister, tr.extract&lt;br /&gt;
* t3.register, t3.unregister, t3.extract&lt;br /&gt;
* tv.register, tv.unregister, tv.extract&lt;br /&gt;
* Spacetime modules for resampling, interpolation, time stamp snapping and extraction must be implemented.&lt;br /&gt;
&lt;br /&gt;
== Basic Spatio-temporal algorithms ==&lt;br /&gt;
&lt;br /&gt;
Extraction is based on where SQL statements or specific time stamps. Interpolated maps are created or existing map ids will be returned.&lt;br /&gt;
The extraction tool will provide different types of extraction algorithms&lt;br /&gt;
Nearest neighbour&lt;br /&gt;
Interpolation (only raster and voxel maps) (linear, quadratic, ...) or&lt;br /&gt;
first valid time stamp.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tr(3).resample -&amp;gt; will create a new spacetime raster (voxel) datasets with a different spatio-temporal resolution, several methods will be available:&lt;br /&gt;
* averaging (mean, median, geometric mean, ...)&lt;br /&gt;
* summation, multiplication&lt;br /&gt;
* max and min functions&lt;br /&gt;
&lt;br /&gt;
== Implementation details ==&lt;br /&gt;
&lt;br /&gt;
Access to spacetime tables must be implemented as GRASS GIS library:&lt;br /&gt;
* Registration and unregistration of maps into spacetime datasets&lt;br /&gt;
* Update/creation of base table entries, so the SQL tables can be modified in low level GRASS GIS library functions (creation, deletion of maps)&lt;br /&gt;
* Selection of maps from spacetime datasets&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Temporal_extension_for_GRASS_GIS_7&amp;diff=13767</id>
		<title>Temporal extension for GRASS GIS 7</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Temporal_extension_for_GRASS_GIS_7&amp;diff=13767"/>
		<updated>2011-06-30T05:25:12Z</updated>

		<summary type="html">&lt;p&gt;⚠️Huhabla: /* Adding the time dimension to GRASS GIS raster, vector and voxel data types for field based applications using a time stamp approach */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= This page has been moved to [http://trac.osgeo.org/grass/wiki/Grass7/G3dLib New trac based wiki] = &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Adding the time dimension to GRASS GIS raster, vector and voxel data types for field based applications using a time stamp approach =&lt;br /&gt;
&lt;br /&gt;
== Time stamps in SQL tables ==&lt;br /&gt;
&lt;br /&gt;
Raster, vector and voxel maps in GRASS GIS will have temporal attributes by default:&lt;br /&gt;
* Creation time&lt;br /&gt;
* Modification time&lt;br /&gt;
* An absolute or relative time stamp&lt;br /&gt;
** absolute: &lt;br /&gt;
*** start date&lt;br /&gt;
*** end date&lt;br /&gt;
** relative&lt;br /&gt;
*** a relative time stamp&lt;br /&gt;
&lt;br /&gt;
To store the time stamps and to enable temporal queries a SQL DBMS, capable of temporal datatypes, will be used. As default a Sqlite3 database will be used to store map specific informations in database files. Additionally Postgresql should be supported too.&lt;br /&gt;
&lt;br /&gt;
In case of SQlite a GRASS SQL database file is created for each mapset in a location. Views are used to access the raster, vector or raster3d map entries of different mapset databases at once.&lt;br /&gt;
&lt;br /&gt;
The time stamps as well as attributes and map specific meta data of all created maps in GRASS GIS will be stored in SQL tables in the GRASS SQL databases. The entries in the SQL tables will be created or updated automatically while creation, modification or removement of maps. For each GRASS datatype (raster, raster3d and vector) four SQL tables will be added to GRASS SQL databases at mapset creation:&lt;br /&gt;
&lt;br /&gt;
* The '''base table''' has an equal layout for raster, vector and raster3d maps. This table stores:&lt;br /&gt;
** The '''id''' which is of type string. As '''id''' the raster, raster3d or vector map names should be used, because these must be unique in a mapset and can be used as primary  key&lt;br /&gt;
** The '''temporal type''' specifies if the time stamp is relative or absolute  &lt;br /&gt;
** The '''creation date''' is of type datetime&lt;br /&gt;
** The '''modification date''' is of type datetime&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* The '''absolute time table''' to store the absolute time stamps for each map. The layout is equal for raster, raster3d and vector maps. This table stores:&lt;br /&gt;
** The '''id''' as primary key&lt;br /&gt;
** The '''start time stamp''' is of type datetime&lt;br /&gt;
** The '''end time stamp'''is of type datetime&lt;br /&gt;
** The '''time zone'''is of type integer&lt;br /&gt;
&lt;br /&gt;
* The '''relative time table''' to store the relative time stamps for each map. The layout is equal for raster, raster3d and vector maps. This table stores:&lt;br /&gt;
** The '''id''' as primary key&lt;br /&gt;
** The '''relative time stamp''' is of type datetime&lt;br /&gt;
&lt;br /&gt;
A map can only have an absolute or relative time stamp. &lt;br /&gt;
&lt;br /&gt;
* The '''metadata table''' is specific for each grass data type. It stores the spatial and temporal extent as well as map specific attributes (creator, range, cell type, features, registered spacetime datasets, ...)&lt;br /&gt;
&lt;br /&gt;
In long term these kind of SQL tables may replace the text file based storage of map metadata, database links and time stamps.&lt;br /&gt;
&lt;br /&gt;
== New temporal GRASS datatypes ==&lt;br /&gt;
&lt;br /&gt;
To manage temporal raster, raster3d and vector objects, three new datatypes will be added to GRASS GIS: Spacetime raster, vector and voxel datasets. Additionally thematic spatio-temporal datasets will be added to handle thematic related spacetime datasets of different type.&lt;br /&gt;
&lt;br /&gt;
Maps can be registered and unregistered in spacetime datasets. Maps are registered by id (name). All available spatio-temporal data is availabe in SQL tables. Cross referencing must be implemented (maps storing the spacetime datasets in which they are registered and vis versa)&lt;br /&gt;
Spacetime datasets have absolute or relative time type, these types cant be mixed up but converted.&lt;br /&gt;
&lt;br /&gt;
A temporal resolution can be set for each spacetime dataset (1s - decades) defining the granularity of the datasets (like the resolution settings for raster/voxel maps).&lt;br /&gt;
&lt;br /&gt;
The new spacetime datasets are handled like raster or vector maps. They are registered in mapset specific tables with creation and modification date and absolute/relative time stamp.&lt;br /&gt;
&lt;br /&gt;
=== Raster spacetime datasets ===&lt;br /&gt;
&lt;br /&gt;
The raster spacetime datasets store raster map specific attributes and metadata:&lt;br /&gt;
* The spatial extent (e, w, n, s)&lt;br /&gt;
* The temporal extent (start and end time or duration)&lt;br /&gt;
* The data range (min and max)&lt;br /&gt;
* The raster datatype (CELL, FCELL, DCELL, MIXED)&lt;br /&gt;
&lt;br /&gt;
All these table entries are computed or updated via trigger from all registered raster maps when maps are added or removed.&lt;br /&gt;
&lt;br /&gt;
Table layout:&lt;br /&gt;
&lt;br /&gt;
The base spacetime tables are equal to the raster/vector and raster3d one.&lt;br /&gt;
&lt;br /&gt;
* '''Spacetime metadata raster table'''&lt;br /&gt;
** '''id''' the name of the spacetime raster table&lt;br /&gt;
** '''temporal type''' relative or absolute&lt;br /&gt;
** '''Raster register table name''' the name of the table storing the ids (names) of all registered raster maps&lt;br /&gt;
** '''spatial extent''' (4 columns: e, w, s,n) of all registered raster maps&lt;br /&gt;
** '''temporal exten'''t of all registered raster maps&lt;br /&gt;
** '''data range''' of all registered raster maps&lt;br /&gt;
** ...&lt;br /&gt;
&lt;br /&gt;
=== Raster3d spacetime datasets ===&lt;br /&gt;
&lt;br /&gt;
The raster3d spacetime tables are equal to the raster spacetime tablse, except that the spatial extent is computed based on east, west, south, north, top and bottom.&lt;br /&gt;
&lt;br /&gt;
=== Vector spacetime datasets ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== New temporal modules ==&lt;br /&gt;
&lt;br /&gt;
New temporal modules must be implemented for registration and un-registration and extraction of raster, voxel and vector maps in süacetime datasets:&lt;br /&gt;
* tr.register, tr.unregister, tr.extract&lt;br /&gt;
* t3.register, t3.unregister, t3.extract&lt;br /&gt;
* tv.register, tv.unregister, tv.extract&lt;br /&gt;
* Spacetime modules for resampling, interpolation, time stamp snapping and extraction must be implemented.&lt;br /&gt;
&lt;br /&gt;
== Basic Spatio-temporal algorithms ==&lt;br /&gt;
&lt;br /&gt;
Extraction is based on where SQL statements or specific time stamps. Interpolated maps are created or existing map ids will be returned.&lt;br /&gt;
The extraction tool will provide different types of extraction algorithms&lt;br /&gt;
Nearest neighbour&lt;br /&gt;
Interpolation (only raster and voxel maps) (linear, quadratic, ...) or&lt;br /&gt;
first valid time stamp.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
tr(3).resample -&amp;gt; will create a new spacetime raster (voxel) datasets with a different spatio-temporal resolution, several methods will be available:&lt;br /&gt;
* averaging (mean, median, geometric mean, ...)&lt;br /&gt;
* summation, multiplication&lt;br /&gt;
* max and min functions&lt;br /&gt;
&lt;br /&gt;
== Implementation details ==&lt;br /&gt;
&lt;br /&gt;
Access to spacetime tables must be implemented as GRASS GIS library:&lt;br /&gt;
* Registration and unregistration of maps into spacetime datasets&lt;br /&gt;
* Update/creation of base table entries, so the SQL tables can be modified in low level GRASS GIS library functions (creation, deletion of maps)&lt;br /&gt;
* Selection of maps from spacetime datasets&lt;/div&gt;</summary>
		<author><name>⚠️Huhabla</name></author>
	</entry>
</feed>