<?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%8FNikosA</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%8FNikosA"/>
	<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/wiki/Special:Contributions/%E2%9A%A0%EF%B8%8FNikosA"/>
	<updated>2026-05-25T18:30:05Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.0</generator>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Supercomputing&amp;diff=25267</id>
		<title>Supercomputing</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Supercomputing&amp;diff=25267"/>
		<updated>2018-05-29T13:16:42Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: Link to &amp;quot;European High-Performance Computing Joint Undertaking&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page aims to&lt;br /&gt;
&lt;br /&gt;
* '''overview''' installations of GRASS GIS in [https://en.wikipedia.org/wiki/Supercomputer supercomputing] (HPC, HTC) environments and related applications&lt;br /&gt;
* '''document''' best practices of processing big geospatial data, common mistakes and errors and how to work-around them&lt;br /&gt;
&lt;br /&gt;
= Overview of GRASS GIS in supercomputing environments =&lt;br /&gt;
&lt;br /&gt;
* [https://vs.sav.sk/?lang=en&amp;amp;section=departments&amp;amp;sub=vvt&amp;amp;sub2=services Supercomputer &amp;quot;Aurel&amp;quot;], 4096 CPU cores (Power7 architecture), features GRASS GIS 7.4&lt;br /&gt;
* GRASS GIS in JRC's JEODPP, [https://doi.org/10.1016/j.future.2017.11.007 A versatile data-intensive computing platform for information retrieval from big geospatial data]&lt;br /&gt;
* [https://projects.ncsu.edu/hpc//Software/Software.php henry2 at NCSU] (Intel Xeon based Linux cluster; GRASS GIS 7.2.0 installed around 2017)&lt;br /&gt;
* [https://wiki.ncsa.illinois.edu/pages/viewpage.action?pageId=47294247 ROGER, the CyberGIS supercomputer] at NCSA UIUC (batch compute nodes: 24x, 10 cores, 2.6 GHz, 256 GB RAM, 500 GB of local storage, cluster-wide General Parallel File System (GPFS) 4.5PB; GRASS GIS available alongside GDAL, PDAL, Geotools, and R)&lt;br /&gt;
&lt;br /&gt;
= Processing Practices =&lt;br /&gt;
&lt;br /&gt;
See page [[Parallel GRASS jobs]] for Cluster and Grid computing with parallelized code, Job scheduler, and GRASS on a cluster&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
&lt;br /&gt;
== Related wiki pages ==&lt;br /&gt;
&lt;br /&gt;
* https://grasswiki.osgeo.org/wiki/Parallel_GRASS_jobs&lt;br /&gt;
* https://grasswiki.osgeo.org/wiki/Working_with_GRASS_without_starting_it_explicitly&lt;br /&gt;
* https://grasswiki.osgeo.org/wiki/GRASS_and_Shell&lt;br /&gt;
* https://grasswiki.osgeo.org/wiki/GRASS_GIS_Performance&lt;br /&gt;
* https://grasswiki.osgeo.org/wiki/Large_raster_data_processing&lt;br /&gt;
* https://grasswiki.osgeo.org/wiki/Large_vector_data_processing&lt;br /&gt;
&lt;br /&gt;
== Presentations ==&lt;br /&gt;
&lt;br /&gt;
* https://fosdem.org/2018/schedule/event/geo_grass/&lt;br /&gt;
* https://archive.fosdem.org/2015/schedule/event/grass_7/&lt;br /&gt;
* [http://gfzpublic.gfz-potsdam.de/pubman/item/escidoc:100071:1/component/escidoc:100070/5_GISDAY-2012_loewe_thaler_State_of_the_Cluster_bib.pdf%3Bjsessionid=87D8757B6257885C6 State of GIS at the High Performance Computing Cluster (2012)]&lt;br /&gt;
&lt;br /&gt;
== Publications ==&lt;br /&gt;
* Alvioli, M., A. C. Mondini, F. Fiorucci, M. Cardinali &amp;amp; I. Marchesini (2018) Topography-driven satellite imagery analysis for landslide mapping, Geomatics, Natural Hazards and Risk, 9:1, 544-567, DOI: [https://doi.org/10.1080/19475705.2018.1458050 10.1080/19475705.2018.1458050] &lt;br /&gt;
* Delucchi, L., Neteler, M. (2011): g.cloud module for GRASS GIS, FOSS4G 2011 Denver, Slides: https://www.slideshare.net/lucadelu/grass-cloud&lt;br /&gt;
* Neteler, M. (2008): Building a cluster for GRASS GIS and other software from the OSGeo stack, https://courses.neteler.org/building-a-cluster-for-grass-gis-and-other-software-from-the-osgeo-stack/&lt;br /&gt;
&lt;br /&gt;
Upcoming in 2018:&lt;br /&gt;
* [http://www.mdpi.com/si/15134 Special issue &amp;quot;High-Performance Computing in Geoscience and Remote Sensing&amp;quot;], Sensors (ISSN 1424-8220; CODEN: SENSC9)&lt;br /&gt;
&lt;br /&gt;
== Miscellaneous ==&lt;br /&gt;
&lt;br /&gt;
* [http://europa.eu/!qk37Tr The European High-Performance Computing Joint Undertaking - EuroHPC]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Supercomputing&amp;diff=25260</id>
		<title>Supercomputing</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Supercomputing&amp;diff=25260"/>
		<updated>2018-05-23T12:28:44Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: More links collected from related thread in the grass-user mailing list&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page aims to&lt;br /&gt;
&lt;br /&gt;
* '''overview''' installations of GRASS GIS in [https://en.wikipedia.org/wiki/Supercomputer supercomputing] (HPC, HTC) environments and related applications&lt;br /&gt;
* '''document''' best practices of processing big geospatial data, common mistakes and errors and how to work-around them&lt;br /&gt;
&lt;br /&gt;
= Overview of GRASS GIS in supercomputing environments =&lt;br /&gt;
&lt;br /&gt;
* [https://vs.sav.sk/?lang=en&amp;amp;section=departments&amp;amp;sub=vvt&amp;amp;sub2=services Supercomputer &amp;quot;Aurel&amp;quot;], 4096 CPU cores (Power7 architecture), features GRASS GIS 7.4&lt;br /&gt;
* GRASS GIS in JRC's JEODPP, [https://doi.org/10.1016/j.future.2017.11.007 A versatile data-intensive computing platform for information retrieval from big geospatial data]&lt;br /&gt;
&lt;br /&gt;
= Processing Practices =&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
&lt;br /&gt;
== Related wiki pages ==&lt;br /&gt;
&lt;br /&gt;
* https://grasswiki.osgeo.org/wiki/Parallel_GRASS_jobs&lt;br /&gt;
* https://grasswiki.osgeo.org/wiki/Working_with_GRASS_without_starting_it_explicitly&lt;br /&gt;
* https://grasswiki.osgeo.org/wiki/GRASS_and_Shell&lt;br /&gt;
* https://grasswiki.osgeo.org/wiki/GRASS_GIS_Performance&lt;br /&gt;
* https://grasswiki.osgeo.org/wiki/Large_raster_data_processing&lt;br /&gt;
* https://grasswiki.osgeo.org/wiki/Large_vector_data_processing&lt;br /&gt;
&lt;br /&gt;
== Presentations ==&lt;br /&gt;
&lt;br /&gt;
* https://fosdem.org/2018/schedule/event/geo_grass/&lt;br /&gt;
* https://archive.fosdem.org/2015/schedule/event/grass_7/&lt;br /&gt;
* [http://gfzpublic.gfz-potsdam.de/pubman/item/escidoc:100071:1/component/escidoc:100070/5_GISDAY-2012_loewe_thaler_State_of_the_Cluster_bib.pdf%3Bjsessionid=87D8757B6257885C6 State of GIS at the High Performance Computing Cluster (2012)]&lt;br /&gt;
&lt;br /&gt;
== Publications ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.mdpi.com/si/15134 Special issue &amp;quot;High-Performance Computing in Geoscience and Remote Sensing&amp;quot;], Sensors (ISSN 1424-8220; CODEN: SENSC9)&lt;br /&gt;
* https://doi.org/10.1080/19475705.2018.1458050&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Supercomputing&amp;diff=25259</id>
		<title>Supercomputing</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Supercomputing&amp;diff=25259"/>
		<updated>2018-05-23T12:13:52Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: Creation of a page for GRASS GIS and supercomputing (HPC, HTC)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page aims to&lt;br /&gt;
&lt;br /&gt;
* '''overview''' installations of GRASS GIS in [https://en.wikipedia.org/wiki/Supercomputer supercomputing] (HPC, HTC) environments and related applications&lt;br /&gt;
* '''document''' best practices of processing big geospatial data, common mistakes and errors and how to work-around them&lt;br /&gt;
&lt;br /&gt;
= Overview of GRASS GIS in supercomputing environments =&lt;br /&gt;
&lt;br /&gt;
= Processing Practices =&lt;br /&gt;
&lt;br /&gt;
= See also =&lt;br /&gt;
&lt;br /&gt;
== Related wiki pages ==&lt;br /&gt;
&lt;br /&gt;
* https://grasswiki.osgeo.org/wiki/Parallel_GRASS_jobs&lt;br /&gt;
* https://grasswiki.osgeo.org/wiki/Working_with_GRASS_without_starting_it_explicitly&lt;br /&gt;
* https://grasswiki.osgeo.org/wiki/GRASS_and_Shell&lt;br /&gt;
* https://grasswiki.osgeo.org/wiki/GRASS_GIS_Performance&lt;br /&gt;
* https://grasswiki.osgeo.org/wiki/Large_raster_data_processing&lt;br /&gt;
* https://grasswiki.osgeo.org/wiki/Large_vector_data_processing&lt;br /&gt;
&lt;br /&gt;
== Presentations ==&lt;br /&gt;
&lt;br /&gt;
* https://fosdem.org/2018/schedule/event/geo_grass/&lt;br /&gt;
* https://archive.fosdem.org/2015/schedule/event/grass_7/&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Working_with_external_data_in_GRASS&amp;diff=25245</id>
		<title>Working with external data in GRASS</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Working_with_external_data_in_GRASS&amp;diff=25245"/>
		<updated>2018-05-08T09:15:28Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: Updated link to OGR's PostgreSQL / PostGIS driver page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page explains how to effectively work with external raster and vector data in GRASS 7. See also [[PostGIS]] and [[PostGIS Topology]].&lt;br /&gt;
__TOC__&lt;br /&gt;
== Raster data ==&lt;br /&gt;
&lt;br /&gt;
External raster data can be linked via {{cmd|r.external}}. List of supported formats can be determined by&lt;br /&gt;
&lt;br /&gt;
 {{cmd|r.external}} -f&lt;br /&gt;
&lt;br /&gt;
To link file-based data formats, eg. GeoTiff&lt;br /&gt;
&lt;br /&gt;
 {{cmd|r.external}} input=ncrast/urban.tif output=urban&lt;br /&gt;
&lt;br /&gt;
=== Raster data processing workflow when keeping data external ===&lt;br /&gt;
&lt;br /&gt;
External raster maps can directly be linked into GRASS with {{cmd|r.external}} which saves time and disk space. Additionally, there is no more a need to store results in the internal GRASS format - with {{cmd|r.external.out}} the resulting maps are directly written to a GDAL supported format.&lt;br /&gt;
&lt;br /&gt;
'''Preparations'''&lt;br /&gt;
&lt;br /&gt;
GRASS can be used in an automated way by just defining a set of variables. See here for [[GRASS_and_Shell#Setting_the_variables|GRASS and Shell]] settings and [[GRASS_and_Python#Creating_Python_scripts_that_call_GRASS_functionality_from_outside|GRASS and Python]].&lt;br /&gt;
&lt;br /&gt;
'''Data flow example'''&lt;br /&gt;
&lt;br /&gt;
The script content could be looking like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# register (rather than import) a GeoTIFF file in GRASS GIS:&lt;br /&gt;
r.external input=terra_lst1km20030314.LST_Day.tif output=modis_celsius&lt;br /&gt;
 &lt;br /&gt;
# define output directory for files resulting from subsequent calculations:&lt;br /&gt;
r.external.out directory=$HOME/gisoutput/ format=&amp;quot;GTiff&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# perform calculations (here: extract pixels &amp;gt; 20 deg C)&lt;br /&gt;
# store output directly as GeoTIFF file, hence add the .tif extension:&lt;br /&gt;
r.mapcalc &amp;quot;warm.tif = if(modis_celsius &amp;gt; 20.0, modis_celsius, null() )&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
# cease GDAL output connection and turn back to write standard GRASS raster files:&lt;br /&gt;
r.external.out -r&lt;br /&gt;
 &lt;br /&gt;
# use the result elsewhere&lt;br /&gt;
qgis $HOME/gisoutput/warm.tif&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Vector data ==&lt;br /&gt;
&lt;br /&gt;
See trac {{twiki|Grass7/VectorLib/OGRInterface|OGR interface}} and {{twiki|Grass7/VectorLib/PostGISEditing| PG interface}} page for development issues.&lt;br /&gt;
&lt;br /&gt;
=== Link external data ===&lt;br /&gt;
&lt;br /&gt;
External vector data can be linked via {{cmd|v.external}} using [http://gdal.org/ogr OGR library] or ''GRASS-PostGIS data driver'' (&amp;lt;tt&amp;gt;format=PostgreSQL&amp;lt;/tt&amp;gt;). List of supported formats can be determined by&lt;br /&gt;
&lt;br /&gt;
 {{cmd|v.external}} -f&lt;br /&gt;
&lt;br /&gt;
To link ''file-based data formats'', eg. [http://gdal.osgeo.org/ogr/drv_shapefile.html ESRI Shapefile] using OGR library&lt;br /&gt;
&lt;br /&gt;
 {{cmd|v.external}} input=ncshape/ layer=railroads&lt;br /&gt;
&lt;br /&gt;
Assuming that &amp;lt;tt&amp;gt;railroads.shp&amp;lt;/tt&amp;gt; is located in directory &amp;lt;tt&amp;gt;ncshape&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
To link ''database-based data formats'', eg. [http://gdal.osgeo.org/ogr/drv_pg.html PostGIS] using GRASS-PostGIS data driver&lt;br /&gt;
&lt;br /&gt;
 {{cmd|v.external}} input=PG:dbname=pgis_nc -l&lt;br /&gt;
 &lt;br /&gt;
 PostGIS database &amp;lt;pgis_nc&amp;gt; contains 55 feature table(s):&lt;br /&gt;
 ...&lt;br /&gt;
 bridges&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
 {{cmd|v.external}} input=PG:dbname=pgis_nc layer=bridges output=b&lt;br /&gt;
&lt;br /&gt;
Assuming that PostGIS layer named &amp;lt;tt&amp;gt;bridges&amp;lt;/tt&amp;gt; is located in database &amp;lt;tt&amp;gt;pgis_nc&amp;lt;/tt&amp;gt;. This layer is linked to GRASS mapset as vector map with name &amp;lt;tt&amp;gt;b&amp;lt;/tt&amp;gt;. {{cmd|v.external}} also builds pseudo-topology over simple features which enables GRASS to access linked vector data on level 2. Note that data are stored as simple features, so no full topology support can be build based on this data.&lt;br /&gt;
&lt;br /&gt;
By default PostGIS feature tables are linked using built-in '''GRASS-PostGIS data driver''' - it means that PostGIS geometry data are accessed by GRASS directly without any abstract level (like OGR library). When GRASS is built without PostgreSQL support or environmental variable &amp;lt;tt&amp;gt;GRASS_VECTOR_OGR&amp;lt;/tt&amp;gt; exists, then GRASS will access PostGIS data using [http://www.gdal.org/drv_pg.html OGR-PostgreSQL] driver.&lt;br /&gt;
&lt;br /&gt;
=== Direct access to external data ===&lt;br /&gt;
&lt;br /&gt;
External data can be accessed using OGR library via ''virtual'' mapset &amp;lt;tt&amp;gt;OGR&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
 {{cmd|v.info}} map=PG:dbname=pgis_nc@OGR layer=bridges&lt;br /&gt;
&lt;br /&gt;
Direct access using GRASS-PostGIS data driver is not currently possible.&lt;br /&gt;
&lt;br /&gt;
=== Create new OGR layers using GRASS modules ===&lt;br /&gt;
&lt;br /&gt;
==== v.extract showcase ====&lt;br /&gt;
&lt;br /&gt;
GRASS 7 also supports write access to the external data using OGR or GRASS-PostGIS data driver. Showcase bellow:&lt;br /&gt;
&lt;br /&gt;
 {{cmd|v.external}} input=PG:dbname=pgis_nc layer=bridges output=b&lt;br /&gt;
&lt;br /&gt;
 {{cmd|v.out.ascii}} input=b where=&amp;quot;cat &amp;lt; 10&amp;quot; --q&lt;br /&gt;
 &lt;br /&gt;
 375171.4992779|317756.72097616|1&lt;br /&gt;
 374247.5192779|317487.13697616|2&lt;br /&gt;
 380230.2292779|316900.97897616|3&lt;br /&gt;
 379191.4162779|316419.09697616|4&lt;br /&gt;
 388958.8222779|316332.04697616|5&lt;br /&gt;
 375875.2662779|316319.89597616|6&lt;br /&gt;
 376393.5282779|316155.96797616|7&lt;br /&gt;
 380647.5282779|316022.61797616|8&lt;br /&gt;
 376739.6982779|315970.62597616|9&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 {{cmd|v.external.out}} input=PG:dbname=pgis_nc format=PostgreSQL&lt;br /&gt;
&lt;br /&gt;
 {{cmd|v.extract}} input=b output=b_9 where=&amp;quot;cat &amp;lt; 10&amp;quot;&lt;br /&gt;
&lt;br /&gt;
 {{cmd|v.external}} input=PG:dbname=pgis_nc -l&lt;br /&gt;
 &lt;br /&gt;
 PostGIS database &amp;lt;pgis_nc&amp;gt; contains 56 feature table(s):&lt;br /&gt;
 b_9&lt;br /&gt;
 bridges&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Example of direct access to external data without creating a link (only OGR data driver)&lt;br /&gt;
&lt;br /&gt;
 {{cmd|v.out.ascii}} input=PG:dbname=pgis_nc@OGR layer=b_9&lt;br /&gt;
 &lt;br /&gt;
 375171.4992779|317756.72097616|1&lt;br /&gt;
 374247.5192779|317487.13697616|2&lt;br /&gt;
 380230.2292779|316900.97897616|3&lt;br /&gt;
 379191.4162779|316419.09697616|4&lt;br /&gt;
 388958.8222779|316332.04697616|5&lt;br /&gt;
 375875.2662779|316319.89597616|6&lt;br /&gt;
 376393.5282779|316155.96797616|7&lt;br /&gt;
 380647.5282779|316022.61797616|8&lt;br /&gt;
 376739.6982779|315970.62597616|9&lt;br /&gt;
&lt;br /&gt;
==== Create new empty OGR/PostGIS layer ====&lt;br /&gt;
&lt;br /&gt;
Check connection settings:&lt;br /&gt;
&lt;br /&gt;
(for GRASS-OGR data driver)&lt;br /&gt;
&lt;br /&gt;
 {{cmd|v.external.out}} -p&lt;br /&gt;
 &lt;br /&gt;
 dsn: /path/to/shapefiles&lt;br /&gt;
 format: ESRI Shapefile&lt;br /&gt;
&lt;br /&gt;
(for GRASS-PostGIS data driver)&lt;br /&gt;
&lt;br /&gt;
 {{cmd|v.external.out}} -p&lt;br /&gt;
 &lt;br /&gt;
 conninfo: dbname=pgis_nc&lt;br /&gt;
 format: PostGIS&lt;br /&gt;
&lt;br /&gt;
New OGR/PostGIS layer can be created using {{cmd|v.edit}}, note that you need to specify feature type for newly created OGR/PostGIS layer (point, line or boundary).&lt;br /&gt;
&lt;br /&gt;
 {{cmd|v.edit}} map=pmap tool=create type=point&lt;br /&gt;
&lt;br /&gt;
Check created OGR layer (direct access, OGR data driver only):&lt;br /&gt;
&lt;br /&gt;
 {{cmd|v.info}} -t map=PG:dbname=pgis_nc@OGR layer=pmap&lt;br /&gt;
 &lt;br /&gt;
 ...&lt;br /&gt;
 points=0&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
Check created OGR/PostGIS layer (link):&lt;br /&gt;
&lt;br /&gt;
 {{cmd|v.external}} input=PG:dbname=pgis_nc layer=pmap&lt;br /&gt;
&lt;br /&gt;
 {{cmd|v.info}} -t map=pmap&lt;br /&gt;
&lt;br /&gt;
Adding new point feature:&lt;br /&gt;
&lt;br /&gt;
 cat point.txt&lt;br /&gt;
 &lt;br /&gt;
 P  1 1&lt;br /&gt;
 375171.4992779 317756.72097616&lt;br /&gt;
 1     1&lt;br /&gt;
&lt;br /&gt;
 {{cmd|v.edit}} -n map=pmap tool=add input=point.txt&lt;br /&gt;
 {{cmd|v.info}} -t map=pmap&lt;br /&gt;
 &lt;br /&gt;
 ...&lt;br /&gt;
 points=1&lt;br /&gt;
 ...&lt;br /&gt;
&lt;br /&gt;
==== v.select speed test ====&lt;br /&gt;
&lt;br /&gt;
Testing data:&lt;br /&gt;
&lt;br /&gt;
* DBF input (attributes only)&lt;br /&gt;
&lt;br /&gt;
 {{cmd|g.mapset}} user1&lt;br /&gt;
 {{cmd|db.connect}} -p&lt;br /&gt;
 &lt;br /&gt;
 driver:dbf&lt;br /&gt;
 database:$GISDBASE/$LOCATION_NAME/$MAPSET/dbf/&lt;br /&gt;
&lt;br /&gt;
 {{cmd|g.copy}} vect=bridges,b --o&lt;br /&gt;
 {{cmd|g.copy}} vect=urbanarea,u --o&lt;br /&gt;
&lt;br /&gt;
* SQLite input (attributes only)&lt;br /&gt;
&lt;br /&gt;
 {{cmd|g.mapset}} sqlite&lt;br /&gt;
 {{cmd|db.connect}} -p&lt;br /&gt;
 &lt;br /&gt;
 driver:sqlite&lt;br /&gt;
 database:$GISDBASE/$LOCATION_NAME/$MAPSET/sqlite.db&lt;br /&gt;
&lt;br /&gt;
 {{cmd|g.copy}} vect=bridges,b --o&lt;br /&gt;
 {{cmd|g.copy}} vect=urbanarea,u --o&lt;br /&gt;
&lt;br /&gt;
* Export data to PostGIS database (from mapset 'sqlite')&lt;br /&gt;
&lt;br /&gt;
 {{cmd|v.out.ogr}} input=b input=PG:dbname=pgis_nc format=PostgreSQL olayer=bridges --o&lt;br /&gt;
 {{cmd|v.out.ogr}} input=u input=PG:dbname=pgis_nc format=PostgreSQL olayer=urbanarea --o&lt;br /&gt;
&lt;br /&gt;
* PostGIS input (geometry + attributes) - OGR data driver&lt;br /&gt;
 &lt;br /&gt;
 {{cmd|g.mapset}} pg_ogr&lt;br /&gt;
 export GRASS_VECTOR_OGR=1&lt;br /&gt;
 {{cmd|v.external}} input=PG:dbname=pgis_nc layer=bridges output=b --o&lt;br /&gt;
 {{cmd|v.external}} input=PG:dbname=pgis_nc layer=urbanarea output=u --o&lt;br /&gt;
&lt;br /&gt;
* PostGIS input (geometry + attributes) - GRASS-PostGIS data driver&lt;br /&gt;
 &lt;br /&gt;
 {{cmd|g.mapset}} pg&lt;br /&gt;
 {{cmd|v.external}} input=PG:dbname=pgis_nc layer=bridges output=b --o&lt;br /&gt;
 {{cmd|v.external}} input=PG:dbname=pgis_nc layer=urbanarea output=u --o&lt;br /&gt;
&lt;br /&gt;
Writing output directly using OGR library (mapset 'pg_ogr'):&lt;br /&gt;
&lt;br /&gt;
 {{cmd|v.external.out}} -p&lt;br /&gt;
 &lt;br /&gt;
 dsn: PG:dbname=pgis_nc&lt;br /&gt;
 format: PostgreSQL&lt;br /&gt;
&lt;br /&gt;
Writing output directly using PostGIS data driver (mapset 'pg'):&lt;br /&gt;
&lt;br /&gt;
 {{cmd|v.external.out}} -p&lt;br /&gt;
 &lt;br /&gt;
 conninfo: dbname=pgis_nc&lt;br /&gt;
 format: PostgreSQL&lt;br /&gt;
&lt;br /&gt;
* DBF input&lt;br /&gt;
&lt;br /&gt;
 time {{cmd|v.select}} ain=b@user1 atype=point bin=u@user1 btype=area out=b_u ope=overlap --o&lt;br /&gt;
 &lt;br /&gt;
 real    0m6.059s&lt;br /&gt;
 user    0m4.780s&lt;br /&gt;
 sys     0m0.588s&lt;br /&gt;
&lt;br /&gt;
* SQLite input&lt;br /&gt;
&lt;br /&gt;
 time {{cmd|v.select}} ain=b@sqlite atype=point bin=u@sqlite btype=area out=b_u ope=overlap --o&lt;br /&gt;
 &lt;br /&gt;
 real    0m2.239s&lt;br /&gt;
 user    0m1.084s&lt;br /&gt;
 sys     0m0.524s&lt;br /&gt;
&lt;br /&gt;
* PostGIS input&lt;br /&gt;
&lt;br /&gt;
 time {{cmd|v.select}} ain=b atype=point bin=u btype=area out=b_u ope=overlap --o&lt;br /&gt;
 &lt;br /&gt;
 real    0m20.609s&lt;br /&gt;
 user    0m7.920s&lt;br /&gt;
 sys     0m1.644s&lt;br /&gt;
&lt;br /&gt;
''Note:'' Main reason of worse speed is random access used by v.select which is quite costly for OGR layers.&lt;br /&gt;
&lt;br /&gt;
Time consumption for native output:&lt;br /&gt;
&lt;br /&gt;
 real    0m1.631s&lt;br /&gt;
 user    0m0.860s&lt;br /&gt;
 sys     0m0.768s&lt;br /&gt;
&lt;br /&gt;
=== Digitize OGR layer using wxGUI ===&lt;br /&gt;
&lt;br /&gt;
[[Image:wxgui-digitize-postgis.png|center|thumb|640px|Example of digitizing PostGIS layer (linked via {{cmd|v.external}}) in wxGUI]]&lt;br /&gt;
&lt;br /&gt;
{{YouTube|7XKMGTcje-Q|desc=wxGUI - create and edit new OGR layer}}&lt;br /&gt;
&lt;br /&gt;
{{YouTube|cyy-1HPQR5Y|desc=wxGUI - create and edit new PostGIS layer}}&lt;br /&gt;
&lt;br /&gt;
== Using wxGUI ==&lt;br /&gt;
&lt;br /&gt;
From ''menu''&lt;br /&gt;
&lt;br /&gt;
 File -&amp;gt; Link external formats&lt;br /&gt;
&lt;br /&gt;
[[Image:wxgui-link-menu.png|center|frame|Link external data - Layer Manager menu]]&lt;br /&gt;
&lt;br /&gt;
or from ''toolbar'' in Layer Manager.&lt;br /&gt;
&lt;br /&gt;
[[Image:wxgui-link-tooltip.png|center|frame|Link external data - Layer Manager toolbar (1)]]&lt;br /&gt;
[[Image:wxgui-link-tool.png|center|frame|Link external data - Layer Manager toolbar (2)]]&lt;br /&gt;
[[Image:wxgui-v.external.png|center|thumb|400px|wxGUI {{cmd|v.external}} dialog]]&lt;br /&gt;
[[Image:wxgui-v.external.out.png|center|thumb|400px|wxGUI {{cmd|v.external.out}} dialog]]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* [[PostGIS]]&lt;br /&gt;
* [[PostGIS Topology]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Vector]]&lt;br /&gt;
[[Category:FAQ]]&lt;br /&gt;
[[Category:GRASS 7]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Development&amp;diff=25203</id>
		<title>Development</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Development&amp;diff=25203"/>
		<updated>2018-04-10T16:52:37Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: Replaced broken link on Adding modules in QGIS&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
= GRASS License =&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;
* [[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;
* The Software Freedom Law Center's [http://www.softwarefreedom.org/resources/2008/foss-primer.html Legal Issues Primer for Open Source and Free Software Projects]&lt;br /&gt;
&lt;br /&gt;
= Resources for Developers =&lt;br /&gt;
&lt;br /&gt;
=== Communication ===&lt;br /&gt;
* You can contact GRASS folks in [[How to participate in IRC communication|IRC]]&lt;br /&gt;
* [http://lists.osgeo.org/mailman/listinfo/grass-dev Developer mailing list]&lt;br /&gt;
&lt;br /&gt;
=== Documentation ===&lt;br /&gt;
* [http://grass.osgeo.org/programming6/ GRASS 6 Programming Manual]&lt;br /&gt;
: GRASS libraries are self-documenting using Doxygen header comments.&lt;br /&gt;
:* [http://www.stack.nl/~dimitri/doxygen/manual.html Doxygen manual]&lt;br /&gt;
&lt;br /&gt;
* [http://grass.osgeo.org/programming7/ GRASS 7 Programming Manual]&lt;br /&gt;
&lt;br /&gt;
* [[GRASS Programming Howto]] (partially outdated)&lt;br /&gt;
* [[Scripting]] tips&lt;br /&gt;
* [[Updating GRASS Documentation]] How-To&lt;br /&gt;
&lt;br /&gt;
* [[GIS Concepts]] and how they are implemented in GRASS&lt;br /&gt;
* [[Large File Support]] (LFS) implementation&lt;br /&gt;
* [[Eclipse]] tips how to use the Eclipse IDE for GRASS development&lt;br /&gt;
&lt;br /&gt;
=== Debugging ===&lt;br /&gt;
&lt;br /&gt;
* [[GRASS Debugging]]&lt;br /&gt;
&lt;br /&gt;
=== Code ===&lt;br /&gt;
&lt;br /&gt;
* [[Tracking]] bugs, patches and feature requests&lt;br /&gt;
* [[GRASS AddOns]] - User code contributions (custom scripts, modules, icons, etc)&lt;br /&gt;
* [[Compile and Install]] hints&lt;br /&gt;
* Lines of source code:&lt;br /&gt;
** [https://lists.osgeo.org/pipermail/grass-dev/2004-August/015245.html GRASS SLOC analysis 2004]&lt;br /&gt;
&lt;br /&gt;
==== Code submission procedure ====&lt;br /&gt;
&lt;br /&gt;
* Creating [[Patches]]&lt;br /&gt;
* [http://trac.osgeo.org/grass/newticket Submit patches to the trac system]&lt;br /&gt;
* [http://trac.osgeo.org/grass/wiki/HowToContribute SVN write access]&lt;br /&gt;
&lt;br /&gt;
==== Code submission standards ====&lt;br /&gt;
&lt;br /&gt;
* [http://svn.osgeo.org/grass/grass/trunk/SUBMITTING C language coding standards]&lt;br /&gt;
* [http://svn.osgeo.org/grass/grass/trunk/SUBMITTING_SCRIPTS Shell script coding standards]&lt;br /&gt;
* [http://svn.osgeo.org/grass/grass/trunk/SUBMITTING_TCLTK Tcl/Tk script coding standards]&lt;br /&gt;
* [http://svn.osgeo.org/grass/grass/trunk/SUBMITTING_PYTHON Python script coding standards]&lt;br /&gt;
* [http://svn.osgeo.org/grass/grass/trunk/SUBMITTING_DOCS Documentation coding standards] (manual pages)&lt;br /&gt;
&lt;br /&gt;
===== Explanation of C indentation rules =====&lt;br /&gt;
(''see [http://svn.osgeo.org/grass/grass/trunk/SUBMITTING C language coding standards]'')&lt;br /&gt;
&lt;br /&gt;
:{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
| -bap||Force blank lines after procedure bodies.&lt;br /&gt;
|-&lt;br /&gt;
| -bbb||Force blank lines before block comments.&lt;br /&gt;
|-&lt;br /&gt;
| -bli1||Indent braces 1 space.&lt;br /&gt;
|-&lt;br /&gt;
| -bls||Put braces on the line after struct declaration lines.&lt;br /&gt;
|-&lt;br /&gt;
| -br||Put braces on line with if, etc.&lt;br /&gt;
|-&lt;br /&gt;
| -cbi0||Indent braces after a case label 0 spaces.&lt;br /&gt;
|-&lt;br /&gt;
| -ci4||Continuation indent of 4 spaces.&lt;br /&gt;
|-&lt;br /&gt;
| -cli0||Case label indent of 0 spaces.&lt;br /&gt;
|-&lt;br /&gt;
| -d0||Set indentation of comments not to the right of code to 0 spaces.&lt;br /&gt;
|-&lt;br /&gt;
| -di0||Put variables in column 0.&lt;br /&gt;
|-&lt;br /&gt;
| -fc1||Format comments in the first column.&lt;br /&gt;
|-&lt;br /&gt;
| -hnl||Prefer to break long lines at the position of newlines in the input.&lt;br /&gt;
|-&lt;br /&gt;
| -i4||Set indentation level to 4 spaces.&lt;br /&gt;
|-&lt;br /&gt;
| -ip4||Indent parameter types in old-style function definitions by 4 spaces.&lt;br /&gt;
|-&lt;br /&gt;
| -l80||Set maximum line length for non-comment lines to 80.&lt;br /&gt;
|-&lt;br /&gt;
| -lc80||Set maximum line length for comment formatting to 80.&lt;br /&gt;
|-&lt;br /&gt;
| -lp||Line up continued lines at parentheses.&lt;br /&gt;
|-&lt;br /&gt;
| -nbad||Do not force blank lines after declarations.&lt;br /&gt;
|-&lt;br /&gt;
| -nbbo||Do not prefer to break long lines before boolean operators.&lt;br /&gt;
|-&lt;br /&gt;
| -nbc||Do not force newlines after commas in declarations.&lt;br /&gt;
|-&lt;br /&gt;
| -ncdb||Do not put comment delimiters on blank lines.&lt;br /&gt;
|-&lt;br /&gt;
| -nce||Do not cuddle } and else.&lt;br /&gt;
|-&lt;br /&gt;
| -ncs||Do not put a space after cast operators.&lt;br /&gt;
|-&lt;br /&gt;
| -nfca||Do not format any comments.&lt;br /&gt;
|-&lt;br /&gt;
| -npcs||Do not put space after the function in function calls.&lt;br /&gt;
|-&lt;br /&gt;
| -nprs||Do not put a space after every '(' and before every ')'.&lt;br /&gt;
|-&lt;br /&gt;
| -npsl||Put the type of a procedure on the same line as its name.&lt;br /&gt;
|-&lt;br /&gt;
| -nsob||Do not swallow optional blank lines.&lt;br /&gt;
|-&lt;br /&gt;
| -pi4||Specify the extra indentation per open parentheses '(' when a statement is broken.&lt;br /&gt;
|-&lt;br /&gt;
| -sbi0||Indent braces of a struct, union or enum 0 spaces.&lt;br /&gt;
|-&lt;br /&gt;
| -sc||Put the `*' character at the left of comments.&lt;br /&gt;
|-&lt;br /&gt;
| -ss||On one-line for and while statments, force a blank before the semicolon.&lt;br /&gt;
|-&lt;br /&gt;
| -ts8||Set tab size to 8 spaces.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== GRASS Makefile writing =====&lt;br /&gt;
&lt;br /&gt;
PGM must be set before including Module.make.&lt;br /&gt;
&lt;br /&gt;
In general, the point at which variables get defined doesn't matter if they are only used in commands, but it matters if they are used in the dependency line. Essentially, dependency lines get expanded at the point they are read, while commands are expanded at the point they are executed.&lt;br /&gt;
&lt;br /&gt;
The list of variables where the order is significant is:&lt;br /&gt;
&lt;br /&gt;
        PGM&lt;br /&gt;
        LIB_NAME&lt;br /&gt;
        SUBDIRS&lt;br /&gt;
        CMD_OBJS&lt;br /&gt;
        LIB_OBJS&lt;br /&gt;
        LOCAL_HEADERS&lt;br /&gt;
        EXTRA_HEADERS&lt;br /&gt;
        DEPENDENCIES&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;documentation&amp;quot; for writing Makefiles boils down to: try to find&lt;br /&gt;
something similar in the main GRASS tree and use its Makefile as a&lt;br /&gt;
reference; if there isn't one, or if that doesn't work, ask on the&lt;br /&gt;
developers' list.&lt;br /&gt;
&lt;br /&gt;
Writing documentation for this will result in either wasted effort&lt;br /&gt;
(from describing situations which never actually happen) or inadequate&lt;br /&gt;
documentation (from failing to describe situations which actually&lt;br /&gt;
happen) or (most likely) both.&lt;br /&gt;
&lt;br /&gt;
A couple of points about wx.metadata specifically:&lt;br /&gt;
&lt;br /&gt;
1. Using &amp;quot;parsubdirs&amp;quot; won't work as, because mdlib (presumably) needs&lt;br /&gt;
to be built before any of the modules.&lt;br /&gt;
&lt;br /&gt;
2. Files should not be installed using &amp;quot;cp&amp;quot;; use $(INSTALL) for&lt;br /&gt;
anything which should be installed with execute permission or&lt;br /&gt;
$(INSTALL_DATA) for anything without it.&lt;br /&gt;
&lt;br /&gt;
3. Directories shouldn't be copied with &amp;quot;cp -r&amp;quot;. Rather, the&lt;br /&gt;
individual destination files should be listed as pre-requisites, so&lt;br /&gt;
that &amp;quot;building&amp;quot; the target &amp;quot;builds&amp;quot; the destination files (typically&lt;br /&gt;
via pattern rules).&lt;br /&gt;
&lt;br /&gt;
wx.metadata/Makefile should probably include &amp;quot;templates&amp;quot; and &amp;quot;config&amp;quot;&lt;br /&gt;
in $(SUBDIRS). These would have their own Makefiles; e.g. for&lt;br /&gt;
templates/Makefile, something like:&lt;br /&gt;
&lt;br /&gt;
        include $(MODULE_TOPDIR)/include/Make/Other.make&lt;br /&gt;
  &lt;br /&gt;
        DSTDIR = $(ETC)/mdlib/templates&lt;br /&gt;
  &lt;br /&gt;
        SRCFILES := $(wildcard *.xml)&lt;br /&gt;
        DSTFILES := $(patsubst %.xml,$(DSTDIR)/%.xml,$(SRCFILES))&lt;br /&gt;
  &lt;br /&gt;
        default: $(DSTFILES)&lt;br /&gt;
  &lt;br /&gt;
        $(DSTDIR)/%.xml: %.xml:&lt;br /&gt;
                $(INSTALL_DATA) $&amp;lt; $@&lt;br /&gt;
&lt;br /&gt;
This should allow wx.metadata/Makefile to be a simple &amp;quot;directory&amp;quot;&lt;br /&gt;
Makefile (i.e. set SUBDIRS, include Dir.make, &amp;quot;default: subdirs&amp;quot;).&lt;br /&gt;
&lt;br /&gt;
==== SVN/CVS ====&lt;br /&gt;
* New [http://trac.osgeo.org/grass/wiki/DownloadSource SVN instructions]&lt;br /&gt;
* Live GRASS [http://trac.osgeo.org/grass/browser/grass/trunk TracBrowser] and [http://josef.fsv.cvut.cz/cgi-bin/viewcvs.cgi/grass/trunk/?root=grass-osgeo ViewCVS] browseable web interface to the source code repository&lt;br /&gt;
* Hints for [[Working with SVN]]&lt;br /&gt;
* [http://lists.osgeo.org/pipermail/grass-commit/ SVN commit mailing list archive]&lt;br /&gt;
&lt;br /&gt;
* [[Migration from CVS to SVN]] notes&lt;br /&gt;
&lt;br /&gt;
==== GIT ====&lt;br /&gt;
&lt;br /&gt;
* Some [http://grass.itc.it/pipermail/grass-dev/2007-October/033478.html experiments] with GRASS managed in GIT repository&lt;br /&gt;
&lt;br /&gt;
==== QA ====&lt;br /&gt;
&lt;br /&gt;
* Official document about Quality Control measures: http://grass.osgeo.org/development/code-submission/&lt;br /&gt;
* Automated [http://fatra.cnr.ncsu.edu/grassgistests/ GRASS GIS testing suite]&lt;br /&gt;
* SVN-commit reports into [irc://irc.freenode.net/grass IRC '#grass' channel] via [http://cia.vc/stats/project/GRASS CIA - The open source informant]&lt;br /&gt;
** [http://cia.vc/stats/project/GRASS CIA commit bot] for realtime monitoring along with [http://lists.osgeo.org/mailman/listinfo/grass-commit grass-commit] mailing list (showing the diff's)&lt;br /&gt;
* [https://scan.coverity.com/projects/1038 Coverity Scan]&lt;br /&gt;
* Historical QA:&lt;br /&gt;
** [http://lists.osgeo.org/mailman/listinfo/grass-qa/ Code Quality Control System] Mailing list&lt;br /&gt;
** [[Testing GRASS software]] - a test protocol based on the Spearfish sample data set&lt;br /&gt;
** External [http://www-pool.math.tu-berlin.de/~soeren/grass/GRASS_TestSuite/html_grass-6.2/ GRASS test suite] (TU Berlin)&lt;br /&gt;
*** [http://www-pool.math.tu-berlin.de/~soeren/grass/GRASS_TestSuite/ GRASS Test Suite] a small test suite for GRASS, the current html output is available [http://www-pool.math.tu-berlin.de/~soeren/grass/GRASS_TestSuite/html/ here] and with memory check [http://www-pool.math.tu-berlin.de/~soeren/grass/GRASS_TestSuite/html_memcheck/ here]&lt;br /&gt;
** External [http://web.soccerlab.polymtl.ca/project-manager/grass-website/index.html GRASS Quality Assessment and monitoring system] (École Polytechnique de Montréal and FEM-CRI (since 2008; from 2005-2007 ITC-irst was the partner))&lt;br /&gt;
&lt;br /&gt;
==== Code Search and Metrics ====&lt;br /&gt;
&lt;br /&gt;
* [http://www.google.com/codesearch?q=package%3Agrass Google Code Search]&lt;br /&gt;
&lt;br /&gt;
* [http://www.ohloh.net/projects/3666 Ohloh Metrics]&lt;br /&gt;
&lt;br /&gt;
* [http://koders.com Koders Code Search]&lt;br /&gt;
&lt;br /&gt;
= Ongoing and Plans =&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
* Reports:&lt;br /&gt;
** [[GRASS Project Update 2007Q1]]&lt;br /&gt;
* [[Release Roadmap]] (old [http://grass.ibiblio.org/devel/roadmap.php Development Roadmap] which needs freshening) - please help with testing release candidates&lt;br /&gt;
* [[GRASS Module Porting List]] (check here if you don't find a certain command in GRASS 6)&lt;br /&gt;
* [[GRASS ToDo List]] (overview of GRASS related community projects, see also [[Release Roadmap]])&lt;br /&gt;
* [http://svn.osgeo.org/grass/grass/trunk/doc/vector/TODO GRASS 6 Vector TODO]&lt;br /&gt;
* [[Vector network analysis ideas]] (new ideas)&lt;br /&gt;
* [http://trac.osgeo.org/grass/wiki/Grass7/NewFeatures List of new features in GRASS 7 (and renamed options)]&lt;br /&gt;
&lt;br /&gt;
=== Works in Progress ===&lt;br /&gt;
&lt;br /&gt;
* Next generation [[GRASS GUI]] development&lt;br /&gt;
&lt;br /&gt;
* [[WinGRASS_Current_Status|Native Windows development]]&lt;br /&gt;
&lt;br /&gt;
* Message [[Development_Specs#Message_standardization|standardization]] and [[GRASS_messages_translation|translation]]&lt;br /&gt;
&lt;br /&gt;
* [[Cairo_driver|Cairo display driver]]&lt;br /&gt;
&lt;br /&gt;
=== Sandbox (ideas section) ===&lt;br /&gt;
&lt;br /&gt;
* [[GRASS 7 ideas collection]]&lt;br /&gt;
* [[Image processing]]&lt;br /&gt;
* [http://wgbis.ces.iisc.ernet.in/grdss/index.php GRDSS (Geographic Resources Decision Support System)]&lt;br /&gt;
* Ideas on a [[replacement raster format]] specification&lt;br /&gt;
* add support (at least storage!) of vertical datum and units&lt;br /&gt;
* Discussion on [[Development Specs]] for standardized messages&lt;br /&gt;
* Discussion on add-on manager repository setup: [[Development GEM|GEM repository]]&lt;br /&gt;
* Discussion of support for [[time series in GRASS]], e.g. for linking to data and models&lt;br /&gt;
* [[GRASS Metadata Management|Metadata Management]] ideas&lt;br /&gt;
* [[GRASS SoC Ideas|GRASS Summer of Code]] ideas&lt;br /&gt;
&lt;br /&gt;
= Linking GRASS to external languages =&lt;br /&gt;
* [http://mpa.itc.it/markus/grass63progman/swig/ GRASS-SWIG interface]: generic interface to various languages&lt;br /&gt;
* [[GRASS and PHP]]&lt;br /&gt;
* [[GRASS and Python]]&lt;br /&gt;
* [[GRASS and Shell]]: Starting and running GRASS from a script&lt;br /&gt;
* [[GRASS and ABM]]&lt;br /&gt;
* [http://www.jgrass.org JGRASS]&lt;br /&gt;
&lt;br /&gt;
= GRASS and QGIS =&lt;br /&gt;
&lt;br /&gt;
* [http://wiki.qgis.org/qgiswiki/BuildingWindowsBinaryOnLinux Building QGIS/GRASS Windows Binary On Linux] (using MinGW)&lt;br /&gt;
&lt;br /&gt;
* [https://qgis.org/en/site/getinvolved/development/addinggrasstools.html Adding GRASS Tools]&lt;br /&gt;
&lt;br /&gt;
* [[QGIS GRASS Cookbook]] - Recipes for common tasks&lt;br /&gt;
&lt;br /&gt;
* [[GRASS-QGIS relevant module list]]&lt;br /&gt;
&lt;br /&gt;
= Commercial development for GRASS =&lt;br /&gt;
&lt;br /&gt;
This is an unsorted (and most probably incomplete) list of paid development for GRASS GIS&lt;br /&gt;
* Comune di Trento (Italy): better vector editing, printing&lt;br /&gt;
* [http://mpa.itc.it/ ITC-irst]:&lt;br /&gt;
** WILMA - [http://wilmaproject.unitn.it/ Trento Wireless Projekt] -&amp;gt; babyGRASS  &lt;br /&gt;
** MITRIS [http://mpa.itc.it/index.php?option=com_content&amp;amp;task=view&amp;amp;id=104&amp;amp;Itemid=127 traffic-project]&lt;br /&gt;
** GRASS 6 vector engine, vector network analysis  &lt;br /&gt;
* [http://www.faunalia.it/index_en.php Faunalia, Italy]:&lt;br /&gt;
** r.li suite&lt;br /&gt;
** v.in.gpsbabel&lt;br /&gt;
** OGR GRASS vector driver&lt;br /&gt;
** MySQL spatial GRASS connector&lt;br /&gt;
&lt;br /&gt;
* [http://www.tekmap.ns.ca/ Tekmap Consulting, Canada]: NVIZ and many more&lt;br /&gt;
* [http://navicon.dk/web/normal.php?pageid=92 NAVICON CSE, Denmark: GRASS/Qt]&lt;br /&gt;
* [http://www.acsys.it/riade/upload/testo_r/home_link/RIADE_ACS_GRASS_article.pdf Advanced Computer Systems (ACS), Italy]: NVIZ 3D Histograms, Fly-through&lt;br /&gt;
* [http://www.orkney.co.jp/english/software/index.html Orkney Inc., Japan]: i18N Infrastructure in GRASS 5.0&lt;br /&gt;
* [http://www.geomodel.sk/index-en.htm Geomodel, Slovakia]: &lt;br /&gt;
** r.sun&lt;br /&gt;
** r.flow etc.&lt;br /&gt;
* Lockheed Martin LMCO, USA:&lt;br /&gt;
** d.rast.proj&lt;br /&gt;
** d.mon.proj (GRASS 5 contrib)&lt;br /&gt;
&lt;br /&gt;
= Related projects =&lt;br /&gt;
&lt;br /&gt;
== With connections to GRASS ==&lt;br /&gt;
* [http://www.jgrass.org JGrass] - Java based frontend for GRASS incuding extended hydrological modelling tools&lt;br /&gt;
* [http://www.kergis.com/en/index.html KerGIS] - BSD-like licensed fork of GRASS 4.1.5&lt;br /&gt;
* [http://gal-framework.no-ip.org/ GAL] - Project to reimplement a GRASS-like GIS using a modern object oriented approach&lt;br /&gt;
&lt;br /&gt;
* [http://pywps.wald.intevation.org pyWPS] - Python Web Processing Service (GRASS on the web)&lt;br /&gt;
* [http://proj.maptools.org PROJ.4] - Cartographic Projections Library&lt;br /&gt;
* [http://www.gdal.org GDAL] - Geospatial Data Abstraction Library&lt;br /&gt;
* [http://www.qgis.org QGIS] - Quantum GIS&lt;br /&gt;
&lt;br /&gt;
* [http://www.osgeo.org OSGeo]- The Open Source Geospatial Foundation&lt;br /&gt;
* [http://freegis.org FreeGIS.org] - Interactive information base for the GIS Free Software world&lt;br /&gt;
* [http://pkg-grass.alioth.debian.org DebianGIS] - Project coordinating geospatial software for Debian GNU/Linux&lt;br /&gt;
&lt;br /&gt;
* [http://grass.itc.it/statsgrass/grass_geostats.html R statistics] - High powered geostatistical analysis engine&lt;br /&gt;
* [http://www.gstat.org/grass.html gstat] - Multivariable geostatistical modelling, prediction and simulation&lt;br /&gt;
&lt;br /&gt;
== Not connected to GRASS ==&lt;br /&gt;
&lt;br /&gt;
* [http://gmt.soest.hawaii.edu GMT] - The Generic Mapping Tools advanced cartography package&lt;br /&gt;
* [http://www.saga-gis.uni-goettingen.de SAGA GIS] - A modern programming method GIS for the geosciences&lt;br /&gt;
* [http://udig.refractions.net uDig] - User-friendly Desktop Internet GIS (uDig) web portal&lt;br /&gt;
* [http://www.gvsig.gva.es/index.php?id=que-es-gvsig&amp;amp;L=2 gvSIG] - Similar in nature to QGIS, but written in Java&lt;br /&gt;
* [http://jump-project.org JUMP] - For viewing and manipulating spatial data-sets, using Java&lt;br /&gt;
* [http://starspan.casil.ucdavis.edu Starspan] - Mixed raster and vector spatial analysis&lt;br /&gt;
* [http://openev.sourceforge.net/ OpenEV] - Raster and vector GIS with good support for image analysis&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_Community_Sprint_Bonn_2018&amp;diff=25183</id>
		<title>Talk:GRASS Community Sprint Bonn 2018</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_Community_Sprint_Bonn_2018&amp;diff=25183"/>
		<updated>2018-03-25T12:27:24Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: Move last entry under Nikos Alexandris&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Participants and Reports =&lt;br /&gt;
&lt;br /&gt;
== Martin Landa ==&lt;br /&gt;
&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Mar+25%2C+2018&amp;amp;daysback=7&amp;amp;authors=martinl&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update SVN log] overview&lt;br /&gt;
* Show computation region extent settings, see {{trac|3519}}&lt;br /&gt;
* wxGUI/datacatalog: zoom to first added map (sync with lmgr behaviour)&lt;br /&gt;
* wxGUI/preferences: add new option for random colors (vector) &lt;br /&gt;
* Read EPSG codes with PROJ v.5 fails, see {{trac|3514}} &lt;br /&gt;
* wxGUI/datacatalog: display layer on double click &lt;br /&gt;
* disable to_text_string() in grass.py, see {{trac|3508}} &lt;br /&gt;
* rename r.sentinel -&amp;gt; i.sentinel (work in progress), see {{trac|3522}} &lt;br /&gt;
* v.random restrict wrong categories assigned, see {{trac|3524}} &lt;br /&gt;
* Currently ​G7:v.random with restrict parameter transfers categories {{trac|3528}}&lt;br /&gt;
* wxGUI: set up default map display properties when new display is open&lt;br /&gt;
* libgis: improve parser UI description error reporting &lt;br /&gt;
* v.to.rast: add support for centroids&lt;br /&gt;
* wxGUI/dbmgr: better handling of text values in SQLBuilder &lt;br /&gt;
* wxGUI/dbmgr: get sample/all values tuning &lt;br /&gt;
* wxGUI: implement widget for SQL WHERE params &lt;br /&gt;
[[File:Wxgui-sqlwhere-select.png|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Moritz Lennert ==&lt;br /&gt;
&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Mar+25%2C+2018&amp;amp;daysback=7&amp;amp;authors=mlennert&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update SVN log] overview&lt;br /&gt;
*  Committed fix for r.texture to avoid overwrite of existing output maps&lt;br /&gt;
*  Committed fix for i.segment.uspo to avoid zero division error&lt;br /&gt;
*  Worked on and discussed new startup mockup, created [https://trac.osgeo.org/grass/wiki/wxGUIDevelopment/New_Startup wiki page] for brainstorming&lt;br /&gt;
*  Use of '_' in i.zc module parameter in i.cutlines to enable parallelization of i.zc. Thanks to Pietro for making this possible in pygrass.&lt;br /&gt;
*  Some testing for [https://trac.osgeo.org/grass/ticket/3361 #3361] on slowness of v.select with GEOS. Added explanation to man page to clarify that GRASS' &amp;quot;overlap' = GEOS 'intersects'.&lt;br /&gt;
*  Testing Ondrej' artificial neural networks modules + discussions on further improvements&lt;br /&gt;
*  Discussion of new website design&lt;br /&gt;
*  Discussion on move to github.&lt;br /&gt;
&lt;br /&gt;
== Markus Metz ==&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Mar+25%2C+2018&amp;amp;daysback=7&amp;amp;authors=mmetz&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update%20SVN%20log SVN log] overview&lt;br /&gt;
* Support of new PROJ 5 API&lt;br /&gt;
&lt;br /&gt;
== Markus Neteler ==&lt;br /&gt;
&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Mar+25%2C+2018&amp;amp;daysback=7&amp;amp;authors=neteler&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update%20SVN%20log SVN log] overview&lt;br /&gt;
* set up [https://docs.google.com/spreadsheets/d/1BgFMiYlLosFjsVUlUCWwssoxiQB_G7gpkVFgG29gZBM/edit?usp=sharing Budget] for this community sprint&lt;br /&gt;
* testing of {{AddonCmd|i.nightlights.intercalibration}} with DMSP-OLS data, parser fix (contributed by Anika Bettge) and HTML fixes&lt;br /&gt;
* Web: activation of roles in http://staging.grass.osgeo.org/&lt;br /&gt;
* svn to git migration discussions&lt;br /&gt;
** Following https://trac.osgeo.org/gdal/wiki/rfc71_github_migration with interest&lt;br /&gt;
* Ticket {{trac|3527}} (i.atcorr: discrepancy in sensor band numbering in the manual)&lt;br /&gt;
* added &amp;quot;How to add keywords in code&amp;quot; submitting rules for [https://trac.osgeo.org/grass/wiki/Submitting/Python#Addingdescriptionandkeywords Python] and [https://trac.osgeo.org/grass/wiki/Submitting/C#Addingdescriptionandkeywords C]&lt;br /&gt;
* work together with Vero on https://grasswiki.osgeo.org/wiki/GRASS-Wiki/CMS_migration_plan_2018&lt;br /&gt;
* i.atcorr: sync to trunk (updated spectral curves for various satellites; fix band order for Worldview2; addition of Sentinel-2B, improvement of numerical stability {{rev|72557}}&lt;br /&gt;
&lt;br /&gt;
== Veronica Andreo ==&lt;br /&gt;
&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Mar+25%2C+2018&amp;amp;daysback=7&amp;amp;authors=veroandreo&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update%20SVN%20log SVN log] overview&lt;br /&gt;
* tested {{cmd|r.texture}}, see {{trac|3492}}&lt;br /&gt;
* committed {{cmd|i.atcorr}} manual example and figure contributed by Zofie Cimburova to perform atmospheric correction on Sentinel-2 bands&lt;br /&gt;
* performed general clean-up on i.atcorr manual page&lt;br /&gt;
* completed [https://grasswiki.osgeo.org/wiki/SENTINEL Sentinel wiki] (kinda). Editions, corrections and more examples are welcome.&lt;br /&gt;
* discussion about new flag and flag behavior for {{cmd|t.remove}} with Luca {{trac|3362}}&lt;br /&gt;
* revised and tested old t.* related tickets; closed some old ones as wontfix or worksforme accordingly.&lt;br /&gt;
* created patch for {{trac|3264}} with Luca's help&lt;br /&gt;
* tested -h flag in {{cmd|t.info}}, see {{trac|3322}}&lt;br /&gt;
* added example to {{cmd|t.register}} (contributed by Ondrej Pesek) + correction of typos and minor text edition&lt;br /&gt;
* tweeted and RT from GRASS account and posted in FB GRASS GIS group&lt;br /&gt;
* completed revision and clean-up of the [https://grasswiki.osgeo.org/wiki/Temporal_data_processing Temporal data processing] wiki&lt;br /&gt;
* opened tickets for {{cmd|g.gui.tplot}} (after discussions with Nikos and Luca)&lt;br /&gt;
* tested {{trac|3223}} and {{trac|3302}}&lt;br /&gt;
* prepared small extra [https://grass.osgeo.org/sampledata/north_carolina/nc_spm_mapset_modis2015_2016_lst.zip mapset] with MODIS LST time series data (2015-2016) for NC location&lt;br /&gt;
* created draft roadmap of priorities for the migration of the web site (work together with MarkusN): see [https://grasswiki.osgeo.org/wiki/GRASS-Wiki/CMS_migration_plan_2018 wiki]&lt;br /&gt;
* created draft [https://trac.osgeo.org/grass/wiki/Grass7/NewFeatures76 GRASS 7.6. New Features] page to start adding the cool stuff that will be shipped with 76&lt;br /&gt;
* added examples for the new features implemented in {{cmd|g.gui.tplot}}&lt;br /&gt;
* edited the GRASS GIS page at: https://www.osgeo.org/projects/grass-gis/&lt;br /&gt;
* Spanish translations in transifex&lt;br /&gt;
&lt;br /&gt;
== Ondřej Pešek ==&lt;br /&gt;
&lt;br /&gt;
* Working on artificial neural network modules (see [https://github.com/ctu-geoforall-lab-projects/dp-pesek-2018/compare/master@%7B18/3/2018%7D...master github commits] overview)&lt;br /&gt;
* g.gui.gmodeler: Support parameterization and GUI generation in python script; export to PyWPS script (see [https://github.com/ctu-yfsg/2017-d-grass-modeler-pywps/compare/master@%7B18/03/2018%7D...master github commits] overview)&lt;br /&gt;
* Working on SOS modules (see [https://github.com/pesekon2/GRASS-GIS-SOS-tools/compare/master@%7B17/03/2018%7D...master github commits] overview)&lt;br /&gt;
&lt;br /&gt;
== Luca Delucchi ==&lt;br /&gt;
&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Mar+25%2C+2018&amp;amp;daysback=7&amp;amp;authors=lucadelu&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update%20SVN%20log SVN log] overview&lt;br /&gt;
* {{cmd|g.region}} improved grow option&lt;br /&gt;
* renamed r.modis addons to {{AddonCmd|i.modis}}&lt;br /&gt;
* working on temporal framework open tickets&lt;br /&gt;
* discussion about new flag and flag behavior for {{cmd|t.remove}} with Vero {{trac|3362}}&lt;br /&gt;
* created three new modules to work with signature files {{AddonCmd|i.signature.list}}, {{AddonCmd|i.signature.copy}}, {{AddonCmd|i.signature.remove}}&lt;br /&gt;
* worked with Markus Metz on {{cmd|i.ortho.transform}} command&lt;br /&gt;
* fixed some bug in {{cmd|g.gui.tplot}} {{rev|72485}} {{rev|72489}}, one related to {{trac|3294}}&lt;br /&gt;
* {{cmd|g.gui.tplot}} added capabilities to set labels for title, x and y axes {{rev|72523}} {{rev|72526}}&lt;br /&gt;
* {{cmd|g.gui.tplot}} added capabilities to export plotted data to CSV file {{rev|72528}} {{rev|72529}} related to {{trac|3533}}&lt;br /&gt;
* review GSoC proposals&lt;br /&gt;
&lt;br /&gt;
== Nikos Alexandris ==&lt;br /&gt;
&lt;br /&gt;
* Discussion about GRASS GIS, HPC and distributed file systems with Markus Neteler, Soeren Gebert, Markus Metz. Respective wiki pages to be updated.&lt;br /&gt;
* Tests related to https://trac.osgeo.org/grass/ticket/774 available at https://github.com/NikosAlexandris/test_color_space_conversions&lt;br /&gt;
* Support for vector input in r.clip, see https://trac.osgeo.org/grass/attachment/ticket/3538/r.clip_patch_for_vector_input&lt;br /&gt;
&lt;br /&gt;
== Stefan Blumentrath ==&lt;br /&gt;
&lt;br /&gt;
* Made his first commit to trunk {{rev|72444}} and fixed {{trac|3322}}&lt;br /&gt;
* worked on an AddOn [https://trac.osgeo.org/grass/browser/sandbox/sbl/t.rast.aggregate.update/t.rast.aggregate.update.py t.rast.aggegate.update] for updating aggregated STRDS from t.rast.aggregate (please test)&lt;br /&gt;
* wrote a patch for improving performance of v.rast.stats that allows multiple input {{trac|3523}} (testing/feedback very welcome)&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Mar+25%2C+2018&amp;amp;daysback=7&amp;amp;authors=sbl&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update%20SVN%20log SVN log] overview&lt;br /&gt;
&lt;br /&gt;
== Sören Gebbert ==&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Mar+25%2C+2018&amp;amp;daysback=7&amp;amp;authors=huhabla&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update%20SVN%20log SVN log] overview&lt;br /&gt;
* temporal algebra bugfixing&lt;br /&gt;
&lt;br /&gt;
== Radek Novotný ==&lt;br /&gt;
&lt;br /&gt;
* Implementation of new --exec funcionalities (--tmp-location,--no-clean), see {{trac|3537}}&lt;br /&gt;
* Creating [https://docs.google.com/document/d/1XlxRHvtaiebVIOvlq8G6Q5FuUkFigZ8DlQbaQ-y9keQ/edit?ts=5ab51252 GSoC poroposal]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_Community_Sprint_Bonn_2018&amp;diff=25182</id>
		<title>Talk:GRASS Community Sprint Bonn 2018</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_Community_Sprint_Bonn_2018&amp;diff=25182"/>
		<updated>2018-03-25T12:26:24Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: Added support for vector input map in r.clip&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Participants and Reports =&lt;br /&gt;
&lt;br /&gt;
== Martin Landa ==&lt;br /&gt;
&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Mar+25%2C+2018&amp;amp;daysback=7&amp;amp;authors=martinl&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update SVN log] overview&lt;br /&gt;
* Show computation region extent settings, see {{trac|3519}}&lt;br /&gt;
* wxGUI/datacatalog: zoom to first added map (sync with lmgr behaviour)&lt;br /&gt;
* wxGUI/preferences: add new option for random colors (vector) &lt;br /&gt;
* Read EPSG codes with PROJ v.5 fails, see {{trac|3514}} &lt;br /&gt;
* wxGUI/datacatalog: display layer on double click &lt;br /&gt;
* disable to_text_string() in grass.py, see {{trac|3508}} &lt;br /&gt;
* rename r.sentinel -&amp;gt; i.sentinel (work in progress), see {{trac|3522}} &lt;br /&gt;
* v.random restrict wrong categories assigned, see {{trac|3524}} &lt;br /&gt;
* Currently ​G7:v.random with restrict parameter transfers categories {{trac|3528}}&lt;br /&gt;
* wxGUI: set up default map display properties when new display is open&lt;br /&gt;
* libgis: improve parser UI description error reporting &lt;br /&gt;
* v.to.rast: add support for centroids&lt;br /&gt;
* wxGUI/dbmgr: better handling of text values in SQLBuilder &lt;br /&gt;
* wxGUI/dbmgr: get sample/all values tuning &lt;br /&gt;
* wxGUI: implement widget for SQL WHERE params &lt;br /&gt;
[[File:Wxgui-sqlwhere-select.png|500px|thumb|center]]&lt;br /&gt;
&lt;br /&gt;
== Moritz Lennert ==&lt;br /&gt;
&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Mar+25%2C+2018&amp;amp;daysback=7&amp;amp;authors=mlennert&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update SVN log] overview&lt;br /&gt;
*  Committed fix for r.texture to avoid overwrite of existing output maps&lt;br /&gt;
*  Committed fix for i.segment.uspo to avoid zero division error&lt;br /&gt;
*  Worked on and discussed new startup mockup, created [https://trac.osgeo.org/grass/wiki/wxGUIDevelopment/New_Startup wiki page] for brainstorming&lt;br /&gt;
*  Use of '_' in i.zc module parameter in i.cutlines to enable parallelization of i.zc. Thanks to Pietro for making this possible in pygrass.&lt;br /&gt;
*  Some testing for [https://trac.osgeo.org/grass/ticket/3361 #3361] on slowness of v.select with GEOS. Added explanation to man page to clarify that GRASS' &amp;quot;overlap' = GEOS 'intersects'.&lt;br /&gt;
*  Testing Ondrej' artificial neural networks modules + discussions on further improvements&lt;br /&gt;
*  Discussion of new website design&lt;br /&gt;
*  Discussion on move to github.&lt;br /&gt;
&lt;br /&gt;
== Markus Metz ==&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Mar+25%2C+2018&amp;amp;daysback=7&amp;amp;authors=mmetz&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update%20SVN%20log SVN log] overview&lt;br /&gt;
* Support of new PROJ 5 API&lt;br /&gt;
&lt;br /&gt;
== Markus Neteler ==&lt;br /&gt;
&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Mar+25%2C+2018&amp;amp;daysback=7&amp;amp;authors=neteler&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update%20SVN%20log SVN log] overview&lt;br /&gt;
* set up [https://docs.google.com/spreadsheets/d/1BgFMiYlLosFjsVUlUCWwssoxiQB_G7gpkVFgG29gZBM/edit?usp=sharing Budget] for this community sprint&lt;br /&gt;
* testing of {{AddonCmd|i.nightlights.intercalibration}} with DMSP-OLS data, parser fix (contributed by Anika Bettge) and HTML fixes&lt;br /&gt;
* Web: activation of roles in http://staging.grass.osgeo.org/&lt;br /&gt;
* svn to git migration discussions&lt;br /&gt;
** Following https://trac.osgeo.org/gdal/wiki/rfc71_github_migration with interest&lt;br /&gt;
* Ticket {{trac|3527}} (i.atcorr: discrepancy in sensor band numbering in the manual)&lt;br /&gt;
* added &amp;quot;How to add keywords in code&amp;quot; submitting rules for [https://trac.osgeo.org/grass/wiki/Submitting/Python#Addingdescriptionandkeywords Python] and [https://trac.osgeo.org/grass/wiki/Submitting/C#Addingdescriptionandkeywords C]&lt;br /&gt;
* work together with Vero on https://grasswiki.osgeo.org/wiki/GRASS-Wiki/CMS_migration_plan_2018&lt;br /&gt;
* i.atcorr: sync to trunk (updated spectral curves for various satellites; fix band order for Worldview2; addition of Sentinel-2B, improvement of numerical stability {{rev|72557}}&lt;br /&gt;
&lt;br /&gt;
== Veronica Andreo ==&lt;br /&gt;
&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Mar+25%2C+2018&amp;amp;daysback=7&amp;amp;authors=veroandreo&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update%20SVN%20log SVN log] overview&lt;br /&gt;
* tested {{cmd|r.texture}}, see {{trac|3492}}&lt;br /&gt;
* committed {{cmd|i.atcorr}} manual example and figure contributed by Zofie Cimburova to perform atmospheric correction on Sentinel-2 bands&lt;br /&gt;
* performed general clean-up on i.atcorr manual page&lt;br /&gt;
* completed [https://grasswiki.osgeo.org/wiki/SENTINEL Sentinel wiki] (kinda). Editions, corrections and more examples are welcome.&lt;br /&gt;
* discussion about new flag and flag behavior for {{cmd|t.remove}} with Luca {{trac|3362}}&lt;br /&gt;
* revised and tested old t.* related tickets; closed some old ones as wontfix or worksforme accordingly.&lt;br /&gt;
* created patch for {{trac|3264}} with Luca's help&lt;br /&gt;
* tested -h flag in {{cmd|t.info}}, see {{trac|3322}}&lt;br /&gt;
* added example to {{cmd|t.register}} (contributed by Ondrej Pesek) + correction of typos and minor text edition&lt;br /&gt;
* tweeted and RT from GRASS account and posted in FB GRASS GIS group&lt;br /&gt;
* completed revision and clean-up of the [https://grasswiki.osgeo.org/wiki/Temporal_data_processing Temporal data processing] wiki&lt;br /&gt;
* opened tickets for {{cmd|g.gui.tplot}} (after discussions with Nikos and Luca)&lt;br /&gt;
* tested {{trac|3223}} and {{trac|3302}}&lt;br /&gt;
* prepared small extra [https://grass.osgeo.org/sampledata/north_carolina/nc_spm_mapset_modis2015_2016_lst.zip mapset] with MODIS LST time series data (2015-2016) for NC location&lt;br /&gt;
* created draft roadmap of priorities for the migration of the web site (work together with MarkusN): see [https://grasswiki.osgeo.org/wiki/GRASS-Wiki/CMS_migration_plan_2018 wiki]&lt;br /&gt;
* created draft [https://trac.osgeo.org/grass/wiki/Grass7/NewFeatures76 GRASS 7.6. New Features] page to start adding the cool stuff that will be shipped with 76&lt;br /&gt;
* added examples for the new features implemented in {{cmd|g.gui.tplot}}&lt;br /&gt;
* edited the GRASS GIS page at: https://www.osgeo.org/projects/grass-gis/&lt;br /&gt;
* Spanish translations in transifex&lt;br /&gt;
&lt;br /&gt;
== Ondřej Pešek ==&lt;br /&gt;
&lt;br /&gt;
* Working on artificial neural network modules (see [https://github.com/ctu-geoforall-lab-projects/dp-pesek-2018/compare/master@%7B18/3/2018%7D...master github commits] overview)&lt;br /&gt;
* g.gui.gmodeler: Support parameterization and GUI generation in python script; export to PyWPS script (see [https://github.com/ctu-yfsg/2017-d-grass-modeler-pywps/compare/master@%7B18/03/2018%7D...master github commits] overview)&lt;br /&gt;
* Working on SOS modules (see [https://github.com/pesekon2/GRASS-GIS-SOS-tools/compare/master@%7B17/03/2018%7D...master github commits] overview)&lt;br /&gt;
&lt;br /&gt;
== Luca Delucchi ==&lt;br /&gt;
&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Mar+25%2C+2018&amp;amp;daysback=7&amp;amp;authors=lucadelu&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update%20SVN%20log SVN log] overview&lt;br /&gt;
* {{cmd|g.region}} improved grow option&lt;br /&gt;
* renamed r.modis addons to {{AddonCmd|i.modis}}&lt;br /&gt;
* working on temporal framework open tickets&lt;br /&gt;
* discussion about new flag and flag behavior for {{cmd|t.remove}} with Vero {{trac|3362}}&lt;br /&gt;
* created three new modules to work with signature files {{AddonCmd|i.signature.list}}, {{AddonCmd|i.signature.copy}}, {{AddonCmd|i.signature.remove}}&lt;br /&gt;
* worked with Markus Metz on {{cmd|i.ortho.transform}} command&lt;br /&gt;
* fixed some bug in {{cmd|g.gui.tplot}} {{rev|72485}} {{rev|72489}}, one related to {{trac|3294}}&lt;br /&gt;
* {{cmd|g.gui.tplot}} added capabilities to set labels for title, x and y axes {{rev|72523}} {{rev|72526}}&lt;br /&gt;
* {{cmd|g.gui.tplot}} added capabilities to export plotted data to CSV file {{rev|72528}} {{rev|72529}} related to {{trac|3533}}&lt;br /&gt;
* review GSoC proposals&lt;br /&gt;
&lt;br /&gt;
== Nikos Alexandris ==&lt;br /&gt;
&lt;br /&gt;
* Discussion about GRASS GIS, HPC and distributed file systems with Markus Neteler, Soeren Gebert, Markus Metz. Respective wiki pages to be updated.&lt;br /&gt;
* Tests related to https://trac.osgeo.org/grass/ticket/774 available at https://github.com/NikosAlexandris/test_color_space_conversions&lt;br /&gt;
&lt;br /&gt;
== Stefan Blumentrath ==&lt;br /&gt;
&lt;br /&gt;
* Made his first commit to trunk {{rev|72444}} and fixed {{trac|3322}}&lt;br /&gt;
* worked on an AddOn [https://trac.osgeo.org/grass/browser/sandbox/sbl/t.rast.aggregate.update/t.rast.aggregate.update.py t.rast.aggegate.update] for updating aggregated STRDS from t.rast.aggregate (please test)&lt;br /&gt;
* wrote a patch for improving performance of v.rast.stats that allows multiple input {{trac|3523}} (testing/feedback very welcome)&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Mar+25%2C+2018&amp;amp;daysback=7&amp;amp;authors=sbl&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update%20SVN%20log SVN log] overview&lt;br /&gt;
&lt;br /&gt;
== Sören Gebbert ==&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Mar+25%2C+2018&amp;amp;daysback=7&amp;amp;authors=huhabla&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update%20SVN%20log SVN log] overview&lt;br /&gt;
* temporal algebra bugfixing&lt;br /&gt;
&lt;br /&gt;
== Radek Novotný ==&lt;br /&gt;
&lt;br /&gt;
* Implementation of new --exec funcionalities (--tmp-location,--no-clean), see {{trac|3537}}&lt;br /&gt;
* Creating [https://docs.google.com/document/d/1XlxRHvtaiebVIOvlq8G6Q5FuUkFigZ8DlQbaQ-y9keQ/edit?ts=5ab51252 GSoC poroposal]&lt;br /&gt;
* Support for vector input in r.clip, see https://trac.osgeo.org/grass/attachment/ticket/3538/r.clip_patch_for_vector_input&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_Community_Sprint_Bonn_2018&amp;diff=25150</id>
		<title>Talk:GRASS Community Sprint Bonn 2018</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_Community_Sprint_Bonn_2018&amp;diff=25150"/>
		<updated>2018-03-22T19:02:10Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: Nikos' activities&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Participants and Reports =&lt;br /&gt;
&lt;br /&gt;
== Martin Landa ==&lt;br /&gt;
&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Mar+25%2C+2018&amp;amp;daysback=7&amp;amp;authors=martinl&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update SVN log] overview&lt;br /&gt;
* Show computation region extent settings, see {{trac|3519}}&lt;br /&gt;
* wxGUI/datacatalog: zoom to first added map (sync with lmgr behaviour)&lt;br /&gt;
&lt;br /&gt;
== Moritz Lennert ==&lt;br /&gt;
&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Mar+25%2C+2018&amp;amp;daysback=7&amp;amp;authors=mlennert&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update SVN log] overview&lt;br /&gt;
*  Committed fix for r.texture to avoid overwrite of existing output maps&lt;br /&gt;
*  Committed fox for i.segment.uspo to avoid zero division error&lt;br /&gt;
*  Worked on and discussed new startup mockup, created [https://trac.osgeo.org/grass/wiki/wxGUIDevelopment/New_Startup wiki page] for brainstorming&lt;br /&gt;
*  Use of '_' in i.zc module parameter in i.cutlines to enable parallelization of i.zc. Thanks to Pietro for making this possible in pygrass.&lt;br /&gt;
*  Some testing for [https://trac.osgeo.org/grass/ticket/3361 #3361] on slowness of v.select with GEOS. Added explanation to man page to clarify that GRASS' &amp;quot;overlap' = GEOS 'intersects'.&lt;br /&gt;
*  Testing Ondrej' artificial neural networks modules + discussions on further improvements&lt;br /&gt;
*  Discussion of new website design&lt;br /&gt;
*  Discussion on move to github.&lt;br /&gt;
&lt;br /&gt;
== Markus Neteler ==&lt;br /&gt;
&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Mar+25%2C+2018&amp;amp;daysback=7&amp;amp;authors=neteler&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update%20SVN%20log SVN log] overview&lt;br /&gt;
* set up [https://docs.google.com/spreadsheets/d/1BgFMiYlLosFjsVUlUCWwssoxiQB_G7gpkVFgG29gZBM/edit?usp=sharing Budget] for this community sprint&lt;br /&gt;
* testing of {{AddonCmd|i.nightlights.intercalibration}} with DMSP-OLS data, parser fix (contributed by Anika Bettge) and HTML fixes&lt;br /&gt;
* Web: activation of roles in http://staging.grass.osgeo.org/&lt;br /&gt;
* svn to git migration discussions&lt;br /&gt;
** Following https://trac.osgeo.org/gdal/wiki/rfc71_github_migration with interest&lt;br /&gt;
* Ticket {{trac|3527}} (i.atcorr: discrepancy in sensor band numbering in the manual)&lt;br /&gt;
* added &amp;quot;How to add keywords in code&amp;quot; submitting rules for [https://trac.osgeo.org/grass/wiki/Submitting/Python#Addingdescriptionandkeywords Python] and [https://trac.osgeo.org/grass/wiki/Submitting/C#Addingdescriptionandkeywords C]&lt;br /&gt;
&lt;br /&gt;
== Veronica Andreo ==&lt;br /&gt;
&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Mar+25%2C+2018&amp;amp;daysback=7&amp;amp;authors=veroandreo&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update%20SVN%20log SVN log] overview&lt;br /&gt;
* tested {{cmd|r.texture}}&lt;br /&gt;
* committed {{cmd|i.atcorr}} manual example and figure contributed by Zofie Cimburova to perform atmospheric correction on Sentinel-2 bands&lt;br /&gt;
* performed general clean-up on i.atcorr manual page&lt;br /&gt;
* completed [https://grasswiki.osgeo.org/wiki/SENTINEL Sentinel wiki] (kinda). Editions, corrections and more examples are welcome.&lt;br /&gt;
* discussion about new flag and flag behavior for {{cmd|t.remove}} with Luca {{trac|3362}}&lt;br /&gt;
* revised and tested old t.* related tickets; closed some old ones as wontfix or worksforme accordingly.&lt;br /&gt;
* created patch for {{trac|3264}} with Luca's help&lt;br /&gt;
* tested -h flag in {{cmd|t.info}}, see {{trac|3322}}&lt;br /&gt;
* added example to {{cmd|t.register}} (contributed by Ondrej Pesek) + correction of typos and minor text edition&lt;br /&gt;
* tweeted and RT from GRASS account and posted in FB GRASS GIS group&lt;br /&gt;
* completed revision and clean-up of the [https://grasswiki.osgeo.org/wiki/Temporal_data_processing Temporal data processing] wiki&lt;br /&gt;
* opened tickets for {{cmd|g.gui.tplot}} (after discussions with Nikos and Luca)&lt;br /&gt;
* tested {{trac|3223}} and {{trac|3302}}&lt;br /&gt;
&lt;br /&gt;
== Ondřej Pešek ==&lt;br /&gt;
&lt;br /&gt;
* Working on artificial neural network modules (see [https://github.com/ctu-geoforall-lab-projects/dp-pesek-2018/compare/master@%7B18/3/2018%7D...master github commits] overview)&lt;br /&gt;
* g.gui.gmodeler: Support parameterization and GUI generation in python script; export to PyWPS script (see [https://github.com/ctu-yfsg/2017-d-grass-modeler-pywps/compare/master@%7B18/03/2018%7D...master github commits] overview)&lt;br /&gt;
* Working on SOS modules (see [https://github.com/pesekon2/GRASS-GIS-SOS-tools/compare/master@%7B17/03/2018%7D...master github commits] overview)&lt;br /&gt;
&lt;br /&gt;
== Luca Delucchi ==&lt;br /&gt;
&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Mar+25%2C+2018&amp;amp;daysback=7&amp;amp;authors=lucadelu&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update%20SVN%20log SVN log] overview&lt;br /&gt;
* {{cmd|g.region}} improved grow option&lt;br /&gt;
* renamed r.modis addons to {{AddonCmd|i.modis}}&lt;br /&gt;
* working on temporal framework open tickets&lt;br /&gt;
* discussion about new flag and flag behavior for {{cmd|t.remove}} with Vero {{trac|3362}}&lt;br /&gt;
&lt;br /&gt;
== Nikos Alexandris ==&lt;br /&gt;
&lt;br /&gt;
* Discussion about GRASS GIS, HPC and distributed file systems with Markus Neteler, Soeren Gebert, Markus Metz. Respective wiki pages to be updated.&lt;br /&gt;
* Tests related to https://trac.osgeo.org/grass/ticket/774 available at https://github.com/NikosAlexandris/test_color_space_conversions&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_GIS_Community_Sprint_Bonn_2018&amp;diff=25088</id>
		<title>GRASS GIS Community Sprint Bonn 2018</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_GIS_Community_Sprint_Bonn_2018&amp;diff=25088"/>
		<updated>2018-03-18T14:04:12Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: NikosA: participation details&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{toc|right}}&lt;br /&gt;
&lt;br /&gt;
The '''GRASS GIS community''' will join the general '''OSGeo Code Sprint''' at [http://www.basecamp-bonn.com/ BaseCamp in Bonn], following the annual FOSSGIS conference (German Speaking OSGeo Local Chapter conference in Bonn, Germany)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&lt;br /&gt;
[[File:GRASS_GIS_Code_Sprint_2018.png|320px]] &lt;br /&gt;
&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Timing, Venue  ==&lt;br /&gt;
&lt;br /&gt;
OSGeo Code Sprint: '''March 18 - 25, 2018 at [http://www.basecamp-bonn.com/ BaseCamp, Bonn], Germany'''.&lt;br /&gt;
&lt;br /&gt;
Location: [http://www.openstreetmap.org/way/44335958#map=18/50.70763/7.12316| OpenStreetMap]&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
Please check more info on the Bonn Code Sprint 2018 [https://wiki.osgeo.org/wiki/OSGeo_Code_Sprint_2018 here].&lt;br /&gt;
&lt;br /&gt;
We also welcome direct '''financial contributions''' to help reducing travelling and accommodation expenses for GRASS developers with far arrival If you are interested to sponsor the GRASS Community Sprint, please read about&lt;br /&gt;
&lt;br /&gt;
:::'''sponsoring the GRASS project''' at '''[http://grass.osgeo.org/donations http://grass.osgeo.org/donations]'''&lt;br /&gt;
&lt;br /&gt;
Note that it is also possible to &amp;lt;b&amp;gt;buy a round of beer for the developers with a quick click&amp;lt;/b&amp;gt; using the PayPal &amp;quot;Buy [pizza/beer/...] Now&amp;quot; button [[Image:Btn_donate_SM.gif|center|link=http://grass.osgeo.org/donations/]]&lt;br /&gt;
&lt;br /&gt;
For any questions, please contact [[User:Neteler|Markus Neteler]] &amp;lt;tt&amp;gt;&amp;lt;neteler at osgeo.org&amp;gt;&amp;lt;/tt&amp;gt;. Any surplus at the end of the event will be turned over to the GRASS GIS project.&lt;br /&gt;
&lt;br /&gt;
This GRASS GIS Community Sprint is a great occasion for you to support the development of GRASS. With your contribution you'll enable more developers to meet. The community sprint is an important opportunity for the GRASS developers to discuss and collaboratively resolve bugs, plan the direction for the project and work on new features. Please see below for the more detailed agenda. The developers and contributors are donating their valuable time, so it would be great if in-kind funding can be made available from within the community to cover out-of-pocket expenses. All of the work that takes place at the community sprint will be directly contributed back into the GRASS project to the benefit of everyone who uses it.&lt;br /&gt;
This Bonn event is especially interesting since '''important OSGeo projects come together'''!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Agenda - What we plan to do ==&lt;br /&gt;
&lt;br /&gt;
=== New GRASS GIS startup style ===&lt;br /&gt;
&lt;br /&gt;
* To simplify GRASS GIS startup,&lt;br /&gt;
** first the full GUI should be shown and immediately the location dialog popped up _inside_ GRASS GIS&lt;br /&gt;
** default SRS: long-lat 4326&lt;br /&gt;
* Rationale: don't continue to be different from the rest of the world when not needed&lt;br /&gt;
** New solution needs to cover following scenarios:&lt;br /&gt;
*** GISDBASE does not exist;&lt;br /&gt;
*** GISDBASE exists, but there is no location with EPSG:4326;&lt;br /&gt;
*** Selected location/mapset must be propagated down to background CLI process too.&lt;br /&gt;
&lt;br /&gt;
=== Move to Git ===&lt;br /&gt;
&lt;br /&gt;
* Choose among different options: OSGeo Git, Github, GitLab&lt;br /&gt;
* Participants are invited to study Git in advance :-)&lt;br /&gt;
* Consider moving only GRASS 8 (or 7.7) without history and push history into a separate repository. Rationale – repository checkout will have to contain all branches thus blowing-up checkout size. There is an option to use several git repos &amp;quot;chained&amp;quot; together to have access to full history without having it to live in a single repository. Here's an example: https://archive.org/details/git-history-of-linux https://stackoverflow.com/questions/161928/what-are-git-info-grafts-for&lt;br /&gt;
&lt;br /&gt;
=== New website ===&lt;br /&gt;
&lt;br /&gt;
* &amp;lt;del&amp;gt;Choose among different options&amp;lt;/del&amp;gt;: '''Wordpress''' &amp;lt;del&amp;gt;,Sphinx&amp;lt;/del&amp;gt;, ... ? A new Wordpress installation is requested in SAC ([https://trac.osgeo.org/osgeo/ticket/2131 ticket]). {{done}}&lt;br /&gt;
** https://staging.grass.osgeo.org/ (login with OSGeo-ID)&lt;br /&gt;
&lt;br /&gt;
=== Python interface for external usage ===&lt;br /&gt;
&lt;br /&gt;
* complete the new &amp;quot;grass-session&amp;quot; pip package (https://github.com/zarch/grass-session)&lt;br /&gt;
* change packaging to for better support of site-package&lt;br /&gt;
&lt;br /&gt;
=== Integration with QGIS Processing ===&lt;br /&gt;
&lt;br /&gt;
After some intensive discussions the decision of the QGIS devs is to continue with the &amp;quot;Processing&amp;quot; support (see [https://lists.osgeo.org/pipermail/grass-dev/2018-February/087557.html summary email by P Cavallini])&lt;br /&gt;
&lt;br /&gt;
Action item: update the GRASS GIS processing provider. A boilerplate could be the new [https://github.com/alexbruy/processing-saga SAGA processing provider].&lt;br /&gt;
&lt;br /&gt;
=== Port wxGUI to wxPython 4 ===&lt;br /&gt;
&lt;br /&gt;
* Finish porting wxGUI code to the new wxPython 4&lt;br /&gt;
* It also includes porting code to Python 3&lt;br /&gt;
&lt;br /&gt;
=== Finish the full Python 3 support === &lt;br /&gt;
&lt;br /&gt;
* Includes also wxGUI support for wxPython 4&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== Planned participation ==&lt;br /&gt;
&lt;br /&gt;
For organizational reasons, please '''additionally register''' at: https://wiki.osgeo.org/wiki/OSGeo_Code_Sprint_2018#Participants  &amp;lt;&amp;lt;--- important!&lt;br /&gt;
&lt;br /&gt;
=== In person ===&lt;br /&gt;
&lt;br /&gt;
Please add your name here or contact [[User:Lucadelu|Luca Delucchi]] &amp;lt;tt&amp;gt;&amp;lt;lucadeluge at gmail com&amp;gt;&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;   border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#edf9c7; font-size:95%; empty-cells:show;&amp;quot; &lt;br /&gt;
|width=50px|'''No'''&lt;br /&gt;
|width=130px|'''Participant '''&lt;br /&gt;
|width=100px|'''Country'''&lt;br /&gt;
|width=100px|'''Arrival'''&lt;br /&gt;
|width=100px|'''Departure'''&lt;br /&gt;
|'''Topic'''&lt;br /&gt;
|width=75px|'''T-Shirt'''&lt;br /&gt;
|'''Notes'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Neteler|Markus Neteler]]&lt;br /&gt;
|Germany&lt;br /&gt;
|18.3.&lt;br /&gt;
|25.3.&lt;br /&gt;
|Migration to git discussion, GRASS GIS 8, new GRASS GIS startup&lt;br /&gt;
|M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:Landa|Martin Landa]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
|18.3.&lt;br /&gt;
|25.3.&lt;br /&gt;
|Migration to git discussion, website discussion, GRASS GIS 8&lt;br /&gt;
|L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Stefan Blumentrath&lt;br /&gt;
|Germany/Norway&lt;br /&gt;
|20.03.&lt;br /&gt;
|25.03.&lt;br /&gt;
|Flexible&lt;br /&gt;
|L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|[[User:Veroandreo|Veronica Andreo]]&lt;br /&gt;
|Argentina/Netherlands&lt;br /&gt;
|18.3&lt;br /&gt;
|??.??&lt;br /&gt;
|TGRASS, Documentation, website discussion&lt;br /&gt;
|S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[User:Lucadelu|Luca Delucchi]]&lt;br /&gt;
|Italy&lt;br /&gt;
|18.3&lt;br /&gt;
|??.??&lt;br /&gt;
|Migration to git discussion, TGRASS, testsuite, website discussion&lt;br /&gt;
|L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|[[User:Mlennert|Moritz Lennert]]&lt;br /&gt;
|Belgium&lt;br /&gt;
|18.3&lt;br /&gt;
|21.3&lt;br /&gt;
|Migration to git discussion, website discussion, GRASS 8, new GRASS GIS startup, work on OBIA addons, ...&lt;br /&gt;
|M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|Markus Metz&lt;br /&gt;
|Germany&lt;br /&gt;
|18.3.&lt;br /&gt;
|22.3.&lt;br /&gt;
|Migration to git discussion, website discussion, GRASS 8, new GRASS GIS startup&lt;br /&gt;
|M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|Ondřej Pešek&lt;br /&gt;
|Czech Republic&lt;br /&gt;
|18.3.&lt;br /&gt;
|25.3.&lt;br /&gt;
|Artificial neural networks in GRASS GIS, g.gui.modeler, SOS tools&lt;br /&gt;
|M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|[[User:Radeknovotny94|Radek Novotný]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
|18.3.&lt;br /&gt;
|23.3.&lt;br /&gt;
|Integration with QGIS Processing&lt;br /&gt;
|L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|10&lt;br /&gt;
|Anika Bettge&lt;br /&gt;
|Germany&lt;br /&gt;
|20.3.&lt;br /&gt;
|20.3.&lt;br /&gt;
|Segmentaion and classification&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|11&lt;br /&gt;
|Nikos Alexandris&lt;br /&gt;
|Germany&lt;br /&gt;
|19.3.&lt;br /&gt;
|23.3.&lt;br /&gt;
| GRASS workflows + distributed file system (i.e. https://github.com/cern-eos/eos), Publishing r.estimap ([[Talk:GRASS_GIS_Community_Sprint_Autumn_2017#Nikos_Alexandris|started in November 2017]]), Tests suggested in https://trac.osgeo.org/grass/ticket/774&lt;br /&gt;
|S/M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|#&lt;br /&gt;
|... &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Via IRC chat ===&lt;br /&gt;
&lt;br /&gt;
(IRC is a nice archaic chat system, see [[IRC]])&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;   border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#edf9c7; font-size:95%; empty-cells:show;&amp;quot; &lt;br /&gt;
|width=50px|'''No'''&lt;br /&gt;
|width=130px|'''Participant '''&lt;br /&gt;
|width=100px|'''Country'''&lt;br /&gt;
|'''Note'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|Yann Chemin&lt;br /&gt;
|Sri Lanka&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:hellik|Helmut Kudrnovsky]]&lt;br /&gt;
|Austria&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|[[User:Wenzeslaus|Vaclav Petras]]&lt;br /&gt;
|USA&lt;br /&gt;
|Available for video call on Monday, Mar 19&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|[[User:Annakrat|Anna Petrasova]]&lt;br /&gt;
|USA&lt;br /&gt;
|Available for video call on Monday, Mar 19&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Individual Preparation ==&lt;br /&gt;
&lt;br /&gt;
* Bring your own computer&lt;br /&gt;
* Bring [http://en.wikipedia.org/wiki/Mains_electricity_by_country your power connector adapter] if needed (photo: [https://en.wikipedia.org/wiki/File:Schuko_plug_and_socket.png Germany]). See also http://www.power-plugs-sockets.com/&lt;br /&gt;
* Install subversion and the compiler tools, and come with a working GRASS development environment if possible.&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
We have to remember to take at least one group photo! :-)&lt;br /&gt;
&lt;br /&gt;
== Reports ==&lt;br /&gt;
&lt;br /&gt;
See [[Talk:GRASS_Community_Sprint_Bonn_2018]]&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* ''Is the GRASS Community Sprint just a coding event?''&lt;br /&gt;
** It is mainly a coding and documentation event. It is a working session for people who are already participants in the GRASS project and/or are committed to improving the GRASS project.&lt;br /&gt;
** On demand we can do some presentations of current working GRASS implementation and new upcoming features to spread the idea of Open Source GIS software&lt;br /&gt;
* ''Is the GRASS Community Sprint for developers only?''&lt;br /&gt;
** No: anybody can help, with testing, checking out bugs and fixes, documentation and more.&lt;br /&gt;
* ''Where can I get help and more information about the community sprint?''&lt;br /&gt;
** Contact [[User:Lucadelu|Luca Delucchi]] &amp;lt;tt&amp;gt;&amp;lt;lucadeluge at gmail com&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Workshops]]&lt;br /&gt;
[[Category: Code Sprint]]&lt;br /&gt;
[[Category: 2018]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_GIS_Community_Sprint_Autumn_2017&amp;diff=24892</id>
		<title>Talk:GRASS GIS Community Sprint Autumn 2017</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_GIS_Community_Sprint_Autumn_2017&amp;diff=24892"/>
		<updated>2017-11-15T20:05:21Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: r.estimap in private repository, will open once ready&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Photos of the event =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;300px&amp;quot; heights=&amp;quot;225px&amp;quot; perrow=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
File:Sprint NL autumn 2017 1.jpg&lt;br /&gt;
File:Sprint NL autumn 2017 2.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Summary =&lt;br /&gt;
&lt;br /&gt;
To be added&lt;br /&gt;
&lt;br /&gt;
= Participants and Reports =&lt;br /&gt;
&lt;br /&gt;
Changes in trac: [https://trac.osgeo.org/grass/timeline?from=Nov+12%2C+2017&amp;amp;daysback=3&amp;amp;authors=&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update see here]&lt;br /&gt;
&lt;br /&gt;
== Veronica Andreo ==&lt;br /&gt;
&lt;br /&gt;
* Add/enhance descriptions of tasks for Google Code-in (GCI) in shared [https://docs.google.com/spreadsheets/d/1N9jY_VIRchWvZSGa2P5_j0XP5uhasDShDqVDs-oTqC4/edit?usp=sharing spreadsheet]&lt;br /&gt;
* Discussions about GRASS GIS GCI tasks with Luca Delucchi&lt;br /&gt;
* Create list of core modules and add-ons missing examples and screenshots (by means of: [https://trac.osgeo.org/grass/browser/grass-addons/tools/check_examples_screenshots.py check_examples_screenshots.py])&lt;br /&gt;
* Add new and improved modules to [https://trac.osgeo.org/grass/wiki/Grass7/NewFeatures74 NewFeatures74] page and re-write it nicely&lt;br /&gt;
* Upload of GRASS GIS flyer in Spanish with help of MN and svg support of Vincent Bain: [https://github.com/OSGeo/osgeo/tree/master/marketing/collateral/one-page-info/grass-gis/es svg], [https://github.com/OSGeo/osgeo/tree/master/marketing/print/one-page-info/es pdf]&lt;br /&gt;
* Test r.hants and r.series.lwr after r71682, see {{trac|2790}}&lt;br /&gt;
* Closed ticket {{trac|3301}}&lt;br /&gt;
* (re)Tweeting as https://twitter.com/GRASSGIS&lt;br /&gt;
* Text and screenshot update of lib/init/helptext for trunk and release branch&lt;br /&gt;
* Told MN about Add-ons manuals outdated and missing or wrong description in meta-pages (r.li, r.modis, r.green)&lt;br /&gt;
* Discussions about the new website&lt;br /&gt;
* Add missing height of figures in {{AddonCmd|r.series.lwr}} and {{AddonCmd|r.seasons}} add-ons manual pages&lt;br /&gt;
&lt;br /&gt;
== Markus Neteler ==&lt;br /&gt;
* GRASS GIS 8 discussions: improvements in the raster library: tile support&lt;br /&gt;
** see: https://trac.osgeo.org/grass/wiki/Grass8Planning&lt;br /&gt;
* Assist in production and upload of GRASS GIS flyer in Spanish with VA&lt;br /&gt;
* manual: fix missing height HTML tags according to https://trac.osgeo.org/grass/wiki/Submitting/Docs#Images&lt;br /&gt;
* Told Nikos about an ultra-fast and cool cmd line search tool (so much faster than &amp;quot;grep&amp;quot;): https://github.com/ggreer/the_silver_searcher&lt;br /&gt;
** Search for a function in the source code: &amp;lt;tt&amp;gt;ag grass_to_osr&amp;lt;/tt&amp;gt;&lt;br /&gt;
** Search for a function in the source code restricted to C files only: &amp;lt;tt&amp;gt;ag --cc grass_to_osr&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;ag --list-file-types&amp;lt;/tt&amp;gt;&lt;br /&gt;
* various module manual fixes and ticket cleanup&lt;br /&gt;
* Re(Tweeting) to https://twitter.com/GRASSGIS (a bit of marketing :-)&lt;br /&gt;
* GRASS GIS 7.4.x release branch has been created in {{rev|71701}}&lt;br /&gt;
** Remember that trunk is now called 7.5.svn, i.e. the trunk binary is called &amp;quot;grass75&amp;quot; and no longer &amp;quot;grass73&amp;quot;.&lt;br /&gt;
** many updates of grass72 --&amp;gt; grass74 in relbranch74&lt;br /&gt;
* Web site:&lt;br /&gt;
** cronjobs for G74 created and activated&lt;br /&gt;
** a few Web pages updated for new upcoming release&lt;br /&gt;
&lt;br /&gt;
== Markus Metz ==&lt;br /&gt;
&lt;br /&gt;
* Some discussions about raster format and grass 8&lt;br /&gt;
* made NULL file compression the default&lt;br /&gt;
* fixing 7.4-tagged bugs:&lt;br /&gt;
** fix vector support in GCP manager&lt;br /&gt;
** r.out.gdal: export inf values &lt;br /&gt;
** r.out.gdal: +option to add overviews&lt;br /&gt;
** work on datum check at data import&lt;br /&gt;
* more, see [https://trac.osgeo.org/grass/timeline?from=Nov+12%2C+2017&amp;amp;daysback=3&amp;amp;authors=mmetz&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update trac list]&lt;br /&gt;
&lt;br /&gt;
== Moritz Lennert ==&lt;br /&gt;
&lt;br /&gt;
* Added tests to r.object.geometry and fixed a bug noticed through the test ;-)&lt;br /&gt;
* Bug triaging&lt;br /&gt;
* 7.4 release preparation:&lt;br /&gt;
** [https://trac.osgeo.org/grass/wiki/Release/7.4.0-News 7.4.0-News] page&lt;br /&gt;
** Writing press release&lt;br /&gt;
* Some discussions about raster format and grass 8&lt;br /&gt;
* Work on improving r.neighborhoodmatrix&lt;br /&gt;
* Discussions on new web site&lt;br /&gt;
* (unsuccessful) attempts at debugging g.gui.iclass&lt;br /&gt;
&lt;br /&gt;
== Nikos Alexandris ==&lt;br /&gt;
&lt;br /&gt;
* Minor assistance in adding new/improved modules at [https://trac.osgeo.org/grass/wiki/Grass7/NewFeatures74 NewFeatures74]&lt;br /&gt;
* Implemented suggested tests for NULL file compression {{trac|2750}} (see comment [https://trac.osgeo.org/grass/ticket/2750#comment:66 66], see also https://github.com/NikosAlexandris/test_r_compress) | Thank you Moritz, Markus M&lt;br /&gt;
* Basic structure for an r.estimap addon, implementation of an algorithm for producing (European) recreation potential and opportunity maps | For the moment, still in a private repository. Will open once... ready!&lt;br /&gt;
* I suggest https://getgrav.org/, a flat-file CMS&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_GIS_Community_Sprint_Autumn_2017&amp;diff=24889</id>
		<title>Talk:GRASS GIS Community Sprint Autumn 2017</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_GIS_Community_Sprint_Autumn_2017&amp;diff=24889"/>
		<updated>2017-11-14T00:17:12Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: Added link to https://getgrav.org/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Photos of the event =&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery widths=&amp;quot;300px&amp;quot; heights=&amp;quot;225px&amp;quot; perrow=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;
File:Sprint NL autumn 2017 1.jpg&lt;br /&gt;
File:Sprint NL autumn 2017 2.jpg&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Summary =&lt;br /&gt;
&lt;br /&gt;
To be added&lt;br /&gt;
&lt;br /&gt;
= Participants and Reports =&lt;br /&gt;
&lt;br /&gt;
Changes in trac: [https://trac.osgeo.org/grass/timeline?from=Nov+12%2C+2017&amp;amp;daysback=3&amp;amp;authors=&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update see here]&lt;br /&gt;
&lt;br /&gt;
== Veronica Andreo ==&lt;br /&gt;
&lt;br /&gt;
* Add/enhance descriptions of tasks for Google Code-in (GCI) in shared [https://docs.google.com/spreadsheets/d/1N9jY_VIRchWvZSGa2P5_j0XP5uhasDShDqVDs-oTqC4/edit?usp=sharing spreadsheet]&lt;br /&gt;
* Discussions about GRASS GIS GCI tasks with Luca Delucchi&lt;br /&gt;
* Create list of core modules and add-ons missing examples and screenshots (by means of: [https://trac.osgeo.org/grass/browser/grass-addons/tools/check_examples_screenshots.py check_examples_screenshots.py])&lt;br /&gt;
* Add new and improved modules to [https://trac.osgeo.org/grass/wiki/Grass7/NewFeatures74 NewFeatures74] page and re-write it nicely&lt;br /&gt;
* Upload of GRASS GIS flyer in Spanish with help of MN and svg support of Vincent Bain: [https://github.com/OSGeo/osgeo/tree/master/marketing/collateral/one-page-info/grass-gis/es svg], [https://github.com/OSGeo/osgeo/tree/master/marketing/print/one-page-info/es pdf]&lt;br /&gt;
* Test r.hants and r.series.lwr after r71682, see {{trac|2790}}&lt;br /&gt;
* Closed ticket {{trac|3301}}&lt;br /&gt;
* (re)Tweeting as https://twitter.com/GRASSGIS&lt;br /&gt;
* Text and screenshot update of lib/init/helptext for trunk and release branch&lt;br /&gt;
* Told MN about Add-ons manuals outdated and missing or wrong description in meta-pages (r.li, r.modis, r.green)&lt;br /&gt;
* Discussions about the new website&lt;br /&gt;
* Add missing height of figures in {{AddonCmd|r.series.lwr}} and {{AddonCmd|r.seasons}} add-ons manual pages&lt;br /&gt;
&lt;br /&gt;
== Markus Neteler ==&lt;br /&gt;
* GRASS GIS 8 discussions: improvements in the raster library: tile support&lt;br /&gt;
** see: https://trac.osgeo.org/grass/wiki/Grass8Planning&lt;br /&gt;
* Assist in production and upload of GRASS GIS flyer in Spanish with VA&lt;br /&gt;
* manual: fix missing height HTML tags according to https://trac.osgeo.org/grass/wiki/Submitting/Docs#Images&lt;br /&gt;
* Told Nikos about an ultra-fast and cool cmd line search tool (so much faster than &amp;quot;grep&amp;quot;): https://github.com/ggreer/the_silver_searcher&lt;br /&gt;
** Search for a function in the source code: &amp;lt;tt&amp;gt;ag grass_to_osr&amp;lt;/tt&amp;gt;&lt;br /&gt;
** Search for a function in the source code restricted to C files only: &amp;lt;tt&amp;gt;ag --cc grass_to_osr&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;ag --list-file-types&amp;lt;/tt&amp;gt;&lt;br /&gt;
* various module manual fixes and ticket cleanup&lt;br /&gt;
* Re(Tweeting) to https://twitter.com/GRASSGIS (a bit of marketing :-)&lt;br /&gt;
* GRASS GIS 7.4.x release branch has been created in {{rev|71701}}&lt;br /&gt;
** Remember that trunk is now called 7.5.svn, i.e. the trunk binary is called &amp;quot;grass75&amp;quot; and no longer &amp;quot;grass73&amp;quot;.&lt;br /&gt;
** many updates of grass72 --&amp;gt; grass74 in relbranch74&lt;br /&gt;
* Web site:&lt;br /&gt;
** cronjobs for G74 created and activated&lt;br /&gt;
** a few Web pages updated for new upcoming release&lt;br /&gt;
&lt;br /&gt;
== Markus Metz ==&lt;br /&gt;
&lt;br /&gt;
* Some discussions about raster format and grass 8&lt;br /&gt;
* made NULL file compression the default&lt;br /&gt;
* fixing 7.4-tagged bugs:&lt;br /&gt;
** fix vector support in GCP manager&lt;br /&gt;
** r.out.gdal: export inf values &lt;br /&gt;
** r.out.gdal: +option to add overviews&lt;br /&gt;
** work on datum check at data import&lt;br /&gt;
* more, see [https://trac.osgeo.org/grass/timeline?from=Nov+12%2C+2017&amp;amp;daysback=3&amp;amp;authors=mmetz&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update trac list]&lt;br /&gt;
&lt;br /&gt;
== Moritz Lennert ==&lt;br /&gt;
&lt;br /&gt;
* Added tests to r.object.geometry and fixed a bug noticed through the test ;-)&lt;br /&gt;
* Bug triaging&lt;br /&gt;
* 7.4 release preparation:&lt;br /&gt;
** [https://trac.osgeo.org/grass/wiki/Release/7.4.0-News 7.4.0-News] page&lt;br /&gt;
** Writing press release&lt;br /&gt;
* Some discussions about raster format and grass 8&lt;br /&gt;
* Work on improving r.neighborhoodmatrix&lt;br /&gt;
* Discussions on new web site&lt;br /&gt;
* (unsuccessful) attempts at debugging g.gui.iclass&lt;br /&gt;
&lt;br /&gt;
== Nikos Alexandris ==&lt;br /&gt;
&lt;br /&gt;
* Minor assistance in adding new/improved modules at [https://trac.osgeo.org/grass/wiki/Grass7/NewFeatures74 NewFeatures74]&lt;br /&gt;
* Implemented suggested tests for NULL file compression {{trac|2750}} (see comment [https://trac.osgeo.org/grass/ticket/2750#comment:66 66], see also https://github.com/NikosAlexandris/test_r_compress) | Thank you Moritz, Markus M&lt;br /&gt;
* Basic structure for an r.estimap addon, implementation of an algorithm for producing (European) recreation potential and opportunity maps&lt;br /&gt;
* I suggest https://getgrav.org/, a flat-file CMS&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_GIS_Community_Sprint_Autumn_2017&amp;diff=24888</id>
		<title>GRASS GIS Community Sprint Autumn 2017</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_GIS_Community_Sprint_Autumn_2017&amp;diff=24888"/>
		<updated>2017-11-14T00:15:47Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: Added link to grav, a flat file cms (that supports Bootstrap as well)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{toc|right}}&lt;br /&gt;
GRASS people, let's meet! Because until the [[GRASS Community Sprint Bonn 2018|GRASS Community Sprint in March 2018]] there's still a looong way to go and there are topics that have been on the agenda for quite some time already... but especially because it is always so nice and fun to meet :D&lt;br /&gt;
&lt;br /&gt;
'''Important dates:'''&lt;br /&gt;
&lt;br /&gt;
* Fri, 10 Nov 2017, 12:00 - Mon 13 Nov 2017 (open end)&lt;br /&gt;
&lt;br /&gt;
== Purpose and Agenda ==&lt;br /&gt;
&lt;br /&gt;
Discuss and tackle topics such as:&lt;br /&gt;
&lt;br /&gt;
* Specs for '''GRASS GIS 8'''&lt;br /&gt;
** please edit here: https://trac.osgeo.org/grass/wiki/Grass8Planning&lt;br /&gt;
* What's missing for the '''7.4.0 release'''&lt;br /&gt;
** See https://trac.osgeo.org/grass/wiki/Grass7Planning#a7.4.0&lt;br /&gt;
* Set up '''new website''' (asap) with responsive design&lt;br /&gt;
** Bootstrap?&lt;br /&gt;
*** http://www.keycloak.org/&lt;br /&gt;
*** https://getgrav.org/&lt;br /&gt;
** Wordpress?&lt;br /&gt;
*** like https://osgeo.nl/ or the new OSGeo site?&lt;br /&gt;
* Development:&lt;br /&gt;
** Migration to '''git'''&lt;br /&gt;
** Include/invite more core developers&lt;br /&gt;
** have more grass-dev meetings&lt;br /&gt;
* '''Funding''':&lt;br /&gt;
** define concrete goals to be funded&lt;br /&gt;
** discuss measures and overall system&lt;br /&gt;
** rewrite list of sponsors&lt;br /&gt;
* '''GSoC''':&lt;br /&gt;
** Review and (possible) integration of GSoC 2017 work&lt;br /&gt;
* '''Outreach''':&lt;br /&gt;
** offer more GRASS GIS courses, like on osgeo-nl&lt;br /&gt;
** more online material, use Sphinx&lt;br /&gt;
** generate tons of 1min videos&lt;br /&gt;
** Initiatives: one new user a day&lt;br /&gt;
** launch a lime survey to know who uses GRASS GIS&lt;br /&gt;
** convert manual to Sphinx&lt;br /&gt;
** Docker image with tests &amp;amp; benchmarks&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
If you are interested to sponsor the GRASS Community Sprint, please read about&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; '''sponsoring the GRASS project at [http://grass.osgeo.org/donations/ http://grass.osgeo.org/donations/]'''&amp;lt;br&amp;gt;&lt;br /&gt;
and, if needed, contact [[User:Neteler|Markus Neteler]] &amp;lt;tt&amp;gt;&amp;lt;neteler at osgeo.org&amp;gt;&amp;lt;/tt&amp;gt;. Any surplus at the end of the event will be turned over to the GRASS GIS project.&lt;br /&gt;
&lt;br /&gt;
The GRASS Community Sprint is a great occasion for you to support the development of GRASS. With your contribution you'll enable more developers to meet. 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. The developers and contributors are donating their valuable time, so it would be great if in-kind funding can be made available from within the community to cover out-of-pocket expenses. All of the work that takes place at the community sprint will be directly contributed back into the GRASS project to the benefit of everyone who uses it.&lt;br /&gt;
&lt;br /&gt;
=== Thanks to our sponsors ===&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
&lt;br /&gt;
* Enschede, Vero's home&lt;br /&gt;
&lt;br /&gt;
== Accommodation and Costs ==&lt;br /&gt;
&lt;br /&gt;
* Enschede, Vero's home - self-funded so far (HEY, consider to donate!)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Agenda - What we plan to do ==&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The program is generally open for your ideas. Please edit this wiki page!&lt;br /&gt;
&lt;br /&gt;
* Preparation of GRASS GIS 7.4.0 new stable release&lt;br /&gt;
* Discuss start of GRASS GIS 8&lt;br /&gt;
* GSOC results integration&lt;br /&gt;
&lt;br /&gt;
... YOUR IDEA HERE ...&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Planned participation ==&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;
|'''Topic'''&lt;br /&gt;
|width=75px|'''T-Shirt'''&lt;br /&gt;
|'''Notes'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Veroandreo|Veronica Andreo]]&lt;br /&gt;
|Netherlands&lt;br /&gt;
|Fri 10&lt;br /&gt;
|Mon 13&lt;br /&gt;
|Doc, testing, GCI &lt;br /&gt;
|S &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:Neteler|Markus Neteler]]&lt;br /&gt;
|Germany&lt;br /&gt;
|Sat 11th&lt;br /&gt;
|Sun 12th&lt;br /&gt;
|See agenda :)&lt;br /&gt;
|M&lt;br /&gt;
|Will be travelling back from SFCon Bolzano, hence arriving on Sat&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|[https://wiki.osgeo.org/wiki/User:Mmetz Markus Metz]&lt;br /&gt;
|Germany&lt;br /&gt;
|Fri 10&lt;br /&gt;
|Mon 13&lt;br /&gt;
|GRASS 7.4, 8&lt;br /&gt;
|M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|[[User:Mlennert|Moritz Lennert]]&lt;br /&gt;
|Belgium&lt;br /&gt;
|Fri 10&lt;br /&gt;
|Sun 12&lt;br /&gt;
|GRASS 7.4, 8, Web site, Docs/Tutorials&lt;br /&gt;
|M&lt;br /&gt;
|Will have to take a train at around 18:00 on Sunday night&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[User:NikosA|Nikos Alexandris]]&lt;br /&gt;
|Italy&lt;br /&gt;
|Fri 10&lt;br /&gt;
|Mon 13&lt;br /&gt;
|Allarounder, as usual + Checking old posts of mine in mailing lists and file tickets where applicable + Implementing parts of [[chrome-extension://oemmndcbldboiebfnladdacbdfmadadm/http://publications.jrc.ec.europa.eu/repository/bitstream/JRC87585/lb-na-26474-en-n.pdf|ESTIMAP]] as GRASS-GIS addon&lt;br /&gt;
|M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Via IRC chat ===&lt;br /&gt;
&lt;br /&gt;
(IRC is a nice archaic chat system, see [[IRC]])&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;   border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#edf9c7; font-size:95%; empty-cells:show;&amp;quot; &lt;br /&gt;
|width=50px|'''No'''&lt;br /&gt;
|width=130px|'''Participant '''&lt;br /&gt;
|width=100px|'''Country'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Ychemin|Yann Chemin]]&lt;br /&gt;
|France&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:hellik|Helmut Kudrnovsky]]&lt;br /&gt;
|Austria&lt;br /&gt;
|-&lt;br /&gt;
|3&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. See also http://www.power-plugs-sockets.com/&lt;br /&gt;
* Install subversion and the compiler tools, and come with a working GRASS development environment if possible.&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
Remember to take at least one group photo! :-)&lt;br /&gt;
&lt;br /&gt;
== Reports ==&lt;br /&gt;
&lt;br /&gt;
See [[Talk:GRASS_GIS_Community_Sprint_Autumn_2017]]&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* ''Is the GRASS Community Sprint just a coding event?''&lt;br /&gt;
** It is mainly a coding and documentation event. It is a working session for people who are already participants in the GRASS project and/or are committed to improving the GRASS project.&lt;br /&gt;
** On demand we can do some presentations of current working GRASS implementation and new upcoming features to spread the idea of Open Source GIS software&lt;br /&gt;
* ''Is the GRASS Community Sprint for developers only?''&lt;br /&gt;
** No: anybody can help, with testing, checking out bugs and fixes, documentation and more.&lt;br /&gt;
* ''Where can I get help and more information about the community sprint?''&lt;br /&gt;
** Contact [[User:Veroandreo|Veronica Andreo]] &amp;lt;tt&amp;gt;&amp;lt;veroandreo at gmail com&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Workshops]]&lt;br /&gt;
[[Category: Code Sprint]]&lt;br /&gt;
[[Category: 2017]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_GIS_Community_Sprint_Autumn_2017&amp;diff=24876</id>
		<title>Talk:GRASS GIS Community Sprint Autumn 2017</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_GIS_Community_Sprint_Autumn_2017&amp;diff=24876"/>
		<updated>2017-11-12T22:06:52Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: Minor syntactic correction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Photos of the event =&lt;br /&gt;
&lt;br /&gt;
To be added&lt;br /&gt;
&lt;br /&gt;
= Summary =&lt;br /&gt;
&lt;br /&gt;
To be added&lt;br /&gt;
&lt;br /&gt;
= Participants and Reports =&lt;br /&gt;
&lt;br /&gt;
Changes in trac: [https://trac.osgeo.org/grass/timeline?from=Nov+12%2C+2017&amp;amp;daysback=3&amp;amp;authors=&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update see here]&lt;br /&gt;
&lt;br /&gt;
== Veronica Andreo ==&lt;br /&gt;
&lt;br /&gt;
* Add/enhance descriptions of tasks for Google Code-in (GCI) in shared [https://docs.google.com/spreadsheets/d/1N9jY_VIRchWvZSGa2P5_j0XP5uhasDShDqVDs-oTqC4/edit?usp=sharing spreadsheet]&lt;br /&gt;
* Discussions about GRASS GIS GCI tasks with Luca Delucchi&lt;br /&gt;
* Create list of core modules and add-ons missing examples and screenshots (by means of: [https://trac.osgeo.org/grass/browser/grass-addons/tools/check_examples_screenshots.py check_examples_screenshots.py])&lt;br /&gt;
* Add new and improved modules to [https://trac.osgeo.org/grass/wiki/Grass7/NewFeatures74 NewFeatures74] page and re-write it nicely&lt;br /&gt;
* Upload of GRASS GIS flyer in Spanish with help of MN: [https://github.com/OSGeo/osgeo/tree/master/marketing/collateral/one-page-info/grass-gis/es svg], [https://github.com/OSGeo/osgeo/tree/master/marketing/print/one-page-info/es pdf]&lt;br /&gt;
* (re)Tweeting as https://twitter.com/GRASSGIS&lt;br /&gt;
&lt;br /&gt;
== Markus Neteler ==&lt;br /&gt;
* GRASS GIS 8 discussions: improvements in the raster library: tile support&lt;br /&gt;
** see: https://trac.osgeo.org/grass/wiki/Grass8Planning&lt;br /&gt;
* Assist in production and upload of GRASS GIS flyer in Spanish with VA&lt;br /&gt;
* manual: fix missing height HTML tags according to https://trac.osgeo.org/grass/wiki/Submitting/Docs#Images&lt;br /&gt;
* Told Nikos about an ultra-fast and cool cmd line search tool (so much faster than &amp;quot;grep&amp;quot;): https://github.com/ggreer/the_silver_searcher&lt;br /&gt;
** Search for a function in the source code: &amp;lt;tt&amp;gt;ag grass_to_osr&amp;lt;/tt&amp;gt;&lt;br /&gt;
** Search for a function in the source code restricted to C files only: &amp;lt;tt&amp;gt;ag --cc grass_to_osr&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;ag --list-file-types&amp;lt;/tt&amp;gt;&lt;br /&gt;
* various module manual fixes and ticket cleanup&lt;br /&gt;
* Re(Tweeting) to https://twitter.com/GRASSGIS&lt;br /&gt;
* GRASS GIS 7.4.x release branch has been created in {{rev|71701}}&lt;br /&gt;
** Remember that trunk is now called 7.5.svn, i.e. the trunk binary is called &amp;quot;grass75&amp;quot; and no longer &amp;quot;grass73&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Markus Metz ==&lt;br /&gt;
&lt;br /&gt;
* Some discussions about raster format and grass 8&lt;br /&gt;
* made NULL file compression the default&lt;br /&gt;
* fixing 7.4-tagged bugs:&lt;br /&gt;
** fix vector support in GCP manager&lt;br /&gt;
** r.out.gdal: export inf values &lt;br /&gt;
** r.out.gdal: +option to add overviews&lt;br /&gt;
** work on datum check at data import&lt;br /&gt;
&lt;br /&gt;
== Moritz Lennert ==&lt;br /&gt;
&lt;br /&gt;
* Added tests to r.object.geometry and fixed a bug noticed through the test ;-)&lt;br /&gt;
* Bug triaging&lt;br /&gt;
* 7.4 release preparation:&lt;br /&gt;
** [https://trac.osgeo.org/grass/wiki/Release/7.4.0-News 7.4.0-News] page&lt;br /&gt;
** Writing press release&lt;br /&gt;
* Some discussions about raster format and grass 8&lt;br /&gt;
* Work on improving r.neighborhoodmatrix&lt;br /&gt;
* Discussions on new web site&lt;br /&gt;
* (unsuccessful) attempts at debugging g.gui.iclass&lt;br /&gt;
&lt;br /&gt;
== Nikos Alexandris ==&lt;br /&gt;
&lt;br /&gt;
* Minor assistance in adding new/improved modules at [https://trac.osgeo.org/grass/wiki/Grass7/NewFeatures74 NewFeatures74]&lt;br /&gt;
* Implemented suggested tests for NULL file compression {{trac|2750}} (see comment [https://trac.osgeo.org/grass/ticket/2750#comment:66 66], see also https://github.com/NikosAlexandris/test_r_compress) | Thank you Moritz, Markus M&lt;br /&gt;
* Basic structure for an r.estimap addon, implementation of an algorithm for producing (European) recreation potential and opportunity maps&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_GIS_Community_Sprint_Autumn_2017&amp;diff=24875</id>
		<title>Talk:GRASS GIS Community Sprint Autumn 2017</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Talk:GRASS_GIS_Community_Sprint_Autumn_2017&amp;diff=24875"/>
		<updated>2017-11-12T22:05:48Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: Nikos' activities&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Photos of the event =&lt;br /&gt;
&lt;br /&gt;
To be added&lt;br /&gt;
&lt;br /&gt;
= Summary =&lt;br /&gt;
&lt;br /&gt;
To be added&lt;br /&gt;
&lt;br /&gt;
= Participants and Reports =&lt;br /&gt;
&lt;br /&gt;
Changes in trac: [https://trac.osgeo.org/grass/timeline?from=Nov+12%2C+2017&amp;amp;daysback=3&amp;amp;authors=&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;update=Update see here]&lt;br /&gt;
&lt;br /&gt;
== Veronica Andreo ==&lt;br /&gt;
&lt;br /&gt;
* Add/enhance descriptions of tasks for Google Code-in (GCI) in shared [https://docs.google.com/spreadsheets/d/1N9jY_VIRchWvZSGa2P5_j0XP5uhasDShDqVDs-oTqC4/edit?usp=sharing spreadsheet]&lt;br /&gt;
* Discussions about GRASS GIS GCI tasks with Luca Delucchi&lt;br /&gt;
* Create list of core modules and add-ons missing examples and screenshots (by means of: [https://trac.osgeo.org/grass/browser/grass-addons/tools/check_examples_screenshots.py check_examples_screenshots.py])&lt;br /&gt;
* Add new and improved modules to [https://trac.osgeo.org/grass/wiki/Grass7/NewFeatures74 NewFeatures74] page and re-write it nicely&lt;br /&gt;
* Upload of GRASS GIS flyer in Spanish with help of MN: [https://github.com/OSGeo/osgeo/tree/master/marketing/collateral/one-page-info/grass-gis/es svg], [https://github.com/OSGeo/osgeo/tree/master/marketing/print/one-page-info/es pdf]&lt;br /&gt;
* (re)Tweeting as https://twitter.com/GRASSGIS&lt;br /&gt;
&lt;br /&gt;
== Markus Neteler ==&lt;br /&gt;
* GRASS GIS 8 discussions: improvements in the raster library: tile support&lt;br /&gt;
** see: https://trac.osgeo.org/grass/wiki/Grass8Planning&lt;br /&gt;
* Assist in production and upload of GRASS GIS flyer in Spanish with VA&lt;br /&gt;
* manual: fix missing height HTML tags according to https://trac.osgeo.org/grass/wiki/Submitting/Docs#Images&lt;br /&gt;
* Told Nikos about an ultra-fast and cool cmd line search tool (so much faster than &amp;quot;grep&amp;quot;): https://github.com/ggreer/the_silver_searcher&lt;br /&gt;
** Search for a function in the source code: &amp;lt;tt&amp;gt;ag grass_to_osr&amp;lt;/tt&amp;gt;&lt;br /&gt;
** Search for a function in the source code restricted to C files only: &amp;lt;tt&amp;gt;ag --cc grass_to_osr&amp;lt;/tt&amp;gt;&lt;br /&gt;
** &amp;lt;tt&amp;gt;ag --list-file-types&amp;lt;/tt&amp;gt;&lt;br /&gt;
* various module manual fixes and ticket cleanup&lt;br /&gt;
* Re(Tweeting) to https://twitter.com/GRASSGIS&lt;br /&gt;
* GRASS GIS 7.4.x release branch has been created in {{rev|71701}}&lt;br /&gt;
** Remember that trunk is now called 7.5.svn, i.e. the trunk binary is called &amp;quot;grass75&amp;quot; and no longer &amp;quot;grass73&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
== Markus Metz ==&lt;br /&gt;
&lt;br /&gt;
* Some discussions about raster format and grass 8&lt;br /&gt;
* made NULL file compression the default&lt;br /&gt;
* fixing 7.4-tagged bugs:&lt;br /&gt;
** fix vector support in GCP manager&lt;br /&gt;
** r.out.gdal: export inf values &lt;br /&gt;
** r.out.gdal: +option to add overviews&lt;br /&gt;
** work on datum check at data import&lt;br /&gt;
&lt;br /&gt;
== Moritz Lennert ==&lt;br /&gt;
&lt;br /&gt;
* Added tests to r.object.geometry and fixed a bug noticed through the test ;-)&lt;br /&gt;
* Bug triaging&lt;br /&gt;
* 7.4 release preparation:&lt;br /&gt;
** [https://trac.osgeo.org/grass/wiki/Release/7.4.0-News 7.4.0-News] page&lt;br /&gt;
** Writing press release&lt;br /&gt;
* Some discussions about raster format and grass 8&lt;br /&gt;
* Work on improving r.neighborhoodmatrix&lt;br /&gt;
* Discussions on new web site&lt;br /&gt;
* (unsuccessful) attempts at debugging g.gui.iclass&lt;br /&gt;
&lt;br /&gt;
== Nikos Alexandris ==&lt;br /&gt;
&lt;br /&gt;
* Minor assistance in adding new/improved modules at [https://trac.osgeo.org/grass/wiki/Grass7/NewFeatures74 NewFeatures74]&lt;br /&gt;
* Implemented suggested tests for NULL file compression {{trac|2750}} (see comment [https://trac.osgeo.org/grass/ticket/2750#comment:66 66], see also https://github.com/NikosAlexandris/test_r_compress) | Thank you Moritz, Markus M&lt;br /&gt;
* Basic structure for an r.estimap addon, an implementation of algorithm for producing (European) recreation potential and opportunity maps&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_GIS_Community_Sprint_Autumn_2017&amp;diff=24839</id>
		<title>GRASS GIS Community Sprint Autumn 2017</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_GIS_Community_Sprint_Autumn_2017&amp;diff=24839"/>
		<updated>2017-11-08T23:25:32Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: Added in my to do: Check for stuff I should have done!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{toc|right}}&lt;br /&gt;
GRASS people, let's meet! Because until the [[GRASS Community Sprint Bonn 2018|GRASS Community Sprint in March 2018]] there's still a looong way to go and there are topics that have been on the agenda for quite some time already... but especially because it is always so nice and fun to meet :D&lt;br /&gt;
&lt;br /&gt;
== Purpose and Agenda ==&lt;br /&gt;
&lt;br /&gt;
Discuss and tackle topics such as:&lt;br /&gt;
&lt;br /&gt;
* Specs for GRASS GIS 8&lt;br /&gt;
* What's missing for 7.4.0&lt;br /&gt;
* Set up new website (asap) with responsive design&lt;br /&gt;
* Migration to git&lt;br /&gt;
* Include/invite more core devs&lt;br /&gt;
* Review and (possible) integration of GSoC 2017 work&lt;br /&gt;
* Outreach:&lt;br /&gt;
** possibility of a survey to know who uses GRASS GIS&lt;br /&gt;
** offer more GRASS GIS courses&lt;br /&gt;
** more online material, use Sphinx&lt;br /&gt;
** generate tons of 1min videos&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
If you are interested to sponsor the GRASS Community Sprint, please read about&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; '''sponsoring the GRASS project at [http://grass.osgeo.org/donations/ http://grass.osgeo.org/donations/]'''&amp;lt;br&amp;gt;&lt;br /&gt;
and, if needed, contact [[User:Neteler|Markus Neteler]] &amp;lt;tt&amp;gt;&amp;lt;neteler at osgeo.org&amp;gt;&amp;lt;/tt&amp;gt;. Any surplus at the end of the event will be turned over to the GRASS GIS project.&lt;br /&gt;
&lt;br /&gt;
The GRASS Community Sprint is a great occasion for you to support the development of GRASS. With your contribution you'll enable more developers to meet. 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. The developers and contributors are donating their valuable time, so it would be great if in-kind funding can be made available from within the community to cover out-of-pocket expenses. All of the work that takes place at the community sprint will be directly contributed back into the GRASS project to the benefit of everyone who uses it.&lt;br /&gt;
&lt;br /&gt;
=== Thanks to our sponsors ===&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
&lt;br /&gt;
* To be defined&lt;br /&gt;
&lt;br /&gt;
== Accommodation and Costs ==&lt;br /&gt;
&lt;br /&gt;
* To be defined&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Agenda - What we plan to do ==&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The program is generally open for your ideas. Please edit this wiki page!&lt;br /&gt;
&lt;br /&gt;
* Preparation of GRASS GIS 7.4.0 new stable release&lt;br /&gt;
* Discuss start of GRASS GIS 8&lt;br /&gt;
* GSOC results integration&lt;br /&gt;
&lt;br /&gt;
... YOUR IDEA HERE ...&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
== Planned participation ==&lt;br /&gt;
&lt;br /&gt;
For organizational reasons (i.e. define place and date), please '''additionally register''' at: https://beta.doodle.com/poll/p4a8wmtcpw6c9m9s&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;
|'''Topic'''&lt;br /&gt;
|width=75px|'''T-Shirt'''&lt;br /&gt;
|'''Notes'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Veroandreo|Veronica Andreo]]&lt;br /&gt;
|Netherlands&lt;br /&gt;
|Fri 10&lt;br /&gt;
|Mon 13&lt;br /&gt;
|Doc, testing, GCI &lt;br /&gt;
|S &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:Neteler|Markus Neteler]]&lt;br /&gt;
|Germany&lt;br /&gt;
|Sat 11th&lt;br /&gt;
|Mon 13th&lt;br /&gt;
|See agenda :)&lt;br /&gt;
|M&lt;br /&gt;
|Will be travelling back from SFCon Bolzano, hence arriving on Sat&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|[https://wiki.osgeo.org/wiki/User:Mmetz Markus Metz]&lt;br /&gt;
|Germany&lt;br /&gt;
|Fri 10&lt;br /&gt;
|Mon 13&lt;br /&gt;
|GRASS 7.4, 8&lt;br /&gt;
|M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|[[User:Mlennert|Moritz Lennert]]&lt;br /&gt;
|Belgium&lt;br /&gt;
|Fri 10&lt;br /&gt;
|Sun 12&lt;br /&gt;
|GRASS 7.4, 8, Web site, Docs/Tutorials&lt;br /&gt;
|M&lt;br /&gt;
|Will have to take a train at around 18:00 on Sunday night&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[User:NikosA|Nikos Alexandris]]&lt;br /&gt;
|Italy&lt;br /&gt;
|Fri 10&lt;br /&gt;
|Mon 13&lt;br /&gt;
|Allarounder, as usual + Checking old posts of mine in mailing lists and file tickets where applicable + Implementing parts of [[chrome-extension://oemmndcbldboiebfnladdacbdfmadadm/http://publications.jrc.ec.europa.eu/repository/bitstream/JRC87585/lb-na-26474-en-n.pdf|ESTIMAP]] as GRASS-GIS addon&lt;br /&gt;
|M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Via IRC chat ===&lt;br /&gt;
&lt;br /&gt;
(IRC is a nice archaic chat system, see [[IRC]])&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;   border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#edf9c7; font-size:95%; empty-cells:show;&amp;quot; &lt;br /&gt;
|width=50px|'''No'''&lt;br /&gt;
|width=130px|'''Participant '''&lt;br /&gt;
|width=100px|'''Country'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Ychemin|Yann Chemin]]&lt;br /&gt;
|France&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:hellik|Helmut Kudrnovsky]]&lt;br /&gt;
|Austria&lt;br /&gt;
|-&lt;br /&gt;
|3&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. See also http://www.power-plugs-sockets.com/&lt;br /&gt;
* Install subversion and the compiler tools, and come with a working GRASS development environment if possible.&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
Remember to take at least one group photo! :-)&lt;br /&gt;
&lt;br /&gt;
== Reports ==&lt;br /&gt;
&lt;br /&gt;
See [[Talk:GRASS_GIS_Community_Sprint_Autumn_2017]]&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* ''Is the GRASS Community Sprint just a coding event?''&lt;br /&gt;
** It is mainly a coding and documentation event. It is a working session for people who are already participants in the GRASS project and/or are committed to improving the GRASS project.&lt;br /&gt;
** On demand we can do some presentations of current working GRASS implementation and new upcoming features to spread the idea of Open Source GIS software&lt;br /&gt;
* ''Is the GRASS Community Sprint for developers only?''&lt;br /&gt;
** No: anybody can help, with testing, checking out bugs and fixes, documentation and more.&lt;br /&gt;
* ''Where can I get help and more information about the community sprint?''&lt;br /&gt;
** Contact [[User:Veroandreo|Veronica Andreo]] &amp;lt;tt&amp;gt;&amp;lt;veroandreo at gmail com&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Workshops]]&lt;br /&gt;
[[Category: Code Sprint]]&lt;br /&gt;
[[Category: 2017]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_GIS_Community_Sprint_Autumn_2017&amp;diff=24832</id>
		<title>GRASS GIS Community Sprint Autumn 2017</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_GIS_Community_Sprint_Autumn_2017&amp;diff=24832"/>
		<updated>2017-10-27T21:11:13Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: +NikosA&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{toc|right}}&lt;br /&gt;
GRASS people, let's meet! Because until the [[GRASS Community Sprint Bonn 2018|GRASS Community Sprint in March 2018]] there's still a looong way to go and there are topics that have been on the agenda for quite some time already... but especially because it is always so nice and fun to meet :D&lt;br /&gt;
&lt;br /&gt;
== Purpose and Agenda ==&lt;br /&gt;
&lt;br /&gt;
Discuss and tackle topics such as:&lt;br /&gt;
&lt;br /&gt;
* Specs for GRASS GIS 8&lt;br /&gt;
* What's missing for 7.4.0&lt;br /&gt;
* Set up new website (asap) with responsive design&lt;br /&gt;
* Migration to git&lt;br /&gt;
* Include/invite more core devs&lt;br /&gt;
* Review and (possible) integration of GSoC 2017 work&lt;br /&gt;
* Outreach:&lt;br /&gt;
** possibility of a survey to know who uses GRASS GIS&lt;br /&gt;
** offer more GRASS GIS courses&lt;br /&gt;
** more online material, use Sphinx&lt;br /&gt;
** generate tons of 1min videos&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
If you are interested to sponsor the GRASS Community Sprint, please read about&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; '''sponsoring the GRASS project at [http://grass.osgeo.org/donations/ http://grass.osgeo.org/donations/]'''&amp;lt;br&amp;gt;&lt;br /&gt;
and, if needed, contact [[User:Neteler|Markus Neteler]] &amp;lt;tt&amp;gt;&amp;lt;neteler at osgeo.org&amp;gt;&amp;lt;/tt&amp;gt;. Any surplus at the end of the event will be turned over to the GRASS GIS project.&lt;br /&gt;
&lt;br /&gt;
The GRASS Community Sprint is a great occasion for you to support the development of GRASS. With your contribution you'll enable more developers to meet. 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. The developers and contributors are donating their valuable time, so it would be great if in-kind funding can be made available from within the community to cover out-of-pocket expenses. All of the work that takes place at the community sprint will be directly contributed back into the GRASS project to the benefit of everyone who uses it.&lt;br /&gt;
&lt;br /&gt;
=== Thanks to our sponsors ===&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
&lt;br /&gt;
* To be defined&lt;br /&gt;
&lt;br /&gt;
== Accommodation and Costs ==&lt;br /&gt;
&lt;br /&gt;
* To be defined&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
== Agenda - What we plan to do ==&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The program is generally open for your ideas. Please edit this wiki page!&lt;br /&gt;
&lt;br /&gt;
* Preparation of GRASS GIS 7.4.0 new stable release&lt;br /&gt;
* Discuss start of GRASS GIS 8&lt;br /&gt;
* GSOC results integration&lt;br /&gt;
&lt;br /&gt;
... YOUR IDEA HERE ...&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
== Planned participation ==&lt;br /&gt;
&lt;br /&gt;
For organizational reasons (i.e. define place and date), please '''additionally register''' at: https://beta.doodle.com/poll/p4a8wmtcpw6c9m9s&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;
|'''Topic'''&lt;br /&gt;
|width=75px|'''T-Shirt'''&lt;br /&gt;
|'''Notes'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Veroandreo|Veronica Andreo]]&lt;br /&gt;
|Netherlands&lt;br /&gt;
|Fri 10&lt;br /&gt;
|Mon 13&lt;br /&gt;
|Doc, testing, GCI &lt;br /&gt;
|S &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:Neteler|Markus Neteler]]&lt;br /&gt;
|Germany&lt;br /&gt;
|Sat 11th&lt;br /&gt;
|Mon 13th&lt;br /&gt;
|See agenda :)&lt;br /&gt;
|M&lt;br /&gt;
|Will be travelling back from SFCon Bolzano, hence arriving on Sat&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|[https://wiki.osgeo.org/wiki/User:Mmetz Markus Metz]&lt;br /&gt;
|Germany&lt;br /&gt;
|Fri 10&lt;br /&gt;
|Mon 13&lt;br /&gt;
|GRASS 7.4, 8&lt;br /&gt;
|M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|[[User:Mlennert|Moritz Lennert]]&lt;br /&gt;
|Belgium&lt;br /&gt;
|Fri 10&lt;br /&gt;
|Sun 12&lt;br /&gt;
|GRASS 7.4, 8, Web site, Docs/Tutorials&lt;br /&gt;
|M&lt;br /&gt;
|Will have to take a train at around 18:00 on Sunday night&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[User:NikosA|Nikos Alexandris]]&lt;br /&gt;
|Italy&lt;br /&gt;
|Fri 10&lt;br /&gt;
|Mon 13&lt;br /&gt;
|Allarounder, as usual + Implementing parts of [[chrome-extension://oemmndcbldboiebfnladdacbdfmadadm/http://publications.jrc.ec.europa.eu/repository/bitstream/JRC87585/lb-na-26474-en-n.pdf|ESTIMAP]] as GRASS-GIS addon&lt;br /&gt;
|M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Via IRC chat ===&lt;br /&gt;
&lt;br /&gt;
(IRC is a nice archaic chat system, see [[IRC]])&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;   border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#edf9c7; font-size:95%; empty-cells:show;&amp;quot; &lt;br /&gt;
|width=50px|'''No'''&lt;br /&gt;
|width=130px|'''Participant '''&lt;br /&gt;
|width=100px|'''Country'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Ychemin|Yann Chemin]]&lt;br /&gt;
|France&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:hellik|Helmut Kudrnovsky]]&lt;br /&gt;
|Austria&lt;br /&gt;
|-&lt;br /&gt;
|3&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. See also http://www.power-plugs-sockets.com/&lt;br /&gt;
* Install subversion and the compiler tools, and come with a working GRASS development environment if possible.&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
Remember to take at least one group photo! :-)&lt;br /&gt;
&lt;br /&gt;
== Reports ==&lt;br /&gt;
&lt;br /&gt;
See [[Talk:GRASS_GIS_Community_Sprint_Autumn_2017]]&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* ''Is the GRASS Community Sprint just a coding event?''&lt;br /&gt;
** It is mainly a coding and documentation event. It is a working session for people who are already participants in the GRASS project and/or are committed to improving the GRASS project.&lt;br /&gt;
** On demand we can do some presentations of current working GRASS implementation and new upcoming features to spread the idea of Open Source GIS software&lt;br /&gt;
* ''Is the GRASS Community Sprint for developers only?''&lt;br /&gt;
** No: anybody can help, with testing, checking out bugs and fixes, documentation and more.&lt;br /&gt;
* ''Where can I get help and more information about the community sprint?''&lt;br /&gt;
** Contact [[User:Veroandreo|Veronica Andreo]] &amp;lt;tt&amp;gt;&amp;lt;veroandreo at gmail com&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category: Workshops]]&lt;br /&gt;
[[Category: Code Sprint]]&lt;br /&gt;
[[Category: 2017]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Temporal_data_processing&amp;diff=24799</id>
		<title>Temporal data processing</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Temporal_data_processing&amp;diff=24799"/>
		<updated>2017-10-21T06:58:26Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: s/t.rast.series}/t.rast.series}}/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
TGRASS is the temporal enabled GRASS GIS. It is available from [http://grass.osgeo.org/grass7/ GRASS GIS 7] onwards.&lt;br /&gt;
TGRASS is completely metadata based, i.e. it does not change any data but simply handles the organization of raster, vector, raster3D maps actually stored in a GRASS GIS mapset by registering in an additional internal database. This is done specifically for managing temporal and spatial extent including temporal topology.&lt;br /&gt;
&lt;br /&gt;
Manual overview: https://grass.osgeo.org/grass72/manuals/temporalintro.html&lt;br /&gt;
&lt;br /&gt;
== Terminology Overview ==&lt;br /&gt;
&lt;br /&gt;
* Space time raster datasets ('''strds''') are designed to manage raster map time series. Modules that process strds have the naming prefix ''t.rast''.&lt;br /&gt;
* Space time 3D raster datasets ('''str3ds''') are designed to manage 3D raster map time series. Modules that process str3ds have the naming prefix ''t.rast3d''.&lt;br /&gt;
* Space time vector datasets ('''stvds''') are designed to manage vector map time series. Modules that process stvds have the naming prefix ''t.vect''.&lt;br /&gt;
&lt;br /&gt;
== Workflow overview ==&lt;br /&gt;
&lt;br /&gt;
# create an empty space time datasets: strds, str3ds, or stvds ({{cmd|t.create}})&lt;br /&gt;
# register the GRASS GIS maps ({{cmd|t.register}})&lt;br /&gt;
# check the generated space time datasets ({{cmd|t.list}}, {{cmd|t.info}})&lt;br /&gt;
# do your analysis: {{cmd|t.rast.aggregate}}, {{cmd|t.info}}, {{cmd|t.rast.univar}}, {{cmd|t.vect.univar}}, ... so many more!&lt;br /&gt;
&lt;br /&gt;
== Example workflow for a Chlorophyll-a MODIS time series ==&lt;br /&gt;
&lt;br /&gt;
The following examples are based on a series of MODIS L3 Chlorophyll-a product that is freely available at the [http://oceancolor.gsfc.nasa.gov/cgi/l3?sen=A&amp;amp;per=MO&amp;amp;prd=CHL_chlor_a ocean color] site. So, say we download the SMI 8-day composite product at 4.6 km resolution for the period 2003-2013. That is a 506 set of images, 46 per year. Data comes as compressed HDF4 files. Chlorophyll products filenames look like this: &lt;br /&gt;
&lt;br /&gt;
A20030012003008.L3m_8D_CHL_chlor_a_4km&lt;br /&gt;
&lt;br /&gt;
  A: MODIS/Aqua&lt;br /&gt;
  2003: Year at start&lt;br /&gt;
  001: Julian day at start&lt;br /&gt;
  2003: Year at end&lt;br /&gt;
  008: Julian day at end&lt;br /&gt;
  L3m: Level 3 data, mapped (Projection: Plate carrée)&lt;br /&gt;
  8D: 8 day composition&lt;br /&gt;
  CHL: Chlorophyll a concentration product&lt;br /&gt;
  chlor_a: algorithm used 10^(a0 + a1*X + a2*X^2 + a3*X^3 + a4*X^4) &lt;br /&gt;
  4km: 4.6km pixel size (8640x4320 image, 2.5 minute resolution)&lt;br /&gt;
&lt;br /&gt;
We now decompress files and check metadata &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Go to where the data is and decompress&lt;br /&gt;
  find -iname '*.bz2' -exec bzip2 -d {} \; &lt;br /&gt;
# Check file meta-data (GDAL utilities)&lt;br /&gt;
  gdalinfo A20030012003008.L3m_8D_CHL_chlor_a_4km&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next step is to import all 506 images into GRASS. You can use {{cmd|r.in.gdal}} or {{cmd|r.external}} for that.&lt;br /&gt;
Note that global Cl-a images as downloaded from [http://oceancolor.gsfc.nasa.gov/cgi/l3?sen=A&amp;amp;per=MO&amp;amp;prd=CHL_chlor_a ocean color] site are ~150 mb each (disk space issues!). Here, 3 different options:&lt;br /&gt;
&lt;br /&gt;
* import global images (506 images, 150 Mb each) with r.in.gdal, resize to study area and remove global files&lt;br /&gt;
* set projection and extension, and resize to study area with gdal_translate, and import already resized images with r.in.gdal&lt;br /&gt;
* import global images (506 images, 150 Mb each) with r.external, resize to study area and remove global files, as showed next:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# define region extension&lt;br /&gt;
g.region -p n=-38 s=-55 w=-70 e=-56&lt;br /&gt;
&lt;br /&gt;
suffix=_tmp&lt;br /&gt;
for map in *chlor* ; do&lt;br /&gt;
    r.external input=$map output=${map}${suffix} -o&lt;br /&gt;
    r.mapcalc expression=&amp;quot;$map = ${map}${suffix}&amp;quot;&lt;br /&gt;
    g.remove type=raster name=${map}${suffix}&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once we have maps inside GRASS we can start the temporal processing. If this is the first time you'll use temporal modules, &lt;br /&gt;
you need to run &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.connect -d &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to set the default temporal GIS database connection for the current mapset. The default TGIS database of type ''sqlite3'' is located in the PERMANENT mapset directory. Temporal GIS content from all created mapsets will be stored there.&lt;br /&gt;
&lt;br /&gt;
=== Creating a STRDS and registering maps ===&lt;br /&gt;
&lt;br /&gt;
'''Creating a STRDS'''&lt;br /&gt;
&lt;br /&gt;
First step is to '''create a space time dataset''' by means of {{cmd|t.create}}. As an example, let us create a strds for the Chlorophyll-a (Cl-a) time series. We need to define the name and semantic type of the new space time dataset, its title and a description. By default a raster dataset is created with absolute time (Gregorian calendar). We can change that according to our needs with type and temporaltype options.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.create type=strds temporaltype=absolute output=cla title=&amp;quot;Chlorophyll-a concentration&amp;quot; \&lt;br /&gt;
description=&amp;quot;MODIS L3 Chlorophyll-a concentration for Argentinian sea&amp;quot; semantictype=mean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Registering maps'''&lt;br /&gt;
&lt;br /&gt;
Then, we '''register the maps''' in the strds using {{cmd|t.register}}. This module assigns time stamps to raster, 3D raster and vector maps and register them into space time datasets. Existing timestamps can be read and used by t.register. Note that this is a metadata based registration, nothing is imported into GRASS GIS since the maps are already present in the location (hence, no duplication occurs).&lt;br /&gt;
&lt;br /&gt;
This module (and TGRASS in general) supports '''absolute time''' and '''relative time'''. The ''absolute'' temporal type refers to a fixed date or interval in the Gregorian calendar, while the ''relative'' temporal type refers to data without fixed time stamps (e.g., sequential maps used to calculate multi-decadal averages). Refer to the [http://www.geostat-course.org/system/files/Presentation_0.pdf TGRASS overview slides] for background.&lt;br /&gt;
&lt;br /&gt;
Maps can be registered by command line argument (a list of comma separated map names) or using an input file. The start time, end time and a temporal increment can be provided either by command line or in the input file. End time and increment are mutual exclusive. Maps can be registered in several space time datasets using the same timestamp. For a more detailed explanation and examples on how to register maps in stds, see also [https://grasswiki.osgeo.org/wiki/Temporal_data_processing/maps_registration maps registration] wiki. &lt;br /&gt;
&lt;br /&gt;
Start time and end time with absolute time must be provided using the format yyyy-mm-dd HH:MM:SS +HHMM. It is also supported to specify the date yyyy-mm-dd only. In case of relative time the temporal unit (years, months, days, hours, minutes or seconds) must be provided. The relative start time, end time and the increment are integers (see also {{cmd|t.register}}).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# note: with -i we create intervals (start and end time), for the given increment, and starting from start.&lt;br /&gt;
t.register -i type=raster input=cla maps=`g.list raster pattern=&amp;quot;*_chlor_*&amp;quot; separator=comma` \&lt;br /&gt;
start=&amp;quot;2003-01-01&amp;quot; increment=&amp;quot;8 days&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Dealing with weekly data'''&lt;br /&gt;
&lt;br /&gt;
While the former would have been the simplest solution, our 8-day products have a problem: in this example the last image of each year is not a product of an 8-day composition, but 4 or 5-day. Then, when using the increment parameter, dates (and consequently, intervals) are not set properly.&lt;br /&gt;
The solution is to create a list of maps, with their respective start and end date. As the filenames contain information regarding year and DOY (day of year), we can use the following Python script to '''read filenames and transform DOY to calendar dates''' (Thanks Soeren!). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Script to extract the input table for t.register from map names&lt;br /&gt;
# run in python&lt;br /&gt;
# modify to your needs&lt;br /&gt;
&lt;br /&gt;
from os import walk&lt;br /&gt;
f = []&lt;br /&gt;
for (dirpath, dirnames, filenames) in walk(&amp;quot;/path/to/the/maps&amp;quot;):&lt;br /&gt;
    f.extend(filenames)&lt;br /&gt;
    break&lt;br /&gt;
# to order the list    &lt;br /&gt;
f.sort() &lt;br /&gt;
&lt;br /&gt;
input_list=[]&lt;br /&gt;
&lt;br /&gt;
import datetime&lt;br /&gt;
for map_name in f:&lt;br /&gt;
  start_year = int(map_name[1:5])&lt;br /&gt;
  start_day  = int(map_name[5:8])&lt;br /&gt;
  end_year   = int(map_name[8:12])&lt;br /&gt;
  end_day    = int(map_name[12:15])&lt;br /&gt;
  start = datetime.datetime(start_year, 1, 1) + datetime.timedelta(start_day - 1)&lt;br /&gt;
  end = datetime.datetime(int(end_year), 1, 1) + datetime.timedelta(end_day)&lt;br /&gt;
  map_list = map_name + '|' + str(start) + '|' + str(end)&lt;br /&gt;
  print map_list&lt;br /&gt;
  input_list.append(map_list)&lt;br /&gt;
&lt;br /&gt;
print input_list&lt;br /&gt;
&lt;br /&gt;
txt = '\n' .join(input_list)&lt;br /&gt;
f = open(&amp;quot;input_list_cla.txt&amp;quot;,&amp;quot;w&amp;quot;)&lt;br /&gt;
f.write(txt)&lt;br /&gt;
f.close()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using the number of characters in the filenames and datetime library in Python, you can convert DOY in the filenames into start_time and end_time as in the list you need to pass to {{cmd|t.register}}. The resulting list &lt;br /&gt;
looks like this:&lt;br /&gt;
&lt;br /&gt;
  A20030012003008.L3m_8D_CHL_chlor_a_4km_arg|2003-01-01 00:00:00|2003-01-09 00:00:00&lt;br /&gt;
  A20030092003016.L3m_8D_CHL_chlor_a_4km_arg|2003-01-09 00:00:00|2003-01-17 00:00:00&lt;br /&gt;
  A20030172003024.L3m_8D_CHL_chlor_a_4km_arg|2003-01-17 00:00:00|2003-01-25 00:00:00&lt;br /&gt;
  ...&lt;br /&gt;
  A20133452013352.L3m_8D_CHL_chlor_a_4km_arg|2013-12-11 00:00:00|2013-12-19 00:00:00&lt;br /&gt;
  A20133532013360.L3m_8D_CHL_chlor_a_4km_arg|2013-12-19 00:00:00|2013-12-27 00:00:00&lt;br /&gt;
  A20133612013365.L3m_8D_CHL_chlor_a_4km_arg|2013-12-27 00:00:00|2014-01-01 00:00:00&lt;br /&gt;
&lt;br /&gt;
and then, the command would be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.register --o type=raster input=cla file=input_list_cla.txt&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As we are providing start and end time along with map names, we don't need to use the -i flag, neither set start nor increment options because that information is all there in the file. &lt;br /&gt;
&lt;br /&gt;
'''Assign a color table'''&lt;br /&gt;
&lt;br /&gt;
We can also set a color table for all maps in the strds with {{cmd|t.rast.colors}}: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# using a predetermined color table&lt;br /&gt;
t.rast.colors input=cla color=bcyr&lt;br /&gt;
#using your dedicated color table&lt;br /&gt;
t.rast.colors input=cla rules=path/to/your/color_table&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Getting some basic info and statistics ===&lt;br /&gt;
&lt;br /&gt;
We now check the space time data sets we have in our mapset with {{cmd|t.list}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.list type=strds&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and get information about our recently created strds. See {{cmd|t.info}} for additional uses.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.info type=strds input=cla &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  +-------------------- Space Time Raster Dataset -----------------------------+&lt;br /&gt;
  |                                                                            |&lt;br /&gt;
  +-------------------- Basic information -------------------------------------+&lt;br /&gt;
  | Id: ........................ cla@clorofila&lt;br /&gt;
  | Name: ...................... cla&lt;br /&gt;
  | Mapset: .................... clorofila&lt;br /&gt;
  | Creator: ................... veroandreo&lt;br /&gt;
  | Temporal type: ............. absolute&lt;br /&gt;
  | Creation time: ............. 2014-04-29 14:23:00.579342&lt;br /&gt;
  | Modification time:.......... 2014-05-12 09:15:08.917309&lt;br /&gt;
  | Semantic type:.............. mean&lt;br /&gt;
  +-------------------- Absolute time -----------------------------------------+&lt;br /&gt;
  | Start time:................. 2003-01-01 00:00:00&lt;br /&gt;
  | End time:................... 2014-01-01 00:00:00&lt;br /&gt;
  | Granularity:................ 1 day&lt;br /&gt;
  | Temporal type of maps:...... interval&lt;br /&gt;
  +-------------------- Spatial extent ----------------------------------------+&lt;br /&gt;
  | North:...................... -38.0&lt;br /&gt;
  | South:...................... -55.0&lt;br /&gt;
  | East:.. .................... -55.0&lt;br /&gt;
  | West:....................... -70.0&lt;br /&gt;
  | Top:........................ 0.0&lt;br /&gt;
  | Bottom:..................... 0.0&lt;br /&gt;
  +-------------------- Metadata information ----------------------------------+&lt;br /&gt;
  | Raster register table:...... raster_map_register_91ba57d5f0924f4fa0bd7176a1b39b2f&lt;br /&gt;
  | North-South resolution min:. 0.041667&lt;br /&gt;
  | North-South resolution max:. 0.041667&lt;br /&gt;
  | East-west resolution min:... 0.041667&lt;br /&gt;
  | East-west resolution max:... 0.041667&lt;br /&gt;
  | Minimum value min:.......... 0.02925&lt;br /&gt;
  | Minimum value max:.......... 0.26472&lt;br /&gt;
  | Maximum value min:.......... 5.2104&lt;br /&gt;
  | Maximum value max:.......... 99.953934&lt;br /&gt;
  | Aggregation type:........... None&lt;br /&gt;
  | Number of registered maps:.. 506&lt;br /&gt;
  |&lt;br /&gt;
  | Title:&lt;br /&gt;
  | Chlorophyll-a&lt;br /&gt;
  | Description:&lt;br /&gt;
  | Concentracion de Clorofila a&lt;br /&gt;
  | Command history:&lt;br /&gt;
  | # 2014-04-29 14:23:00 &lt;br /&gt;
  | t.create type=&amp;quot;strds&amp;quot; temporaltype=&amp;quot;absolute&amp;quot;&lt;br /&gt;
  |     output=&amp;quot;cla&amp;quot; title=&amp;quot;Chlorophyll-a&amp;quot;&lt;br /&gt;
  |     description=&amp;quot;Concentracion de Clorofila a&amp;quot; --o&lt;br /&gt;
  | # 2014-04-29 14:23:23 &lt;br /&gt;
  | t.register --o type=&amp;quot;rast&amp;quot; input=&amp;quot;cla&amp;quot;&lt;br /&gt;
  |     file=&amp;quot;map_list&amp;quot;&lt;br /&gt;
  | &lt;br /&gt;
  +----------------------------------------------------------------------------+&lt;br /&gt;
&lt;br /&gt;
Now, we get univariate statistics from the non-null cells for each registered raster map of the strds. For that matter we use {{cmd|t.rast.univar}} which, by default, returns the name of the map, the start and end date of dataset and the following values: ''mean, minimum and maximum vale, mean_of_abs, standard deviation, variance, coeff_var, number of null cells, total number of cell''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.univar input=cla&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, you can send the output to a text file using&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.univar input=cla separator=comma output=stats_cla.csv&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This file &amp;quot;stats_cla.csv&amp;quot; you can now open in a spreadsheet or statistical software for inspection and plotting.&lt;br /&gt;
&lt;br /&gt;
=== Listing maps and selections ===&lt;br /&gt;
&lt;br /&gt;
The module {{cmd|t.rast.list}} allows you to list registered maps of a strds and provides several options to get the list of maps that you want. For example, you can select different granules and also perform different queries by means of the where parameter. Some examples are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.list input=cla method=gran granule=&amp;quot;1 month&amp;quot;&lt;br /&gt;
# this will give one image every one month, 3 months, 1 year, or the granule you choose&lt;br /&gt;
&lt;br /&gt;
t.rast.list input=cla order=min columns=id,name,start_time,min where=&amp;quot;min &amp;lt;= '0.05'&amp;quot; &lt;br /&gt;
# this will order by minimum value all the maps in the strds that have a minimum value lower than or equal to 0.05&lt;br /&gt;
&lt;br /&gt;
t.rast.list input=cla order=max columns=name,start_time,max where=&amp;quot;max &amp;gt; '10.0'&amp;quot;&lt;br /&gt;
# maps ordered by maximum value in which maximum value is higher than 10.&lt;br /&gt;
&lt;br /&gt;
t.rast.list input=cla where=&amp;quot;start_time &amp;gt;= '2003-01' and start_time &amp;lt;= '2003-06'&amp;quot; &lt;br /&gt;
# all the maps in the first 6 month of the time series&lt;br /&gt;
&lt;br /&gt;
t.rast.list input=cla where=&amp;quot;strftime('%m', start_time)='01'&amp;quot;&lt;br /&gt;
# all the maps from January&lt;br /&gt;
&lt;br /&gt;
t.rast.list input=cla where=&amp;quot;strftime('%m-%d', start_time)='01-01'&amp;quot;&lt;br /&gt;
# all the maps from January, 1st&lt;br /&gt;
&lt;br /&gt;
t.rast.list input=cla where=&amp;quot;strftime('%w', start_time)='1'&amp;quot;&lt;br /&gt;
# all Mondays in the time series (Sunday is 0)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have monthly (instead of 8-day products) data and you want to list all January maps, then you can do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.list input=cla_orig where=&amp;quot;start_time=datetime(start_time, 'start of year', ' 0 month')&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: '''Do not forget to use single quotes around date''', neither in {{cmd|t.rast.list}} nor in any other of the t.* modules offering the ''where'' option, because the clause will be ignored (i.e.: no selection performed) and no warning nor error will be printed.&lt;br /&gt;
&lt;br /&gt;
=== Visualization ===&lt;br /&gt;
&lt;br /&gt;
There are different visualization options for strds.&lt;br /&gt;
&lt;br /&gt;
* {{cmd|g.gui.timeline}} allows to compare temporal datasets by displaying their temporal extents in a plot.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# only temporal extent&lt;br /&gt;
g.gui.timeline inputs=cla&lt;br /&gt;
# temporal and spatio-temporal extent&lt;br /&gt;
g.gui.timeline -3 inputs=cla&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Cla strds.png|center|thumb|560px|Temporal and spatio-temporal extent of cla strds.]]&lt;br /&gt;
&lt;br /&gt;
* {{cmd|g.gui.tplot}} allows to see the values of one or more temporal datasets for a queried point defined by a coordinate pair.&lt;br /&gt;
&lt;br /&gt;
Steps to use this module are:&lt;br /&gt;
&lt;br /&gt;
# Select strds&lt;br /&gt;
# Select pair of coordinates (east,north) or point in the map&lt;br /&gt;
# Hit Draw&lt;br /&gt;
# Customize plot as desired&lt;br /&gt;
# Save&lt;br /&gt;
&lt;br /&gt;
[[Image:Output gguitplot.png|center|thumb|800px|Time series plot (Chlorophyll vs Time) for a certain coordinate pair in the study area]]&lt;br /&gt;
&lt;br /&gt;
* {{cmd|g.gui.animation}} is the tool for animating a series of raster and vector maps or a space time raster or vector dataset.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
g.gui.animation strds=cla_monthly_average&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Grass70 temporal chlorophyll anim small.gif|framed|center|Monthly mean chlorophyll-a concentration]]&lt;br /&gt;
&lt;br /&gt;
=== Aggregation ===&lt;br /&gt;
&lt;br /&gt;
For aggregations of data with different methods and different granularities, there are two very useful commands: &lt;br /&gt;
&lt;br /&gt;
* {{cmd|t.rast.series}} that performs different aggregation algorithms from r.series on all or a subset of raster maps in a strds, and &lt;br /&gt;
&lt;br /&gt;
* {{cmd|t.rast.aggregate}} that temporally aggregates the maps in a strds by a user defined granularity.&lt;br /&gt;
&lt;br /&gt;
With these modules it is very simple to get maps of basic statistical parameters for different temporal granules, and this permits the analysis of the spatio-temporal variability of the variable of interest.&lt;br /&gt;
&lt;br /&gt;
Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# yearly aggregation&lt;br /&gt;
t.rast.aggregate input=cla output=cla_yearly_average basename=cla_yearly_average \&lt;br /&gt;
  granularity=&amp;quot;1 years&amp;quot; method=average sampling=starts suffix=gran&lt;br /&gt;
&lt;br /&gt;
# yearly aggregation with corresponding methods (output: 7 strds with 11 maps each)&lt;br /&gt;
for method in average median mode minimum maximum stddev range ; do&lt;br /&gt;
    t.rast.aggregate input=cla output=cla_yearly_${method} \&lt;br /&gt;
    basename=cla_yearly_${method} granularity=&amp;quot;1 years&amp;quot; \&lt;br /&gt;
    method=${method} sampling=start suffix=gran&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With the where parameter, as exemplified before, we can select for example all 8-day products which start_time is 01 (January) over the years. Like this we can get the so-known climatologies. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.series input=cla method=average where=&amp;quot;strftime('%m', start_time)='01'&amp;quot; output=january_average&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Generalizing a bit, we can: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# monthly climatologies&lt;br /&gt;
for i in 01 02 03 04 05 06 07 08 09 10 11 12 ; do &lt;br /&gt;
  for m in average median stddev minimum maximum ; do &lt;br /&gt;
    t.rast.series input=cla method=${m} where=&amp;quot;strftime('%m', start_time)='${i}'&amp;quot; output=${m}_${i}&lt;br /&gt;
  done&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# seasonal climatologies&lt;br /&gt;
for i in &amp;quot;01 02 03&amp;quot; &amp;quot;04 05 06&amp;quot; &amp;quot;07 08 09&amp;quot; &amp;quot;10 11 12&amp;quot; ; do&lt;br /&gt;
    set -- $i ; echo $1 $2 $3&lt;br /&gt;
    for m in average median stddev minimum maximum ; do&lt;br /&gt;
        t.rast.series input=cla method=${m} output=${m}_${1} \&lt;br /&gt;
        where=&amp;quot;strftime('%m',start_time)='&amp;quot;${1}&amp;quot;' or strftime('%m',start_time)='&amp;quot;${2}&amp;quot;' or strftime('%m', start_time)='&amp;quot;${3}&amp;quot;'&amp;quot;                      &lt;br /&gt;
    done&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using the climatologies previously obtained, we'll now estimate monthly anomalies in the mean, max and min Cl-a concentration. First, we need to monthly aggregate data, and then do the difference between the monthly climatology and each respective monthly aggregate. We'll do the aggregation for the average, minimum and maximum of Cl-a concentration (from 506 input maps in cla strds, we'll get 132 maps in each monthly aggregated new strds).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# monthly aggregates (132 maps)&lt;br /&gt;
&lt;br /&gt;
for method in average minimum maximum ; do&lt;br /&gt;
    t.rast.aggregate input=cla output=cla_monthly_${method} basename=cla_monthly_${method} \&lt;br /&gt;
    granularity=&amp;quot;1 months&amp;quot; method=${method} sampling=contains suffix=gran&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# January anomalies in mean, min and max Cl-a&lt;br /&gt;
&lt;br /&gt;
t.rast.list -s input=cla_monthly_average where=&amp;quot;start_time=datetime(start_time, 'start of year', '0 month')&amp;quot; columns=name&lt;br /&gt;
&lt;br /&gt;
for m in average minimum maximum ; do &lt;br /&gt;
    for i in 1 13 25 37 49 61 73 85 97 109 121 ; do # these numbers correspond to all january monthly aggregates&lt;br /&gt;
        r.mapcalc expression=&amp;quot;Jan_${m}_anomaly_${i}=cla_monthly_${m}_${i}-01_${m}&amp;quot; &lt;br /&gt;
    done&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use {{cmd|t.rast.list}} for looping, the same way you use {{cmd|g.list}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for map in `t.rast.list -s input=cla_monthly_average where=&amp;quot;strftime('%m', start_time)='01'&amp;quot; columns=name` ; do&lt;br /&gt;
    r.mapcalc expression=&amp;quot;anomaly_${map}=${map}-01_average&amp;quot; &lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Generalizing, we can estimate all monthly anomalies from mean like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for i in `seq -w 1 12` ; do&lt;br /&gt;
    for map in `t.rast.list -s input=cla_monthly_average columns=name where=&amp;quot;strftime('%m', start_time)='&amp;quot;${i}&amp;quot;'&amp;quot;` ; do&lt;br /&gt;
        r.mapcalc expression=&amp;quot;anomaly_${map}=${map}-average_${i}&amp;quot;&lt;br /&gt;
    done&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Say we now need to know the date of the maximum value of Cl-a concentration over all the study period and/or on a yearly basis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# map index for the overall maximum Cl-a value &lt;br /&gt;
t.rast.series input=cla method=max_raster output=cla_max_index&lt;br /&gt;
&lt;br /&gt;
# map index for the yearly maximum Cl-a value &lt;br /&gt;
t.rast.aggregate input=cla granularity=&amp;quot;1 year&amp;quot; method=max_raster output=yearly_max_index basename=yearly_max_index suffix=gran&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The outputs show (pixelwise) the map index in which the maximum value of Cl-a occurs (from 1 to 506 and from 1 to 46, for the whole time series and on a yearly basis, respectively). For relative time this is maybe enough, but you may then want to reclassify data to get DOY, for example. In that case, you may use {{cmd|r.reclass}}.&lt;br /&gt;
&lt;br /&gt;
If you already have monthly data, you can get climatologies quite simply as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# January averages&lt;br /&gt;
t.rast.series input=cla_monthly method=average where=&amp;quot;start_time=datetime(start_time, 'start of year', '0 month')&amp;quot; output=jan_average&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Spatio-temporal algebra with STRDS ===&lt;br /&gt;
&lt;br /&gt;
The module {{cmd|t.rast.mapcalc}} allows us to perform spatio-temporal mapcalc expressions on temporally sampled maps of strds. There are spatial and temporal operators available for the &amp;quot;expression&amp;quot; string. Spatial operators, functions and internal variables are those used in {{cmd|r.mapcalc}}. Temporal internal variables supported for both relative and absolute time include: td(), start_time() and end_time(). There are also several very useful internal variables supported especially for absolute time of the current sample interval or instance, e.g.: start_doy(), start_year(), start_month() and so on (see {{cmd|t.rast.mapcalc}} manual site for further details and examples).&lt;br /&gt;
&lt;br /&gt;
Some examples now. Say we did some analysis and decided that we will only consider values higher than 0.05. Then, we need to set all values below that threshold to null.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.mapcalc input=cla expression=&amp;quot;if(cla &amp;lt; 0.05, null(), cla)&amp;quot; output=cla_corrected  basename=cla_corrected&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or we may also want to take negative erroneous values to the knowm minimum of the strds, so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.series input=cla method=minimum output=min_cla&lt;br /&gt;
t.rast.mapcalc input=cla expression=&amp;quot;if(cla &amp;lt; 0.0, min_cla, cla)&amp;quot; output=cla_corrected  basename=cla_corrected&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We may also need to reclassify all maps in the strds according to a certain threshold, e.g.: a certain level of Cl-a that indicates bloom conditions, in order to get bloom frequency afterwards:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# reclassify&lt;br /&gt;
t.rast.mapcalc -n input=cla output=cla_bloom basename=cla_bloom expression=&amp;quot;if(cla &amp;gt; 0.75, 1, null())&amp;quot;&lt;br /&gt;
# bloom frequency&lt;br /&gt;
t.rast.series input=cla_bloom output=bloom_freq method=count&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Do you remember we wanted to get the DOY of maximum Cl-a value before? Well, here's another way of doing it... &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# overall maximum value&lt;br /&gt;
t.rast.series input=cla method=maximum output=max_cla&lt;br /&gt;
# new strds with DOY of overall maximum &lt;br /&gt;
t.rast.mapcalc -n inputs=cla output=date_max_cla expression=&amp;quot;if(cla == max_cla,start_doy(),null())&amp;quot; basename=date_max_cla &lt;br /&gt;
# map with DOY of overall maximum&lt;br /&gt;
t.rast.series input=date_max_cla method=maximum output=max_cla_date&lt;br /&gt;
# remove date_max_cla strds (we were only interested in the resulting aggregated map)&lt;br /&gt;
t.remove -rf inputs=date_max_cla &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the development version of GRASS GIS, there's also a {{cmd|t.rast.algebra}} module that allows for temporal and spatial operations on strds by means of temporal raster algebra. The module expects an expression as input parameter in the following form: &amp;quot;result = expression&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The statement structure is similar to r.mapcalc, the result is the name of a new strds that will contain the result of the calculation given as expression. Expressions can be any valid or nested combination of temporal operations and spatial overlay or buffer functions that are provided by the temporal algebra. See the manual for further details and explanations.&lt;br /&gt;
&lt;br /&gt;
We'll use this module to estimate the rate of change (slope) between every pair of maps in the &amp;quot;cla&amp;quot; strds. The result will be a new strds consisting of maps with the slope value between every consecutive pair of maps in the original strds:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.algebra expression=&amp;quot;slope_cla = (cla[1]-cla[0])/8.0&amp;quot; basename=slope_cla&lt;br /&gt;
# we set 8 as fixed denominator, because products are 8-day compositions&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We can then use any of the aggregation modules that we saw before to get the maximum or minimumm rate of change for different granularities.&lt;br /&gt;
&lt;br /&gt;
===== Some known issues with t.rast.mapcalc =====&lt;br /&gt;
&lt;br /&gt;
It has been observed that if the names of inputs and output space time datasets (partially) match each other, t.rast.mapcalc may not work properly (especially when several input strds are used). This is because the module uses a simple search and replace approach&lt;br /&gt;
to substitute the input STRDS with the corresponding map names. Eventualy, choosing a specific order for the input STRDS in the input parameter may reduce the risk of wrong substitution. Therefore, especially in operations involving several STRDS (with partially matching names) as inputs, it might be better to use t.rast.algebra that correctly recognizes spatio-temporal datasets. However, t.rast.algebra is still experimental and only available in development version.&lt;br /&gt;
&lt;br /&gt;
=== Subseting and something else ===&lt;br /&gt;
&lt;br /&gt;
{{cmd|t.rast.extract}} is another really useful module in temporal GRASS. It allows to extract a subset of a strds and store it in a different strds. You use the &amp;quot;where&amp;quot; condition to do the subset, but you can also specify a r.mapcalc sub-expression that performs operations on all maps of the selected subset. If no r.mapcalc expression is defined, the selected maps are simply registered in the new output strds.&lt;br /&gt;
&lt;br /&gt;
Say we need to need to know in how many maps of the strds min values are below a threshold, and not only that, but you also want to know how many pixels per map meet that condition. Then, we can do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.extract input=cla where=&amp;quot;min &amp;lt;= '0.05'&amp;quot; output=cla_less_05 basename=cla_less_05 expression=&amp;quot;if(cla&amp;lt;0.05,1,null())&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to extract those maps with a minimum value lower than 0.05, and in the same step put 1 in every cell meeting the criterium and null everywhere else. To get a count of maps and pixels meeting the condition we may use:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# univariate stistics to get the count per map  &lt;br /&gt;
t.rast.univar input=cla_less_05 &lt;br /&gt;
# count map of cells with min value &amp;lt; 0.05&lt;br /&gt;
t.rast.series input=cla_less_05 output=count_cla_less_05 method=count&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Importing / Exporting strds ===&lt;br /&gt;
&lt;br /&gt;
Say we now need to do some processing in R (e.g.: run [http://menugget.blogspot.com.ar/2012/10/dineof-data-interpolating-empirical.html DINEOF] to fill gaps in data), so we need to export our strds, hence we use {{cmd|t.rast.export}}. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.export input=cla output=cla4R compression=gzip&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After we have done our analysis we can import the whole strds back to GRASS again, exporting it from R with read/write.tgrass from [http://cran.r-project.org/web/packages/spacetime/index.html spacetime] R package and using {{cmd|t.rast.import}} in GRASS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.import input=cla_from_R.tar.gz output=cla_from_R basename=new_map directory=/tmp&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a full example of how to handle raster time series between GRASS and R, please visit the  [https://grasswiki.osgeo.org/wiki/Temporal_data_processing/raster_time_series_grass_R_statistics time series GRASS-R Statistics] wiki. The example is based on North Carolina climate location [http://courses.ncsu.edu/mea592/common/media/02/nc_climate_spm_2000_2012.zip] and includes the following steps:&lt;br /&gt;
&lt;br /&gt;
# Exporting the strds out of GRASS&lt;br /&gt;
# Importing into R&lt;br /&gt;
# Re-formating the data&lt;br /&gt;
# Running [http://modb.oce.ulg.ac.be/mediawiki/index.php/DINEOF DINEOF]&lt;br /&gt;
# Re-constructing the raster time series&lt;br /&gt;
# Exporting out of R, and &lt;br /&gt;
# Importing the gap-filled new strds into GRASS.&lt;br /&gt;
&lt;br /&gt;
=== Neighborhood analysis ===&lt;br /&gt;
&lt;br /&gt;
{{cmd|t.rast.neighbors}} performs a neighborhood analysis for each map in a space time raster dataset. This module supports a subset of the options already available in r.neighbors. Both, size of the neighborhood and aggregation method can be chosen. As an example, we'll estimate mean Cl-a concentration in a 3x3 neighborhood for every map in the strds.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.neighbors input=cla output=cla_smoth base=cla_smooth method=average size=3&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filling and reconstructing time series data with gaps ===&lt;br /&gt;
&lt;br /&gt;
==== Harmonic ANalysis of Time Series - HANTS ====&lt;br /&gt;
&lt;br /&gt;
{{AddonCmd|r.hants}} is an add-on not strictly within the temporal modules, but really useful when working with this kind of data, particularly with gappy data. Here's a simple example for generating a list of temporally ordered maps to use as input in '''r.hants''', running HANTS and getting a map of dominant frequencies, afterwards. See the manual for further information on parameter setting and explanations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# use t.rast.list to create a list of temporally ordered maps  &lt;br /&gt;
t.rast.list input=cla order=start_time columns=name -u &amp;gt; map_list.csv&lt;br /&gt;
&lt;br /&gt;
# a HANTS run using the list of maps&lt;br /&gt;
r.hants -l file=map_list.csv nf=5 fet=0.1 dod=11 base_period=46 suffix=_hants amplitude=amp_hants phase=pha_hants&lt;br /&gt;
&lt;br /&gt;
# dominant frequency map (0 means the dominant freq is 1, 1 that dominant freq is 2, and so on...)&lt;br /&gt;
r.series input=`g.list raster pattern=amp_hants* separator=comma` output=dominant_freq_hants method=max_raster&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Local Weighted Regression - LWR ====&lt;br /&gt;
&lt;br /&gt;
Another very useful add-on for the reconstruction of gappy time series, such as those from remote sensing imagery, is {{AddonCmd|r.series.lwr}}. This module performs a local weighted regression (LWR) of the input time series of maps in order to estimate missing values and identify (and remove) outliers. See the manual for further information and explanations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# use same list as before&lt;br /&gt;
t.rast.list input=cla order=start_time columns=name -u &amp;gt; map_list.csv&lt;br /&gt;
&lt;br /&gt;
# run r.series.lwr&lt;br /&gt;
r.series.lwr file=map_list.csv suffix=_lwr order=2 weight=tricube range=0.0,65.0 dod=16 fet=0.1 -l&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Estimate Mean Absolute Error (MAE) ====&lt;br /&gt;
&lt;br /&gt;
One of the measures used to assess how close forecasts or predictions might be to the observed values is the&lt;br /&gt;
[https://en.wikipedia.org/wiki/Mean_absolute_error mean absolute error]. We will use it to evaluate the performance of HANTS and LWR. &lt;br /&gt;
&lt;br /&gt;
First, we will rebuild our time series with the corresponding output maps of r.hants and r.series.lwr. Here, only showed for LWR.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# re-build time series &lt;br /&gt;
t.create type=strds temporaltype=absolute output=cla_lwr \&lt;br /&gt;
 title=&amp;quot;LWR output for Chl-a&amp;quot; \&lt;br /&gt;
 description=&amp;quot;MODIS Aqua L3 Chl-a 8-day 4km 2010-2013. Reconstruction with r.series.lwr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# create list with filenames to parse&lt;br /&gt;
g.list type=raster pattern=&amp;quot;*lwr&amp;quot; output=names_list&lt;br /&gt;
&lt;br /&gt;
# parse filenames, convert YYYY-DOY to YYYY-MM-DD and write file to use in t.register&lt;br /&gt;
for mapname in `cat names_list` ; do&lt;br /&gt;
  year_start=`echo ${mapname:1:4}`&lt;br /&gt;
  doy_start=`echo ${mapname:5:3}`&lt;br /&gt;
  year_end=`echo ${mapname:8:4}`&lt;br /&gt;
  doy_end=`echo ${mapname:12:3}`&lt;br /&gt;
  # convert YYYY-DOY to YYYY-MM-DD&lt;br /&gt;
  #BEWARE: leading zeros make bash assume the number is in base 8 system, not base 10!&lt;br /&gt;
  doy_start=`echo &amp;quot;$doy_start&amp;quot; | sed 's/^0*//'`&lt;br /&gt;
  doy_end=`echo &amp;quot;$doy_end&amp;quot; | sed 's/^0*//'`&lt;br /&gt;
  START_DATE=`date -d &amp;quot;${year_start}-01-01 +$(( ${doy_start} - 1 ))days&amp;quot; +%Y-%m-%d`&lt;br /&gt;
  END_DATE=`date -d &amp;quot;${year_end}-01-01 +$(( ${doy_end} ))days&amp;quot; +%Y-%m-%d`&lt;br /&gt;
  # print mapname, start and end date&lt;br /&gt;
  echo &amp;quot;$mapname|$START_DATE|$END_DATE&amp;quot; &amp;gt;&amp;gt; map_list_start_and_end_time.txt&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# register maps in strds&lt;br /&gt;
t.register input=cla_lwr type=raster file=map_list_start_and_end_time.txt&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, we will estimate the MAE and use it to compare both methods. Again, only the example for LWR is showed. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# obtain a strds of the absolute differences between predicted and observed Chl-a values &lt;br /&gt;
t.rast.algebra -n basename=lwr_minus_orig \&lt;br /&gt;
expression=&amp;quot;abs_lwr_minus_orig = abs(cla_lwr - cla)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# sum of the absolute differences (numerator) and count of non-null maps per pixel (denominator) &lt;br /&gt;
t.rast.series input=abs_lwr_minus_orig output=sum_abs_lwr_minus_orig method=sum&lt;br /&gt;
t.rast.series input=abs_lwr_minus_orig output=count_abs_lwr_minus_orig method=count&lt;br /&gt;
&lt;br /&gt;
# MAE for LWR&lt;br /&gt;
r.mapcalc expression=&amp;quot;mae_lwr = sum_abs_lwr_minus_orig / count_abs_lwr_minus_orig&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# remove intermediate strds and maps&lt;br /&gt;
t.remove -rf abs_lwr_minus_orig&lt;br /&gt;
g.remove -f type=raster name=sum_abs_lwr_minus_orig,count_abs_lwr_minus_orig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let's now compare the predictions generated by both methods, HANTS and LWR, and the corresponding mean absolute error maps. &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:cla_vs_cla_hants.png|center|thumb|560px|Original Chl-a time series vs HANTS output.]] || [[Image:cla_vs_cla_lwr.png|center|thumb|560px|Original Chl-a time series vs LWR output.)]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:mae_hants_map.png|center|thumb|560px|MAE of HANTS predictions.]] || [[Image:mae_lwr_map.png|center|thumb|560px|MAE of LWR predictions.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Extract strds values for points in a vector ===&lt;br /&gt;
&lt;br /&gt;
Let's say we need to extract values of the strds to check the behaviour of HANTS at given locations and compare it with the original values, you can graphically do that with g.gui.tplot. But, if you need to take data outside GRASS, say, read it into R and do some other analysis (See [http://grasswiki.osgeo.org/wiki/R_statistics/rgrass7#Reading_in_data R_Statistics wiki page]) you may use {{cmd|v.what.strds}}. This module retrieves raster values from a given strds to the attribute table of a point vector map.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# original data&lt;br /&gt;
v.what.strds --overwrite input=points_cla strds=cla output=points_cla_out&lt;br /&gt;
v.db.select map=points_cla_out file=ts_points_cla.csv&lt;br /&gt;
&lt;br /&gt;
# HANTS' reconstructed data (several runs)&lt;br /&gt;
for i in `seq 1 13` ; do&lt;br /&gt;
    v.what.strds --overwrite input=points_cla strds=cla_hants_${i} output=points_hants_${i}_out&lt;br /&gt;
    v.db.select map=points_cla file=ts_points_hants_${i}.csv&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another option would be to use [https://grass.osgeo.org/grass71/manuals/t.rast.what.html t.rast.what] that samples a space time raster dataset at specific vector point coordinates and write the output to stdout or text file using different layouts. You don't write the vector's attribute table in this case.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.what points=points strds=cla output=cla_points.csv null_value=NA separator=comma&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TODO ===&lt;br /&gt;
&lt;br /&gt;
(add some more)&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
=== Best practice data organization ===&lt;br /&gt;
&lt;br /&gt;
When it come to time series, often thousands of maps are involved. In order to keep control, here some suggestion&lt;br /&gt;
&lt;br /&gt;
* separate original data from derived aggregates: store them in separate mapsets&lt;br /&gt;
* for specific projects, maintain them in individual mapsets. You can access the STDS stored in other mapsets (same location) through&lt;br /&gt;
 t.some.module input=my_strds@the_other_mapset output=result ...&lt;br /&gt;
as long as mapsets are indeed accessible, i.e.: in the mapset's search path (See {{cmd|g.mapsets}}).&lt;br /&gt;
&lt;br /&gt;
=== Best practice multi user management ===&lt;br /&gt;
&lt;br /&gt;
GRASS GIS supports multi-user data management and offers the possibility that several users work in the same location within their own mapsets. Data can be read from other mapsets but not edited there. The same principle applies to space time datasets (STDS), i.e. in case of having a collection of maps corresponding to a time series in a dedicated mapset, you need to also create the STDS therein (See {{cmd|t.create}} and {{cmd|t.register}}), so it is visible to other users in other mapsets when they use {{cmd|t.list}}, for example.&lt;br /&gt;
&lt;br /&gt;
=== Use of ''where'' parameter (from ticket [https://trac.osgeo.org/grass/ticket/2270 #2270]) ===&lt;br /&gt;
&lt;br /&gt;
Pay attention when using the &amp;quot;where&amp;quot; option in t.* modules. In some occasions it may not yield the expected results. Given the backend database chosen for TGRASS implementation, you may not be selecting all maps you think if you forget to set time along with date in the where clause. For example, let's say we need to select maps from 2005-03-01 until 2005-05-31 included. You would think the following command would do the job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.list daily_temp where=&amp;quot;start_time &amp;gt; '2005-03-01' and start_time &amp;lt;= '2005-05-31'&amp;quot; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
but, no... The last map in the list is:&lt;br /&gt;
&lt;br /&gt;
 temp_0516|pruebas|2005-05-30 00:00:00|2005-05-31 00:00:00&lt;br /&gt;
&lt;br /&gt;
which would be equivalent to: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.list daily_temp where=&amp;quot;start_time &amp;gt; '2005-03-01' and start_time &amp;lt; '2005-05-31'&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a product of sqlite. Therefore, if you need the last date included in your selection (map from 2005-05-31 in our example), you need to set time too.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.list daily_temp where=&amp;quot;start_time &amp;gt; '2005-03-01' and start_time &amp;lt;= '2005-05-31 00:00:00'&amp;quot; | tail -n1&lt;br /&gt;
temp_0517|pruebas|2005-05-31 00:00:00|2005-06-01 00:00:00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Aggregation with defined granularity ===&lt;br /&gt;
&lt;br /&gt;
''Q: I need to aggregate a strds with a granularity of 1 year, but shifting the start day one month in each run, i.e.: changing the start_time to 2003-02-01, 2003-03-01, 2003-04-01 and so on... My question is: if i recursively change start_time with the 'where' parameter, will the module t.rast.aggregate &amp;quot;aggregate&amp;quot; to the next february, march, april (what i'd wish) or just till the end of 2003?''&lt;br /&gt;
&lt;br /&gt;
A: If you specify a granularity of a year, then the start time to perform the aggregation will always be shifted to the 1st January of the current year and the end time the 1st January of the next year (eg. 2002-01-01 - 2003-01-01).  If you wish to aggregate a full year but shifting one month forward then simply use a granularity of 12 months.&lt;br /&gt;
&lt;br /&gt;
=== Listing maps with specific start month ===&lt;br /&gt;
&lt;br /&gt;
''Q: I have a strds with 506 maps that correspond to 8-day composite products. I need to sequentially list all maps which &amp;quot;start_month&amp;quot; is January, February and so on... to use them as input in {{cmd|r.series}} (or {{cmd|t.rast.series}}). How can I achieve that?''&lt;br /&gt;
&lt;br /&gt;
A: You can use the [https://www.sqlite.org/lang_datefunc.html datetime functionality of SQLite] to perform this task, this should work for January:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.list input=cla_null_mayor65 \&lt;br /&gt;
where='start_time &amp;gt;= datetime(start_time, &amp;quot;start of year&amp;quot;) and start_time &amp;lt;= datetime(start_time, &amp;quot;start of year&amp;quot;, &amp;quot;1 month&amp;quot;)'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Aggregation of seasonal data ===&lt;br /&gt;
&lt;br /&gt;
''Q: How can I calculate average seasonal temperature starting from a daily temperatures temporal dataset?''&lt;br /&gt;
&lt;br /&gt;
A: Use {{cmd|t.rast.aggregate.ds}}, the input is the daily strds, the sampling stds should have seasonal intervals. Then use average as method. The output will have seasonal aggregated temperatures. For a detailed workflow see: [https://grasswiki.osgeo.org/wiki/Temporal_data_processing/seasonal_aggregation seasonal aggregation example].&lt;br /&gt;
&lt;br /&gt;
=== Aggregation of seasonal data using time ranges ===&lt;br /&gt;
&lt;br /&gt;
A way to aggregate seasons from daily data without granularity but by using time ranges is shown here. The issue is to include for the season calculation also a month from the previous year. This can be addressed by some datetime calculations in SQLite:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# We assume to have daily temperature data in DB &amp;quot;temp_daily_average&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# loop over seasons, generate aggregates:&lt;br /&gt;
### 'start_time' and 'end_time' are columns in TGRASS&lt;br /&gt;
&lt;br /&gt;
for year in `seq 2004 2014` ; do&lt;br /&gt;
&lt;br /&gt;
    # we consider also a month of the previous year&lt;br /&gt;
    for month in &amp;quot;12 01 02&amp;quot; &amp;quot;03 04 05&amp;quot; &amp;quot;06 07 08&amp;quot; &amp;quot;09 10 11&amp;quot; ; do&lt;br /&gt;
        set -- $month ; echo $1 $2 $3&lt;br /&gt;
&lt;br /&gt;
        prevyear=$year&lt;br /&gt;
        if [ $1 -eq 12 ] ; then&lt;br /&gt;
           prevyear=`expr $year - 1`&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
        # prepare query strings in SQLite&lt;br /&gt;
        MYSTART=`echo &amp;quot;SELECT strftime(datetime('${prevyear}-${1}-01'));&amp;quot; | sqlite3`&lt;br /&gt;
        MYEND=`echo &amp;quot;SELECT strftime(datetime('${prevyear}-${1}-01','+3 month'));&amp;quot; | sqlite3`&lt;br /&gt;
&lt;br /&gt;
        # Debugging only, to see what it does:&lt;br /&gt;
        echo &amp;quot;---- Querying ${prevyear}-${1}-01 ... ${year}-${3}-end:&amp;quot;&lt;br /&gt;
        # we use start_time and end_time to get the proper time range&lt;br /&gt;
        t.rast.list input=temp_daily_average@modis_lst_reconstructed_europe_daily \&lt;br /&gt;
        where=&amp;quot;start_time &amp;gt;= '$MYSTART' AND end_time &amp;lt;= '$MYEND'&amp;quot; &amp;gt; list_${prevyear}_${1}_${3}.csv&lt;br /&gt;
	&lt;br /&gt;
        head -n 3 list_${prevyear}_${1}_${3}.csv&lt;br /&gt;
        echo &amp;quot;...&amp;quot;&lt;br /&gt;
        tail -n 3 list_${prevyear}_${1}_${3}.csv&lt;br /&gt;
        echo &amp;quot;=======&amp;quot;&lt;br /&gt;
        rm -f list_${prevyear}_${1}_${3}.csv&lt;br /&gt;
        &lt;br /&gt;
        # calculate aggregates:&lt;br /&gt;
        method=&amp;quot;average&amp;quot;   # median mode minimum maximum stddev&lt;br /&gt;
        &lt;br /&gt;
        t.rast.series input=temp_daily_average@modis_lst_reconstructed_europe_daily \&lt;br /&gt;
        where=&amp;quot;start_time &amp;gt;= '$MYSTART' AND end_time &amp;lt;= '$MYEND'&amp;quot; \&lt;br /&gt;
        output=temp_${method}_${prevyear}_${1}&lt;br /&gt;
    done&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Much simpler '''alternative''' (which runs in parallel on multi-cores):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.aggregate input=A output=B basename=b where=&amp;quot;start_time &amp;gt;= '2004-03-01 00:00:00'&amp;quot; granularity=&amp;quot;3 months&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Online tutorials and courses ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.geostat-course.org/Topic_Gebbert The temporal GRASS GIS framework: Introduction and application] by Sören Gebbert (2012)&lt;br /&gt;
* [http://fatra.cnr.ncsu.edu/temporal-grass-workshop/ Spatio-temporal data handling and visualization in GRASS GIS] - FOSS4G 2014 workshop by Vaclav Petras, Anna Petrasova, Helena Mitasova, Markus Neteler (2014)&lt;br /&gt;
* [http://www.openniche.org/processing-era-interim-dataset-in-ncdf-using-gdal-and-grass-gis/ Processing ERA-Interim dataset in netcdf using GDAL and GRASS GIS] by Sajid Pareeth (2015)&lt;br /&gt;
* CZ: [http://training.gismentors.eu/grass-gis-pokrocily/tgrass/index.html Úvod do časoprostorových analýz] (Introduction to space-time analysis) by Martin Landa (2015)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* Gebbert, S., Pebesma, E. 2014. ''TGRASS: A temporal GIS for field based environmental modeling''. Environmental Modelling &amp;amp; Software 53, 1-12 ([http://dx.doi.org/10.1016/j.envsoft.2013.11.001 DOI]) - [http://ifgi.uni-muenster.de/~epebe_01/tgrass.pdf preprint PDF]&lt;br /&gt;
* Gebbert, S., Pebesma, E. 2017. ''The GRASS GIS temporal framework''. International Journal of Geographical Information Science 31, 1273-1292 ([http://dx.doi.org/10.1080/13658816.2017.1306862 DOI])&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* Introduction: [http://www.slideshare.net/Luis_de_Sousa/presentation-soeren GRASS as a Temporal GIS] by Sören Gebbert (slides)&lt;br /&gt;
* [https://archive.org/details/TheTemporalGrassGisFrameworkIntroductionAndApplication# The temporal GRASS GIS framework: Introduction and application] Video of Sören Gebbert's presentation in [http://www.geostat-course.org/Muenster_2012 GEOSTAT course] 2012&lt;br /&gt;
* [http://grass.osgeo.org/grass72/manuals/temporalintro.html Introduction to temporal modules] (GRASS GIS manual)&lt;br /&gt;
* [http://grass.osgeo.org/grass72/manuals/temporal.html Available temporal modules] (GRASS GIS manual)&lt;br /&gt;
* [http://trac.osgeo.org/grass/wiki/Grass7/TemporalExtension Temporal Extension] (background info in trac)&lt;br /&gt;
* [[GRASS GSoC 2013 Temporal GIS Algebra for raster and vector data in GRASS]]&lt;br /&gt;
&lt;br /&gt;
[[Category: Documentation]]&lt;br /&gt;
[[Category: Tutorial]]&lt;br /&gt;
[[Category: Temporal]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Temporal_data_processing&amp;diff=24798</id>
		<title>Temporal data processing</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Temporal_data_processing&amp;diff=24798"/>
		<updated>2017-10-20T17:40:47Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: /* Aggregation */  s/sampling=start/sampling=starts/&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
TGRASS is the temporal enabled GRASS GIS. It is available from [http://grass.osgeo.org/grass7/ GRASS GIS 7] onwards.&lt;br /&gt;
TGRASS is completely metadata based, i.e. it does not change any data but simply handles the organization of raster, vector, raster3D maps actually stored in a GRASS GIS mapset by registering in an additional internal database. This is done specifically for managing temporal and spatial extent including temporal topology.&lt;br /&gt;
&lt;br /&gt;
Manual overview: https://grass.osgeo.org/grass72/manuals/temporalintro.html&lt;br /&gt;
&lt;br /&gt;
== Terminology Overview ==&lt;br /&gt;
&lt;br /&gt;
* Space time raster datasets ('''strds''') are designed to manage raster map time series. Modules that process strds have the naming prefix ''t.rast''.&lt;br /&gt;
* Space time 3D raster datasets ('''str3ds''') are designed to manage 3D raster map time series. Modules that process str3ds have the naming prefix ''t.rast3d''.&lt;br /&gt;
* Space time vector datasets ('''stvds''') are designed to manage vector map time series. Modules that process stvds have the naming prefix ''t.vect''.&lt;br /&gt;
&lt;br /&gt;
== Workflow overview ==&lt;br /&gt;
&lt;br /&gt;
# create an empty space time datasets: strds, str3ds, or stvds ({{cmd|t.create}})&lt;br /&gt;
# register the GRASS GIS maps ({{cmd|t.register}})&lt;br /&gt;
# check the generated space time datasets ({{cmd|t.list}}, {{cmd|t.info}})&lt;br /&gt;
# do your analysis: {{cmd|t.rast.aggregate}}, {{cmd|t.info}}, {{cmd|t.rast.univar}}, {{cmd|t.vect.univar}}, ... so many more!&lt;br /&gt;
&lt;br /&gt;
== Example workflow for a Chlorophyll-a MODIS time series ==&lt;br /&gt;
&lt;br /&gt;
The following examples are based on a series of MODIS L3 Chlorophyll-a product that is freely available at the [http://oceancolor.gsfc.nasa.gov/cgi/l3?sen=A&amp;amp;per=MO&amp;amp;prd=CHL_chlor_a ocean color] site. So, say we download the SMI 8-day composite product at 4.6 km resolution for the period 2003-2013. That is a 506 set of images, 46 per year. Data comes as compressed HDF4 files. Chlorophyll products filenames look like this: &lt;br /&gt;
&lt;br /&gt;
A20030012003008.L3m_8D_CHL_chlor_a_4km&lt;br /&gt;
&lt;br /&gt;
  A: MODIS/Aqua&lt;br /&gt;
  2003: Year at start&lt;br /&gt;
  001: Julian day at start&lt;br /&gt;
  2003: Year at end&lt;br /&gt;
  008: Julian day at end&lt;br /&gt;
  L3m: Level 3 data, mapped (Projection: Plate carrée)&lt;br /&gt;
  8D: 8 day composition&lt;br /&gt;
  CHL: Chlorophyll a concentration product&lt;br /&gt;
  chlor_a: algorithm used 10^(a0 + a1*X + a2*X^2 + a3*X^3 + a4*X^4) &lt;br /&gt;
  4km: 4.6km pixel size (8640x4320 image, 2.5 minute resolution)&lt;br /&gt;
&lt;br /&gt;
We now decompress files and check metadata &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# Go to where the data is and decompress&lt;br /&gt;
  find -iname '*.bz2' -exec bzip2 -d {} \; &lt;br /&gt;
# Check file meta-data (GDAL utilities)&lt;br /&gt;
  gdalinfo A20030012003008.L3m_8D_CHL_chlor_a_4km&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next step is to import all 506 images into GRASS. You can use {{cmd|r.in.gdal}} or {{cmd|r.external}} for that.&lt;br /&gt;
Note that global Cl-a images as downloaded from [http://oceancolor.gsfc.nasa.gov/cgi/l3?sen=A&amp;amp;per=MO&amp;amp;prd=CHL_chlor_a ocean color] site are ~150 mb each (disk space issues!). Here, 3 different options:&lt;br /&gt;
&lt;br /&gt;
* import global images (506 images, 150 Mb each) with r.in.gdal, resize to study area and remove global files&lt;br /&gt;
* set projection and extension, and resize to study area with gdal_translate, and import already resized images with r.in.gdal&lt;br /&gt;
* import global images (506 images, 150 Mb each) with r.external, resize to study area and remove global files, as showed next:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# define region extension&lt;br /&gt;
g.region -p n=-38 s=-55 w=-70 e=-56&lt;br /&gt;
&lt;br /&gt;
suffix=_tmp&lt;br /&gt;
for map in *chlor* ; do&lt;br /&gt;
    r.external input=$map output=${map}${suffix} -o&lt;br /&gt;
    r.mapcalc expression=&amp;quot;$map = ${map}${suffix}&amp;quot;&lt;br /&gt;
    g.remove type=raster name=${map}${suffix}&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Once we have maps inside GRASS we can start the temporal processing. If this is the first time you'll use temporal modules, &lt;br /&gt;
you need to run &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.connect -d &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to set the default temporal GIS database connection for the current mapset. The default TGIS database of type ''sqlite3'' is located in the PERMANENT mapset directory. Temporal GIS content from all created mapsets will be stored there.&lt;br /&gt;
&lt;br /&gt;
=== Creating a STRDS and registering maps ===&lt;br /&gt;
&lt;br /&gt;
'''Creating a STRDS'''&lt;br /&gt;
&lt;br /&gt;
First step is to '''create a space time dataset''' by means of {{cmd|t.create}}. As an example, let us create a strds for the Chlorophyll-a (Cl-a) time series. We need to define the name and semantic type of the new space time dataset, its title and a description. By default a raster dataset is created with absolute time (Gregorian calendar). We can change that according to our needs with type and temporaltype options.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.create type=strds temporaltype=absolute output=cla title=&amp;quot;Chlorophyll-a concentration&amp;quot; \&lt;br /&gt;
description=&amp;quot;MODIS L3 Chlorophyll-a concentration for Argentinian sea&amp;quot; semantictype=mean&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Registering maps'''&lt;br /&gt;
&lt;br /&gt;
Then, we '''register the maps''' in the strds using {{cmd|t.register}}. This module assigns time stamps to raster, 3D raster and vector maps and register them into space time datasets. Existing timestamps can be read and used by t.register. Note that this is a metadata based registration, nothing is imported into GRASS GIS since the maps are already present in the location (hence, no duplication occurs).&lt;br /&gt;
&lt;br /&gt;
This module (and TGRASS in general) supports '''absolute time''' and '''relative time'''. The ''absolute'' temporal type refers to a fixed date or interval in the Gregorian calendar, while the ''relative'' temporal type refers to data without fixed time stamps (e.g., sequential maps used to calculate multi-decadal averages). Refer to the [http://www.geostat-course.org/system/files/Presentation_0.pdf TGRASS overview slides] for background.&lt;br /&gt;
&lt;br /&gt;
Maps can be registered by command line argument (a list of comma separated map names) or using an input file. The start time, end time and a temporal increment can be provided either by command line or in the input file. End time and increment are mutual exclusive. Maps can be registered in several space time datasets using the same timestamp. For a more detailed explanation and examples on how to register maps in stds, see also [https://grasswiki.osgeo.org/wiki/Temporal_data_processing/maps_registration maps registration] wiki. &lt;br /&gt;
&lt;br /&gt;
Start time and end time with absolute time must be provided using the format yyyy-mm-dd HH:MM:SS +HHMM. It is also supported to specify the date yyyy-mm-dd only. In case of relative time the temporal unit (years, months, days, hours, minutes or seconds) must be provided. The relative start time, end time and the increment are integers (see also {{cmd|t.register}}).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# note: with -i we create intervals (start and end time), for the given increment, and starting from start.&lt;br /&gt;
t.register -i type=raster input=cla maps=`g.list raster pattern=&amp;quot;*_chlor_*&amp;quot; separator=comma` \&lt;br /&gt;
start=&amp;quot;2003-01-01&amp;quot; increment=&amp;quot;8 days&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Dealing with weekly data'''&lt;br /&gt;
&lt;br /&gt;
While the former would have been the simplest solution, our 8-day products have a problem: in this example the last image of each year is not a product of an 8-day composition, but 4 or 5-day. Then, when using the increment parameter, dates (and consequently, intervals) are not set properly.&lt;br /&gt;
The solution is to create a list of maps, with their respective start and end date. As the filenames contain information regarding year and DOY (day of year), we can use the following Python script to '''read filenames and transform DOY to calendar dates''' (Thanks Soeren!). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# Script to extract the input table for t.register from map names&lt;br /&gt;
# run in python&lt;br /&gt;
# modify to your needs&lt;br /&gt;
&lt;br /&gt;
from os import walk&lt;br /&gt;
f = []&lt;br /&gt;
for (dirpath, dirnames, filenames) in walk(&amp;quot;/path/to/the/maps&amp;quot;):&lt;br /&gt;
    f.extend(filenames)&lt;br /&gt;
    break&lt;br /&gt;
# to order the list    &lt;br /&gt;
f.sort() &lt;br /&gt;
&lt;br /&gt;
input_list=[]&lt;br /&gt;
&lt;br /&gt;
import datetime&lt;br /&gt;
for map_name in f:&lt;br /&gt;
  start_year = int(map_name[1:5])&lt;br /&gt;
  start_day  = int(map_name[5:8])&lt;br /&gt;
  end_year   = int(map_name[8:12])&lt;br /&gt;
  end_day    = int(map_name[12:15])&lt;br /&gt;
  start = datetime.datetime(start_year, 1, 1) + datetime.timedelta(start_day - 1)&lt;br /&gt;
  end = datetime.datetime(int(end_year), 1, 1) + datetime.timedelta(end_day)&lt;br /&gt;
  map_list = map_name + '|' + str(start) + '|' + str(end)&lt;br /&gt;
  print map_list&lt;br /&gt;
  input_list.append(map_list)&lt;br /&gt;
&lt;br /&gt;
print input_list&lt;br /&gt;
&lt;br /&gt;
txt = '\n' .join(input_list)&lt;br /&gt;
f = open(&amp;quot;input_list_cla.txt&amp;quot;,&amp;quot;w&amp;quot;)&lt;br /&gt;
f.write(txt)&lt;br /&gt;
f.close()&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using the number of characters in the filenames and datetime library in Python, you can convert DOY in the filenames into start_time and end_time as in the list you need to pass to {{cmd|t.register}}. The resulting list &lt;br /&gt;
looks like this:&lt;br /&gt;
&lt;br /&gt;
  A20030012003008.L3m_8D_CHL_chlor_a_4km_arg|2003-01-01 00:00:00|2003-01-09 00:00:00&lt;br /&gt;
  A20030092003016.L3m_8D_CHL_chlor_a_4km_arg|2003-01-09 00:00:00|2003-01-17 00:00:00&lt;br /&gt;
  A20030172003024.L3m_8D_CHL_chlor_a_4km_arg|2003-01-17 00:00:00|2003-01-25 00:00:00&lt;br /&gt;
  ...&lt;br /&gt;
  A20133452013352.L3m_8D_CHL_chlor_a_4km_arg|2013-12-11 00:00:00|2013-12-19 00:00:00&lt;br /&gt;
  A20133532013360.L3m_8D_CHL_chlor_a_4km_arg|2013-12-19 00:00:00|2013-12-27 00:00:00&lt;br /&gt;
  A20133612013365.L3m_8D_CHL_chlor_a_4km_arg|2013-12-27 00:00:00|2014-01-01 00:00:00&lt;br /&gt;
&lt;br /&gt;
and then, the command would be:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.register --o type=raster input=cla file=input_list_cla.txt&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As we are providing start and end time along with map names, we don't need to use the -i flag, neither set start nor increment options because that information is all there in the file. &lt;br /&gt;
&lt;br /&gt;
'''Assign a color table'''&lt;br /&gt;
&lt;br /&gt;
We can also set a color table for all maps in the strds with {{cmd|t.rast.colors}}: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# using a predetermined color table&lt;br /&gt;
t.rast.colors input=cla color=bcyr&lt;br /&gt;
#using your dedicated color table&lt;br /&gt;
t.rast.colors input=cla rules=path/to/your/color_table&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Getting some basic info and statistics ===&lt;br /&gt;
&lt;br /&gt;
We now check the space time data sets we have in our mapset with {{cmd|t.list}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.list type=strds&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
and get information about our recently created strds. See {{cmd|t.info}} for additional uses.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.info type=strds input=cla &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  +-------------------- Space Time Raster Dataset -----------------------------+&lt;br /&gt;
  |                                                                            |&lt;br /&gt;
  +-------------------- Basic information -------------------------------------+&lt;br /&gt;
  | Id: ........................ cla@clorofila&lt;br /&gt;
  | Name: ...................... cla&lt;br /&gt;
  | Mapset: .................... clorofila&lt;br /&gt;
  | Creator: ................... veroandreo&lt;br /&gt;
  | Temporal type: ............. absolute&lt;br /&gt;
  | Creation time: ............. 2014-04-29 14:23:00.579342&lt;br /&gt;
  | Modification time:.......... 2014-05-12 09:15:08.917309&lt;br /&gt;
  | Semantic type:.............. mean&lt;br /&gt;
  +-------------------- Absolute time -----------------------------------------+&lt;br /&gt;
  | Start time:................. 2003-01-01 00:00:00&lt;br /&gt;
  | End time:................... 2014-01-01 00:00:00&lt;br /&gt;
  | Granularity:................ 1 day&lt;br /&gt;
  | Temporal type of maps:...... interval&lt;br /&gt;
  +-------------------- Spatial extent ----------------------------------------+&lt;br /&gt;
  | North:...................... -38.0&lt;br /&gt;
  | South:...................... -55.0&lt;br /&gt;
  | East:.. .................... -55.0&lt;br /&gt;
  | West:....................... -70.0&lt;br /&gt;
  | Top:........................ 0.0&lt;br /&gt;
  | Bottom:..................... 0.0&lt;br /&gt;
  +-------------------- Metadata information ----------------------------------+&lt;br /&gt;
  | Raster register table:...... raster_map_register_91ba57d5f0924f4fa0bd7176a1b39b2f&lt;br /&gt;
  | North-South resolution min:. 0.041667&lt;br /&gt;
  | North-South resolution max:. 0.041667&lt;br /&gt;
  | East-west resolution min:... 0.041667&lt;br /&gt;
  | East-west resolution max:... 0.041667&lt;br /&gt;
  | Minimum value min:.......... 0.02925&lt;br /&gt;
  | Minimum value max:.......... 0.26472&lt;br /&gt;
  | Maximum value min:.......... 5.2104&lt;br /&gt;
  | Maximum value max:.......... 99.953934&lt;br /&gt;
  | Aggregation type:........... None&lt;br /&gt;
  | Number of registered maps:.. 506&lt;br /&gt;
  |&lt;br /&gt;
  | Title:&lt;br /&gt;
  | Chlorophyll-a&lt;br /&gt;
  | Description:&lt;br /&gt;
  | Concentracion de Clorofila a&lt;br /&gt;
  | Command history:&lt;br /&gt;
  | # 2014-04-29 14:23:00 &lt;br /&gt;
  | t.create type=&amp;quot;strds&amp;quot; temporaltype=&amp;quot;absolute&amp;quot;&lt;br /&gt;
  |     output=&amp;quot;cla&amp;quot; title=&amp;quot;Chlorophyll-a&amp;quot;&lt;br /&gt;
  |     description=&amp;quot;Concentracion de Clorofila a&amp;quot; --o&lt;br /&gt;
  | # 2014-04-29 14:23:23 &lt;br /&gt;
  | t.register --o type=&amp;quot;rast&amp;quot; input=&amp;quot;cla&amp;quot;&lt;br /&gt;
  |     file=&amp;quot;map_list&amp;quot;&lt;br /&gt;
  | &lt;br /&gt;
  +----------------------------------------------------------------------------+&lt;br /&gt;
&lt;br /&gt;
Now, we get univariate statistics from the non-null cells for each registered raster map of the strds. For that matter we use {{cmd|t.rast.univar}} which, by default, returns the name of the map, the start and end date of dataset and the following values: ''mean, minimum and maximum vale, mean_of_abs, standard deviation, variance, coeff_var, number of null cells, total number of cell''.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.univar input=cla&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Or, you can send the output to a text file using&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.univar input=cla separator=comma output=stats_cla.csv&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This file &amp;quot;stats_cla.csv&amp;quot; you can now open in a spreadsheet or statistical software for inspection and plotting.&lt;br /&gt;
&lt;br /&gt;
=== Listing maps and selections ===&lt;br /&gt;
&lt;br /&gt;
The module {{cmd|t.rast.list}} allows you to list registered maps of a strds and provides several options to get the list of maps that you want. For example, you can select different granules and also perform different queries by means of the where parameter. Some examples are:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.list input=cla method=gran granule=&amp;quot;1 month&amp;quot;&lt;br /&gt;
# this will give one image every one month, 3 months, 1 year, or the granule you choose&lt;br /&gt;
&lt;br /&gt;
t.rast.list input=cla order=min columns=id,name,start_time,min where=&amp;quot;min &amp;lt;= '0.05'&amp;quot; &lt;br /&gt;
# this will order by minimum value all the maps in the strds that have a minimum value lower than or equal to 0.05&lt;br /&gt;
&lt;br /&gt;
t.rast.list input=cla order=max columns=name,start_time,max where=&amp;quot;max &amp;gt; '10.0'&amp;quot;&lt;br /&gt;
# maps ordered by maximum value in which maximum value is higher than 10.&lt;br /&gt;
&lt;br /&gt;
t.rast.list input=cla where=&amp;quot;start_time &amp;gt;= '2003-01' and start_time &amp;lt;= '2003-06'&amp;quot; &lt;br /&gt;
# all the maps in the first 6 month of the time series&lt;br /&gt;
&lt;br /&gt;
t.rast.list input=cla where=&amp;quot;strftime('%m', start_time)='01'&amp;quot;&lt;br /&gt;
# all the maps from January&lt;br /&gt;
&lt;br /&gt;
t.rast.list input=cla where=&amp;quot;strftime('%m-%d', start_time)='01-01'&amp;quot;&lt;br /&gt;
# all the maps from January, 1st&lt;br /&gt;
&lt;br /&gt;
t.rast.list input=cla where=&amp;quot;strftime('%w', start_time)='1'&amp;quot;&lt;br /&gt;
# all Mondays in the time series (Sunday is 0)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you have monthly (instead of 8-day products) data and you want to list all January maps, then you can do:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.list input=cla_orig where=&amp;quot;start_time=datetime(start_time, 'start of year', ' 0 month')&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Note: '''Do not forget to use single quotes around date''', neither in {{cmd|t.rast.list}} nor in any other of the t.* modules offering the ''where'' option, because the clause will be ignored (i.e.: no selection performed) and no warning nor error will be printed.&lt;br /&gt;
&lt;br /&gt;
=== Visualization ===&lt;br /&gt;
&lt;br /&gt;
There are different visualization options for strds.&lt;br /&gt;
&lt;br /&gt;
* {{cmd|g.gui.timeline}} allows to compare temporal datasets by displaying their temporal extents in a plot.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# only temporal extent&lt;br /&gt;
g.gui.timeline inputs=cla&lt;br /&gt;
# temporal and spatio-temporal extent&lt;br /&gt;
g.gui.timeline -3 inputs=cla&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Cla strds.png|center|thumb|560px|Temporal and spatio-temporal extent of cla strds.]]&lt;br /&gt;
&lt;br /&gt;
* {{cmd|g.gui.tplot}} allows to see the values of one or more temporal datasets for a queried point defined by a coordinate pair.&lt;br /&gt;
&lt;br /&gt;
Steps to use this module are:&lt;br /&gt;
&lt;br /&gt;
# Select strds&lt;br /&gt;
# Select pair of coordinates (east,north) or point in the map&lt;br /&gt;
# Hit Draw&lt;br /&gt;
# Customize plot as desired&lt;br /&gt;
# Save&lt;br /&gt;
&lt;br /&gt;
[[Image:Output gguitplot.png|center|thumb|800px|Time series plot (Chlorophyll vs Time) for a certain coordinate pair in the study area]]&lt;br /&gt;
&lt;br /&gt;
* {{cmd|g.gui.animation}} is the tool for animating a series of raster and vector maps or a space time raster or vector dataset.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
g.gui.animation strds=cla_monthly_average&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:Grass70 temporal chlorophyll anim small.gif|framed|center|Monthly mean chlorophyll-a concentration]]&lt;br /&gt;
&lt;br /&gt;
=== Aggregation ===&lt;br /&gt;
&lt;br /&gt;
For aggregations of data with different methods and different granularities, there are two very useful commands: &lt;br /&gt;
&lt;br /&gt;
* {{cmd|t.rast.series}} that performs different aggregation algorithms from r.series on all or a subset of raster maps in a strds, and &lt;br /&gt;
&lt;br /&gt;
* {{cmd|t.rast.aggregate}} that temporally aggregates the maps in a strds by a user defined granularity.&lt;br /&gt;
&lt;br /&gt;
With these modules it is very simple to get maps of basic statistical parameters for different temporal granules, and this permits the analysis of the spatio-temporal variability of the variable of interest.&lt;br /&gt;
&lt;br /&gt;
Some examples:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# yearly aggregation&lt;br /&gt;
t.rast.aggregate input=cla output=cla_yearly_average basename=cla_yearly_average \&lt;br /&gt;
  granularity=&amp;quot;1 years&amp;quot; method=average sampling=starts suffix=gran&lt;br /&gt;
&lt;br /&gt;
# yearly aggregation with corresponding methods (output: 7 strds with 11 maps each)&lt;br /&gt;
for method in average median mode minimum maximum stddev range ; do&lt;br /&gt;
    t.rast.aggregate input=cla output=cla_yearly_${method} \&lt;br /&gt;
    basename=cla_yearly_${method} granularity=&amp;quot;1 years&amp;quot; \&lt;br /&gt;
    method=${method} sampling=start suffix=gran&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
With the where parameter, as exemplified before, we can select for example all 8-day products which start_time is 01 (January) over the years. Like this we can get the so-known climatologies. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.series input=cla method=average where=&amp;quot;strftime('%m', start_time)='01'&amp;quot; output=january_average&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Generalizing a bit, we can: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# monthly climatologies&lt;br /&gt;
for i in 01 02 03 04 05 06 07 08 09 10 11 12 ; do &lt;br /&gt;
  for m in average median stddev minimum maximum ; do &lt;br /&gt;
    t.rast.series input=cla method=${m} where=&amp;quot;strftime('%m', start_time)='${i}'&amp;quot; output=${m}_${i}&lt;br /&gt;
  done&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# seasonal climatologies&lt;br /&gt;
for i in &amp;quot;01 02 03&amp;quot; &amp;quot;04 05 06&amp;quot; &amp;quot;07 08 09&amp;quot; &amp;quot;10 11 12&amp;quot; ; do&lt;br /&gt;
    set -- $i ; echo $1 $2 $3&lt;br /&gt;
    for m in average median stddev minimum maximum ; do&lt;br /&gt;
        t.rast.series input=cla method=${m} output=${m}_${1} \&lt;br /&gt;
        where=&amp;quot;strftime('%m',start_time)='&amp;quot;${1}&amp;quot;' or strftime('%m',start_time)='&amp;quot;${2}&amp;quot;' or strftime('%m', start_time)='&amp;quot;${3}&amp;quot;'&amp;quot;                      &lt;br /&gt;
    done&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using the climatologies previously obtained, we'll now estimate monthly anomalies in the mean, max and min Cl-a concentration. First, we need to monthly aggregate data, and then do the difference between the monthly climatology and each respective monthly aggregate. We'll do the aggregation for the average, minimum and maximum of Cl-a concentration (from 506 input maps in cla strds, we'll get 132 maps in each monthly aggregated new strds).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# monthly aggregates (132 maps)&lt;br /&gt;
&lt;br /&gt;
for method in average minimum maximum ; do&lt;br /&gt;
    t.rast.aggregate input=cla output=cla_monthly_${method} basename=cla_monthly_${method} \&lt;br /&gt;
    granularity=&amp;quot;1 months&amp;quot; method=${method} sampling=contains suffix=gran&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# January anomalies in mean, min and max Cl-a&lt;br /&gt;
&lt;br /&gt;
t.rast.list -s input=cla_monthly_average where=&amp;quot;start_time=datetime(start_time, 'start of year', '0 month')&amp;quot; columns=name&lt;br /&gt;
&lt;br /&gt;
for m in average minimum maximum ; do &lt;br /&gt;
    for i in 1 13 25 37 49 61 73 85 97 109 121 ; do # these numbers correspond to all january monthly aggregates&lt;br /&gt;
        r.mapcalc expression=&amp;quot;Jan_${m}_anomaly_${i}=cla_monthly_${m}_${i}-01_${m}&amp;quot; &lt;br /&gt;
    done&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also use {{cmd|t.rast.list}} for looping, the same way you use {{cmd|g.list}}:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for map in `t.rast.list -s input=cla_monthly_average where=&amp;quot;strftime('%m', start_time)='01'&amp;quot; columns=name` ; do&lt;br /&gt;
    r.mapcalc expression=&amp;quot;anomaly_${map}=${map}-01_average&amp;quot; &lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Generalizing, we can estimate all monthly anomalies from mean like this:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for i in `seq -w 1 12` ; do&lt;br /&gt;
    for map in `t.rast.list -s input=cla_monthly_average columns=name where=&amp;quot;strftime('%m', start_time)='&amp;quot;${i}&amp;quot;'&amp;quot;` ; do&lt;br /&gt;
        r.mapcalc expression=&amp;quot;anomaly_${map}=${map}-average_${i}&amp;quot;&lt;br /&gt;
    done&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Say we now need to know the date of the maximum value of Cl-a concentration over all the study period and/or on a yearly basis:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# map index for the overall maximum Cl-a value &lt;br /&gt;
t.rast.series input=cla method=max_raster output=cla_max_index&lt;br /&gt;
&lt;br /&gt;
# map index for the yearly maximum Cl-a value &lt;br /&gt;
t.rast.aggregate input=cla granularity=&amp;quot;1 year&amp;quot; method=max_raster output=yearly_max_index basename=yearly_max_index suffix=gran&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The outputs show (pixelwise) the map index in which the maximum value of Cl-a occurs (from 1 to 506 and from 1 to 46, for the whole time series and on a yearly basis, respectively). For relative time this is maybe enough, but you may then want to reclassify data to get DOY, for example. In that case, you may use {{cmd|r.reclass}}.&lt;br /&gt;
&lt;br /&gt;
If you already have monthly data, you can get climatologies quite simply as follows:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# January averages&lt;br /&gt;
t.rast.series input=cla_monthly method=average where=&amp;quot;start_time=datetime(start_time, 'start of year', '0 month')&amp;quot; output=jan_average&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Spatio-temporal algebra with STRDS ===&lt;br /&gt;
&lt;br /&gt;
The module {{cmd|t.rast.mapcalc}} allows us to perform spatio-temporal mapcalc expressions on temporally sampled maps of strds. There are spatial and temporal operators available for the &amp;quot;expression&amp;quot; string. Spatial operators, functions and internal variables are those used in {{cmd|r.mapcalc}}. Temporal internal variables supported for both relative and absolute time include: td(), start_time() and end_time(). There are also several very useful internal variables supported especially for absolute time of the current sample interval or instance, e.g.: start_doy(), start_year(), start_month() and so on (see {{cmd|t.rast.mapcalc}} manual site for further details and examples).&lt;br /&gt;
&lt;br /&gt;
Some examples now. Say we did some analysis and decided that we will only consider values higher than 0.05. Then, we need to set all values below that threshold to null.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.mapcalc input=cla expression=&amp;quot;if(cla &amp;lt; 0.05, null(), cla)&amp;quot; output=cla_corrected  basename=cla_corrected&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or we may also want to take negative erroneous values to the knowm minimum of the strds, so:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.series input=cla method=minimum output=min_cla&lt;br /&gt;
t.rast.mapcalc input=cla expression=&amp;quot;if(cla &amp;lt; 0.0, min_cla, cla)&amp;quot; output=cla_corrected  basename=cla_corrected&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We may also need to reclassify all maps in the strds according to a certain threshold, e.g.: a certain level of Cl-a that indicates bloom conditions, in order to get bloom frequency afterwards:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# reclassify&lt;br /&gt;
t.rast.mapcalc -n input=cla output=cla_bloom basename=cla_bloom expression=&amp;quot;if(cla &amp;gt; 0.75, 1, null())&amp;quot;&lt;br /&gt;
# bloom frequency&lt;br /&gt;
t.rast.series input=cla_bloom output=bloom_freq method=count&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Do you remember we wanted to get the DOY of maximum Cl-a value before? Well, here's another way of doing it... &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# overall maximum value&lt;br /&gt;
t.rast.series input=cla method=maximum output=max_cla&lt;br /&gt;
# new strds with DOY of overall maximum &lt;br /&gt;
t.rast.mapcalc -n inputs=cla output=date_max_cla expression=&amp;quot;if(cla == max_cla,start_doy(),null())&amp;quot; basename=date_max_cla &lt;br /&gt;
# map with DOY of overall maximum&lt;br /&gt;
t.rast.series input=date_max_cla method=maximum output=max_cla_date&lt;br /&gt;
# remove date_max_cla strds (we were only interested in the resulting aggregated map)&lt;br /&gt;
t.remove -rf inputs=date_max_cla &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the development version of GRASS GIS, there's also a {{cmd|t.rast.algebra}} module that allows for temporal and spatial operations on strds by means of temporal raster algebra. The module expects an expression as input parameter in the following form: &amp;quot;result = expression&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The statement structure is similar to r.mapcalc, the result is the name of a new strds that will contain the result of the calculation given as expression. Expressions can be any valid or nested combination of temporal operations and spatial overlay or buffer functions that are provided by the temporal algebra. See the manual for further details and explanations.&lt;br /&gt;
&lt;br /&gt;
We'll use this module to estimate the rate of change (slope) between every pair of maps in the &amp;quot;cla&amp;quot; strds. The result will be a new strds consisting of maps with the slope value between every consecutive pair of maps in the original strds:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.algebra expression=&amp;quot;slope_cla = (cla[1]-cla[0])/8.0&amp;quot; basename=slope_cla&lt;br /&gt;
# we set 8 as fixed denominator, because products are 8-day compositions&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We can then use any of the aggregation modules that we saw before to get the maximum or minimumm rate of change for different granularities.&lt;br /&gt;
&lt;br /&gt;
===== Some known issues with t.rast.mapcalc =====&lt;br /&gt;
&lt;br /&gt;
It has been observed that if the names of inputs and output space time datasets (partially) match each other, t.rast.mapcalc may not work properly (especially when several input strds are used). This is because the module uses a simple search and replace approach&lt;br /&gt;
to substitute the input STRDS with the corresponding map names. Eventualy, choosing a specific order for the input STRDS in the input parameter may reduce the risk of wrong substitution. Therefore, especially in operations involving several STRDS (with partially matching names) as inputs, it might be better to use t.rast.algebra that correctly recognizes spatio-temporal datasets. However, t.rast.algebra is still experimental and only available in development version.&lt;br /&gt;
&lt;br /&gt;
=== Subseting and something else ===&lt;br /&gt;
&lt;br /&gt;
{{cmd|t.rast.extract}} is another really useful module in temporal GRASS. It allows to extract a subset of a strds and store it in a different strds. You use the &amp;quot;where&amp;quot; condition to do the subset, but you can also specify a r.mapcalc sub-expression that performs operations on all maps of the selected subset. If no r.mapcalc expression is defined, the selected maps are simply registered in the new output strds.&lt;br /&gt;
&lt;br /&gt;
Say we need to need to know in how many maps of the strds min values are below a threshold, and not only that, but you also want to know how many pixels per map meet that condition. Then, we can do&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.extract input=cla where=&amp;quot;min &amp;lt;= '0.05'&amp;quot; output=cla_less_05 basename=cla_less_05 expression=&amp;quot;if(cla&amp;lt;0.05,1,null())&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
to extract those maps with a minimum value lower than 0.05, and in the same step put 1 in every cell meeting the criterium and null everywhere else. To get a count of maps and pixels meeting the condition we may use:  &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# univariate stistics to get the count per map  &lt;br /&gt;
t.rast.univar input=cla_less_05 &lt;br /&gt;
# count map of cells with min value &amp;lt; 0.05&lt;br /&gt;
t.rast.series input=cla_less_05 output=count_cla_less_05 method=count&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Importing / Exporting strds ===&lt;br /&gt;
&lt;br /&gt;
Say we now need to do some processing in R (e.g.: run [http://menugget.blogspot.com.ar/2012/10/dineof-data-interpolating-empirical.html DINEOF] to fill gaps in data), so we need to export our strds, hence we use {{cmd|t.rast.export}}. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.export input=cla output=cla4R compression=gzip&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
After we have done our analysis we can import the whole strds back to GRASS again, exporting it from R with read/write.tgrass from [http://cran.r-project.org/web/packages/spacetime/index.html spacetime] R package and using {{cmd|t.rast.import}} in GRASS.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.import input=cla_from_R.tar.gz output=cla_from_R basename=new_map directory=/tmp&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For a full example of how to handle raster time series between GRASS and R, please visit the  [https://grasswiki.osgeo.org/wiki/Temporal_data_processing/raster_time_series_grass_R_statistics time series GRASS-R Statistics] wiki. The example is based on North Carolina climate location [http://courses.ncsu.edu/mea592/common/media/02/nc_climate_spm_2000_2012.zip] and includes the following steps:&lt;br /&gt;
&lt;br /&gt;
# Exporting the strds out of GRASS&lt;br /&gt;
# Importing into R&lt;br /&gt;
# Re-formating the data&lt;br /&gt;
# Running [http://modb.oce.ulg.ac.be/mediawiki/index.php/DINEOF DINEOF]&lt;br /&gt;
# Re-constructing the raster time series&lt;br /&gt;
# Exporting out of R, and &lt;br /&gt;
# Importing the gap-filled new strds into GRASS.&lt;br /&gt;
&lt;br /&gt;
=== Neighborhood analysis ===&lt;br /&gt;
&lt;br /&gt;
{{cmd|t.rast.neighbors}} performs a neighborhood analysis for each map in a space time raster dataset. This module supports a subset of the options already available in r.neighbors. Both, size of the neighborhood and aggregation method can be chosen. As an example, we'll estimate mean Cl-a concentration in a 3x3 neighborhood for every map in the strds.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.neighbors input=cla output=cla_smoth base=cla_smooth method=average size=3&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Filling and reconstructing time series data with gaps ===&lt;br /&gt;
&lt;br /&gt;
==== Harmonic ANalysis of Time Series - HANTS ====&lt;br /&gt;
&lt;br /&gt;
{{AddonCmd|r.hants}} is an add-on not strictly within the temporal modules, but really useful when working with this kind of data, particularly with gappy data. Here's a simple example for generating a list of temporally ordered maps to use as input in '''r.hants''', running HANTS and getting a map of dominant frequencies, afterwards. See the manual for further information on parameter setting and explanations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# use t.rast.list to create a list of temporally ordered maps  &lt;br /&gt;
t.rast.list input=cla order=start_time columns=name -u &amp;gt; map_list.csv&lt;br /&gt;
&lt;br /&gt;
# a HANTS run using the list of maps&lt;br /&gt;
r.hants -l file=map_list.csv nf=5 fet=0.1 dod=11 base_period=46 suffix=_hants amplitude=amp_hants phase=pha_hants&lt;br /&gt;
&lt;br /&gt;
# dominant frequency map (0 means the dominant freq is 1, 1 that dominant freq is 2, and so on...)&lt;br /&gt;
r.series input=`g.list raster pattern=amp_hants* separator=comma` output=dominant_freq_hants method=max_raster&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Local Weighted Regression - LWR ====&lt;br /&gt;
&lt;br /&gt;
Another very useful add-on for the reconstruction of gappy time series, such as those from remote sensing imagery, is {{AddonCmd|r.series.lwr}}. This module performs a local weighted regression (LWR) of the input time series of maps in order to estimate missing values and identify (and remove) outliers. See the manual for further information and explanations.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# use same list as before&lt;br /&gt;
t.rast.list input=cla order=start_time columns=name -u &amp;gt; map_list.csv&lt;br /&gt;
&lt;br /&gt;
# run r.series.lwr&lt;br /&gt;
r.series.lwr file=map_list.csv suffix=_lwr order=2 weight=tricube range=0.0,65.0 dod=16 fet=0.1 -l&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Estimate Mean Absolute Error (MAE) ====&lt;br /&gt;
&lt;br /&gt;
One of the measures used to assess how close forecasts or predictions might be to the observed values is the&lt;br /&gt;
[https://en.wikipedia.org/wiki/Mean_absolute_error mean absolute error]. We will use it to evaluate the performance of HANTS and LWR. &lt;br /&gt;
&lt;br /&gt;
First, we will rebuild our time series with the corresponding output maps of r.hants and r.series.lwr. Here, only showed for LWR.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# re-build time series &lt;br /&gt;
t.create type=strds temporaltype=absolute output=cla_lwr \&lt;br /&gt;
 title=&amp;quot;LWR output for Chl-a&amp;quot; \&lt;br /&gt;
 description=&amp;quot;MODIS Aqua L3 Chl-a 8-day 4km 2010-2013. Reconstruction with r.series.lwr&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# create list with filenames to parse&lt;br /&gt;
g.list type=raster pattern=&amp;quot;*lwr&amp;quot; output=names_list&lt;br /&gt;
&lt;br /&gt;
# parse filenames, convert YYYY-DOY to YYYY-MM-DD and write file to use in t.register&lt;br /&gt;
for mapname in `cat names_list` ; do&lt;br /&gt;
  year_start=`echo ${mapname:1:4}`&lt;br /&gt;
  doy_start=`echo ${mapname:5:3}`&lt;br /&gt;
  year_end=`echo ${mapname:8:4}`&lt;br /&gt;
  doy_end=`echo ${mapname:12:3}`&lt;br /&gt;
  # convert YYYY-DOY to YYYY-MM-DD&lt;br /&gt;
  #BEWARE: leading zeros make bash assume the number is in base 8 system, not base 10!&lt;br /&gt;
  doy_start=`echo &amp;quot;$doy_start&amp;quot; | sed 's/^0*//'`&lt;br /&gt;
  doy_end=`echo &amp;quot;$doy_end&amp;quot; | sed 's/^0*//'`&lt;br /&gt;
  START_DATE=`date -d &amp;quot;${year_start}-01-01 +$(( ${doy_start} - 1 ))days&amp;quot; +%Y-%m-%d`&lt;br /&gt;
  END_DATE=`date -d &amp;quot;${year_end}-01-01 +$(( ${doy_end} ))days&amp;quot; +%Y-%m-%d`&lt;br /&gt;
  # print mapname, start and end date&lt;br /&gt;
  echo &amp;quot;$mapname|$START_DATE|$END_DATE&amp;quot; &amp;gt;&amp;gt; map_list_start_and_end_time.txt&lt;br /&gt;
done&lt;br /&gt;
&lt;br /&gt;
# register maps in strds&lt;br /&gt;
t.register input=cla_lwr type=raster file=map_list_start_and_end_time.txt&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, we will estimate the MAE and use it to compare both methods. Again, only the example for LWR is showed. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# obtain a strds of the absolute differences between predicted and observed Chl-a values &lt;br /&gt;
t.rast.algebra -n basename=lwr_minus_orig \&lt;br /&gt;
expression=&amp;quot;abs_lwr_minus_orig = abs(cla_lwr - cla)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# sum of the absolute differences (numerator) and count of non-null maps per pixel (denominator) &lt;br /&gt;
t.rast.series input=abs_lwr_minus_orig output=sum_abs_lwr_minus_orig method=sum&lt;br /&gt;
t.rast.series input=abs_lwr_minus_orig output=count_abs_lwr_minus_orig method=count&lt;br /&gt;
&lt;br /&gt;
# MAE for LWR&lt;br /&gt;
r.mapcalc expression=&amp;quot;mae_lwr = sum_abs_lwr_minus_orig / count_abs_lwr_minus_orig&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# remove intermediate strds and maps&lt;br /&gt;
t.remove -rf abs_lwr_minus_orig&lt;br /&gt;
g.remove -f type=raster name=sum_abs_lwr_minus_orig,count_abs_lwr_minus_orig&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Let's now compare the predictions generated by both methods, HANTS and LWR, and the corresponding mean absolute error maps. &lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:cla_vs_cla_hants.png|center|thumb|560px|Original Chl-a time series vs HANTS output.]] || [[Image:cla_vs_cla_lwr.png|center|thumb|560px|Original Chl-a time series vs LWR output.)]]&lt;br /&gt;
|-&lt;br /&gt;
| [[Image:mae_hants_map.png|center|thumb|560px|MAE of HANTS predictions.]] || [[Image:mae_lwr_map.png|center|thumb|560px|MAE of LWR predictions.]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Extract strds values for points in a vector ===&lt;br /&gt;
&lt;br /&gt;
Let's say we need to extract values of the strds to check the behaviour of HANTS at given locations and compare it with the original values, you can graphically do that with g.gui.tplot. But, if you need to take data outside GRASS, say, read it into R and do some other analysis (See [http://grasswiki.osgeo.org/wiki/R_statistics/rgrass7#Reading_in_data R_Statistics wiki page]) you may use {{cmd|v.what.strds}}. This module retrieves raster values from a given strds to the attribute table of a point vector map.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# original data&lt;br /&gt;
v.what.strds --overwrite input=points_cla strds=cla output=points_cla_out&lt;br /&gt;
v.db.select map=points_cla_out file=ts_points_cla.csv&lt;br /&gt;
&lt;br /&gt;
# HANTS' reconstructed data (several runs)&lt;br /&gt;
for i in `seq 1 13` ; do&lt;br /&gt;
    v.what.strds --overwrite input=points_cla strds=cla_hants_${i} output=points_hants_${i}_out&lt;br /&gt;
    v.db.select map=points_cla file=ts_points_hants_${i}.csv&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another option would be to use [https://grass.osgeo.org/grass71/manuals/t.rast.what.html t.rast.what] that samples a space time raster dataset at specific vector point coordinates and write the output to stdout or text file using different layouts. You don't write the vector's attribute table in this case.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.what points=points strds=cla output=cla_points.csv null_value=NA separator=comma&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TODO ===&lt;br /&gt;
&lt;br /&gt;
(add some more)&lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
=== Best practice data organization ===&lt;br /&gt;
&lt;br /&gt;
When it come to time series, often thousands of maps are involved. In order to keep control, here some suggestion&lt;br /&gt;
&lt;br /&gt;
* separate original data from derived aggregates: store them in separate mapsets&lt;br /&gt;
* for specific projects, maintain them in individual mapsets. You can access the STDS stored in other mapsets (same location) through&lt;br /&gt;
 t.some.module input=my_strds@the_other_mapset output=result ...&lt;br /&gt;
as long as mapsets are indeed accessible, i.e.: in the mapset's search path (See {{cmd|g.mapsets}}).&lt;br /&gt;
&lt;br /&gt;
=== Best practice multi user management ===&lt;br /&gt;
&lt;br /&gt;
GRASS GIS supports multi-user data management and offers the possibility that several users work in the same location within their own mapsets. Data can be read from other mapsets but not edited there. The same principle applies to space time datasets (STDS), i.e. in case of having a collection of maps corresponding to a time series in a dedicated mapset, you need to also create the STDS therein (See {{cmd|t.create}} and {{cmd|t.register}}), so it is visible to other users in other mapsets when they use {{cmd|t.list}}, for example.&lt;br /&gt;
&lt;br /&gt;
=== Use of ''where'' parameter (from ticket [https://trac.osgeo.org/grass/ticket/2270 #2270]) ===&lt;br /&gt;
&lt;br /&gt;
Pay attention when using the &amp;quot;where&amp;quot; option in t.* modules. In some occasions it may not yield the expected results. Given the backend database chosen for TGRASS implementation, you may not be selecting all maps you think if you forget to set time along with date in the where clause. For example, let's say we need to select maps from 2005-03-01 until 2005-05-31 included. You would think the following command would do the job:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.list daily_temp where=&amp;quot;start_time &amp;gt; '2005-03-01' and start_time &amp;lt;= '2005-05-31'&amp;quot; &lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
but, no... The last map in the list is:&lt;br /&gt;
&lt;br /&gt;
 temp_0516|pruebas|2005-05-30 00:00:00|2005-05-31 00:00:00&lt;br /&gt;
&lt;br /&gt;
which would be equivalent to: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.list daily_temp where=&amp;quot;start_time &amp;gt; '2005-03-01' and start_time &amp;lt; '2005-05-31'&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is a product of sqlite. Therefore, if you need the last date included in your selection (map from 2005-05-31 in our example), you need to set time too.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.list daily_temp where=&amp;quot;start_time &amp;gt; '2005-03-01' and start_time &amp;lt;= '2005-05-31 00:00:00'&amp;quot; | tail -n1&lt;br /&gt;
temp_0517|pruebas|2005-05-31 00:00:00|2005-06-01 00:00:00&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Aggregation with defined granularity ===&lt;br /&gt;
&lt;br /&gt;
''Q: I need to aggregate a strds with a granularity of 1 year, but shifting the start day one month in each run, i.e.: changing the start_time to 2003-02-01, 2003-03-01, 2003-04-01 and so on... My question is: if i recursively change start_time with the 'where' parameter, will the module t.rast.aggregate &amp;quot;aggregate&amp;quot; to the next february, march, april (what i'd wish) or just till the end of 2003?''&lt;br /&gt;
&lt;br /&gt;
A: If you specify a granularity of a year, then the start time to perform the aggregation will always be shifted to the 1st January of the current year and the end time the 1st January of the next year (eg. 2002-01-01 - 2003-01-01).  If you wish to aggregate a full year but shifting one month forward then simply use a granularity of 12 months.&lt;br /&gt;
&lt;br /&gt;
=== Listing maps with specific start month ===&lt;br /&gt;
&lt;br /&gt;
''Q: I have a strds with 506 maps that correspond to 8-day composite products. I need to sequentially list all maps which &amp;quot;start_month&amp;quot; is January, February and so on... to use them as input in {{cmd|r.series}} (or {{cmd|t.rast.series}). How can I achieve that?''&lt;br /&gt;
&lt;br /&gt;
A: You can use the [https://www.sqlite.org/lang_datefunc.html datetime functionality of SQLite] to perform this task, this should work for January:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.list input=cla_null_mayor65 \&lt;br /&gt;
where='start_time &amp;gt;= datetime(start_time, &amp;quot;start of year&amp;quot;) and start_time &amp;lt;= datetime(start_time, &amp;quot;start of year&amp;quot;, &amp;quot;1 month&amp;quot;)'&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Aggregation of seasonal data ===&lt;br /&gt;
&lt;br /&gt;
''Q: How can I calculate average seasonal temperature starting from a daily temperatures temporal dataset?''&lt;br /&gt;
&lt;br /&gt;
A: Use {{cmd|t.rast.aggregate.ds}}, the input is the daily strds, the sampling stds should have seasonal intervals. Then use average as method. The output will have seasonal aggregated temperatures. For a detailed workflow see: [https://grasswiki.osgeo.org/wiki/Temporal_data_processing/seasonal_aggregation seasonal aggregation example].&lt;br /&gt;
&lt;br /&gt;
=== Aggregation of seasonal data using time ranges ===&lt;br /&gt;
&lt;br /&gt;
A way to aggregate seasons from daily data without granularity but by using time ranges is shown here. The issue is to include for the season calculation also a month from the previous year. This can be addressed by some datetime calculations in SQLite:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# We assume to have daily temperature data in DB &amp;quot;temp_daily_average&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# loop over seasons, generate aggregates:&lt;br /&gt;
### 'start_time' and 'end_time' are columns in TGRASS&lt;br /&gt;
&lt;br /&gt;
for year in `seq 2004 2014` ; do&lt;br /&gt;
&lt;br /&gt;
    # we consider also a month of the previous year&lt;br /&gt;
    for month in &amp;quot;12 01 02&amp;quot; &amp;quot;03 04 05&amp;quot; &amp;quot;06 07 08&amp;quot; &amp;quot;09 10 11&amp;quot; ; do&lt;br /&gt;
        set -- $month ; echo $1 $2 $3&lt;br /&gt;
&lt;br /&gt;
        prevyear=$year&lt;br /&gt;
        if [ $1 -eq 12 ] ; then&lt;br /&gt;
           prevyear=`expr $year - 1`&lt;br /&gt;
        fi&lt;br /&gt;
&lt;br /&gt;
        # prepare query strings in SQLite&lt;br /&gt;
        MYSTART=`echo &amp;quot;SELECT strftime(datetime('${prevyear}-${1}-01'));&amp;quot; | sqlite3`&lt;br /&gt;
        MYEND=`echo &amp;quot;SELECT strftime(datetime('${prevyear}-${1}-01','+3 month'));&amp;quot; | sqlite3`&lt;br /&gt;
&lt;br /&gt;
        # Debugging only, to see what it does:&lt;br /&gt;
        echo &amp;quot;---- Querying ${prevyear}-${1}-01 ... ${year}-${3}-end:&amp;quot;&lt;br /&gt;
        # we use start_time and end_time to get the proper time range&lt;br /&gt;
        t.rast.list input=temp_daily_average@modis_lst_reconstructed_europe_daily \&lt;br /&gt;
        where=&amp;quot;start_time &amp;gt;= '$MYSTART' AND end_time &amp;lt;= '$MYEND'&amp;quot; &amp;gt; list_${prevyear}_${1}_${3}.csv&lt;br /&gt;
	&lt;br /&gt;
        head -n 3 list_${prevyear}_${1}_${3}.csv&lt;br /&gt;
        echo &amp;quot;...&amp;quot;&lt;br /&gt;
        tail -n 3 list_${prevyear}_${1}_${3}.csv&lt;br /&gt;
        echo &amp;quot;=======&amp;quot;&lt;br /&gt;
        rm -f list_${prevyear}_${1}_${3}.csv&lt;br /&gt;
        &lt;br /&gt;
        # calculate aggregates:&lt;br /&gt;
        method=&amp;quot;average&amp;quot;   # median mode minimum maximum stddev&lt;br /&gt;
        &lt;br /&gt;
        t.rast.series input=temp_daily_average@modis_lst_reconstructed_europe_daily \&lt;br /&gt;
        where=&amp;quot;start_time &amp;gt;= '$MYSTART' AND end_time &amp;lt;= '$MYEND'&amp;quot; \&lt;br /&gt;
        output=temp_${method}_${prevyear}_${1}&lt;br /&gt;
    done&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Much simpler '''alternative''' (which runs in parallel on multi-cores):&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
t.rast.aggregate input=A output=B basename=b where=&amp;quot;start_time &amp;gt;= '2004-03-01 00:00:00'&amp;quot; granularity=&amp;quot;3 months&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Online tutorials and courses ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.geostat-course.org/Topic_Gebbert The temporal GRASS GIS framework: Introduction and application] by Sören Gebbert (2012)&lt;br /&gt;
* [http://fatra.cnr.ncsu.edu/temporal-grass-workshop/ Spatio-temporal data handling and visualization in GRASS GIS] - FOSS4G 2014 workshop by Vaclav Petras, Anna Petrasova, Helena Mitasova, Markus Neteler (2014)&lt;br /&gt;
* [http://www.openniche.org/processing-era-interim-dataset-in-ncdf-using-gdal-and-grass-gis/ Processing ERA-Interim dataset in netcdf using GDAL and GRASS GIS] by Sajid Pareeth (2015)&lt;br /&gt;
* CZ: [http://training.gismentors.eu/grass-gis-pokrocily/tgrass/index.html Úvod do časoprostorových analýz] (Introduction to space-time analysis) by Martin Landa (2015)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* Gebbert, S., Pebesma, E. 2014. ''TGRASS: A temporal GIS for field based environmental modeling''. Environmental Modelling &amp;amp; Software 53, 1-12 ([http://dx.doi.org/10.1016/j.envsoft.2013.11.001 DOI]) - [http://ifgi.uni-muenster.de/~epebe_01/tgrass.pdf preprint PDF]&lt;br /&gt;
* Gebbert, S., Pebesma, E. 2017. ''The GRASS GIS temporal framework''. International Journal of Geographical Information Science 31, 1273-1292 ([http://dx.doi.org/10.1080/13658816.2017.1306862 DOI])&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
* Introduction: [http://www.slideshare.net/Luis_de_Sousa/presentation-soeren GRASS as a Temporal GIS] by Sören Gebbert (slides)&lt;br /&gt;
* [https://archive.org/details/TheTemporalGrassGisFrameworkIntroductionAndApplication# The temporal GRASS GIS framework: Introduction and application] Video of Sören Gebbert's presentation in [http://www.geostat-course.org/Muenster_2012 GEOSTAT course] 2012&lt;br /&gt;
* [http://grass.osgeo.org/grass72/manuals/temporalintro.html Introduction to temporal modules] (GRASS GIS manual)&lt;br /&gt;
* [http://grass.osgeo.org/grass72/manuals/temporal.html Available temporal modules] (GRASS GIS manual)&lt;br /&gt;
* [http://trac.osgeo.org/grass/wiki/Grass7/TemporalExtension Temporal Extension] (background info in trac)&lt;br /&gt;
* [[GRASS GSoC 2013 Temporal GIS Algebra for raster and vector data in GRASS]]&lt;br /&gt;
&lt;br /&gt;
[[Category: Documentation]]&lt;br /&gt;
[[Category: Tutorial]]&lt;br /&gt;
[[Category: Temporal]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=LANDSAT&amp;diff=24243</id>
		<title>LANDSAT</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=LANDSAT&amp;diff=24243"/>
		<updated>2017-06-22T07:54:40Z</updated>

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

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

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

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

		<summary type="html">&lt;p&gt;⚠️NikosA: Remove AIX info from Discussion? Please move compilation material to trac.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&lt;br /&gt;
* Can we remove the &amp;quot;AIX&amp;quot; related info below?&lt;br /&gt;
* Please, if taking time to update the compilation related sections, why not move over to somewhere under https://trac.osgeo.org/grass/wiki/BuildHints?&lt;br /&gt;
--Nikos Alexandris 00:07, 31 March 2017 (PDT)&lt;br /&gt;
&lt;br /&gt;
=== Ubuntu compilation hints ===&lt;br /&gt;
&lt;br /&gt;
''feedback on following the same directions under Ubuntu 8.10 amd64''&lt;br /&gt;
&lt;br /&gt;
* apt-get says &amp;quot;Couldn't find package bpng12-dev&amp;quot;&lt;br /&gt;
: ''HB: try &amp;quot;apt-cache search bpng*-dev&amp;quot;. Probably they bumped the version number.&lt;br /&gt;
&lt;br /&gt;
=== AIX 7.x compilation hints ===&lt;br /&gt;
&lt;br /&gt;
Hints: [http://www.ibm.com/developerworks/aix/library/au-gnu.html Using the GNU C/C++ compiler on AIX]&lt;br /&gt;
&lt;br /&gt;
* conf_proj_AIX.sh:&lt;br /&gt;
 sh configure --prefix=$HOME/bin --without-mutex&lt;br /&gt;
&lt;br /&gt;
* conf_sqlite3.sh:&lt;br /&gt;
 sh configure --prefix=$HOME/bin \&lt;br /&gt;
  --disable-shared --disable-threadsafe --disable-tcl&lt;br /&gt;
&lt;br /&gt;
* conf_gdal.sh:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export LIBICONV=/opt/freeware&lt;br /&gt;
export CC=&amp;quot;gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;g++&amp;quot;&lt;br /&gt;
&lt;br /&gt;
PREFIX=$HOME/bin&lt;br /&gt;
CFLAGS='-DHAVE_INTTYPES_H=0' ./configure \&lt;br /&gt;
 --prefix=$PREFIX --with-libz=internal --with-threads=no --with-geotiff=internal --with-libtiff=internal&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Now manually edit:  vim port/cpl_config.h and disable use of AIX's &amp;lt;inttypes.h&amp;gt; header file&amp;quot;&lt;br /&gt;
echo &amp;quot;#define HAVE_INTTYPES_H 0&amp;quot;&lt;br /&gt;
echo &amp;quot;See bug http://trac.osgeo.org/gdal/ticket/4809&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Fix $HOME/bin/gdal-config issue (bug in GRASS GIS 7 or GDAL?): add to the 'CONFIG_LIBS' line the entry&lt;br /&gt;
  -lstdc++&lt;br /&gt;
&lt;br /&gt;
* If you want r.terraflow, patch the source code for a workaround of a [http://gcc.gnu.org/ml/gcc-patches/2012-09/msg01957.html gcc bug on AIX]:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
r.terraflow_AIX_gcc_fix.diff&lt;br /&gt;
Index: raster/r.terraflow/stats.h&lt;br /&gt;
===================================================================&lt;br /&gt;
--- raster/r.terraflow/stats.h  (revision 56936)&lt;br /&gt;
+++ raster/r.terraflow/stats.h  (working copy)&lt;br /&gt;
@@ -22,6 +22,16 @@&lt;br /&gt;
 &lt;br /&gt;
 #include &amp;lt;sys/types.h&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
+/* http://gcc.gnu.org/ml/gcc-patches/2012-09/msg01957.html */&lt;br /&gt;
+#if defined(_AIX) &amp;amp;&amp;amp; defined(_LARGE_FILES)&lt;br /&gt;
+#include &amp;lt;fcntl.h&amp;gt;&lt;br /&gt;
+#undef open&lt;br /&gt;
+/* Alias the symbols using asm */&lt;br /&gt;
+extern &amp;quot;C&amp;quot; {&lt;br /&gt;
+extern int open(const char *, int, ...) __asm__(&amp;quot;open64&amp;quot;);&lt;br /&gt;
+}&lt;br /&gt;
+#endif&lt;br /&gt;
+&lt;br /&gt;
 #include &amp;lt;fstream&amp;gt;&lt;br /&gt;
 #include &amp;lt;iostream&amp;gt;&lt;br /&gt;
 using namespace std;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== AIX 5.x compilation hints ===&lt;br /&gt;
&lt;br /&gt;
* conf_wget_AIX.sh:&lt;br /&gt;
 sh configure --prefix=/afs/cluster/grid/user/private/bin/ --disable-nls&lt;br /&gt;
&lt;br /&gt;
* conf_proj_AIX.sh:&lt;br /&gt;
 sh configure --prefix=/afs/cluster/grid/user/private/bin --without-mutex&lt;br /&gt;
&lt;br /&gt;
* conf_gdal_AIX.sh:&lt;br /&gt;
 export LIBICONV=/opt/freeware&lt;br /&gt;
 export CC=&amp;quot;gcc&amp;quot;&lt;br /&gt;
 export CXX=&amp;quot;g++&amp;quot;&lt;br /&gt;
 PREFIX=/afs/cluster/grid/user/private/bin&lt;br /&gt;
 sh configure \&lt;br /&gt;
    --prefix=$PREFIX \&lt;br /&gt;
    --with-libz=internal \&lt;br /&gt;
    --with-threads=no \&lt;br /&gt;
    --with-geotiff=internal --with-libtiff=internal&lt;br /&gt;
&lt;br /&gt;
* conf_grass6_AIX.sh&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh                                          &lt;br /&gt;
&lt;br /&gt;
# optimization&lt;br /&gt;
# http://en.gentoo-wiki.com/wiki/Safe_Cflags/Intel&lt;br /&gt;
MYCFLAGS=&amp;quot;-O2 $XEON&amp;quot;                              &lt;br /&gt;
MYCXXFLAGS=&amp;quot;-O2&amp;quot;                                  &lt;br /&gt;
&lt;br /&gt;
# debug&lt;br /&gt;
#MYCFLAGS=&amp;quot;-g&amp;quot;&lt;br /&gt;
#MYCXXFLAGS=&amp;quot;-g&amp;quot;&lt;br /&gt;
&lt;br /&gt;
########&lt;br /&gt;
MYBIN=$HOME/private/bin&lt;br /&gt;
MYNAD2BIN=$MYBIN/bin/nad2bin&lt;br /&gt;
&lt;br /&gt;
# 64bit:&lt;br /&gt;
CFLAGS=&amp;quot;$MYCFLAGS&amp;quot; CXXFLAGS=&amp;quot;$MYCXXFLAGS&amp;quot; NAD2BIN=$MYNAD2BIN ./configure \&lt;br /&gt;
  --prefix=$MYBIN \&lt;br /&gt;
  --with-cxx \&lt;br /&gt;
  --enable-largefile \&lt;br /&gt;
  --with-gdal=$MYBIN/bin/gdal-config \&lt;br /&gt;
  --with-includes=$MYBIN/include \&lt;br /&gt;
  --with-proj \&lt;br /&gt;
  --with-proj-includes=$MYBIN/include \&lt;br /&gt;
  --with-proj-libs=$MYBIN/lib \&lt;br /&gt;
  --with-proj-share=$MYBIN/share/proj \&lt;br /&gt;
  --with-png=yes \&lt;br /&gt;
  --with-tiff=yes \&lt;br /&gt;
  --with-tcltk=yes \&lt;br /&gt;
  --with-sqlite=yes \&lt;br /&gt;
  --with-opengl=yes \&lt;br /&gt;
  --with-x=yes \&lt;br /&gt;
  --with-nls=no \&lt;br /&gt;
  --with-freetype=no \&lt;br /&gt;
  --with-jpeg=no \&lt;br /&gt;
  --with-postgres=no \&lt;br /&gt;
  --with-mysql=no \&lt;br /&gt;
  --with-ffmpeg=no \&lt;br /&gt;
  --with-odbc=no \&lt;br /&gt;
  --with-fftw=no \&lt;br /&gt;
  --with-blas=no \&lt;br /&gt;
  --with-lapack=no \&lt;br /&gt;
  --with-motif=no \&lt;br /&gt;
  --with-glw=no \&lt;br /&gt;
  --with-readline=no \&lt;br /&gt;
  --with-opendwg=no \&lt;br /&gt;
  --with-python=no&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* conf_grass7_AIX.sh:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
export LIBICONV=/opt/freeware&lt;br /&gt;
# comment next two lines for using the IBM xlc compiler:&lt;br /&gt;
export CC=&amp;quot;gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;g++&amp;quot;&lt;br /&gt;
&lt;br /&gt;
PREFIX=$HOME/private/bin&lt;br /&gt;
&lt;br /&gt;
CFLAGS='-ansi -D_ALL_SOURCE=1 -D_POSIX_SOURCE=1 -D_POSIX_C_SOURCE=200809L -Dinline=' ./configure \&lt;br /&gt;
  --prefix=$PREFIX \&lt;br /&gt;
  --disable-shared \&lt;br /&gt;
  --enable-largefile \&lt;br /&gt;
  --with-cxx \&lt;br /&gt;
  --with-proj-includes=$PREFIX/include/ \&lt;br /&gt;
  --with-proj-libs=$PREFIX/lib/ \&lt;br /&gt;
  --with-proj-share=$PREFIX/share/proj/ \&lt;br /&gt;
  --with-sqlite \&lt;br /&gt;
  --with-sqlite-includes=$PREFIX/include/ \&lt;br /&gt;
  --with-sqlite-libs=$PREFIX/lib/ \&lt;br /&gt;
  --with-tiff=no \&lt;br /&gt;
  --with-png=no \&lt;br /&gt;
  --with-fftw=no \&lt;br /&gt;
  --with-cairo=no \&lt;br /&gt;
  --with-freetype=no&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Genova_2017&amp;diff=23906</id>
		<title>GRASS Community Sprint Genova 2017</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Genova_2017&amp;diff=23906"/>
		<updated>2017-02-06T07:44:16Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: NikosA not joining the sprint in Genova 2017&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 '''6-12 Feb, 2017'''. The sprint is at the same time of the XVIII Meeting degli Utenti Italiani Grass e Gfoss, 9-10 Feb 2017, University of Genova, Polytechnic School of Engineering, [http://en.wikipedia.org/wiki/Genoa Genova], [http://en.wikipedia.org/wiki/Italy Italy].&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
This next edition of the GRASS GIS community sprint 2017 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;
== Timing  ==&lt;br /&gt;
&lt;br /&gt;
'''When''':  6-12 Feb, 2017&lt;br /&gt;
&lt;br /&gt;
Of course you are free to join or leave the community sprint whenever you want.&lt;br /&gt;
&lt;br /&gt;
'''Duration''': 7 days&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
&lt;br /&gt;
Two rooms (A8 and A9) are booked from 6th to 10th February at University of Genova, Polytechnic School of Engineering in [http://osm.org/go/xX0mu8L~Z?m= Villa Cambiaso]&lt;br /&gt;
&lt;br /&gt;
11th and 12th February TBD&lt;br /&gt;
&lt;br /&gt;
== Accommodation and Costs ==&lt;br /&gt;
&lt;br /&gt;
Some beds are available in Luca's granma house, others are available in the FOSS4G.it website &lt;br /&gt;
&lt;br /&gt;
== Agenda == &lt;br /&gt;
&lt;br /&gt;
=== Timeline ===&lt;br /&gt;
&lt;br /&gt;
==== Monday, 6 February ====&lt;br /&gt;
&lt;br /&gt;
* End Transifex setting&lt;br /&gt;
&lt;br /&gt;
==== Tuesday, 7 February ====&lt;br /&gt;
&lt;br /&gt;
==== Wednesday, 8 February ====&lt;br /&gt;
&lt;br /&gt;
==== Thursday, 9 February ====&lt;br /&gt;
&lt;br /&gt;
* Official FOSS4G.it dinner&lt;br /&gt;
&lt;br /&gt;
==== Friday, 10 February ====&lt;br /&gt;
&lt;br /&gt;
* Unofficial FOSS4G.it dinner&lt;br /&gt;
&lt;br /&gt;
==== Saturday, 11 February ====&lt;br /&gt;
&lt;br /&gt;
* Santa Margherita and Portofino visit related to OSM mapping party. capabilities to work there&lt;br /&gt;
&lt;br /&gt;
== Participation ==&lt;br /&gt;
&lt;br /&gt;
=== In person (planned) ===&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 3&lt;br /&gt;
| Feb 12&lt;br /&gt;
|&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:Landa|Martin Landa]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| Feb 6&lt;br /&gt;
| Feb 12&lt;br /&gt;
| Various&lt;br /&gt;
| L&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|&amp;lt;s&amp;gt;[[User:NikosAlexandris|Nikos Alexandris]]&amp;lt;/s&amp;gt;&lt;br /&gt;
|?&lt;br /&gt;
| Feb 3&lt;br /&gt;
| Feb 12&lt;br /&gt;
| Various&lt;br /&gt;
| M&lt;br /&gt;
| Unfortunately, not available&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|[[User:Elena84m|Elena Mezzini]]&lt;br /&gt;
|Italy&lt;br /&gt;
| Feb 7 evening&lt;br /&gt;
| Feb 10 afternoon&lt;br /&gt;
| IT Translator&lt;br /&gt;
| M&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] (to be investigated; smartphones only? is Jitsi on a desktop computer compatible?)&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;
* ADD YOUR SELF&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;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* '''How was it last time?'''&lt;br /&gt;
** Very cool, see [[GRASS Community Sprint Bonn 2016]]!&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;br /&gt;
[[Category: Code Sprint]]&lt;br /&gt;
[[Category: 2017]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Genova_2017&amp;diff=23833</id>
		<title>GRASS Community Sprint Genova 2017</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Genova_2017&amp;diff=23833"/>
		<updated>2016-12-10T00:32:05Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: &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 '''6-12 Feb, 2017'''. The sprint is at the same time of the XVIII Meeting degli Utenti Italiani Grass e Gfoss, 9-10 Feb 2017, University of Genova, Polytechnic School of Engineering, [http://en.wikipedia.org/wiki/Genoa Genova], [http://en.wikipedia.org/wiki/Italy Italy].&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
This next edition of the GRASS GIS community sprint 2017 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;
== Timing  ==&lt;br /&gt;
&lt;br /&gt;
'''When''':  6-12 Feb, 2017&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''': 7 days&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
&lt;br /&gt;
Two rooms (A8 and A9) are booked from 6th to 10th February at University of Genova, Polytechnic School of Engineering in [http://osm.org/go/xX0mu8L~Z?m= Villa Cambiaso]&lt;br /&gt;
&lt;br /&gt;
11th and 12th February TBD&lt;br /&gt;
&lt;br /&gt;
== Accommodation and Costs ==&lt;br /&gt;
&lt;br /&gt;
== Agenda == &lt;br /&gt;
&lt;br /&gt;
=== Timeline ===&lt;br /&gt;
&lt;br /&gt;
== Participation ==&lt;br /&gt;
&lt;br /&gt;
=== In person (planned) ===&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 3&lt;br /&gt;
| Feb 12&lt;br /&gt;
|&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:Ychemin|Yann Chemin]]&lt;br /&gt;
|Italy&lt;br /&gt;
| Feb 5&lt;br /&gt;
| Feb 12&lt;br /&gt;
| GDAL-GRASS planetary IAU2000/2009 integration&lt;br /&gt;
| XXL&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|[[User:Landa|Martin Landa]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| Feb 6&lt;br /&gt;
| Feb 12&lt;br /&gt;
| Various&lt;br /&gt;
| L&lt;br /&gt;
| Not yet confirmed&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|[[User:NikosAlexandris|Nikos Alexandris]]&lt;br /&gt;
|?&lt;br /&gt;
| Feb 3&lt;br /&gt;
| Feb 12&lt;br /&gt;
| Various&lt;br /&gt;
| M&lt;br /&gt;
| Not yet confirmed&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] (to be investigated; smartphones only? is Jitsi on a desktop computer compatible?)&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;
* ADD YOUR SELF&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;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* '''How was it last time?'''&lt;br /&gt;
** Very cool, see [[GRASS Community Sprint Bonn 2016]]!&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;br /&gt;
[[Category: Code Sprint]]&lt;br /&gt;
[[Category: 2017]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Compile_and_Install&amp;diff=23530</id>
		<title>Compile and Install</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Compile_and_Install&amp;diff=23530"/>
		<updated>2016-09-11T05:42:29Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- {{MoveToTrac}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Disclaimer''': This page explains how to turn the GRASS GIS source code into an installable binary package (&amp;quot;compilation&amp;quot;) for different operating systems. If you just want to get ready-to-use binaries, go [http://grass.osgeo.org/download/ here], otherwise read on...&lt;br /&gt;
&lt;br /&gt;
== How to do compilation and installation of GRASS GIS? ==&lt;br /&gt;
&lt;br /&gt;
Here we explain the procedure to compile GRASS from SVN, but it also applies to official GRASS 6 releases.&lt;br /&gt;
&lt;br /&gt;
''For installation of precompiled binary packages, see the main [[Installation Guide]].''&lt;br /&gt;
&lt;br /&gt;
For detailed information on compilation, please see the [http://grass.osgeo.org/grass64/source/INSTALL INSTALL] file in the source code.&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
==== Extra libraries ====&lt;br /&gt;
GRASS needs at least two extra libraries: PROJ and GDAL/OGR&lt;br /&gt;
&lt;br /&gt;
''Note: if you want to have DBMS support in GDAL (subsequently in GRASS) you have to perform the &amp;quot;Optional&amp;quot; steps below as well.''&lt;br /&gt;
&lt;br /&gt;
* [http://trac.osgeo.org/proj/ PROJ4] for management of projections (with proj-datumgrid-1.3.zip support)&lt;br /&gt;
* Optional: [http://trac.osgeo.org/geos/ GEOS]&lt;br /&gt;
* Optional: [http://www.postgresql.org PostgreSQL], [http://www.mysql.org mySQL], [http://www.unixodbc.org unixODBC], [http://www.sqlite.org SQLite] (SQLite is needed for [[QGIS]])&lt;br /&gt;
* [http://www.gdal.org GDAL/OGR] for reading and writing various GIS data formats (interoperability)&lt;br /&gt;
&lt;br /&gt;
You have to install these two libraries '''first''' (see below how to get them precompiled for your system).&lt;br /&gt;
&lt;br /&gt;
It is easiest to obtain a prepackaged version of these libraries (e.g., .rpm; .deb) for your particular operating system and run the corresponding package installation (e.g., rpm -Uhv packagename.rpm; apt-get) in a terminal window. Take care to also install the development packages of these libraries (...-devel packages). If there is no prepackage version, then you will have to download the source code (see links above, source code packages usually ends in .tar.gz or .zip) and compile it (you must have a C compiler installed as part of your operating system). The Web sites show the steps to compile the libraries.&lt;br /&gt;
&lt;br /&gt;
Other libraries needed to run GRASS are listed on the {{website|grass64/source/REQUIREMENTS.html|requirements page}}.&lt;br /&gt;
&lt;br /&gt;
To compile, you will also need the respective &amp;quot;-devel&amp;quot; packages.&lt;br /&gt;
&lt;br /&gt;
==== Download GRASS GIS source code ====&lt;br /&gt;
Then [http://grass.osgeo.org/download/software/sources/ download the GRASS GIS source code] of course.&lt;br /&gt;
&lt;br /&gt;
=== Generic Compilation and installation procedure ===&lt;br /&gt;
&lt;br /&gt;
* It is wise that compilation processes are carried out as a normal user: If you want to get the source code in a place where  you do not have write permissions (e.g. in /usr/local/src/) just follow this:&lt;br /&gt;
      cd /usr/local/src/ &lt;br /&gt;
      su -c 'mkdir grass6'&lt;br /&gt;
      su -c 'chown yourlogin:yourgroup grass6'&lt;br /&gt;
&lt;br /&gt;
Otherwise if you have permissions just continue as a normal user:&lt;br /&gt;
      cd /usr/local/src/&lt;br /&gt;
      svn checkout ...&lt;br /&gt;
&lt;br /&gt;
* do a code checkout from the SVN source code repository&lt;br /&gt;
: checkout the latest GRASS 6.x from SVN (see: {{twiki|DownloadSource}})&lt;br /&gt;
&lt;br /&gt;
* in the grass6 directory, you will find the precious INSTALL file, open it with your favourite pager/editor and read it carefully!&lt;br /&gt;
&lt;br /&gt;
* run configure with parameters to adapt the compile process to your own system. To see what options can be passed to it, run:&lt;br /&gt;
 ./configure --help | less &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The minimum set of configure parameters is &lt;br /&gt;
      ./configure ### --&amp;gt;&lt;br /&gt;
It may (!) look like this:&lt;br /&gt;
 &lt;br /&gt;
      ./configure \&lt;br /&gt;
          --with-cxx \&lt;br /&gt;
          --with-sqlite \&lt;br /&gt;
          --with-postgres-libs=/usr/include/pgsql/libpq \&lt;br /&gt;
          --with-postgres-includes=/usr/include/pgsql \&lt;br /&gt;
          --with-freetype \&lt;br /&gt;
          --with-freetype-includes=/usr/include/freetype2 \&lt;br /&gt;
          --with-motif \&lt;br /&gt;
          --with-proj-share=/usr/share/proj&lt;br /&gt;
&lt;br /&gt;
You may have to explicitly state the path for certain packages (i.e., gdal). The Unix 'locate' command will come in handy for finding the path of the package you need (you may have to run locate as root ex: sudo locate gdal-config).&lt;br /&gt;
&lt;br /&gt;
Please note that the paths mentioned may widely vary due to the distribution used.&lt;br /&gt;
See [[Compile_and_Install#Platform_Specific_Notes|Platform Specific Notes]] below.&lt;br /&gt;
&lt;br /&gt;
Depending on your needs it may be a good idea to include debugging hooks.&lt;br /&gt;
: See [[GRASS_Debugging#Compile_Time_Setup]].&lt;br /&gt;
 CFLAGS=&amp;quot;-ggdb -Wall -Werror-implicit-function-declaration&amp;quot; ./configure ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At the end of configuration process you should get report not much different from this:&lt;br /&gt;
&lt;br /&gt;
GRASS is now configured for:  i686-pc-linux-gnu&lt;br /&gt;
 &lt;br /&gt;
 Source directory:            /usr/src/grass6&lt;br /&gt;
 Build directory:             /usr/src/grass6&lt;br /&gt;
 Installation directory:      /usr/local/grass-6.3.svn&lt;br /&gt;
 Startup script in directory: ${exec_prefix}/bin&lt;br /&gt;
 C compiler:                  gcc -g -O2 &lt;br /&gt;
 C++ compiler:                c++ -g -O2&lt;br /&gt;
 FORTRAN compiler:            &lt;br /&gt;
 Building shared libraries:   yes&lt;br /&gt;
 64bit support:               no&lt;br /&gt;
 &lt;br /&gt;
  NVIZ:                       yes&lt;br /&gt;
 &lt;br /&gt;
  BLAS support:               no&lt;br /&gt;
  C++ support:                yes&lt;br /&gt;
  DWG support:                no&lt;br /&gt;
  FFMPEG support:             no&lt;br /&gt;
  FFTW support:               yes&lt;br /&gt;
  FreeType support:           yes&lt;br /&gt;
  GDAL support:               yes&lt;br /&gt;
  GLw support:                no&lt;br /&gt;
  LAPACK support:             no&lt;br /&gt;
  Large File Support (LFS):   no&lt;br /&gt;
  Motif support:              no&lt;br /&gt;
  MySQL support:              no&lt;br /&gt;
  NLS support:                no&lt;br /&gt;
  ODBC support:               no&lt;br /&gt;
  OGR support:                yes&lt;br /&gt;
  OpenGL(R) support:          yes&lt;br /&gt;
  PNG support:                yes&lt;br /&gt;
  PostgreSQL support:         yes&lt;br /&gt;
  Readline support:           no&lt;br /&gt;
  SQLite support:             no&lt;br /&gt;
  Tcl/Tk support:             yes&lt;br /&gt;
  TIFF support:               yes&lt;br /&gt;
  X11 support:                yes&lt;br /&gt;
  &lt;br /&gt;
* Let's compile it (takes a little while...)!&lt;br /&gt;
      make&lt;br /&gt;
* At the end, you should get report not much different from this:&lt;br /&gt;
 ----------------------------------------------------------------------&lt;br /&gt;
 Following modules are missing the 'description.html' file in src code:&lt;br /&gt;
 ----------------------------------------------------------------------&lt;br /&gt;
 GRASS GIS compilation log&lt;br /&gt;
 -------------------------&lt;br /&gt;
 Started compilation: Ne kvě 28 13:18:43 CEST 2006&lt;br /&gt;
 --&lt;br /&gt;
 Errors in:&lt;br /&gt;
 --&lt;br /&gt;
 Finished compilation: Ne kvě 28 13:43:40 CEST 2006&lt;br /&gt;
 (In case of errors please change into the directory with error and run 'make')&lt;br /&gt;
&lt;br /&gt;
* If there is any error, change directory to directory with error and run &amp;quot;make&amp;quot; again. Report occuring bug to grass mailing list&lt;br /&gt;
* Once the installation process is finished, you're ready to install GRASS system wide.&lt;br /&gt;
      su -c 'make install'&lt;br /&gt;
* enjoy GRASS: &lt;br /&gt;
      grass64&lt;br /&gt;
&lt;br /&gt;
=== What else? ===&lt;br /&gt;
&lt;br /&gt;
If you want to use [http://www.qgis.org QGIS], then also compile the GRASS-GDAL/OGR plugin. This is also useful to access your GRASS-data&lt;br /&gt;
from other application using GDAL/OGR like [http://thuban.intevation.de thuban].&lt;br /&gt;
* [[Compile and install GRASS and QGIS with GDAL/OGR Plugin]] (enables QGIS to read GRASS data directly)&lt;br /&gt;
&lt;br /&gt;
=== Compile and install GDAL-GRASS plugin ===&lt;br /&gt;
&lt;br /&gt;
* See [[Compile and install GDAL-GRASS plugin]]&lt;br /&gt;
&lt;br /&gt;
=== Platform Specific Notes ===&lt;br /&gt;
&lt;br /&gt;
==== Linux ====&lt;br /&gt;
&lt;br /&gt;
Linux cames in various flavours, i.e. distributions.&lt;br /&gt;
&lt;br /&gt;
===== Debian =====&lt;br /&gt;
&lt;br /&gt;
Read the instructions here:&lt;br /&gt;
: http://trac.osgeo.org/grass/browser/grass/branches/develbranch_6/debian/README.debian&lt;br /&gt;
&lt;br /&gt;
   # first install PROJ, GDAL, etc.&lt;br /&gt;
   cd grass64/&lt;br /&gt;
   # follow instructions in debian/README.debian&lt;br /&gt;
   fakeroot buildpackage&lt;br /&gt;
&lt;br /&gt;
* Official [http://wiki.debian.org/DebianGis DebianGIS] packaging control files:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;&lt;br /&gt;
  http://svn.debian.org/viewsvn/pkg-grass/packages/grass/&lt;br /&gt;
  svn co svn://svn.debian.org/svn/pkg-grass/packages/grass/trunk/&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
  svn co svn://svn.debian.org/svn/pkg-grass/packages/grass/branches/&amp;lt;GRASS Version&amp;gt;&lt;br /&gt;
&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Available on git server:&lt;br /&gt;
  git://git.debian.org/git/pkg-grass/grass.git&lt;br /&gt;
&lt;br /&gt;
  http://anonscm.debian.org/cgit/pkg-grass/grass.git/&lt;br /&gt;
&lt;br /&gt;
====== GRASS 6.1 on Debian Sarge ======&lt;br /&gt;
&lt;br /&gt;
* [http://hamish.bowman.googlepages.com/debiangisfiles#compile Compiling GRASS 6.1-CVS on Debian/OldStable (aka 3.1, Sarge)]&lt;br /&gt;
&lt;br /&gt;
====== GRASS 6.4 on Debian Lenny ======&lt;br /&gt;
&lt;br /&gt;
Install needed packages:&lt;br /&gt;
  apt-get install flex bison libreadline-dev libncurses5-dev lesstif2-dev debhelper dpatch libtiff4-dev \&lt;br /&gt;
          tcl-dev tk-dev libfftw3-dev libxmu-dev libfreetype6-dev autoconf2.13 autotools-dev doxygen \&lt;br /&gt;
          libmysqlclient15-dev graphviz libsqlite3-dev python-wxgtk2.8 libcairo2-dev libwxgtk2.8-dev \&lt;br /&gt;
          python-dev libgdal1-dev  libgdal1-1.5.0 libproj-dev libproj0 proj-bin proj-data mysql&lt;br /&gt;
&lt;br /&gt;
# Important: avoid using CFLAGS=&amp;quot;... -Werror-implicit-function-declaration&amp;quot; (also on later Debian versions), see {{trac|1684}}&lt;br /&gt;
&lt;br /&gt;
Configure:&lt;br /&gt;
  ./configure \&lt;br /&gt;
  --with-cxx \&lt;br /&gt;
  --with-sqlite \&lt;br /&gt;
  --with-postgres --with-postgres-includes=/usr/include/postgresql \&lt;br /&gt;
  --with-mysql --with-mysql-includes=/usr/include/mysql --with-mysql-libs=/usr/lib/mysql \&lt;br /&gt;
  --with-odbc \&lt;br /&gt;
  --with-cairo \&lt;br /&gt;
  --with-proj-share=/usr/share/proj \&lt;br /&gt;
  --with-tcltk-includes=/usr/include/tcl8.4/ \&lt;br /&gt;
  --with-freetype --with-freetype-includes=/usr/include/freetype2 \&lt;br /&gt;
  --with-motif --with-fftw --with-nls --with-python \&lt;br /&gt;
  --with-x --x-libraries=/usr/lib/x86_64-linux-gnu&lt;br /&gt;
&lt;br /&gt;
Compile:&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
Install:&lt;br /&gt;
  sudo make install&lt;br /&gt;
&lt;br /&gt;
====== GRASS 6.4 on Debian Jessie ======&lt;br /&gt;
&lt;br /&gt;
Install needed packages:&lt;br /&gt;
  apt-get install flex bison debhelper dpatch autoconf2.13 autotools-dev \&lt;br /&gt;
    python-dev g++ gcc gettext graphviz libcairo2-dev libfftw3-dev tcl-dev tk-dev \&lt;br /&gt;
    libfreetype6-dev libgdal1h libgdal1-dev libglu1-mesa-dev libglw1-mesa-dev \&lt;br /&gt;
    libncurses5-dev libreadline-dev libsqlite3-dev libtiff5-dev \&lt;br /&gt;
    libwxgtk3.0-dev libxmu-dev libxmu-headers libxt-dev mesa-common-dev \&lt;br /&gt;
    libproj-dev proj-bin proj-data python-numpy python-wxgtk3.0 subversion wx-common zlib1g-dev \&lt;br /&gt;
    netcdf-bin libnetcdf-dev libatlas-dev libgegl-dev doxygen postgresql mysql-server \&lt;br /&gt;
    libgeotiff-dev libblas-dev libgeotiff-epsg libxmu-dev libxt-dev libx11-dev&lt;br /&gt;
&lt;br /&gt;
# Important: avoid using CFLAGS=&amp;quot;... -Werror-implicit-function-declaration&amp;quot; (also on later Debian versions), see {{trac|1684}}&lt;br /&gt;
&lt;br /&gt;
Configure:&lt;br /&gt;
  ./configure \&lt;br /&gt;
  --with-cxx \&lt;br /&gt;
  --with-sqlite \&lt;br /&gt;
  --with-postgres \&lt;br /&gt;
  --with-odbc \&lt;br /&gt;
  --with-cairo \&lt;br /&gt;
  --with-geos \&lt;br /&gt;
  --with-proj-share=/usr/share/proj \&lt;br /&gt;
  --with-tcltk-includes=/usr/include/tcl8.6/ \&lt;br /&gt;
  --with-mysql --with-mysql-includes=/usr/include/mysql --with-mysql-libs=/usr/lib/mysql \&lt;br /&gt;
  --with-freetype --with-freetype-includes=/usr/include/freetype2 \&lt;br /&gt;
  --with-motif \&lt;br /&gt;
  --with-fftw \&lt;br /&gt;
  --with-nls \&lt;br /&gt;
  --with-postgres-includes=/usr/include/postgresql \&lt;br /&gt;
  --with-python \&lt;br /&gt;
  --with-x --x-libraries=/usr/lib/x86_64-linux-gnu&lt;br /&gt;
&lt;br /&gt;
Compile:&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
Install:&lt;br /&gt;
  sudo make install&lt;br /&gt;
&lt;br /&gt;
====== GRASS 7 on Debian Squeeze ======&lt;br /&gt;
&lt;br /&gt;
Install needed packages:&lt;br /&gt;
 apt-get install flex bison debhelper dpatch autoconf2.13 autotools-dev python-dev \&lt;br /&gt;
     g++ gcc gettext graphviz libcairo2-dev libfftw3-dev libfreetype6-dev \&lt;br /&gt;
     libgdal1 libgdal1-dev libglu1-mesa-dev libglw1-mesa-dev \&lt;br /&gt;
     libncurses5-dev libproj-dev libreadline-dev libsqlite3-dev libtiff4-dev \&lt;br /&gt;
     libwxgtk2.8-dev libxmu-dev libxmu-headers libxt-dev mesa-common-dev \&lt;br /&gt;
     proj-bin proj-data python-numpy python-wxgtk2.8 subversion wx-common zlib1g-dev&lt;br /&gt;
&lt;br /&gt;
Download source code:&lt;br /&gt;
&lt;br /&gt;
 svn checkout https://svn.osgeo.org/grass/grass/trunk grass_trunk&lt;br /&gt;
&lt;br /&gt;
Configure:&lt;br /&gt;
 &lt;br /&gt;
 cd grass_trunk/&lt;br /&gt;
 CFLAGS=&amp;quot;-Wall -Werror-implicit-function-declaration -fno-common -Wextra -Wunused&amp;quot; \&lt;br /&gt;
 CXXFLAGS=&amp;quot;-Wall&amp;quot;  \&lt;br /&gt;
  ./configure --prefix=/usr/local \&lt;br /&gt;
  --with-gdal --with-proj --with-proj-share=/usr/share \&lt;br /&gt;
  --with-glw --with-nls --with-readline \&lt;br /&gt;
  --without-tcltk \&lt;br /&gt;
  --with-cxx \&lt;br /&gt;
  --enable-largefile \&lt;br /&gt;
  --with-freetype --with-freetype-includes=/usr/include/freetype2 \&lt;br /&gt;
  --with-sqlite \&lt;br /&gt;
  --with-cairo --with-python=/usr/bin/python2.6-config --with-wxwidgets \&lt;br /&gt;
  --with-geos --with-pthread&lt;br /&gt;
&lt;br /&gt;
Compile:&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
Install:&lt;br /&gt;
  sudo make install  # installs as /usr/local/bin/grass71&lt;br /&gt;
&lt;br /&gt;
====== GRASS 7 on Debian Wheezy ======&lt;br /&gt;
&lt;br /&gt;
Install needed packages:&lt;br /&gt;
&lt;br /&gt;
 # note: cmake and libboost-all-dev only needed for optional libLAS&lt;br /&gt;
 sudo apt-get install cmake libboost-all-dev&lt;br /&gt;
 &lt;br /&gt;
 sudo apt-get install flex bison debhelper dpatch autoconf2.13 autotools-dev \&lt;br /&gt;
   python-dev g++ gcc gettext graphviz libcairo2-dev libfftw3-dev libfreetype6-dev \&lt;br /&gt;
   libgdal1 libgdal1-dev libglu1-mesa-dev libglw1-mesa-dev libncurses5-dev libproj-dev \&lt;br /&gt;
   libreadline-dev libtiff4-dev libwxgtk2.8-dev libxmu-dev libxmu-headers \&lt;br /&gt;
   libxt-dev mesa-common-dev proj-bin proj-data python-numpy python-wxgtk2.8 subversion wx-common \&lt;br /&gt;
   zlib1g-dev netcdf-bin libatlas-dev libgegl-dev opencl-headers ocl-icd-libopencl1 \&lt;br /&gt;
   libsqlite3-dev postgresql python-sphinx python-gdal&lt;br /&gt;
&lt;br /&gt;
Download and Install libLAS&lt;br /&gt;
 wget http://download.osgeo.org/liblas/libLAS-1.7.0.tar.gz&lt;br /&gt;
 tar -zxvf libLAS-1.7.0.tar.gz&lt;br /&gt;
 cd libLAS-1.7.0/&lt;br /&gt;
 mkdir makefiles&lt;br /&gt;
 cd makefiles&lt;br /&gt;
 cmake -G &amp;quot;Unix Makefiles&amp;quot; ../&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
 sudo ldconfig&lt;br /&gt;
 cd ../..&lt;br /&gt;
&lt;br /&gt;
Download of GRASS GIS 7 source code:&lt;br /&gt;
 wget http://grass.osgeo.org/grass70/source/grass-7.0.0.tar.gz&lt;br /&gt;
 tar -zxvf grass-7.0.0.tar.gz&lt;br /&gt;
&lt;br /&gt;
Configure:&lt;br /&gt;
 cd grass-7.0.0&lt;br /&gt;
 CFLAGS=&amp;quot;-g -Wall -Werror-implicit-function-declaration -fno-common -Wextra -Wunused&amp;quot; CXXFLAGS=&amp;quot;-g -Wall&amp;quot; \&lt;br /&gt;
 ./configure \&lt;br /&gt;
    --prefix=/usr/local \&lt;br /&gt;
    --with-gdal \&lt;br /&gt;
    --with-proj --with-proj-share=/usr/share \&lt;br /&gt;
    --with-glw --with-nls --with-readline \&lt;br /&gt;
    --with-cxx --enable-largefile \&lt;br /&gt;
    --with-freetype --with-freetype-includes=/usr/include/freetype2 \&lt;br /&gt;
    --with-sqlite --with-cairo --with-python=/usr/bin/python-config \&lt;br /&gt;
    --with-wxwidgets --with-geos --with-blas \&lt;br /&gt;
    --with-lapack-includes=/usr/lib/lapack --with-liblas=yes \&lt;br /&gt;
    --with-netcdf=/usr/bin/nc-config --with-odbc=yes \&lt;br /&gt;
    --with-openmp=yes --with-pthread=yes --with-postgres=yes \&lt;br /&gt;
    --with-postgres-includes=/usr/include/postgresql \&lt;br /&gt;
    --with-postgres-libs=/usr/lib/postgresql&lt;br /&gt;
 &lt;br /&gt;
 #     --with-mysql=yes --with-mysql-includes=/usr/include/mysql \&lt;br /&gt;
 #    --with-mysql-libs=/usr/lib/mysql \&lt;br /&gt;
&lt;br /&gt;
GRASS GIS 7 is now configured (example):&lt;br /&gt;
&lt;br /&gt;
  Source directory:           /home/user/grass-7.0.0&lt;br /&gt;
  Build directory:            /home/user/grass-7.0.0&lt;br /&gt;
  Installation directory:     ${prefix}/grass-7.0.0&lt;br /&gt;
  Startup script in directory:${exec_prefix}/bin&lt;br /&gt;
  C compiler:                 gcc -g -Wall -Werror-implicit-function-declaration -fno-common -Wextra -Wunused &lt;br /&gt;
  C++ compiler:               c++ -g -Wall&lt;br /&gt;
  Building shared libraries:  yes&lt;br /&gt;
  OpenGL platform:            X11&lt;br /&gt;
  MacOSX application:         no&lt;br /&gt;
  MacOSX architectures:       &lt;br /&gt;
  MacOSX SDK:                 &lt;br /&gt;
  BLAS support:               yes&lt;br /&gt;
  C++ support:                yes&lt;br /&gt;
  Cairo support:              yes&lt;br /&gt;
  DWG support:                no&lt;br /&gt;
  FFTW support:               yes&lt;br /&gt;
  FreeType support:           yes&lt;br /&gt;
  GDAL support:               yes&lt;br /&gt;
  GEOS support:               yes&lt;br /&gt;
  LAPACK support:             no&lt;br /&gt;
  Large File support (LFS):   yes&lt;br /&gt;
  libLAS support:             yes&lt;br /&gt;
  MySQL support:              no&lt;br /&gt;
  NetCDF support:             yes&lt;br /&gt;
  NLS support:                yes&lt;br /&gt;
  ODBC support:               yes&lt;br /&gt;
  OGR support:                yes&lt;br /&gt;
  OpenCL support:             no&lt;br /&gt;
  OpenGL support:             yes&lt;br /&gt;
  OpenMP support:             yes&lt;br /&gt;
  PNG support:                yes&lt;br /&gt;
  POSIX thread support:       yes&lt;br /&gt;
  PostgreSQL support:         yes&lt;br /&gt;
  Readline support:           yes&lt;br /&gt;
  Regex support:              yes&lt;br /&gt;
  SQLite support:             yes&lt;br /&gt;
  TIFF support:               yes&lt;br /&gt;
  wxWidgets support:          yes&lt;br /&gt;
  X11 support:                no&lt;br /&gt;
&lt;br /&gt;
Compile:&lt;br /&gt;
 make -j2&lt;br /&gt;
&lt;br /&gt;
Install:&lt;br /&gt;
 sudo make install   # installs as /usr/local/bin/grass70&lt;br /&gt;
&lt;br /&gt;
Launch:&lt;br /&gt;
 grass70&lt;br /&gt;
&lt;br /&gt;
====== GRASS 7 on Debian Jessie ======&lt;br /&gt;
&lt;br /&gt;
Install needed packages:&lt;br /&gt;
 sudo apt-get install cmake libboost-all-dev flex bison debhelper dpatch autoconf2.13 \&lt;br /&gt;
    autotools-dev python-dev g++ gcc gettext graphviz libcairo2-dev libfftw3-dev \&lt;br /&gt;
    libfreetype6-dev libgdal1h libgdal1-dev libglu1-mesa-dev libglw1-mesa-dev \&lt;br /&gt;
    libncurses5-dev libproj-dev libreadline-dev libsqlite3-dev libtiff5-dev \&lt;br /&gt;
    libwxgtk3.0-dev libxmu-dev libxmu-headers libxt-dev mesa-common-dev \&lt;br /&gt;
    proj-bin proj-data python-numpy python-wxgtk3.0 subversion wx-common zlib1g-dev \&lt;br /&gt;
    netcdf-bin libnetcdf-dev libgegl-dev  doxygen python-sphinx \&lt;br /&gt;
    postgresql libgeotiff-dev libblas-dev mysql-server \&lt;br /&gt;
    libatlas-dev libblas-dev liblapack3gf liblapack-dev&lt;br /&gt;
    # opencl-headers ocl-icd-libopencl1   liblas-bin liblas-c-dev python-gdal&lt;br /&gt;
&lt;br /&gt;
Download and compile libLAS (or simply install 'liblas-c-dev ', see above):&lt;br /&gt;
 wget http://download.osgeo.org/liblas/libLAS-1.8.0.tar.bz2&lt;br /&gt;
 tar xjf libLAS-1.8.0.tar.bz2&lt;br /&gt;
 mkdir libLAS-1.8.0/makefiles&lt;br /&gt;
 cd libLAS-1.8.0/makefiles&lt;br /&gt;
 cmake -G &amp;quot;Unix Makefiles&amp;quot; ../&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
Download and compile GRASS 7:&lt;br /&gt;
 # (check there for later version)&lt;br /&gt;
 wget http://grass.osgeo.org/grass70/source/grass-7.0.0.tar.gz&lt;br /&gt;
 tar xzfv grass-7.0.0.tar.gz&lt;br /&gt;
 cd grass-7.0.0&lt;br /&gt;
 CFLAGS=&amp;quot;-g -Wall -Werror-implicit-function-declaration -fno-common -Wextra -Wunused&amp;quot; \&lt;br /&gt;
 CXXFLAGS=&amp;quot;-g -Wall&amp;quot;  \&lt;br /&gt;
 ./configure \&lt;br /&gt;
    --prefix=/usr/local \&lt;br /&gt;
    --with-gdal --with-proj --with-proj-share=/usr/share \&lt;br /&gt;
    --with-glw --with-nls --with-readline \&lt;br /&gt;
    --with-cxx --enable-largefile \&lt;br /&gt;
    --with-freetype --with-freetype-includes=/usr/include/freetype2 \&lt;br /&gt;
    --with-sqlite --with-cairo --with-python=/usr/bin/python-config \&lt;br /&gt;
    --with-wxwidgets --with-geos \&lt;br /&gt;
    --with-blas --with-blas-includes=/usr/include/atlas/ \&lt;br /&gt;
    --with-lapack --with-lapack-includes=/usr/include/atlas/ \&lt;br /&gt;
    --with-netcdf=/usr/bin/nc-config --with-odbc=yes \&lt;br /&gt;
    --with-openmp=yes --with-pthread=no --with-postgres=yes \&lt;br /&gt;
    --with-postgres-includes=/usr/include/postgresql \&lt;br /&gt;
    --with-postgres-libs=/usr/lib/postgresql \&lt;br /&gt;
    --with-mysql=yes --with-mysql-includes=/usr/include/mysql \&lt;br /&gt;
    --with-mysql-libs=/usr/lib/mysql&lt;br /&gt;
 make -j2&lt;br /&gt;
&lt;br /&gt;
Install:&lt;br /&gt;
 sudo make install  # installs as /usr/local/bin/grass70&lt;br /&gt;
&lt;br /&gt;
====== GRASS 7 on Debian Stretch ======&lt;br /&gt;
(Updated from above with package changes required for Debian Stretch)&lt;br /&gt;
&lt;br /&gt;
Install needed packages:&lt;br /&gt;
  sudo apt-get install cmake libboost-all-dev flex bison debhelper dpatch autoconf2.13 \&lt;br /&gt;
   autotools-dev python-dev g++ gcc gettext graphviz libcairo2-dev libfftw3-dev \&lt;br /&gt;
   libfreetype6-dev libgdal1i libgdal1-dev libglu1-mesa-dev libglw1-mesa-dev \&lt;br /&gt;
   libncurses5-dev libproj-dev libreadline-dev libsqlite3-dev libtiff5-dev \&lt;br /&gt;
   libwxgtk3.0-dev libxmu-dev libxmu-headers libxt-dev mesa-common-dev \&lt;br /&gt;
   proj-bin proj-data python-numpy python-wxgtk3.0 subversion wx-common zlib1g-dev \&lt;br /&gt;
   netcdf-bin libnetcdf-dev libgegl-dev  doxygen python-sphinx \&lt;br /&gt;
   postgresql libgeotiff-dev libblas-dev mysql-server \&lt;br /&gt;
   libatlas-dev libblas-dev liblapack3 liblapack-dev \&lt;br /&gt;
   opencl-headers ocl-icd-libopencl1 liblas-bin liblas-c-dev python-gdal&lt;br /&gt;
&lt;br /&gt;
Configuration:&lt;br /&gt;
&lt;br /&gt;
  CFLAGS=&amp;quot;-g -Wall -Werror-implicit-function-declaration -fno-common -Wextra -Wunused&amp;quot; \&lt;br /&gt;
  CXXFLAGS=&amp;quot;-g -Wall&amp;quot;  \&lt;br /&gt;
  ./configure \&lt;br /&gt;
   --prefix=/usr/local \&lt;br /&gt;
   --with-gdal --with-proj --with-proj-share=/usr/share \&lt;br /&gt;
   --with-glw --with-nls --with-readline \&lt;br /&gt;
   --with-cxx --enable-largefile \&lt;br /&gt;
   --with-freetype --with-freetype-includes=/usr/include/freetype2 \&lt;br /&gt;
   --with-sqlite --with-cairo --with-python=/usr/bin/python-config \&lt;br /&gt;
   --with-wxwidgets --with-geos \&lt;br /&gt;
   --with-blas --with-blas-includes=/usr/include/atlas/ \&lt;br /&gt;
   --with-lapack --with-lapack-includes=/usr/include/atlas/ \&lt;br /&gt;
   --with-netcdf=/usr/bin/nc-config --with-odbc=yes \&lt;br /&gt;
   --with-openmp=yes --with-pthread=no --with-postgres=yes \&lt;br /&gt;
   --with-postgres-includes=/usr/include/postgresql \&lt;br /&gt;
   --with-postgres-libs=/usr/lib/postgresql \&lt;br /&gt;
   --with-mysql=yes --with-mysql-includes=/usr/include/mysql \&lt;br /&gt;
   --with-mysql-libs=/usr/lib/mysql&lt;br /&gt;
&lt;br /&gt;
Compile:&lt;br /&gt;
&lt;br /&gt;
  make -j2&lt;br /&gt;
&lt;br /&gt;
Install:&lt;br /&gt;
&lt;br /&gt;
  make install&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu =====&lt;br /&gt;
&lt;br /&gt;
There is a dedicated page on how to [[Compile_and_Install_Ubuntu | Compile the GRASS GIS source code &amp;amp; install it in Ubuntu]].&lt;br /&gt;
&lt;br /&gt;
===== Linux Mint =====&lt;br /&gt;
&lt;br /&gt;
Install packages needed for compilation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install build-essential flex make bison gcc libgcc1 g++ \&lt;br /&gt;
 cmake ccache python python-dev python-qt4 python-qt4-dev python-opengl \&lt;br /&gt;
 python-wxversion python-wxtools python-wxgtk2.8 python-dateutil \&lt;br /&gt;
 libgsl0-dev python-numpy wx2.8-headers wx-common libwxgtk2.8-dev \&lt;br /&gt;
 libwxgtk2.8-dbg libwxbase2.8-dev libwxbase2.8-dbg  \&lt;br /&gt;
 zlib1g-dev gettext libtiff-dev libpnglite-dev  \&lt;br /&gt;
 libcairo2 libcairo2-dev sqlite3 libsqlite3-dev libpq-dev libreadline6 \&lt;br /&gt;
 libreadline6-dev libfreetype6-dev txt2tags libfftw3-3 libfftw3-dev \&lt;br /&gt;
 lsb-desktop libapt-pkg-perl resolvconf libjasper-dev subversion \&lt;br /&gt;
 libswscale-dev checkinstall libglu1-mesa-dev libxmu-dev \&lt;br /&gt;
 libproj-dev  proj-bin proj-data gdal-bin python-gdal libgdal1-dev&lt;br /&gt;
&lt;br /&gt;
# GRASS GIS 6 only: libncurses5-dev tcl8.5-dev tk8.5-dev&lt;br /&gt;
# Extra:  ffmpeg ffmpeg2theora libffmpegthumbnailer-dev libavcodec-dev libavformat-dev&lt;br /&gt;
&lt;br /&gt;
CFLAGS=&amp;quot;-Wall&amp;quot; ./configure  --with-cxx  --with-gdal \&lt;br /&gt;
 --with-proj --with-proj-share=/usr/share/proj/ \&lt;br /&gt;
 --with-geos  --without-postgres \&lt;br /&gt;
 --with-nls  --with-opengl-includes=/usr/include/GL/ \&lt;br /&gt;
 --with-fftw  --with-freetype \&lt;br /&gt;
 --with-freetype-includes=/usr/include/freetype2  --with-sqlite \&lt;br /&gt;
 --with-python=/usr/bin/python2.7-config  --with-wx=/usr/bin/wx-config \&lt;br /&gt;
 --with-wxwidgets  --with-cairo  --enable-largefile&lt;br /&gt;
&lt;br /&gt;
# G6:   --with-tcltk-includes=/usr/include/tcl8.5/ \&lt;br /&gt;
&lt;br /&gt;
make&lt;br /&gt;
&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Mandriva =====&lt;br /&gt;
&lt;br /&gt;
Installation of dependencies (urpmi will ask you a few more):&lt;br /&gt;
&lt;br /&gt;
'''Mandriva 2009:''' (take out the '64' everywhere if you are on 32bit)&lt;br /&gt;
  # as root&lt;br /&gt;
    urpmi flex bison zlib-devel tiff-devel png-devel tcl-devel tk-devel sqlite3-devel \&lt;br /&gt;
          mesagl1-devel mesaglu1-devel lib64xmu6-devel gcc-c++ gettext \&lt;br /&gt;
          lib64wxgtk2.8 lib64wxgtk2.8-devel lib64wxgtkgl2.8 wxgtk2.8 \&lt;br /&gt;
          lib64wxPythonGTK2.8 lib64wxPythonGTK2.8-devel wxPythonGTK wxPythonGTK-wxversion&lt;br /&gt;
    exit&lt;br /&gt;
&lt;br /&gt;
'''Mandriva 2010:''' (take out the '64' everywhere if you are on 32bit) - see also [http://svn.mandriva.com/cgi-bin/viewvc.cgi/packages/cooker/grass/current/SPECS/ SPEC] file&lt;br /&gt;
  # as root&lt;br /&gt;
    # installation of PROJ and GDAL&lt;br /&gt;
    urpmi proj proj-devel gdal gdal-devel gcc-gfortran lib64openssl1.0.0 \&lt;br /&gt;
          lib64openssl1.0.0-devel postgresql8.4-devel lib64pq8.4&lt;br /&gt;
 &lt;br /&gt;
    # installation of compilation environment&lt;br /&gt;
    urpmi flex bison zlib-devel tiff-devel png-devel tcl-devel tk-devel sqlite3-devel \&lt;br /&gt;
          lib64mesagl1-devel lib64mesaglu1-devel lib64xmu6-devel gcc-c++ gettext \&lt;br /&gt;
          lib64wxgtk2.8 lib64wxgtk2.8-devel lib64wxgtkgl2.8 wxgtk2.8 \&lt;br /&gt;
          lib64wxPythonGTK2.8 lib64wxPythonGTK2.8-devel wxPythonGTK wxPythonGTK-wxversion&lt;br /&gt;
    exit&lt;br /&gt;
&lt;br /&gt;
Then, to configure GRASS, run (64 bit stuff optional of course):&lt;br /&gt;
  #  as user&lt;br /&gt;
  ./configure \&lt;br /&gt;
    --enable-64bit --with-libs=/usr/lib64 \&lt;br /&gt;
    --with-cxx \&lt;br /&gt;
    --with-gdal=/usr/local/bin/gdal-config \&lt;br /&gt;
    --with-sqlite \&lt;br /&gt;
    --with-nls \&lt;br /&gt;
    --with-python \&lt;br /&gt;
    --with-wxwidgets=/usr/lib/wxPython/bin/wx-config \&lt;br /&gt;
    --with-fftw \&lt;br /&gt;
    --with-ffmpeg --with-ffmpeg-includes=&amp;quot;/usr/include/libav* /usr/include/libpostproc /usr/include/libswscale&amp;quot; \&lt;br /&gt;
    --with-motif \&lt;br /&gt;
    --with-mysql --with-mysql-includes=/usr/include/mysql --with-mysql-libs=/usr/lib64 \&lt;br /&gt;
    --with-freetype --with-freetype-includes=/usr/include/freetype2 \&lt;br /&gt;
    --enable-largefile&lt;br /&gt;
&lt;br /&gt;
   # compilation (use -j2 ior -j4 parameter on multi-core CPUs to accelerate):   &lt;br /&gt;
    make&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
    su&lt;br /&gt;
    # this will install into /usr/local/&lt;br /&gt;
    make install&lt;br /&gt;
    exit&lt;br /&gt;
&lt;br /&gt;
===== Enterprise Linux =====&lt;br /&gt;
&lt;br /&gt;
Enterprise Linux (EL) and derivatives (that is, Red Hat Enterprise Linux, CentOS and Scientific Linux) is a popular and robust platform for servers and computing-heavy workstations, and is therefore a good fit for GIS specific requirements.&lt;br /&gt;
&lt;br /&gt;
See: http://wiki.osgeo.org/wiki/Enterprise_Linux_GIS&lt;br /&gt;
&lt;br /&gt;
===== Scientific Linux =====&lt;br /&gt;
&lt;br /&gt;
See Centos&lt;br /&gt;
&lt;br /&gt;
===== CentOS =====&lt;br /&gt;
&lt;br /&gt;
You first need to add the EPEL repository for PROJ.4 and GDAL, see [https://fedoraproject.org/wiki/EPEL/FAQ#How_can_I_install_the_packages_from_the_EPEL_software_repository.3F here]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;&lt;br /&gt;
Preparation '''Centos 5''' (old):&lt;br /&gt;
  yum install epel-release&lt;br /&gt;
 &lt;br /&gt;
  # Note: CentOS 5 comes with Python 2.4 which lacks python-config, hence two extra tweaks are needed.&lt;br /&gt;
  yum install flex bison zlib-devel tcl-devel tk-devel gcc-c++ gettext \&lt;br /&gt;
              libtiff-devel libpng-devel sqlite-devel \&lt;br /&gt;
              mesa-libGL-devel mesa-libGLU-devel mesa-libGLw-devel \&lt;br /&gt;
              mesa-libOSMesa-devel libXmu-devel python-devel gtk2-devel\&lt;br /&gt;
              ncurses-devel postgresql-devel make&lt;br /&gt;
&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Preparation '''Centos 6''' | '''Scientific Linux 6''':&lt;br /&gt;
  yum install epel-release&lt;br /&gt;
 &lt;br /&gt;
  yum install flex bison make zlib-devel gcc-c++ gettext \&lt;br /&gt;
              sqlite-devel mesa-libGL-devel mesa-libGLU-devel \&lt;br /&gt;
              libXmu-devel libX11-devel fftw-devel libtiff-devel \&lt;br /&gt;
              lesstif-devel python-devel numpy wxPython wxGTK-devel \&lt;br /&gt;
              proj proj-devel proj-epsg proj-nad libxml2 gdal gdal-devel geos geos-devel \&lt;br /&gt;
              python-dateutil python-imaging python-matplotlib&lt;br /&gt;
  # only GRASS GIS 6: install also tcl-devel tk-devel&lt;br /&gt;
&lt;br /&gt;
Preparation '''Centos 7''' | '''Scientific Linux 7''':&lt;br /&gt;
  yum install epel-release&lt;br /&gt;
 &lt;br /&gt;
  yum install flex bison make zlib-devel gcc-c++ gettext \&lt;br /&gt;
              sqlite-devel mesa-libGL-devel mesa-libGLU-devel \&lt;br /&gt;
              libXmu-devel libX11-devel fftw-devel libtiff-devel \&lt;br /&gt;
              lesstif-devel python-devel numpy wxPython wxGTK-devel \&lt;br /&gt;
              proj proj-devel proj-epsg proj-nad libxml2 gdal gdal-devel geos geos-devel \&lt;br /&gt;
              netcdf netcdf-devel blas-devel lapack-devel atlas-devel \&lt;br /&gt;
              python-dateutil python-imaging python-matplotlib python-sphinx \&lt;br /&gt;
              doxygen subversion&lt;br /&gt;
&lt;br /&gt;
'''GRASS GIS 7 compilation and installation'''&lt;br /&gt;
&lt;br /&gt;
[http://grass.osgeo.org/download/software/sources/ Download source code] (e.g., --&amp;gt; &amp;quot;Download latest 7.0-svn code (SVN))&amp;quot; and configure GRASS 7 (suggestion: save this as script):&lt;br /&gt;
&lt;br /&gt;
 ./configure \&lt;br /&gt;
  --with-cxx \&lt;br /&gt;
  --enable-largefile \&lt;br /&gt;
  --with-proj --with-proj-share=/usr/share/proj \&lt;br /&gt;
  --with-gdal=/usr/bin/gdal-config \&lt;br /&gt;
  --with-sqlite \&lt;br /&gt;
  --with-python \&lt;br /&gt;
  --with-cairo --with-cairo-ldflags=-lfontconfig \&lt;br /&gt;
  --with-freetype --with-freetype-includes=/usr/include/freetype2 \&lt;br /&gt;
  --with-wxwidgets=/usr/bin/wx-config \&lt;br /&gt;
  --with-openmp \&lt;br /&gt;
  --with-blas --with-blas-includes=/usr/include/atlas-x86_64-base/ \&lt;br /&gt;
  --with-lapack --with-lapack-includes=/usr/include/atlas-x86_64-base/ \&lt;br /&gt;
  --with-fftw \&lt;br /&gt;
  --with-geos \&lt;br /&gt;
  --with-netcdf \&lt;br /&gt;
  --without-ffmpeg \&lt;br /&gt;
  --without-mysql \&lt;br /&gt;
  --without-postgres \&lt;br /&gt;
  --without-odbc \&lt;br /&gt;
  --without-fftw&lt;br /&gt;
&lt;br /&gt;
Compile:&lt;br /&gt;
    make&lt;br /&gt;
or on a multicore system (number depends of available cores):&lt;br /&gt;
    make -j4&lt;br /&gt;
&lt;br /&gt;
For a system wide installation, run as root user:&lt;br /&gt;
    make install&lt;br /&gt;
OR simply run it directly from the source code directory (substitute ARCH with i686 or x86_64):&lt;br /&gt;
&lt;br /&gt;
    bin.$ARCH/grass70 -gui&lt;br /&gt;
&lt;br /&gt;
In this case, for convenience, add it to the search path:&lt;br /&gt;
    mkdir $HOME/bin&lt;br /&gt;
    cd $HOME/bin&lt;br /&gt;
    # example:&lt;br /&gt;
    ln -s $HOME/software/grass70_release/bin.i686-pc-linux-gnu/grass70 .&lt;br /&gt;
&lt;br /&gt;
Now use it subsequently with&lt;br /&gt;
    grass70 -gui&lt;br /&gt;
&lt;br /&gt;
===== Gentoo =====&lt;br /&gt;
&lt;br /&gt;
  ./configure \&lt;br /&gt;
    --with-freetype=yes --with-freetype-includes=&amp;quot;/usr/include/freetype2/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
See also http://packages.gentoo.org/package/sci-geosciences/grass&lt;br /&gt;
&lt;br /&gt;
===== Funtoo =====&lt;br /&gt;
&lt;br /&gt;
{{MovedToTrac|FuntooLinux}}&lt;br /&gt;
&lt;br /&gt;
===== Fedora =====&lt;br /&gt;
&lt;br /&gt;
====== GRASS GIS 6 on Fedora ======&lt;br /&gt;
&lt;br /&gt;
'''Preparation''' for the compilation of GRASS GIS 6 source code (F16-F21):&lt;br /&gt;
&lt;br /&gt;
  yum install proj-devel gdal-devel sqlite-devel ffmpeg-devel mesa-libGL-devel \&lt;br /&gt;
              mesa-libGLU-devel libXmu-devel libX11-devel tcl-devel tk-devel geos \&lt;br /&gt;
              fftw-devel libtiff-devel lesstif-devel python-devel numpy wxPython wxGTK-devel \&lt;br /&gt;
              gcc gcc-c++ bison flex ncurses-devel proj-epsg proj-nad xml2 subversion&lt;br /&gt;
&lt;br /&gt;
''Note 1: that currently gdal-devel has (too) many dependencies and may lead to a massive download of extra packages (200 on a fresh Fedora 16 install). Hopefully solved in later Fedora versions.''&lt;br /&gt;
&lt;br /&gt;
''Note 2: the optional ffmpeg-devel comes from the rpmfusion-free repository ([http://rpmfusion.org/Configuration/ configuration]).''&lt;br /&gt;
&lt;br /&gt;
'''Download''' the source code:&lt;br /&gt;
* GRASS GIS 6: [http://grass.osgeo.org/download/software/sources/ release package] - [http://grass.osgeo.org/grass64/source/snapshot/ weekly snapshot] - [http://trac.osgeo.org/grass/wiki/DownloadSource#GRASS6.4 SVN repository]&lt;br /&gt;
&lt;br /&gt;
'''Configure''': This is an ''example'' how to configure the source code on a Fedora system:&lt;br /&gt;
&lt;br /&gt;
  ./configure \&lt;br /&gt;
   --with-cxx \&lt;br /&gt;
   --with-gdal=/usr/bin/gdal-config \&lt;br /&gt;
   --with-proj --with-proj-share=/usr/share/proj \&lt;br /&gt;
   --with-sqlite \&lt;br /&gt;
   --with-nls \&lt;br /&gt;
   --with-geos \&lt;br /&gt;
   --with-wxwidgets=/usr/bin/wx-config \&lt;br /&gt;
   --with-python=/usr/bin/python-config \&lt;br /&gt;
   --with-freetype --with-freetype-includes=/usr/include/freetype2 \&lt;br /&gt;
   --enable-largefile \&lt;br /&gt;
   --without-odbc \&lt;br /&gt;
   --with-fftw&lt;br /&gt;
&lt;br /&gt;
Extra: If you also want '''FFMPEG''' support - it requires 'yum install fftw-devel'. Then add to the configuration lines above:&lt;br /&gt;
&lt;br /&gt;
     --with-ffmpeg --with-ffmpeg-includes=&amp;quot;/usr/include/ffmpeg /usr/include/ffmpeg/libav* /usr/include/ffmpeg/libpostproc /usr/include/ffmpeg/libswscale&amp;quot; \&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally '''compile''' the configured source code:&lt;br /&gt;
    make&lt;br /&gt;
   or on multicore (number depends of available cores):&lt;br /&gt;
    make -j4&lt;br /&gt;
   and&lt;br /&gt;
    make install # requires root permissions unless you become owner of /usr/local/&lt;br /&gt;
&lt;br /&gt;
Then use GRASS GIS 6 and enjoy!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====== GRASS GIS 7 on Fedora ======&lt;br /&gt;
&lt;br /&gt;
'''Preparation''' for the compilation of GRASS GIS 7 source code (F20-F22):&lt;br /&gt;
&lt;br /&gt;
  dnf install gcc gcc-c++ bison flex ncurses-devel proj-epsg proj-nad xml2 \&lt;br /&gt;
              proj-devel gdal gdal-devel gdal-python sqlite-devel mesa-libGL-devel \&lt;br /&gt;
              fftw-devel mesa-libGLU-devel libXmu-devel libX11-devel geos geos-devel \&lt;br /&gt;
              libtiff-devel lesstif-devel python-devel numpy wxPython wxGTK-devel \&lt;br /&gt;
              python-dateutil python-imaging python-matplotlib-wx subversion doxygen python-sphinx&lt;br /&gt;
&lt;br /&gt;
  # optionally also:  netcdf-devel postgresql-devel&lt;br /&gt;
&lt;br /&gt;
''Note 1: the optional ffmpeg-devel comes from the rpmfusion-free repository ([http://rpmfusion.org/Configuration/ configuration]).''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Download''' the source code:&lt;br /&gt;
* GRASS GIS 7: [http://grass.osgeo.org/grass70/source/snapshot/ weekly snapshot] - [http://trac.osgeo.org/grass/wiki/DownloadSource#GRASS7 SVN repository]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configure''': This is an example how to configure the source code on a Fedora system:&lt;br /&gt;
&lt;br /&gt;
  ./configure \&lt;br /&gt;
   --with-cxx \&lt;br /&gt;
   --with-gdal=/usr/bin/gdal-config \&lt;br /&gt;
   --with-proj --with-proj-share=/usr/share/proj \&lt;br /&gt;
   --with-python=/usr/bin/python-config \&lt;br /&gt;
   --with-geos \&lt;br /&gt;
   --with-sqlite \&lt;br /&gt;
   --with-nls \&lt;br /&gt;
   --with-wxwidgets=/usr/bin/wx-config \&lt;br /&gt;
   --with-fftw \&lt;br /&gt;
   --with-cairo --with-cairo-ldflags=-lfontconfig \&lt;br /&gt;
   --with-freetype --with-freetype-includes=/usr/include/freetype2 \&lt;br /&gt;
   --enable-largefile \&lt;br /&gt;
   --without-odbc&lt;br /&gt;
&lt;br /&gt;
''Extra 1:'' If you also want '''FFMPEG support''' - it requires 'dnf install fftw-devel' from the rpmfusion-free repository. Then add to the configuration lines above:&lt;br /&gt;
&lt;br /&gt;
     --with-ffmpeg --with-ffmpeg-includes=&amp;quot;/usr/include/ffmpeg /usr/include/ffmpeg/libav* /usr/include/ffmpeg/libpostproc /usr/include/ffmpeg/libswscale&amp;quot; \&lt;br /&gt;
&lt;br /&gt;
''Extra 2:'' For '''LAPACK/BLAS support''' (addons i.spec.unmix, v.kriging etc), install &amp;quot;dnf install lapack lapack-devel blas blas-devel atlas atlas-devel&amp;quot;. Then add to the configuration lines above:&lt;br /&gt;
  --with-blas --with-blas-includes=/usr/include/atlas-x86_64-base/ \&lt;br /&gt;
  --with-lapack --with-lapack-includes=/usr/include/atlas-x86_64-base/ \&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally '''compile''' the configured source code:&lt;br /&gt;
    make&lt;br /&gt;
   or on multicore (number depends of available cores):&lt;br /&gt;
    make -j4&lt;br /&gt;
   and&lt;br /&gt;
    make install # requires root permissions unless you become owner of /usr/local/&lt;br /&gt;
&lt;br /&gt;
Then use GRASS GIS 7 and enjoy!&lt;br /&gt;
&lt;br /&gt;
===== openSUSE =====&lt;br /&gt;
&lt;br /&gt;
To build GRASS on openSUSE:&lt;br /&gt;
&lt;br /&gt;
RPM packages to be installed:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 sudo zypper install bison flex freetype2-devel fftw3-devel gcc-c++ \&lt;br /&gt;
   libgdal-devel libgeos-devel libjpeg-devel libpng-devel libtiff-devel \&lt;br /&gt;
   man proj libproj-devel readline-devel netcdf-devel ncurses-devel \&lt;br /&gt;
   mysql-devel postgresql-devel sqlite-devel unixODBC-devel \&lt;br /&gt;
   tcl-devel tk-devel xorg-x11-Mesa-devel libXmu-devel \&lt;br /&gt;
   python-numpy python-dateutil python-devel python-opengl \&lt;br /&gt;
   python-wxWidgets python-xml python-dateutil wxWidgets-devel \&lt;br /&gt;
   zlib-devel doxygen python-sphinx&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source code configuration:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 ./configure \&lt;br /&gt;
 	--enable-largefile \&lt;br /&gt;
	--with-proj-share=/usr/share/proj \&lt;br /&gt;
	--with-cxx \&lt;br /&gt;
	--with-lapack=yes \&lt;br /&gt;
	--with-x \&lt;br /&gt;
	--with-motif \&lt;br /&gt;
	--with-gdal=/usr/bin/gdal-config \&lt;br /&gt;
	--with-postgres --with-postgres-includes=/usr/include/pgsql \&lt;br /&gt;
	--with-mysql --with-mysql-includes=/usr/include/mysql \&lt;br /&gt;
	--with-fftw \&lt;br /&gt;
	--with-readline \&lt;br /&gt;
	--with-netcdf \&lt;br /&gt;
	--with-curses \&lt;br /&gt;
	--with-geos \&lt;br /&gt;
	--with-nls \&lt;br /&gt;
	--with-sqlite \&lt;br /&gt;
	--with-freetype \&lt;br /&gt;
	--with-freetype-includes=/usr/include/freetype2 \&lt;br /&gt;
	--with-wxwidgets \&lt;br /&gt;
	--with-odbc \&lt;br /&gt;
	--with-python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then compile with &amp;quot;make [-j2]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===== Arch Linux =====&lt;br /&gt;
&lt;br /&gt;
The easiest/fastest way is to build GRASS GIS using AUR:&lt;br /&gt;
&lt;br /&gt;
https://aur.archlinux.org/packages/?O=0&amp;amp;K=grass (msieczka: I would recommend my set of PKBUILDs - https://aur.archlinux.org/packages/?K=czk&amp;amp;SeB=m. They are most feature-rich, up-to-date and allow to have various versions installed alongside each other without conflicts.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
But if you want to compile it yourself you have to keep in mind that in Arch Linux the default Python version 3.&lt;br /&gt;
&lt;br /&gt;
 python --version&lt;br /&gt;
&lt;br /&gt;
 Python 3.3.1&lt;br /&gt;
&lt;br /&gt;
Therefore, to build GRASS GIS (version 7 in this example), we can use either use virtualenv or symlink python2 and python2-config in a given directory. &lt;br /&gt;
Let's use the latter approach&lt;br /&gt;
&lt;br /&gt;
 sudo ln -s /usr/bin/python2 $HOME/usr/bin/python&lt;br /&gt;
 sudo ln -s /usr/bin/python2-config $HOME/usr/bin/python-config&lt;br /&gt;
&lt;br /&gt;
We can now start building GRASS 7&lt;br /&gt;
&lt;br /&gt;
 export PATH=~/usr/bin:$PATH &amp;amp;&amp;amp; \&lt;br /&gt;
 ./configure \&lt;br /&gt;
 --enable-debug \&lt;br /&gt;
 --enable-64bit \&lt;br /&gt;
 --with-libs=/usr/lib64  \&lt;br /&gt;
 --with-cxx \&lt;br /&gt;
 --with-readline \&lt;br /&gt;
 --with-zlib-includes=&amp;quot;/usr/include/&amp;quot; \&lt;br /&gt;
 --with-freetype=yes \&lt;br /&gt;
 --with-freetype-includes=&amp;quot;/usr/include/freetype2/&amp;quot; \&lt;br /&gt;
 --enable-largefile=yes \&lt;br /&gt;
 --with-gdal=/usr/bin/gdal-config \&lt;br /&gt;
 --with-proj-share=/usr/share/proj/ \&lt;br /&gt;
 --with-geos=/usr/bin/geos-config \&lt;br /&gt;
 --with-cairo \&lt;br /&gt;
 --with-odbc \&lt;br /&gt;
 --with-pthread \&lt;br /&gt;
 --with-liblas=/usr/local/bin/liblas-config  \&lt;br /&gt;
 --with-fftw-includes=&amp;quot;/usr/include/&amp;quot; \&lt;br /&gt;
 --with-fftw-libs=/usr/lib/ \&lt;br /&gt;
 --with-tcltk-includes=&amp;quot;/usr/include/&amp;quot; \&lt;br /&gt;
 --with-wxwidgets \&lt;br /&gt;
 --with-postgres=yes \&lt;br /&gt;
 --with-postgres-includes=&amp;quot;/usr/include/postgresql/internal&amp;quot; \&lt;br /&gt;
 --with-postgres-libs=&amp;quot;/usr/include/postgresql/internal/libpq&amp;quot; \&lt;br /&gt;
 --with-sqlite=yes \&lt;br /&gt;
 --with-python=yes \&lt;br /&gt;
 --with-liblas \&lt;br /&gt;
 --with-netcdf &lt;br /&gt;
&lt;br /&gt;
Now let's compile and install it&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
Now the final step required to use GRASS with python2 is to create a bash script &amp;quot;grass&amp;quot; (or the name you want)&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 export PATH=~/usr/bin:$PATH&lt;br /&gt;
 python2 /usr/local/bin/grass70&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And make it executable and copy it somewhere in the PATH&lt;br /&gt;
&lt;br /&gt;
 chmod+x grass&lt;br /&gt;
 sudo cp grass /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It's done, you can enjoy GRASS 7 in Arch, just type &amp;quot;grass&amp;quot; (or the name you gave to the script) in the terminal to launch it.&lt;br /&gt;
&lt;br /&gt;
===== RPM SPEC files =====&lt;br /&gt;
* ... can be found in the source code, rpm/ directory, &lt;br /&gt;
* or [https://build.opensuse.org/package/show?package=grass&amp;amp;project=Application%3AGeo OpenSuSe]&lt;br /&gt;
* or [https://admin.fedoraproject.org/pkgdb/acls/name/grass Fedora]&lt;br /&gt;
* or [http://svn.mandriva.com/cgi-bin/viewvc.cgi/packages/cooker/grass/ Mandriva] (there are also [http://svn.mandriva.com/cgi-bin/viewvc.cgi/packages/cooker/proj/ proj4], [http://svn.mandriva.com/cgi-bin/viewvc.cgi/packages/cooker/geos/ geos], [http://svn.mandriva.com/cgi-bin/viewvc.cgi/packages/cooker/gdal/ gdal], [http://svn.mandriva.com/cgi-bin/viewvc.cgi/packages/cooker/gdal-grass/ gdal-grass-plugin], [http://svn.mandriva.com/cgi-bin/viewvc.cgi/packages/cooker/qgis/ qgis] etc)&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
===== Zaurus =====&lt;br /&gt;
&lt;br /&gt;
... see [http://wiki.debian.org/?GrassGISonZaurus here] for instructions&lt;br /&gt;
&lt;br /&gt;
==== Mac OSX ====&lt;br /&gt;
&lt;br /&gt;
===== Conventional installation =====&lt;br /&gt;
* see the source/macosx readme ([http://trac.osgeo.org/grass/browser/grass/trunk/macosx/ReadMe.rtf Trac link])&lt;br /&gt;
* main page [[Compiling on MacOSX]]&lt;br /&gt;
* main page [[Packaging on MacOSX]]&lt;br /&gt;
* [http://grass.osgeo.org/download/software/mac-osx/ official download site]&lt;br /&gt;
* [http://www.kyngchaos.com/software/frameworks#build_scripts build scripts for dependencies]&lt;br /&gt;
* solving errors at starting GRASS GIS: [[MacOSX GRASS errors]]&lt;br /&gt;
=====Compiling on MacOSX using homebrew =====&lt;br /&gt;
&lt;br /&gt;
* See [[Compiling on MacOSX using homebrew]]&lt;br /&gt;
&lt;br /&gt;
==== FreeBSD / NetBSD ====&lt;br /&gt;
&lt;br /&gt;
The recommended compiler tools are GCC, GNU make, GNU coreutils (for install), and flex. All are available through the respective package managing tools (pkg_add for FreeBSD and pkgin install for NetBSD) and for recent *BSD versions most likely installed by default.&lt;br /&gt;
&lt;br /&gt;
GRASS 6.x and GRASS 7 should compile on FreeBSD 8.0 or later and NetBSD 5.0 or later (maybe also on updated NetBSD 4.x).&lt;br /&gt;
&lt;br /&gt;
It is highly recommended to install GDAL/OGR and PROJ4 first. These libraries and tools are available as [http://www.freebsd.org/ports/ ports for FreeBSD] and [http://www.pkgsrc.org/ packages for NetBSD].&lt;br /&gt;
&lt;br /&gt;
Optional functionality is listed with ''./configure --help'', and related libraries and tools might need to be installed first.&lt;br /&gt;
&lt;br /&gt;
You then may need to edit include/Make/Platform.make and set&lt;br /&gt;
 ICONVLIB            = -liconv&lt;br /&gt;
&lt;br /&gt;
==== Solaris ====&lt;br /&gt;
&lt;br /&gt;
* ''2008 Oct 15'': see [http://lists.osgeo.org/pipermail/grass-user/2008-October/047093.html this post on the grass mailing list]&lt;br /&gt;
&lt;br /&gt;
===== 11 SPARC/i86pc =====&lt;br /&gt;
&lt;br /&gt;
The recommended compiler tools are GCC, GNU make, GNU coreutils (for install), and flex. All are available through the Solaris package manager.&lt;br /&gt;
&lt;br /&gt;
Most dependencies are available through the Solaris package manager. GDAL and proj4 can either be compiled from source or installed e.g. from [http://www.opencsw.org/ OpenCSW]. If packages are installed from OpenCSW, the linker flags need to be set with&lt;br /&gt;
&lt;br /&gt;
      LDFLAGS=&amp;quot;-Wl,-R/opt/csw/lib -L/opt/csw/lib -Wl,-R/opt/csw/gxx/lib -L/opt/csw/gxx/lib&amp;quot;&lt;br /&gt;
&lt;br /&gt;
See also the [http://www.opencsw.org/use-it/ OpenCSW documentation].&lt;br /&gt;
&lt;br /&gt;
===== 10 SPARC/i86pc =====&lt;br /&gt;
&lt;br /&gt;
* get gcc compiler and tools. There are several sources: Solaris Companion CD (SFW pkg, installs in /opt/sfw/), Blastwave ([http://www.blastwave.org], CSW pkg, installs in /opt/csw/) or Sunfreeware ([http://www.sunfreeware.com], SMC pkg, installs in /usr/local/). &lt;br /&gt;
Needed Packages from Sunfreeware: SMCbinut, SMCbison, SMCcoreu, SMCfindu, SMCflex, SMCgawk, SMCgcc, SMCgrep, SMCgzip, SMCless, SMClibt, SMClicon, SMCmake, SMCncurs, SMCproj, SMCsed, SMCtar, SMCtcl, SMCtiff, SMCtk, SMCunzip, SMCzlib. &lt;br /&gt;
&lt;br /&gt;
* compile and install fftw-library ([http://www.fftw.org]). You need to re-compile the library with: &lt;br /&gt;
&lt;br /&gt;
      ./configure --with-pic --enable-shared; make ; make install. &lt;br /&gt;
&lt;br /&gt;
The pre-built packages don't work. &lt;br /&gt;
&lt;br /&gt;
* compile and install gdal library (see documentation of gdal, [http://www.gdal.org]).&lt;br /&gt;
&lt;br /&gt;
* compile and install any additional libraries (e. g. GEOS, [http://geos.refractions.net]). &lt;br /&gt;
&lt;br /&gt;
* set compiler flags and path. e. g.: &lt;br /&gt;
&lt;br /&gt;
      # on ultra-sparc machine:&lt;br /&gt;
      CFLAGS=&amp;quot;-O3 -mcpu=v9&amp;quot;&lt;br /&gt;
      CXXFLAGS=&amp;quot;-O3 -mcpu=v9&amp;quot;&lt;br /&gt;
      PATH=&amp;quot;/usr/local/bin:/opt/sfw/bin:/usr/ccs/bin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
      export CFLAGS CXXFLAGS PATH&lt;br /&gt;
&lt;br /&gt;
Path has to be changed for the packages (Sunfreeware: /usr/local/bin, Solaris Companion: /opt/sfw/bin, Blastwave: /opt/csw/bin). &lt;br /&gt;
&lt;br /&gt;
* Next configure, e. g.: &lt;br /&gt;
&lt;br /&gt;
      ./configure --with-postgres-includes=/usr/include/pgsql/ \&lt;br /&gt;
      --with-postgres-libs=/usr/lib --with-postgres=yes \&lt;br /&gt;
      --with-includes=/usr/local/include/ncurses&lt;br /&gt;
&lt;br /&gt;
If you use n(ew)curses, you have to include the path /usr/local/include/ncurses. &lt;br /&gt;
&lt;br /&gt;
then:&lt;br /&gt;
&lt;br /&gt;
      make&lt;br /&gt;
      su&lt;br /&gt;
      make install&lt;br /&gt;
&lt;br /&gt;
If the shared libraries are not found at runtime of the modules, use 'crle' to add the paths of the libraries for the dynamic linker, e. g. as root:&lt;br /&gt;
&lt;br /&gt;
      crle -l /lib:/usr/lib:/usr/local/lib:/opt/sfw/lib:/usr/X11/lib&lt;br /&gt;
&lt;br /&gt;
Be careful not to omit a library path, the system may be unusable if you forget the /lib path.&lt;br /&gt;
&lt;br /&gt;
==== AIX ====&lt;br /&gt;
&lt;br /&gt;
A recent [ftp://ftp.gnu.org/gnu/make/ GNU make] (&amp;gt;= 3.81) and GNU coreutils are required. These are available with the [http://www-03.ibm.com/systems/power/software/aix/linux/toolbox/download.html IBM AIX toolbox] or through third-party AIX software repositories, e.g. [http://www.bullfreeware.com/ bullfreeware] and [http://www.perzl.org/aix/ perzl.org]. Note that 'make' does not work, only 'gmake' works. &lt;br /&gt;
&lt;br /&gt;
General instructions to compile on AIX are e.g. [http://www.perzl.org/aix/index.php?n=Main.Instructions here]&lt;br /&gt;
&lt;br /&gt;
On AIX, compilation results by default in 32 bit applications and static libraries. The [http://www.ibm.com/developerworks/aix/library/au-gnu.html IBM documentation] explains how to build 64 bit applications and shared libraries with GCC.&lt;br /&gt;
&lt;br /&gt;
'''GRASS 6: Using the IBM xlc compiler:'''&lt;br /&gt;
* ''see [http://thread.gmane.org/gmane.comp.gis.grass.user/32667 this mailing list thread]''&lt;br /&gt;
&lt;br /&gt;
Mike wrote in 2009:&lt;br /&gt;
&lt;br /&gt;
After attempting all the suggestions, I finally used&lt;br /&gt;
--disable-shared on the configure command, and all but&lt;br /&gt;
a handful of modules successfully compiled. I was able to&lt;br /&gt;
individually address the ones that failed through Makefile&lt;br /&gt;
edits and several small source code/header file edits.&lt;br /&gt;
&lt;br /&gt;
The environment variables and configure command that worked were:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# xlc compiler:&lt;br /&gt;
export PATH=/usr/local/bin:/opt/freeware/bin:$PATH&lt;br /&gt;
export OBJECT_MODE=64&lt;br /&gt;
export LIBICONV=/opt/freeware&lt;br /&gt;
export CC=&amp;quot;xlc_r -q64&amp;quot;&lt;br /&gt;
export CFLAGS=&amp;quot;-O -qstrict&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;xlC_r -q64&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;-O -qstrict&amp;quot;&lt;br /&gt;
export AR=&amp;quot;ar -X64&amp;quot;&lt;br /&gt;
export F77=&amp;quot;xlf_r -q64&amp;quot;&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I/afs/isis/pkg/libpng/include -I/usr/local/include -I$LIBICONV/include -I/usr/lpp/X11/include/X11&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L/usr/local/lib -L$LIBICONV/lib -L/usr/lib -L/usr/X11R6/lib -lc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
./configure --prefix=/afs/isis/pkg/grass-6.4.0 \&lt;br /&gt;
  --enable-64bit \&lt;br /&gt;
  --disable-shared \&lt;br /&gt;
  --with-includes=&amp;quot;/usr/include/fontconfig /usr/include/X11 /usr/include/X11/Xft /usr/include/X11/ext&amp;quot; \&lt;br /&gt;
  --x-includes=/usr/include/X11 \&lt;br /&gt;
  --x-libraries=/usr/X11R6/lib \&lt;br /&gt;
  --with-fftw-includes=/afs/isis/pkg/fftw-3.2.2/include \&lt;br /&gt;
  --with-fftw-libs=/afs/isis/pkg/fftw-3.2.2/lib \&lt;br /&gt;
  --with-gdal=/afs/isis/pkg/gdal/bin/gdal-config \&lt;br /&gt;
  --with-proj-includes=/afs/isis/pkg/proj/include \&lt;br /&gt;
  --with-proj-libs=/afs/isis/pkg/proj/lib \&lt;br /&gt;
  --with-proj-share=/afs/isis/pkg/proj/share/proj \&lt;br /&gt;
  --with-tcltk-includes=/usr/local/include \&lt;br /&gt;
  --with-tcltk-libs=/usr/local/lib \&lt;br /&gt;
  --with-opengl-includes=/usr/include/GL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''GRASS 7: Using the IBM xlc compiler:'''&lt;br /&gt;
&lt;br /&gt;
Get and install (in this order):&lt;br /&gt;
* [ftp://ftp.gnu.org/gnu/tar/ GNU tar]&lt;br /&gt;
* [ftp://ftp.gnu.org/gnu/make/ GNU make] (&amp;gt;= 3.81)&lt;br /&gt;
* [http://www.sqlite.org SQLite]&lt;br /&gt;
* [http://trac.osgeo.org/proj/ PROJ.4] (for ./configure parameters, see [[Talk:Compile and Install|here]])&lt;br /&gt;
* [http://www.gdal.org GDAL] (for ./configure parameters, see [[Talk:Compile and Install|here]])&lt;br /&gt;
* [http://grass.osgeo.org/grass70/source/snapshot/ GRASS GIS 7]&lt;br /&gt;
&lt;br /&gt;
The environment variables and configure command that worked:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## AIX 5.x&lt;br /&gt;
&lt;br /&gt;
export LIBPATH=/opt/freeware/lib64:/opt/freeware/lib&lt;br /&gt;
# make 'ar' happy&lt;br /&gt;
export OBJECT_MODE=64&lt;br /&gt;
&lt;br /&gt;
PREFIX=$HOME/private/bin&lt;br /&gt;
./configure \&lt;br /&gt;
  --prefix=$PREFIX \&lt;br /&gt;
  --disable-shared \&lt;br /&gt;
  --enable-largefile \&lt;br /&gt;
  --with-cxx \&lt;br /&gt;
  --with-proj-includes=$PREFIX/include/ \&lt;br /&gt;
  --with-proj-libs=$PREFIX/lib/ \&lt;br /&gt;
  --with-proj-share=$PREFIX/share/proj/ \&lt;br /&gt;
  --with-sqlite \&lt;br /&gt;
  --with-sqlite-includes=$PREFIX/include/ \&lt;br /&gt;
  --with-sqlite-libs=$PREFIX/lib/ \&lt;br /&gt;
  --with-tiff=no \&lt;br /&gt;
  --with-png=no \&lt;br /&gt;
  --with-fftw=no \&lt;br /&gt;
  --with-cairo=no \&lt;br /&gt;
  --with-freetype=no&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''GRASS 7: Using the GNU gcc compiler:'''&lt;br /&gt;
&lt;br /&gt;
Get and install (in this order):&lt;br /&gt;
* if needed, [ftp://ftp.gnu.org/gnu/tar/ GNU tar]&lt;br /&gt;
* if needed (the name is often 'gmake' and not 'make') [ftp://ftp.gnu.org/gnu/make/ GNU make] (&amp;gt;= 3.81)&lt;br /&gt;
* [http://www.sqlite.org SQLite]&lt;br /&gt;
* [http://trac.osgeo.org/proj/ PROJ.4] (for ./configure parameters, see [[Talk:Compile and Install|here]])&lt;br /&gt;
* [http://www.gdal.org GDAL] (for ./configure parameters, see [[Talk:Compile and Install|here]])&lt;br /&gt;
* [http://grass.osgeo.org/grass70/source/snapshot/ GRASS GIS 7]&lt;br /&gt;
&lt;br /&gt;
The environment variables and configure command that worked for AIX 5.x:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## AIX 5.x&lt;br /&gt;
&lt;br /&gt;
export LIBPATH=/opt/freeware/lib64:/opt/freeware/lib&lt;br /&gt;
# make 'ar' happy&lt;br /&gt;
export OBJECT_MODE=64&lt;br /&gt;
&lt;br /&gt;
PREFIX=$HOME/private/bin&lt;br /&gt;
CFLAGS='-ansi -D_ALL_SOURCE=1 -D_POSIX_SOURCE=1 -D_POSIX_C_SOURCE=200809L -Dinline=' ./configure \&lt;br /&gt;
  --prefix=$PREFIX \&lt;br /&gt;
  --disable-shared \&lt;br /&gt;
  --enable-largefile \&lt;br /&gt;
  --with-cxx \&lt;br /&gt;
  --with-proj-includes=$PREFIX/include/ \&lt;br /&gt;
  --with-proj-libs=$PREFIX/lib/ \&lt;br /&gt;
  --with-proj-share=$PREFIX/share/proj/ \&lt;br /&gt;
  --with-sqlite \&lt;br /&gt;
  --with-sqlite-includes=$PREFIX/include/ \&lt;br /&gt;
  --with-sqlite-libs=$PREFIX/lib/ \&lt;br /&gt;
  --with-tiff=no \&lt;br /&gt;
  --with-png=no \&lt;br /&gt;
  --with-fftw=no \&lt;br /&gt;
  --with-cairo=no \&lt;br /&gt;
  --with-freetype=no&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The environment variables and configure command that worked for AIX 7.x:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## AIX 7.x&lt;br /&gt;
export CC=&amp;quot;gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;g++&amp;quot;&lt;br /&gt;
PREFIX=$HOME/bin&lt;br /&gt;
&lt;br /&gt;
LDFLAGS=&amp;quot;-Wl,-bsvr4,-R,/opt/freeware/lib -L/opt/freeware/lib&amp;quot; CPPFLAGS=&amp;quot;-I/opt/freeware/include&amp;quot; ./configure \&lt;br /&gt;
  --prefix=$PREFIX \&lt;br /&gt;
  --enable-largefile \&lt;br /&gt;
  --enable-shared \&lt;br /&gt;
  --with-includes=/opt/freeware/include --with-libs=/opt/freeware/lib \&lt;br /&gt;
  --with-cxx \&lt;br /&gt;
  --with-proj-includes=$PREFIX/include/ \&lt;br /&gt;
  --with-proj-libs=$PREFIX/lib/ \&lt;br /&gt;
  --with-proj-share=$PREFIX/share/proj/ \&lt;br /&gt;
  --with-gdal=$PREFIX/bin/gdal-config \&lt;br /&gt;
  --with-sqlite \&lt;br /&gt;
  --with-sqlite-libs=$PREFIX/lib --with-sqlite-includes=$PREFIX/include \&lt;br /&gt;
  --with-png=no \&lt;br /&gt;
  --with-tiff=no \&lt;br /&gt;
  --with-fftw=no \&lt;br /&gt;
  --with-cairo=no \&lt;br /&gt;
  --with-opengl=no \&lt;br /&gt;
  --with-freetype=no&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== MS-Windows ====&lt;br /&gt;
&lt;br /&gt;
===== MS-Windows/Cygwin =====&lt;br /&gt;
&lt;br /&gt;
* See the [[Cygwin]] wiki pages&lt;br /&gt;
&lt;br /&gt;
===== MS-Windows/native =====&lt;br /&gt;
&lt;br /&gt;
====== Compile ======&lt;br /&gt;
&lt;br /&gt;
* [http://trac.osgeo.org/grass/wiki/CompileOnWindows GRASS Windows Native Binary Building Guide] (GRASS 6.4.x + 7.x)&lt;br /&gt;
* &amp;lt;strike&amp;gt;[http://www.webalice.it/marco.pasetti/grass/BuildFromSource.html GRASS Windows Native Binary Building Guide] (GRASS 6.3.x) &amp;lt;/strike&amp;gt;&lt;br /&gt;
* See/adapt [http://blog.qgis.org/node/124 idea] for unattended install of QGIS (et al) from [http://trac.osgeo.org/osgeo4w/ OSGeo4W] from the QuantumGIS Blog.&lt;br /&gt;
&lt;br /&gt;
See also [[WinGRASS Current Status]] for latest updates.&lt;br /&gt;
&lt;br /&gt;
=== Common problems and solutions ===&lt;br /&gt;
&lt;br /&gt;
During compilation, error can occur if certain packages are not installed. Here a list of problems with solution:&lt;br /&gt;
&lt;br /&gt;
* error: X11/Xlib.h: No such file or directory&lt;br /&gt;
** this suggests that you don't have the X headers installed&lt;br /&gt;
** Solution: Install the libx11-dev package&lt;br /&gt;
&lt;br /&gt;
* error:  g.list: error while loading shared libraries: libgdal1.6.0.so.1: cannot open shared object file: No such file or directory&lt;br /&gt;
** this error appears in the shell right after the user clicks GUI's &amp;quot;Start GRASS&amp;quot; button. The GUI shows an error about geographic extent and gets closed afterwards.&lt;br /&gt;
** It happens when you launch bin.i686 executable on 64bit system. Be careful and choose the right architecture.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Static compilation ===&lt;br /&gt;
&lt;br /&gt;
In order to get static rather than dynamically linked binaries, configure like this:&lt;br /&gt;
&lt;br /&gt;
  ./configure --disable-shared --enable-static&lt;br /&gt;
&lt;br /&gt;
This will however break the wxGUI and GRASS 7 completely because &amp;quot;ctypes&amp;quot; wants to link against shared libs, or there is something in the static libs that &amp;quot;ctypes&amp;quot; does not like.&lt;br /&gt;
&lt;br /&gt;
=== Optimization ===&lt;br /&gt;
&lt;br /&gt;
GCC and other compilers support [http://gcc.gnu.org/onlinedocs/gcc-4.3.3/gcc/Optimize-Options.html#Optimize-Options optimization]&lt;br /&gt;
&lt;br /&gt;
If you would like to set compiler optimisations, for a possibly faster binary, type (don't enter a &amp;quot;;&amp;quot; anywhere):&lt;br /&gt;
&lt;br /&gt;
        CFLAGS=-O ./configure&lt;br /&gt;
or,&lt;br /&gt;
        setenv CFLAGS -O&lt;br /&gt;
        ./configure&lt;br /&gt;
&lt;br /&gt;
whichever works on your shell. Use -O2 instead of -O if your compiler supports this (note: O is the letter, not zero). Using the &amp;quot;gcc&amp;quot; compiler, you can also specify processor specific flags (examples, please suggest better settings to us):&lt;br /&gt;
&lt;br /&gt;
  CFLAGS=&amp;quot;-mcpu=athlon -O2&amp;quot; # AMD Athlon processor with code optimisations&lt;br /&gt;
  CFLAGS=&amp;quot;-march=amdfam10&amp;quot;  # AMD Phenom II X4 64bit processor with gcc &amp;gt;=4.3&lt;br /&gt;
  CFLAGS=&amp;quot;-mcpu=pentium&amp;quot;    # Intel Pentium processor&lt;br /&gt;
  CFLAGS=&amp;quot;-mcpu=pentium4&amp;quot;   # Intel Pentium4 processor&lt;br /&gt;
  CFLAGS=&amp;quot;-O2 -msse -msse2 -mfpmath=sse -minline-all-stringops&amp;quot; # Intel XEON 64bit processor&lt;br /&gt;
  CFLAGS=&amp;quot;-mtune=nocona -m64 -minline-all-stringops&amp;quot;            # Intel Pentium 64bit processor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To find out optional CFLAGS for your platform, enter:&lt;br /&gt;
  gcc -dumpspecs&lt;br /&gt;
&lt;br /&gt;
See also: http://gcc.gnu.org/&lt;br /&gt;
&lt;br /&gt;
A real fast GRASS version (and small binaries) will be created with LDFLAGS set to &amp;quot;stripping&amp;quot; (but this disables debugging):&lt;br /&gt;
&lt;br /&gt;
  CFLAGS=&amp;quot;-O2 -mcpu=&amp;lt;cpu_see_above&amp;gt; -Wall&amp;quot; LDFLAGS=&amp;quot;-s&amp;quot; ./configure&lt;br /&gt;
&lt;br /&gt;
=== Configure options and their meanings ===&lt;br /&gt;
&lt;br /&gt;
For configure there are many options and some GRASS modules are built only if some options are set. Here are listed common configuration options with short explanation.&lt;br /&gt;
&lt;br /&gt;
* --prefix=/path - Sets path where GRASS will be installed. GRASS will reside in /path/grass-version.&lt;br /&gt;
* --enable-largefile - Enables large (&amp;gt;2Gb on 32bit systems) support. For current large file support status look at [[Large File Support]] page.&lt;br /&gt;
* --with-cxx - Enables compilation of C++ code. Required for r.terraflow module.&lt;br /&gt;
* --with-readline - Enables readline support. If readline is enabled, you can use its history/editing facilities when entering r.mapcalc expressions on stdin.&lt;br /&gt;
* --with-glw - Enables GLw support. The GLw library provides OpenGL &amp;quot;canvas&amp;quot; widgets for Athena and Motif. &lt;br /&gt;
 &lt;br /&gt;
 That switch is unnecessary for normal compilation. It's only&lt;br /&gt;
 required for r3.showdspf, which isn't normally built; if you &lt;br /&gt;
 want it, you have build it manually &lt;br /&gt;
 (e.g. &amp;quot;make -C raster3d/r3.showdspf&amp;quot;).&lt;br /&gt;
 As similar functionality is now provided by NVIZ, r3.showdspf&lt;br /&gt;
 is deprecated.&lt;br /&gt;
 r3.showdspf uses the Motif widget (so you also need a &lt;br /&gt;
 Motif library, e.g. Lesstif or OpenMotif).&lt;br /&gt;
 [http://grass.itc.it/pipermail/grassuser/2006-December/037475.html Glynn Clements at GRASS-user mailing list]&lt;br /&gt;
&lt;br /&gt;
=== Parallelized compilation on multi-core CPUs ===&lt;br /&gt;
&lt;br /&gt;
You can dramatically accelerate the compilation of the GRASS code with the -j flag of &amp;quot;make&amp;quot; if you have a multi-core CPU system. This determines the maximum number of jobs to have running at once, so cores don't have to sit idle waiting for jobs on other cores to complete. A good rule of thumb for this value is &amp;lt;tt&amp;gt;number_of_cores * 1.5&amp;lt;/tt&amp;gt;, but note that setting any higher than the actual number of cores will only affect the timing slightly. For example, on a dual-core processor:&lt;br /&gt;
  make -j 4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- CFLAGS=&amp;quot;-pipe&amp;quot; doesn't seem to help much --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GRASS-GDAL plugin ==&lt;br /&gt;
&lt;br /&gt;
* see [[Compile and install GRASS and QGIS with GDAL/OGR Plugin]]&lt;br /&gt;
&lt;br /&gt;
== Addons ==&lt;br /&gt;
&lt;br /&gt;
Please note that the installation of [[AddOns/GRASS_6|Addons]] can be easily done with the {{cmd|g.extension}} manager. The compile instructions below are aiming at own development.&lt;br /&gt;
&lt;br /&gt;
=== Compiled modules ===&lt;br /&gt;
&lt;br /&gt;
This is the general way which works for C modules as well as scripts (Python or Shell/Bash modules) which has HTML documentation.&lt;br /&gt;
&lt;br /&gt;
'''Requirements:'''&lt;br /&gt;
&lt;br /&gt;
Either:&lt;br /&gt;
* a binary GRASS package, or&lt;br /&gt;
* source code which has been prepared with:&lt;br /&gt;
    ./configure [opionally flags]&lt;br /&gt;
    make libs&lt;br /&gt;
&lt;br /&gt;
Each of the [[GRASS_AddOns|addon]] modules should come with a Makefile. To compile it, just run:&lt;br /&gt;
    make MODULE_TOPDIR=/path/to/grass64/&lt;br /&gt;
&lt;br /&gt;
Note that the &amp;lt;tt&amp;gt;/path/to/grass64&amp;lt;/tt&amp;gt; has to be absolute, not relative.&lt;br /&gt;
&lt;br /&gt;
If using Bash it may be useful to set that up as an alias:&lt;br /&gt;
    alias gmake64='make MODULE_TOPDIR=/path/to/grass64/'&lt;br /&gt;
&lt;br /&gt;
Installation (perhaps requires &amp;quot;sudo&amp;quot;):&lt;br /&gt;
    make MODULE_TOPDIR=/path/to/grass64/ install&lt;br /&gt;
&lt;br /&gt;
Note: Compiled addons may require a re-compilation if you changed/updated your GRASS standard binaries.&lt;br /&gt;
&lt;br /&gt;
==== If binary comes with a -dev package ====&lt;br /&gt;
&lt;br /&gt;
''(work in progress, this text states how it eventually will be :)''&lt;br /&gt;
Nowadays one does not need to the source code, nor compiling GRASS by oneself to be able to add add-ons. On Debian, you can just install the grass-dev package and then run:&lt;br /&gt;
 make MODULE_TOPDIR=/usr/lib/grass64/ INST_DIR=/usr/lib/grass64/&lt;br /&gt;
&lt;br /&gt;
The grass-dev package essentially provides GRASS's &amp;lt;tt&amp;gt;include&amp;lt;/tt&amp;gt; header files and Make configuration files.&lt;br /&gt;
&lt;br /&gt;
=== Scripts ===&lt;br /&gt;
&lt;br /&gt;
If the addon module is a script, it is sufficient to copy it into the (GRASS binaries) path somewhere. Alternatively, install addons into a separate GRASS addons binaries/scripts directory which is easier to maintain. It avoids getting clobbered every time you reinstall GRASS. To use these separately stored scripts, set and export the GRASS_ADDON_PATH environment variable before starting GRASS and it will automatically be added to the module search path (see the {{cmd|variables}} help page). To simplify this, do for example:&lt;br /&gt;
&lt;br /&gt;
 # add in $HOME/.bashrc:&lt;br /&gt;
 GRASS_ADDON_PATH=/usr/local/grass/addons/&lt;br /&gt;
 export GRASS_ADDON_PATH&lt;br /&gt;
&lt;br /&gt;
Make sure that the script is executable, then just call it in GRASS typing the filename. Python scripts need to be called writing the extension as well, like:&lt;br /&gt;
 &lt;br /&gt;
 GRASS 6.5.svn (spearfish60):~ &amp;gt; v.krige.py&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Installation]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Compile_and_Install&amp;diff=23529</id>
		<title>Compile and Install</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Compile_and_Install&amp;diff=23529"/>
		<updated>2016-09-11T05:41:35Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: Funtoo MovedToTrac&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;!-- {{MoveToTrac}} --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Disclaimer''': This page explains how to turn the GRASS GIS source code into an installable binary package (&amp;quot;compilation&amp;quot;) for different operating systems. If you just want to get ready-to-use binaries, go [http://grass.osgeo.org/download/ here], otherwise read on...&lt;br /&gt;
&lt;br /&gt;
== How to do compilation and installation of GRASS GIS? ==&lt;br /&gt;
&lt;br /&gt;
Here we explain the procedure to compile GRASS from SVN, but it also applies to official GRASS 6 releases.&lt;br /&gt;
&lt;br /&gt;
''For installation of precompiled binary packages, see the main [[Installation Guide]].''&lt;br /&gt;
&lt;br /&gt;
For detailed information on compilation, please see the [http://grass.osgeo.org/grass64/source/INSTALL INSTALL] file in the source code.&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
&lt;br /&gt;
==== Extra libraries ====&lt;br /&gt;
GRASS needs at least two extra libraries: PROJ and GDAL/OGR&lt;br /&gt;
&lt;br /&gt;
''Note: if you want to have DBMS support in GDAL (subsequently in GRASS) you have to perform the &amp;quot;Optional&amp;quot; steps below as well.''&lt;br /&gt;
&lt;br /&gt;
* [http://trac.osgeo.org/proj/ PROJ4] for management of projections (with proj-datumgrid-1.3.zip support)&lt;br /&gt;
* Optional: [http://trac.osgeo.org/geos/ GEOS]&lt;br /&gt;
* Optional: [http://www.postgresql.org PostgreSQL], [http://www.mysql.org mySQL], [http://www.unixodbc.org unixODBC], [http://www.sqlite.org SQLite] (SQLite is needed for [[QGIS]])&lt;br /&gt;
* [http://www.gdal.org GDAL/OGR] for reading and writing various GIS data formats (interoperability)&lt;br /&gt;
&lt;br /&gt;
You have to install these two libraries '''first''' (see below how to get them precompiled for your system).&lt;br /&gt;
&lt;br /&gt;
It is easiest to obtain a prepackaged version of these libraries (e.g., .rpm; .deb) for your particular operating system and run the corresponding package installation (e.g., rpm -Uhv packagename.rpm; apt-get) in a terminal window. Take care to also install the development packages of these libraries (...-devel packages). If there is no prepackage version, then you will have to download the source code (see links above, source code packages usually ends in .tar.gz or .zip) and compile it (you must have a C compiler installed as part of your operating system). The Web sites show the steps to compile the libraries.&lt;br /&gt;
&lt;br /&gt;
Other libraries needed to run GRASS are listed on the {{website|grass64/source/REQUIREMENTS.html|requirements page}}.&lt;br /&gt;
&lt;br /&gt;
To compile, you will also need the respective &amp;quot;-devel&amp;quot; packages.&lt;br /&gt;
&lt;br /&gt;
==== Download GRASS GIS source code ====&lt;br /&gt;
Then [http://grass.osgeo.org/download/software/sources/ download the GRASS GIS source code] of course.&lt;br /&gt;
&lt;br /&gt;
=== Generic Compilation and installation procedure ===&lt;br /&gt;
&lt;br /&gt;
* It is wise that compilation processes are carried out as a normal user: If you want to get the source code in a place where  you do not have write permissions (e.g. in /usr/local/src/) just follow this:&lt;br /&gt;
      cd /usr/local/src/ &lt;br /&gt;
      su -c 'mkdir grass6'&lt;br /&gt;
      su -c 'chown yourlogin:yourgroup grass6'&lt;br /&gt;
&lt;br /&gt;
Otherwise if you have permissions just continue as a normal user:&lt;br /&gt;
      cd /usr/local/src/&lt;br /&gt;
      svn checkout ...&lt;br /&gt;
&lt;br /&gt;
* do a code checkout from the SVN source code repository&lt;br /&gt;
: checkout the latest GRASS 6.x from SVN (see: {{twiki|DownloadSource}})&lt;br /&gt;
&lt;br /&gt;
* in the grass6 directory, you will find the precious INSTALL file, open it with your favourite pager/editor and read it carefully!&lt;br /&gt;
&lt;br /&gt;
* run configure with parameters to adapt the compile process to your own system. To see what options can be passed to it, run:&lt;br /&gt;
 ./configure --help | less &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The minimum set of configure parameters is &lt;br /&gt;
      ./configure ### --&amp;gt;&lt;br /&gt;
It may (!) look like this:&lt;br /&gt;
 &lt;br /&gt;
      ./configure \&lt;br /&gt;
          --with-cxx \&lt;br /&gt;
          --with-sqlite \&lt;br /&gt;
          --with-postgres-libs=/usr/include/pgsql/libpq \&lt;br /&gt;
          --with-postgres-includes=/usr/include/pgsql \&lt;br /&gt;
          --with-freetype \&lt;br /&gt;
          --with-freetype-includes=/usr/include/freetype2 \&lt;br /&gt;
          --with-motif \&lt;br /&gt;
          --with-proj-share=/usr/share/proj&lt;br /&gt;
&lt;br /&gt;
You may have to explicitly state the path for certain packages (i.e., gdal). The Unix 'locate' command will come in handy for finding the path of the package you need (you may have to run locate as root ex: sudo locate gdal-config).&lt;br /&gt;
&lt;br /&gt;
Please note that the paths mentioned may widely vary due to the distribution used.&lt;br /&gt;
See [[Compile_and_Install#Platform_Specific_Notes|Platform Specific Notes]] below.&lt;br /&gt;
&lt;br /&gt;
Depending on your needs it may be a good idea to include debugging hooks.&lt;br /&gt;
: See [[GRASS_Debugging#Compile_Time_Setup]].&lt;br /&gt;
 CFLAGS=&amp;quot;-ggdb -Wall -Werror-implicit-function-declaration&amp;quot; ./configure ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At the end of configuration process you should get report not much different from this:&lt;br /&gt;
&lt;br /&gt;
GRASS is now configured for:  i686-pc-linux-gnu&lt;br /&gt;
 &lt;br /&gt;
 Source directory:            /usr/src/grass6&lt;br /&gt;
 Build directory:             /usr/src/grass6&lt;br /&gt;
 Installation directory:      /usr/local/grass-6.3.svn&lt;br /&gt;
 Startup script in directory: ${exec_prefix}/bin&lt;br /&gt;
 C compiler:                  gcc -g -O2 &lt;br /&gt;
 C++ compiler:                c++ -g -O2&lt;br /&gt;
 FORTRAN compiler:            &lt;br /&gt;
 Building shared libraries:   yes&lt;br /&gt;
 64bit support:               no&lt;br /&gt;
 &lt;br /&gt;
  NVIZ:                       yes&lt;br /&gt;
 &lt;br /&gt;
  BLAS support:               no&lt;br /&gt;
  C++ support:                yes&lt;br /&gt;
  DWG support:                no&lt;br /&gt;
  FFMPEG support:             no&lt;br /&gt;
  FFTW support:               yes&lt;br /&gt;
  FreeType support:           yes&lt;br /&gt;
  GDAL support:               yes&lt;br /&gt;
  GLw support:                no&lt;br /&gt;
  LAPACK support:             no&lt;br /&gt;
  Large File Support (LFS):   no&lt;br /&gt;
  Motif support:              no&lt;br /&gt;
  MySQL support:              no&lt;br /&gt;
  NLS support:                no&lt;br /&gt;
  ODBC support:               no&lt;br /&gt;
  OGR support:                yes&lt;br /&gt;
  OpenGL(R) support:          yes&lt;br /&gt;
  PNG support:                yes&lt;br /&gt;
  PostgreSQL support:         yes&lt;br /&gt;
  Readline support:           no&lt;br /&gt;
  SQLite support:             no&lt;br /&gt;
  Tcl/Tk support:             yes&lt;br /&gt;
  TIFF support:               yes&lt;br /&gt;
  X11 support:                yes&lt;br /&gt;
  &lt;br /&gt;
* Let's compile it (takes a little while...)!&lt;br /&gt;
      make&lt;br /&gt;
* At the end, you should get report not much different from this:&lt;br /&gt;
 ----------------------------------------------------------------------&lt;br /&gt;
 Following modules are missing the 'description.html' file in src code:&lt;br /&gt;
 ----------------------------------------------------------------------&lt;br /&gt;
 GRASS GIS compilation log&lt;br /&gt;
 -------------------------&lt;br /&gt;
 Started compilation: Ne kvě 28 13:18:43 CEST 2006&lt;br /&gt;
 --&lt;br /&gt;
 Errors in:&lt;br /&gt;
 --&lt;br /&gt;
 Finished compilation: Ne kvě 28 13:43:40 CEST 2006&lt;br /&gt;
 (In case of errors please change into the directory with error and run 'make')&lt;br /&gt;
&lt;br /&gt;
* If there is any error, change directory to directory with error and run &amp;quot;make&amp;quot; again. Report occuring bug to grass mailing list&lt;br /&gt;
* Once the installation process is finished, you're ready to install GRASS system wide.&lt;br /&gt;
      su -c 'make install'&lt;br /&gt;
* enjoy GRASS: &lt;br /&gt;
      grass64&lt;br /&gt;
&lt;br /&gt;
=== What else? ===&lt;br /&gt;
&lt;br /&gt;
If you want to use [http://www.qgis.org QGIS], then also compile the GRASS-GDAL/OGR plugin. This is also useful to access your GRASS-data&lt;br /&gt;
from other application using GDAL/OGR like [http://thuban.intevation.de thuban].&lt;br /&gt;
* [[Compile and install GRASS and QGIS with GDAL/OGR Plugin]] (enables QGIS to read GRASS data directly)&lt;br /&gt;
&lt;br /&gt;
=== Compile and install GDAL-GRASS plugin ===&lt;br /&gt;
&lt;br /&gt;
* See [[Compile and install GDAL-GRASS plugin]]&lt;br /&gt;
&lt;br /&gt;
=== Platform Specific Notes ===&lt;br /&gt;
&lt;br /&gt;
==== Linux ====&lt;br /&gt;
&lt;br /&gt;
Linux cames in various flavours, i.e. distributions.&lt;br /&gt;
&lt;br /&gt;
===== Debian =====&lt;br /&gt;
&lt;br /&gt;
Read the instructions here:&lt;br /&gt;
: http://trac.osgeo.org/grass/browser/grass/branches/develbranch_6/debian/README.debian&lt;br /&gt;
&lt;br /&gt;
   # first install PROJ, GDAL, etc.&lt;br /&gt;
   cd grass64/&lt;br /&gt;
   # follow instructions in debian/README.debian&lt;br /&gt;
   fakeroot buildpackage&lt;br /&gt;
&lt;br /&gt;
* Official [http://wiki.debian.org/DebianGis DebianGIS] packaging control files:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;&lt;br /&gt;
  http://svn.debian.org/viewsvn/pkg-grass/packages/grass/&lt;br /&gt;
  svn co svn://svn.debian.org/svn/pkg-grass/packages/grass/trunk/&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
&lt;br /&gt;
  svn co svn://svn.debian.org/svn/pkg-grass/packages/grass/branches/&amp;lt;GRASS Version&amp;gt;&lt;br /&gt;
&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Available on git server:&lt;br /&gt;
  git://git.debian.org/git/pkg-grass/grass.git&lt;br /&gt;
&lt;br /&gt;
  http://anonscm.debian.org/cgit/pkg-grass/grass.git/&lt;br /&gt;
&lt;br /&gt;
====== GRASS 6.1 on Debian Sarge ======&lt;br /&gt;
&lt;br /&gt;
* [http://hamish.bowman.googlepages.com/debiangisfiles#compile Compiling GRASS 6.1-CVS on Debian/OldStable (aka 3.1, Sarge)]&lt;br /&gt;
&lt;br /&gt;
====== GRASS 6.4 on Debian Lenny ======&lt;br /&gt;
&lt;br /&gt;
Install needed packages:&lt;br /&gt;
  apt-get install flex bison libreadline-dev libncurses5-dev lesstif2-dev debhelper dpatch libtiff4-dev \&lt;br /&gt;
          tcl-dev tk-dev libfftw3-dev libxmu-dev libfreetype6-dev autoconf2.13 autotools-dev doxygen \&lt;br /&gt;
          libmysqlclient15-dev graphviz libsqlite3-dev python-wxgtk2.8 libcairo2-dev libwxgtk2.8-dev \&lt;br /&gt;
          python-dev libgdal1-dev  libgdal1-1.5.0 libproj-dev libproj0 proj-bin proj-data mysql&lt;br /&gt;
&lt;br /&gt;
# Important: avoid using CFLAGS=&amp;quot;... -Werror-implicit-function-declaration&amp;quot; (also on later Debian versions), see {{trac|1684}}&lt;br /&gt;
&lt;br /&gt;
Configure:&lt;br /&gt;
  ./configure \&lt;br /&gt;
  --with-cxx \&lt;br /&gt;
  --with-sqlite \&lt;br /&gt;
  --with-postgres --with-postgres-includes=/usr/include/postgresql \&lt;br /&gt;
  --with-mysql --with-mysql-includes=/usr/include/mysql --with-mysql-libs=/usr/lib/mysql \&lt;br /&gt;
  --with-odbc \&lt;br /&gt;
  --with-cairo \&lt;br /&gt;
  --with-proj-share=/usr/share/proj \&lt;br /&gt;
  --with-tcltk-includes=/usr/include/tcl8.4/ \&lt;br /&gt;
  --with-freetype --with-freetype-includes=/usr/include/freetype2 \&lt;br /&gt;
  --with-motif --with-fftw --with-nls --with-python \&lt;br /&gt;
  --with-x --x-libraries=/usr/lib/x86_64-linux-gnu&lt;br /&gt;
&lt;br /&gt;
Compile:&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
Install:&lt;br /&gt;
  sudo make install&lt;br /&gt;
&lt;br /&gt;
====== GRASS 6.4 on Debian Jessie ======&lt;br /&gt;
&lt;br /&gt;
Install needed packages:&lt;br /&gt;
  apt-get install flex bison debhelper dpatch autoconf2.13 autotools-dev \&lt;br /&gt;
    python-dev g++ gcc gettext graphviz libcairo2-dev libfftw3-dev tcl-dev tk-dev \&lt;br /&gt;
    libfreetype6-dev libgdal1h libgdal1-dev libglu1-mesa-dev libglw1-mesa-dev \&lt;br /&gt;
    libncurses5-dev libreadline-dev libsqlite3-dev libtiff5-dev \&lt;br /&gt;
    libwxgtk3.0-dev libxmu-dev libxmu-headers libxt-dev mesa-common-dev \&lt;br /&gt;
    libproj-dev proj-bin proj-data python-numpy python-wxgtk3.0 subversion wx-common zlib1g-dev \&lt;br /&gt;
    netcdf-bin libnetcdf-dev libatlas-dev libgegl-dev doxygen postgresql mysql-server \&lt;br /&gt;
    libgeotiff-dev libblas-dev libgeotiff-epsg libxmu-dev libxt-dev libx11-dev&lt;br /&gt;
&lt;br /&gt;
# Important: avoid using CFLAGS=&amp;quot;... -Werror-implicit-function-declaration&amp;quot; (also on later Debian versions), see {{trac|1684}}&lt;br /&gt;
&lt;br /&gt;
Configure:&lt;br /&gt;
  ./configure \&lt;br /&gt;
  --with-cxx \&lt;br /&gt;
  --with-sqlite \&lt;br /&gt;
  --with-postgres \&lt;br /&gt;
  --with-odbc \&lt;br /&gt;
  --with-cairo \&lt;br /&gt;
  --with-geos \&lt;br /&gt;
  --with-proj-share=/usr/share/proj \&lt;br /&gt;
  --with-tcltk-includes=/usr/include/tcl8.6/ \&lt;br /&gt;
  --with-mysql --with-mysql-includes=/usr/include/mysql --with-mysql-libs=/usr/lib/mysql \&lt;br /&gt;
  --with-freetype --with-freetype-includes=/usr/include/freetype2 \&lt;br /&gt;
  --with-motif \&lt;br /&gt;
  --with-fftw \&lt;br /&gt;
  --with-nls \&lt;br /&gt;
  --with-postgres-includes=/usr/include/postgresql \&lt;br /&gt;
  --with-python \&lt;br /&gt;
  --with-x --x-libraries=/usr/lib/x86_64-linux-gnu&lt;br /&gt;
&lt;br /&gt;
Compile:&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
Install:&lt;br /&gt;
  sudo make install&lt;br /&gt;
&lt;br /&gt;
====== GRASS 7 on Debian Squeeze ======&lt;br /&gt;
&lt;br /&gt;
Install needed packages:&lt;br /&gt;
 apt-get install flex bison debhelper dpatch autoconf2.13 autotools-dev python-dev \&lt;br /&gt;
     g++ gcc gettext graphviz libcairo2-dev libfftw3-dev libfreetype6-dev \&lt;br /&gt;
     libgdal1 libgdal1-dev libglu1-mesa-dev libglw1-mesa-dev \&lt;br /&gt;
     libncurses5-dev libproj-dev libreadline-dev libsqlite3-dev libtiff4-dev \&lt;br /&gt;
     libwxgtk2.8-dev libxmu-dev libxmu-headers libxt-dev mesa-common-dev \&lt;br /&gt;
     proj-bin proj-data python-numpy python-wxgtk2.8 subversion wx-common zlib1g-dev&lt;br /&gt;
&lt;br /&gt;
Download source code:&lt;br /&gt;
&lt;br /&gt;
 svn checkout https://svn.osgeo.org/grass/grass/trunk grass_trunk&lt;br /&gt;
&lt;br /&gt;
Configure:&lt;br /&gt;
 &lt;br /&gt;
 cd grass_trunk/&lt;br /&gt;
 CFLAGS=&amp;quot;-Wall -Werror-implicit-function-declaration -fno-common -Wextra -Wunused&amp;quot; \&lt;br /&gt;
 CXXFLAGS=&amp;quot;-Wall&amp;quot;  \&lt;br /&gt;
  ./configure --prefix=/usr/local \&lt;br /&gt;
  --with-gdal --with-proj --with-proj-share=/usr/share \&lt;br /&gt;
  --with-glw --with-nls --with-readline \&lt;br /&gt;
  --without-tcltk \&lt;br /&gt;
  --with-cxx \&lt;br /&gt;
  --enable-largefile \&lt;br /&gt;
  --with-freetype --with-freetype-includes=/usr/include/freetype2 \&lt;br /&gt;
  --with-sqlite \&lt;br /&gt;
  --with-cairo --with-python=/usr/bin/python2.6-config --with-wxwidgets \&lt;br /&gt;
  --with-geos --with-pthread&lt;br /&gt;
&lt;br /&gt;
Compile:&lt;br /&gt;
  make&lt;br /&gt;
&lt;br /&gt;
Install:&lt;br /&gt;
  sudo make install  # installs as /usr/local/bin/grass71&lt;br /&gt;
&lt;br /&gt;
====== GRASS 7 on Debian Wheezy ======&lt;br /&gt;
&lt;br /&gt;
Install needed packages:&lt;br /&gt;
&lt;br /&gt;
 # note: cmake and libboost-all-dev only needed for optional libLAS&lt;br /&gt;
 sudo apt-get install cmake libboost-all-dev&lt;br /&gt;
 &lt;br /&gt;
 sudo apt-get install flex bison debhelper dpatch autoconf2.13 autotools-dev \&lt;br /&gt;
   python-dev g++ gcc gettext graphviz libcairo2-dev libfftw3-dev libfreetype6-dev \&lt;br /&gt;
   libgdal1 libgdal1-dev libglu1-mesa-dev libglw1-mesa-dev libncurses5-dev libproj-dev \&lt;br /&gt;
   libreadline-dev libtiff4-dev libwxgtk2.8-dev libxmu-dev libxmu-headers \&lt;br /&gt;
   libxt-dev mesa-common-dev proj-bin proj-data python-numpy python-wxgtk2.8 subversion wx-common \&lt;br /&gt;
   zlib1g-dev netcdf-bin libatlas-dev libgegl-dev opencl-headers ocl-icd-libopencl1 \&lt;br /&gt;
   libsqlite3-dev postgresql python-sphinx python-gdal&lt;br /&gt;
&lt;br /&gt;
Download and Install libLAS&lt;br /&gt;
 wget http://download.osgeo.org/liblas/libLAS-1.7.0.tar.gz&lt;br /&gt;
 tar -zxvf libLAS-1.7.0.tar.gz&lt;br /&gt;
 cd libLAS-1.7.0/&lt;br /&gt;
 mkdir makefiles&lt;br /&gt;
 cd makefiles&lt;br /&gt;
 cmake -G &amp;quot;Unix Makefiles&amp;quot; ../&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
 sudo ldconfig&lt;br /&gt;
 cd ../..&lt;br /&gt;
&lt;br /&gt;
Download of GRASS GIS 7 source code:&lt;br /&gt;
 wget http://grass.osgeo.org/grass70/source/grass-7.0.0.tar.gz&lt;br /&gt;
 tar -zxvf grass-7.0.0.tar.gz&lt;br /&gt;
&lt;br /&gt;
Configure:&lt;br /&gt;
 cd grass-7.0.0&lt;br /&gt;
 CFLAGS=&amp;quot;-g -Wall -Werror-implicit-function-declaration -fno-common -Wextra -Wunused&amp;quot; CXXFLAGS=&amp;quot;-g -Wall&amp;quot; \&lt;br /&gt;
 ./configure \&lt;br /&gt;
    --prefix=/usr/local \&lt;br /&gt;
    --with-gdal \&lt;br /&gt;
    --with-proj --with-proj-share=/usr/share \&lt;br /&gt;
    --with-glw --with-nls --with-readline \&lt;br /&gt;
    --with-cxx --enable-largefile \&lt;br /&gt;
    --with-freetype --with-freetype-includes=/usr/include/freetype2 \&lt;br /&gt;
    --with-sqlite --with-cairo --with-python=/usr/bin/python-config \&lt;br /&gt;
    --with-wxwidgets --with-geos --with-blas \&lt;br /&gt;
    --with-lapack-includes=/usr/lib/lapack --with-liblas=yes \&lt;br /&gt;
    --with-netcdf=/usr/bin/nc-config --with-odbc=yes \&lt;br /&gt;
    --with-openmp=yes --with-pthread=yes --with-postgres=yes \&lt;br /&gt;
    --with-postgres-includes=/usr/include/postgresql \&lt;br /&gt;
    --with-postgres-libs=/usr/lib/postgresql&lt;br /&gt;
 &lt;br /&gt;
 #     --with-mysql=yes --with-mysql-includes=/usr/include/mysql \&lt;br /&gt;
 #    --with-mysql-libs=/usr/lib/mysql \&lt;br /&gt;
&lt;br /&gt;
GRASS GIS 7 is now configured (example):&lt;br /&gt;
&lt;br /&gt;
  Source directory:           /home/user/grass-7.0.0&lt;br /&gt;
  Build directory:            /home/user/grass-7.0.0&lt;br /&gt;
  Installation directory:     ${prefix}/grass-7.0.0&lt;br /&gt;
  Startup script in directory:${exec_prefix}/bin&lt;br /&gt;
  C compiler:                 gcc -g -Wall -Werror-implicit-function-declaration -fno-common -Wextra -Wunused &lt;br /&gt;
  C++ compiler:               c++ -g -Wall&lt;br /&gt;
  Building shared libraries:  yes&lt;br /&gt;
  OpenGL platform:            X11&lt;br /&gt;
  MacOSX application:         no&lt;br /&gt;
  MacOSX architectures:       &lt;br /&gt;
  MacOSX SDK:                 &lt;br /&gt;
  BLAS support:               yes&lt;br /&gt;
  C++ support:                yes&lt;br /&gt;
  Cairo support:              yes&lt;br /&gt;
  DWG support:                no&lt;br /&gt;
  FFTW support:               yes&lt;br /&gt;
  FreeType support:           yes&lt;br /&gt;
  GDAL support:               yes&lt;br /&gt;
  GEOS support:               yes&lt;br /&gt;
  LAPACK support:             no&lt;br /&gt;
  Large File support (LFS):   yes&lt;br /&gt;
  libLAS support:             yes&lt;br /&gt;
  MySQL support:              no&lt;br /&gt;
  NetCDF support:             yes&lt;br /&gt;
  NLS support:                yes&lt;br /&gt;
  ODBC support:               yes&lt;br /&gt;
  OGR support:                yes&lt;br /&gt;
  OpenCL support:             no&lt;br /&gt;
  OpenGL support:             yes&lt;br /&gt;
  OpenMP support:             yes&lt;br /&gt;
  PNG support:                yes&lt;br /&gt;
  POSIX thread support:       yes&lt;br /&gt;
  PostgreSQL support:         yes&lt;br /&gt;
  Readline support:           yes&lt;br /&gt;
  Regex support:              yes&lt;br /&gt;
  SQLite support:             yes&lt;br /&gt;
  TIFF support:               yes&lt;br /&gt;
  wxWidgets support:          yes&lt;br /&gt;
  X11 support:                no&lt;br /&gt;
&lt;br /&gt;
Compile:&lt;br /&gt;
 make -j2&lt;br /&gt;
&lt;br /&gt;
Install:&lt;br /&gt;
 sudo make install   # installs as /usr/local/bin/grass70&lt;br /&gt;
&lt;br /&gt;
Launch:&lt;br /&gt;
 grass70&lt;br /&gt;
&lt;br /&gt;
====== GRASS 7 on Debian Jessie ======&lt;br /&gt;
&lt;br /&gt;
Install needed packages:&lt;br /&gt;
 sudo apt-get install cmake libboost-all-dev flex bison debhelper dpatch autoconf2.13 \&lt;br /&gt;
    autotools-dev python-dev g++ gcc gettext graphviz libcairo2-dev libfftw3-dev \&lt;br /&gt;
    libfreetype6-dev libgdal1h libgdal1-dev libglu1-mesa-dev libglw1-mesa-dev \&lt;br /&gt;
    libncurses5-dev libproj-dev libreadline-dev libsqlite3-dev libtiff5-dev \&lt;br /&gt;
    libwxgtk3.0-dev libxmu-dev libxmu-headers libxt-dev mesa-common-dev \&lt;br /&gt;
    proj-bin proj-data python-numpy python-wxgtk3.0 subversion wx-common zlib1g-dev \&lt;br /&gt;
    netcdf-bin libnetcdf-dev libgegl-dev  doxygen python-sphinx \&lt;br /&gt;
    postgresql libgeotiff-dev libblas-dev mysql-server \&lt;br /&gt;
    libatlas-dev libblas-dev liblapack3gf liblapack-dev&lt;br /&gt;
    # opencl-headers ocl-icd-libopencl1   liblas-bin liblas-c-dev python-gdal&lt;br /&gt;
&lt;br /&gt;
Download and compile libLAS (or simply install 'liblas-c-dev ', see above):&lt;br /&gt;
 wget http://download.osgeo.org/liblas/libLAS-1.8.0.tar.bz2&lt;br /&gt;
 tar xjf libLAS-1.8.0.tar.bz2&lt;br /&gt;
 mkdir libLAS-1.8.0/makefiles&lt;br /&gt;
 cd libLAS-1.8.0/makefiles&lt;br /&gt;
 cmake -G &amp;quot;Unix Makefiles&amp;quot; ../&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
Download and compile GRASS 7:&lt;br /&gt;
 # (check there for later version)&lt;br /&gt;
 wget http://grass.osgeo.org/grass70/source/grass-7.0.0.tar.gz&lt;br /&gt;
 tar xzfv grass-7.0.0.tar.gz&lt;br /&gt;
 cd grass-7.0.0&lt;br /&gt;
 CFLAGS=&amp;quot;-g -Wall -Werror-implicit-function-declaration -fno-common -Wextra -Wunused&amp;quot; \&lt;br /&gt;
 CXXFLAGS=&amp;quot;-g -Wall&amp;quot;  \&lt;br /&gt;
 ./configure \&lt;br /&gt;
    --prefix=/usr/local \&lt;br /&gt;
    --with-gdal --with-proj --with-proj-share=/usr/share \&lt;br /&gt;
    --with-glw --with-nls --with-readline \&lt;br /&gt;
    --with-cxx --enable-largefile \&lt;br /&gt;
    --with-freetype --with-freetype-includes=/usr/include/freetype2 \&lt;br /&gt;
    --with-sqlite --with-cairo --with-python=/usr/bin/python-config \&lt;br /&gt;
    --with-wxwidgets --with-geos \&lt;br /&gt;
    --with-blas --with-blas-includes=/usr/include/atlas/ \&lt;br /&gt;
    --with-lapack --with-lapack-includes=/usr/include/atlas/ \&lt;br /&gt;
    --with-netcdf=/usr/bin/nc-config --with-odbc=yes \&lt;br /&gt;
    --with-openmp=yes --with-pthread=no --with-postgres=yes \&lt;br /&gt;
    --with-postgres-includes=/usr/include/postgresql \&lt;br /&gt;
    --with-postgres-libs=/usr/lib/postgresql \&lt;br /&gt;
    --with-mysql=yes --with-mysql-includes=/usr/include/mysql \&lt;br /&gt;
    --with-mysql-libs=/usr/lib/mysql&lt;br /&gt;
 make -j2&lt;br /&gt;
&lt;br /&gt;
Install:&lt;br /&gt;
 sudo make install  # installs as /usr/local/bin/grass70&lt;br /&gt;
&lt;br /&gt;
====== GRASS 7 on Debian Stretch ======&lt;br /&gt;
(Updated from above with package changes required for Debian Stretch)&lt;br /&gt;
&lt;br /&gt;
Install needed packages:&lt;br /&gt;
  sudo apt-get install cmake libboost-all-dev flex bison debhelper dpatch autoconf2.13 \&lt;br /&gt;
   autotools-dev python-dev g++ gcc gettext graphviz libcairo2-dev libfftw3-dev \&lt;br /&gt;
   libfreetype6-dev libgdal1i libgdal1-dev libglu1-mesa-dev libglw1-mesa-dev \&lt;br /&gt;
   libncurses5-dev libproj-dev libreadline-dev libsqlite3-dev libtiff5-dev \&lt;br /&gt;
   libwxgtk3.0-dev libxmu-dev libxmu-headers libxt-dev mesa-common-dev \&lt;br /&gt;
   proj-bin proj-data python-numpy python-wxgtk3.0 subversion wx-common zlib1g-dev \&lt;br /&gt;
   netcdf-bin libnetcdf-dev libgegl-dev  doxygen python-sphinx \&lt;br /&gt;
   postgresql libgeotiff-dev libblas-dev mysql-server \&lt;br /&gt;
   libatlas-dev libblas-dev liblapack3 liblapack-dev \&lt;br /&gt;
   opencl-headers ocl-icd-libopencl1 liblas-bin liblas-c-dev python-gdal&lt;br /&gt;
&lt;br /&gt;
Configuration:&lt;br /&gt;
&lt;br /&gt;
  CFLAGS=&amp;quot;-g -Wall -Werror-implicit-function-declaration -fno-common -Wextra -Wunused&amp;quot; \&lt;br /&gt;
  CXXFLAGS=&amp;quot;-g -Wall&amp;quot;  \&lt;br /&gt;
  ./configure \&lt;br /&gt;
   --prefix=/usr/local \&lt;br /&gt;
   --with-gdal --with-proj --with-proj-share=/usr/share \&lt;br /&gt;
   --with-glw --with-nls --with-readline \&lt;br /&gt;
   --with-cxx --enable-largefile \&lt;br /&gt;
   --with-freetype --with-freetype-includes=/usr/include/freetype2 \&lt;br /&gt;
   --with-sqlite --with-cairo --with-python=/usr/bin/python-config \&lt;br /&gt;
   --with-wxwidgets --with-geos \&lt;br /&gt;
   --with-blas --with-blas-includes=/usr/include/atlas/ \&lt;br /&gt;
   --with-lapack --with-lapack-includes=/usr/include/atlas/ \&lt;br /&gt;
   --with-netcdf=/usr/bin/nc-config --with-odbc=yes \&lt;br /&gt;
   --with-openmp=yes --with-pthread=no --with-postgres=yes \&lt;br /&gt;
   --with-postgres-includes=/usr/include/postgresql \&lt;br /&gt;
   --with-postgres-libs=/usr/lib/postgresql \&lt;br /&gt;
   --with-mysql=yes --with-mysql-includes=/usr/include/mysql \&lt;br /&gt;
   --with-mysql-libs=/usr/lib/mysql&lt;br /&gt;
&lt;br /&gt;
Compile:&lt;br /&gt;
&lt;br /&gt;
  make -j2&lt;br /&gt;
&lt;br /&gt;
Install:&lt;br /&gt;
&lt;br /&gt;
  make install&lt;br /&gt;
&lt;br /&gt;
===== Ubuntu =====&lt;br /&gt;
&lt;br /&gt;
There is a dedicated page on how to [[Compile_and_Install_Ubuntu | Compile the GRASS GIS source code &amp;amp; install it in Ubuntu]].&lt;br /&gt;
&lt;br /&gt;
===== Linux Mint =====&lt;br /&gt;
&lt;br /&gt;
Install packages needed for compilation:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sudo apt-get install build-essential flex make bison gcc libgcc1 g++ \&lt;br /&gt;
 cmake ccache python python-dev python-qt4 python-qt4-dev python-opengl \&lt;br /&gt;
 python-wxversion python-wxtools python-wxgtk2.8 python-dateutil \&lt;br /&gt;
 libgsl0-dev python-numpy wx2.8-headers wx-common libwxgtk2.8-dev \&lt;br /&gt;
 libwxgtk2.8-dbg libwxbase2.8-dev libwxbase2.8-dbg  \&lt;br /&gt;
 zlib1g-dev gettext libtiff-dev libpnglite-dev  \&lt;br /&gt;
 libcairo2 libcairo2-dev sqlite3 libsqlite3-dev libpq-dev libreadline6 \&lt;br /&gt;
 libreadline6-dev libfreetype6-dev txt2tags libfftw3-3 libfftw3-dev \&lt;br /&gt;
 lsb-desktop libapt-pkg-perl resolvconf libjasper-dev subversion \&lt;br /&gt;
 libswscale-dev checkinstall libglu1-mesa-dev libxmu-dev \&lt;br /&gt;
 libproj-dev  proj-bin proj-data gdal-bin python-gdal libgdal1-dev&lt;br /&gt;
&lt;br /&gt;
# GRASS GIS 6 only: libncurses5-dev tcl8.5-dev tk8.5-dev&lt;br /&gt;
# Extra:  ffmpeg ffmpeg2theora libffmpegthumbnailer-dev libavcodec-dev libavformat-dev&lt;br /&gt;
&lt;br /&gt;
CFLAGS=&amp;quot;-Wall&amp;quot; ./configure  --with-cxx  --with-gdal \&lt;br /&gt;
 --with-proj --with-proj-share=/usr/share/proj/ \&lt;br /&gt;
 --with-geos  --without-postgres \&lt;br /&gt;
 --with-nls  --with-opengl-includes=/usr/include/GL/ \&lt;br /&gt;
 --with-fftw  --with-freetype \&lt;br /&gt;
 --with-freetype-includes=/usr/include/freetype2  --with-sqlite \&lt;br /&gt;
 --with-python=/usr/bin/python2.7-config  --with-wx=/usr/bin/wx-config \&lt;br /&gt;
 --with-wxwidgets  --with-cairo  --enable-largefile&lt;br /&gt;
&lt;br /&gt;
# G6:   --with-tcltk-includes=/usr/include/tcl8.5/ \&lt;br /&gt;
&lt;br /&gt;
make&lt;br /&gt;
&lt;br /&gt;
sudo make install&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Mandriva =====&lt;br /&gt;
&lt;br /&gt;
Installation of dependencies (urpmi will ask you a few more):&lt;br /&gt;
&lt;br /&gt;
'''Mandriva 2009:''' (take out the '64' everywhere if you are on 32bit)&lt;br /&gt;
  # as root&lt;br /&gt;
    urpmi flex bison zlib-devel tiff-devel png-devel tcl-devel tk-devel sqlite3-devel \&lt;br /&gt;
          mesagl1-devel mesaglu1-devel lib64xmu6-devel gcc-c++ gettext \&lt;br /&gt;
          lib64wxgtk2.8 lib64wxgtk2.8-devel lib64wxgtkgl2.8 wxgtk2.8 \&lt;br /&gt;
          lib64wxPythonGTK2.8 lib64wxPythonGTK2.8-devel wxPythonGTK wxPythonGTK-wxversion&lt;br /&gt;
    exit&lt;br /&gt;
&lt;br /&gt;
'''Mandriva 2010:''' (take out the '64' everywhere if you are on 32bit) - see also [http://svn.mandriva.com/cgi-bin/viewvc.cgi/packages/cooker/grass/current/SPECS/ SPEC] file&lt;br /&gt;
  # as root&lt;br /&gt;
    # installation of PROJ and GDAL&lt;br /&gt;
    urpmi proj proj-devel gdal gdal-devel gcc-gfortran lib64openssl1.0.0 \&lt;br /&gt;
          lib64openssl1.0.0-devel postgresql8.4-devel lib64pq8.4&lt;br /&gt;
 &lt;br /&gt;
    # installation of compilation environment&lt;br /&gt;
    urpmi flex bison zlib-devel tiff-devel png-devel tcl-devel tk-devel sqlite3-devel \&lt;br /&gt;
          lib64mesagl1-devel lib64mesaglu1-devel lib64xmu6-devel gcc-c++ gettext \&lt;br /&gt;
          lib64wxgtk2.8 lib64wxgtk2.8-devel lib64wxgtkgl2.8 wxgtk2.8 \&lt;br /&gt;
          lib64wxPythonGTK2.8 lib64wxPythonGTK2.8-devel wxPythonGTK wxPythonGTK-wxversion&lt;br /&gt;
    exit&lt;br /&gt;
&lt;br /&gt;
Then, to configure GRASS, run (64 bit stuff optional of course):&lt;br /&gt;
  #  as user&lt;br /&gt;
  ./configure \&lt;br /&gt;
    --enable-64bit --with-libs=/usr/lib64 \&lt;br /&gt;
    --with-cxx \&lt;br /&gt;
    --with-gdal=/usr/local/bin/gdal-config \&lt;br /&gt;
    --with-sqlite \&lt;br /&gt;
    --with-nls \&lt;br /&gt;
    --with-python \&lt;br /&gt;
    --with-wxwidgets=/usr/lib/wxPython/bin/wx-config \&lt;br /&gt;
    --with-fftw \&lt;br /&gt;
    --with-ffmpeg --with-ffmpeg-includes=&amp;quot;/usr/include/libav* /usr/include/libpostproc /usr/include/libswscale&amp;quot; \&lt;br /&gt;
    --with-motif \&lt;br /&gt;
    --with-mysql --with-mysql-includes=/usr/include/mysql --with-mysql-libs=/usr/lib64 \&lt;br /&gt;
    --with-freetype --with-freetype-includes=/usr/include/freetype2 \&lt;br /&gt;
    --enable-largefile&lt;br /&gt;
&lt;br /&gt;
   # compilation (use -j2 ior -j4 parameter on multi-core CPUs to accelerate):   &lt;br /&gt;
    make&lt;br /&gt;
&lt;br /&gt;
Installation:&lt;br /&gt;
    su&lt;br /&gt;
    # this will install into /usr/local/&lt;br /&gt;
    make install&lt;br /&gt;
    exit&lt;br /&gt;
&lt;br /&gt;
===== Enterprise Linux =====&lt;br /&gt;
&lt;br /&gt;
Enterprise Linux (EL) and derivatives (that is, Red Hat Enterprise Linux, CentOS and Scientific Linux) is a popular and robust platform for servers and computing-heavy workstations, and is therefore a good fit for GIS specific requirements.&lt;br /&gt;
&lt;br /&gt;
See: http://wiki.osgeo.org/wiki/Enterprise_Linux_GIS&lt;br /&gt;
&lt;br /&gt;
===== Scientific Linux =====&lt;br /&gt;
&lt;br /&gt;
See Centos&lt;br /&gt;
&lt;br /&gt;
===== CentOS =====&lt;br /&gt;
&lt;br /&gt;
You first need to add the EPEL repository for PROJ.4 and GDAL, see [https://fedoraproject.org/wiki/EPEL/FAQ#How_can_I_install_the_packages_from_the_EPEL_software_repository.3F here]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;strike&amp;gt;&lt;br /&gt;
Preparation '''Centos 5''' (old):&lt;br /&gt;
  yum install epel-release&lt;br /&gt;
 &lt;br /&gt;
  # Note: CentOS 5 comes with Python 2.4 which lacks python-config, hence two extra tweaks are needed.&lt;br /&gt;
  yum install flex bison zlib-devel tcl-devel tk-devel gcc-c++ gettext \&lt;br /&gt;
              libtiff-devel libpng-devel sqlite-devel \&lt;br /&gt;
              mesa-libGL-devel mesa-libGLU-devel mesa-libGLw-devel \&lt;br /&gt;
              mesa-libOSMesa-devel libXmu-devel python-devel gtk2-devel\&lt;br /&gt;
              ncurses-devel postgresql-devel make&lt;br /&gt;
&amp;lt;/strike&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Preparation '''Centos 6''' | '''Scientific Linux 6''':&lt;br /&gt;
  yum install epel-release&lt;br /&gt;
 &lt;br /&gt;
  yum install flex bison make zlib-devel gcc-c++ gettext \&lt;br /&gt;
              sqlite-devel mesa-libGL-devel mesa-libGLU-devel \&lt;br /&gt;
              libXmu-devel libX11-devel fftw-devel libtiff-devel \&lt;br /&gt;
              lesstif-devel python-devel numpy wxPython wxGTK-devel \&lt;br /&gt;
              proj proj-devel proj-epsg proj-nad libxml2 gdal gdal-devel geos geos-devel \&lt;br /&gt;
              python-dateutil python-imaging python-matplotlib&lt;br /&gt;
  # only GRASS GIS 6: install also tcl-devel tk-devel&lt;br /&gt;
&lt;br /&gt;
Preparation '''Centos 7''' | '''Scientific Linux 7''':&lt;br /&gt;
  yum install epel-release&lt;br /&gt;
 &lt;br /&gt;
  yum install flex bison make zlib-devel gcc-c++ gettext \&lt;br /&gt;
              sqlite-devel mesa-libGL-devel mesa-libGLU-devel \&lt;br /&gt;
              libXmu-devel libX11-devel fftw-devel libtiff-devel \&lt;br /&gt;
              lesstif-devel python-devel numpy wxPython wxGTK-devel \&lt;br /&gt;
              proj proj-devel proj-epsg proj-nad libxml2 gdal gdal-devel geos geos-devel \&lt;br /&gt;
              netcdf netcdf-devel blas-devel lapack-devel atlas-devel \&lt;br /&gt;
              python-dateutil python-imaging python-matplotlib python-sphinx \&lt;br /&gt;
              doxygen subversion&lt;br /&gt;
&lt;br /&gt;
'''GRASS GIS 7 compilation and installation'''&lt;br /&gt;
&lt;br /&gt;
[http://grass.osgeo.org/download/software/sources/ Download source code] (e.g., --&amp;gt; &amp;quot;Download latest 7.0-svn code (SVN))&amp;quot; and configure GRASS 7 (suggestion: save this as script):&lt;br /&gt;
&lt;br /&gt;
 ./configure \&lt;br /&gt;
  --with-cxx \&lt;br /&gt;
  --enable-largefile \&lt;br /&gt;
  --with-proj --with-proj-share=/usr/share/proj \&lt;br /&gt;
  --with-gdal=/usr/bin/gdal-config \&lt;br /&gt;
  --with-sqlite \&lt;br /&gt;
  --with-python \&lt;br /&gt;
  --with-cairo --with-cairo-ldflags=-lfontconfig \&lt;br /&gt;
  --with-freetype --with-freetype-includes=/usr/include/freetype2 \&lt;br /&gt;
  --with-wxwidgets=/usr/bin/wx-config \&lt;br /&gt;
  --with-openmp \&lt;br /&gt;
  --with-blas --with-blas-includes=/usr/include/atlas-x86_64-base/ \&lt;br /&gt;
  --with-lapack --with-lapack-includes=/usr/include/atlas-x86_64-base/ \&lt;br /&gt;
  --with-fftw \&lt;br /&gt;
  --with-geos \&lt;br /&gt;
  --with-netcdf \&lt;br /&gt;
  --without-ffmpeg \&lt;br /&gt;
  --without-mysql \&lt;br /&gt;
  --without-postgres \&lt;br /&gt;
  --without-odbc \&lt;br /&gt;
  --without-fftw&lt;br /&gt;
&lt;br /&gt;
Compile:&lt;br /&gt;
    make&lt;br /&gt;
or on a multicore system (number depends of available cores):&lt;br /&gt;
    make -j4&lt;br /&gt;
&lt;br /&gt;
For a system wide installation, run as root user:&lt;br /&gt;
    make install&lt;br /&gt;
OR simply run it directly from the source code directory (substitute ARCH with i686 or x86_64):&lt;br /&gt;
&lt;br /&gt;
    bin.$ARCH/grass70 -gui&lt;br /&gt;
&lt;br /&gt;
In this case, for convenience, add it to the search path:&lt;br /&gt;
    mkdir $HOME/bin&lt;br /&gt;
    cd $HOME/bin&lt;br /&gt;
    # example:&lt;br /&gt;
    ln -s $HOME/software/grass70_release/bin.i686-pc-linux-gnu/grass70 .&lt;br /&gt;
&lt;br /&gt;
Now use it subsequently with&lt;br /&gt;
    grass70 -gui&lt;br /&gt;
&lt;br /&gt;
===== Gentoo =====&lt;br /&gt;
&lt;br /&gt;
  ./configure \&lt;br /&gt;
    --with-freetype=yes --with-freetype-includes=&amp;quot;/usr/include/freetype2/&amp;quot;&lt;br /&gt;
&lt;br /&gt;
See also http://packages.gentoo.org/package/sci-geosciences/grass&lt;br /&gt;
&lt;br /&gt;
{{MovedToTrac|FuntooLinux}}&lt;br /&gt;
&lt;br /&gt;
===== Fedora =====&lt;br /&gt;
&lt;br /&gt;
====== GRASS GIS 6 on Fedora ======&lt;br /&gt;
&lt;br /&gt;
'''Preparation''' for the compilation of GRASS GIS 6 source code (F16-F21):&lt;br /&gt;
&lt;br /&gt;
  yum install proj-devel gdal-devel sqlite-devel ffmpeg-devel mesa-libGL-devel \&lt;br /&gt;
              mesa-libGLU-devel libXmu-devel libX11-devel tcl-devel tk-devel geos \&lt;br /&gt;
              fftw-devel libtiff-devel lesstif-devel python-devel numpy wxPython wxGTK-devel \&lt;br /&gt;
              gcc gcc-c++ bison flex ncurses-devel proj-epsg proj-nad xml2 subversion&lt;br /&gt;
&lt;br /&gt;
''Note 1: that currently gdal-devel has (too) many dependencies and may lead to a massive download of extra packages (200 on a fresh Fedora 16 install). Hopefully solved in later Fedora versions.''&lt;br /&gt;
&lt;br /&gt;
''Note 2: the optional ffmpeg-devel comes from the rpmfusion-free repository ([http://rpmfusion.org/Configuration/ configuration]).''&lt;br /&gt;
&lt;br /&gt;
'''Download''' the source code:&lt;br /&gt;
* GRASS GIS 6: [http://grass.osgeo.org/download/software/sources/ release package] - [http://grass.osgeo.org/grass64/source/snapshot/ weekly snapshot] - [http://trac.osgeo.org/grass/wiki/DownloadSource#GRASS6.4 SVN repository]&lt;br /&gt;
&lt;br /&gt;
'''Configure''': This is an ''example'' how to configure the source code on a Fedora system:&lt;br /&gt;
&lt;br /&gt;
  ./configure \&lt;br /&gt;
   --with-cxx \&lt;br /&gt;
   --with-gdal=/usr/bin/gdal-config \&lt;br /&gt;
   --with-proj --with-proj-share=/usr/share/proj \&lt;br /&gt;
   --with-sqlite \&lt;br /&gt;
   --with-nls \&lt;br /&gt;
   --with-geos \&lt;br /&gt;
   --with-wxwidgets=/usr/bin/wx-config \&lt;br /&gt;
   --with-python=/usr/bin/python-config \&lt;br /&gt;
   --with-freetype --with-freetype-includes=/usr/include/freetype2 \&lt;br /&gt;
   --enable-largefile \&lt;br /&gt;
   --without-odbc \&lt;br /&gt;
   --with-fftw&lt;br /&gt;
&lt;br /&gt;
Extra: If you also want '''FFMPEG''' support - it requires 'yum install fftw-devel'. Then add to the configuration lines above:&lt;br /&gt;
&lt;br /&gt;
     --with-ffmpeg --with-ffmpeg-includes=&amp;quot;/usr/include/ffmpeg /usr/include/ffmpeg/libav* /usr/include/ffmpeg/libpostproc /usr/include/ffmpeg/libswscale&amp;quot; \&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally '''compile''' the configured source code:&lt;br /&gt;
    make&lt;br /&gt;
   or on multicore (number depends of available cores):&lt;br /&gt;
    make -j4&lt;br /&gt;
   and&lt;br /&gt;
    make install # requires root permissions unless you become owner of /usr/local/&lt;br /&gt;
&lt;br /&gt;
Then use GRASS GIS 6 and enjoy!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====== GRASS GIS 7 on Fedora ======&lt;br /&gt;
&lt;br /&gt;
'''Preparation''' for the compilation of GRASS GIS 7 source code (F20-F22):&lt;br /&gt;
&lt;br /&gt;
  dnf install gcc gcc-c++ bison flex ncurses-devel proj-epsg proj-nad xml2 \&lt;br /&gt;
              proj-devel gdal gdal-devel gdal-python sqlite-devel mesa-libGL-devel \&lt;br /&gt;
              fftw-devel mesa-libGLU-devel libXmu-devel libX11-devel geos geos-devel \&lt;br /&gt;
              libtiff-devel lesstif-devel python-devel numpy wxPython wxGTK-devel \&lt;br /&gt;
              python-dateutil python-imaging python-matplotlib-wx subversion doxygen python-sphinx&lt;br /&gt;
&lt;br /&gt;
  # optionally also:  netcdf-devel postgresql-devel&lt;br /&gt;
&lt;br /&gt;
''Note 1: the optional ffmpeg-devel comes from the rpmfusion-free repository ([http://rpmfusion.org/Configuration/ configuration]).''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Download''' the source code:&lt;br /&gt;
* GRASS GIS 7: [http://grass.osgeo.org/grass70/source/snapshot/ weekly snapshot] - [http://trac.osgeo.org/grass/wiki/DownloadSource#GRASS7 SVN repository]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Configure''': This is an example how to configure the source code on a Fedora system:&lt;br /&gt;
&lt;br /&gt;
  ./configure \&lt;br /&gt;
   --with-cxx \&lt;br /&gt;
   --with-gdal=/usr/bin/gdal-config \&lt;br /&gt;
   --with-proj --with-proj-share=/usr/share/proj \&lt;br /&gt;
   --with-python=/usr/bin/python-config \&lt;br /&gt;
   --with-geos \&lt;br /&gt;
   --with-sqlite \&lt;br /&gt;
   --with-nls \&lt;br /&gt;
   --with-wxwidgets=/usr/bin/wx-config \&lt;br /&gt;
   --with-fftw \&lt;br /&gt;
   --with-cairo --with-cairo-ldflags=-lfontconfig \&lt;br /&gt;
   --with-freetype --with-freetype-includes=/usr/include/freetype2 \&lt;br /&gt;
   --enable-largefile \&lt;br /&gt;
   --without-odbc&lt;br /&gt;
&lt;br /&gt;
''Extra 1:'' If you also want '''FFMPEG support''' - it requires 'dnf install fftw-devel' from the rpmfusion-free repository. Then add to the configuration lines above:&lt;br /&gt;
&lt;br /&gt;
     --with-ffmpeg --with-ffmpeg-includes=&amp;quot;/usr/include/ffmpeg /usr/include/ffmpeg/libav* /usr/include/ffmpeg/libpostproc /usr/include/ffmpeg/libswscale&amp;quot; \&lt;br /&gt;
&lt;br /&gt;
''Extra 2:'' For '''LAPACK/BLAS support''' (addons i.spec.unmix, v.kriging etc), install &amp;quot;dnf install lapack lapack-devel blas blas-devel atlas atlas-devel&amp;quot;. Then add to the configuration lines above:&lt;br /&gt;
  --with-blas --with-blas-includes=/usr/include/atlas-x86_64-base/ \&lt;br /&gt;
  --with-lapack --with-lapack-includes=/usr/include/atlas-x86_64-base/ \&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finally '''compile''' the configured source code:&lt;br /&gt;
    make&lt;br /&gt;
   or on multicore (number depends of available cores):&lt;br /&gt;
    make -j4&lt;br /&gt;
   and&lt;br /&gt;
    make install # requires root permissions unless you become owner of /usr/local/&lt;br /&gt;
&lt;br /&gt;
Then use GRASS GIS 7 and enjoy!&lt;br /&gt;
&lt;br /&gt;
===== openSUSE =====&lt;br /&gt;
&lt;br /&gt;
To build GRASS on openSUSE:&lt;br /&gt;
&lt;br /&gt;
RPM packages to be installed:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 sudo zypper install bison flex freetype2-devel fftw3-devel gcc-c++ \&lt;br /&gt;
   libgdal-devel libgeos-devel libjpeg-devel libpng-devel libtiff-devel \&lt;br /&gt;
   man proj libproj-devel readline-devel netcdf-devel ncurses-devel \&lt;br /&gt;
   mysql-devel postgresql-devel sqlite-devel unixODBC-devel \&lt;br /&gt;
   tcl-devel tk-devel xorg-x11-Mesa-devel libXmu-devel \&lt;br /&gt;
   python-numpy python-dateutil python-devel python-opengl \&lt;br /&gt;
   python-wxWidgets python-xml python-dateutil wxWidgets-devel \&lt;br /&gt;
   zlib-devel doxygen python-sphinx&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Source code configuration:&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
 ./configure \&lt;br /&gt;
 	--enable-largefile \&lt;br /&gt;
	--with-proj-share=/usr/share/proj \&lt;br /&gt;
	--with-cxx \&lt;br /&gt;
	--with-lapack=yes \&lt;br /&gt;
	--with-x \&lt;br /&gt;
	--with-motif \&lt;br /&gt;
	--with-gdal=/usr/bin/gdal-config \&lt;br /&gt;
	--with-postgres --with-postgres-includes=/usr/include/pgsql \&lt;br /&gt;
	--with-mysql --with-mysql-includes=/usr/include/mysql \&lt;br /&gt;
	--with-fftw \&lt;br /&gt;
	--with-readline \&lt;br /&gt;
	--with-netcdf \&lt;br /&gt;
	--with-curses \&lt;br /&gt;
	--with-geos \&lt;br /&gt;
	--with-nls \&lt;br /&gt;
	--with-sqlite \&lt;br /&gt;
	--with-freetype \&lt;br /&gt;
	--with-freetype-includes=/usr/include/freetype2 \&lt;br /&gt;
	--with-wxwidgets \&lt;br /&gt;
	--with-odbc \&lt;br /&gt;
	--with-python&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then compile with &amp;quot;make [-j2]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===== Arch Linux =====&lt;br /&gt;
&lt;br /&gt;
The easiest/fastest way is to build GRASS GIS using AUR:&lt;br /&gt;
&lt;br /&gt;
https://aur.archlinux.org/packages/?O=0&amp;amp;K=grass (msieczka: I would recommend my set of PKBUILDs - https://aur.archlinux.org/packages/?K=czk&amp;amp;SeB=m. They are most feature-rich, up-to-date and allow to have various versions installed alongside each other without conflicts.)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
But if you want to compile it yourself you have to keep in mind that in Arch Linux the default Python version 3.&lt;br /&gt;
&lt;br /&gt;
 python --version&lt;br /&gt;
&lt;br /&gt;
 Python 3.3.1&lt;br /&gt;
&lt;br /&gt;
Therefore, to build GRASS GIS (version 7 in this example), we can use either use virtualenv or symlink python2 and python2-config in a given directory. &lt;br /&gt;
Let's use the latter approach&lt;br /&gt;
&lt;br /&gt;
 sudo ln -s /usr/bin/python2 $HOME/usr/bin/python&lt;br /&gt;
 sudo ln -s /usr/bin/python2-config $HOME/usr/bin/python-config&lt;br /&gt;
&lt;br /&gt;
We can now start building GRASS 7&lt;br /&gt;
&lt;br /&gt;
 export PATH=~/usr/bin:$PATH &amp;amp;&amp;amp; \&lt;br /&gt;
 ./configure \&lt;br /&gt;
 --enable-debug \&lt;br /&gt;
 --enable-64bit \&lt;br /&gt;
 --with-libs=/usr/lib64  \&lt;br /&gt;
 --with-cxx \&lt;br /&gt;
 --with-readline \&lt;br /&gt;
 --with-zlib-includes=&amp;quot;/usr/include/&amp;quot; \&lt;br /&gt;
 --with-freetype=yes \&lt;br /&gt;
 --with-freetype-includes=&amp;quot;/usr/include/freetype2/&amp;quot; \&lt;br /&gt;
 --enable-largefile=yes \&lt;br /&gt;
 --with-gdal=/usr/bin/gdal-config \&lt;br /&gt;
 --with-proj-share=/usr/share/proj/ \&lt;br /&gt;
 --with-geos=/usr/bin/geos-config \&lt;br /&gt;
 --with-cairo \&lt;br /&gt;
 --with-odbc \&lt;br /&gt;
 --with-pthread \&lt;br /&gt;
 --with-liblas=/usr/local/bin/liblas-config  \&lt;br /&gt;
 --with-fftw-includes=&amp;quot;/usr/include/&amp;quot; \&lt;br /&gt;
 --with-fftw-libs=/usr/lib/ \&lt;br /&gt;
 --with-tcltk-includes=&amp;quot;/usr/include/&amp;quot; \&lt;br /&gt;
 --with-wxwidgets \&lt;br /&gt;
 --with-postgres=yes \&lt;br /&gt;
 --with-postgres-includes=&amp;quot;/usr/include/postgresql/internal&amp;quot; \&lt;br /&gt;
 --with-postgres-libs=&amp;quot;/usr/include/postgresql/internal/libpq&amp;quot; \&lt;br /&gt;
 --with-sqlite=yes \&lt;br /&gt;
 --with-python=yes \&lt;br /&gt;
 --with-liblas \&lt;br /&gt;
 --with-netcdf &lt;br /&gt;
&lt;br /&gt;
Now let's compile and install it&lt;br /&gt;
&lt;br /&gt;
 make&lt;br /&gt;
 sudo make install&lt;br /&gt;
&lt;br /&gt;
Now the final step required to use GRASS with python2 is to create a bash script &amp;quot;grass&amp;quot; (or the name you want)&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 export PATH=~/usr/bin:$PATH&lt;br /&gt;
 python2 /usr/local/bin/grass70&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
And make it executable and copy it somewhere in the PATH&lt;br /&gt;
&lt;br /&gt;
 chmod+x grass&lt;br /&gt;
 sudo cp grass /usr/local/bin&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It's done, you can enjoy GRASS 7 in Arch, just type &amp;quot;grass&amp;quot; (or the name you gave to the script) in the terminal to launch it.&lt;br /&gt;
&lt;br /&gt;
===== RPM SPEC files =====&lt;br /&gt;
* ... can be found in the source code, rpm/ directory, &lt;br /&gt;
* or [https://build.opensuse.org/package/show?package=grass&amp;amp;project=Application%3AGeo OpenSuSe]&lt;br /&gt;
* or [https://admin.fedoraproject.org/pkgdb/acls/name/grass Fedora]&lt;br /&gt;
* or [http://svn.mandriva.com/cgi-bin/viewvc.cgi/packages/cooker/grass/ Mandriva] (there are also [http://svn.mandriva.com/cgi-bin/viewvc.cgi/packages/cooker/proj/ proj4], [http://svn.mandriva.com/cgi-bin/viewvc.cgi/packages/cooker/geos/ geos], [http://svn.mandriva.com/cgi-bin/viewvc.cgi/packages/cooker/gdal/ gdal], [http://svn.mandriva.com/cgi-bin/viewvc.cgi/packages/cooker/gdal-grass/ gdal-grass-plugin], [http://svn.mandriva.com/cgi-bin/viewvc.cgi/packages/cooker/qgis/ qgis] etc)&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
===== Zaurus =====&lt;br /&gt;
&lt;br /&gt;
... see [http://wiki.debian.org/?GrassGISonZaurus here] for instructions&lt;br /&gt;
&lt;br /&gt;
==== Mac OSX ====&lt;br /&gt;
&lt;br /&gt;
===== Conventional installation =====&lt;br /&gt;
* see the source/macosx readme ([http://trac.osgeo.org/grass/browser/grass/trunk/macosx/ReadMe.rtf Trac link])&lt;br /&gt;
* main page [[Compiling on MacOSX]]&lt;br /&gt;
* main page [[Packaging on MacOSX]]&lt;br /&gt;
* [http://grass.osgeo.org/download/software/mac-osx/ official download site]&lt;br /&gt;
* [http://www.kyngchaos.com/software/frameworks#build_scripts build scripts for dependencies]&lt;br /&gt;
* solving errors at starting GRASS GIS: [[MacOSX GRASS errors]]&lt;br /&gt;
=====Compiling on MacOSX using homebrew =====&lt;br /&gt;
&lt;br /&gt;
* See [[Compiling on MacOSX using homebrew]]&lt;br /&gt;
&lt;br /&gt;
==== FreeBSD / NetBSD ====&lt;br /&gt;
&lt;br /&gt;
The recommended compiler tools are GCC, GNU make, GNU coreutils (for install), and flex. All are available through the respective package managing tools (pkg_add for FreeBSD and pkgin install for NetBSD) and for recent *BSD versions most likely installed by default.&lt;br /&gt;
&lt;br /&gt;
GRASS 6.x and GRASS 7 should compile on FreeBSD 8.0 or later and NetBSD 5.0 or later (maybe also on updated NetBSD 4.x).&lt;br /&gt;
&lt;br /&gt;
It is highly recommended to install GDAL/OGR and PROJ4 first. These libraries and tools are available as [http://www.freebsd.org/ports/ ports for FreeBSD] and [http://www.pkgsrc.org/ packages for NetBSD].&lt;br /&gt;
&lt;br /&gt;
Optional functionality is listed with ''./configure --help'', and related libraries and tools might need to be installed first.&lt;br /&gt;
&lt;br /&gt;
You then may need to edit include/Make/Platform.make and set&lt;br /&gt;
 ICONVLIB            = -liconv&lt;br /&gt;
&lt;br /&gt;
==== Solaris ====&lt;br /&gt;
&lt;br /&gt;
* ''2008 Oct 15'': see [http://lists.osgeo.org/pipermail/grass-user/2008-October/047093.html this post on the grass mailing list]&lt;br /&gt;
&lt;br /&gt;
===== 11 SPARC/i86pc =====&lt;br /&gt;
&lt;br /&gt;
The recommended compiler tools are GCC, GNU make, GNU coreutils (for install), and flex. All are available through the Solaris package manager.&lt;br /&gt;
&lt;br /&gt;
Most dependencies are available through the Solaris package manager. GDAL and proj4 can either be compiled from source or installed e.g. from [http://www.opencsw.org/ OpenCSW]. If packages are installed from OpenCSW, the linker flags need to be set with&lt;br /&gt;
&lt;br /&gt;
      LDFLAGS=&amp;quot;-Wl,-R/opt/csw/lib -L/opt/csw/lib -Wl,-R/opt/csw/gxx/lib -L/opt/csw/gxx/lib&amp;quot;&lt;br /&gt;
&lt;br /&gt;
See also the [http://www.opencsw.org/use-it/ OpenCSW documentation].&lt;br /&gt;
&lt;br /&gt;
===== 10 SPARC/i86pc =====&lt;br /&gt;
&lt;br /&gt;
* get gcc compiler and tools. There are several sources: Solaris Companion CD (SFW pkg, installs in /opt/sfw/), Blastwave ([http://www.blastwave.org], CSW pkg, installs in /opt/csw/) or Sunfreeware ([http://www.sunfreeware.com], SMC pkg, installs in /usr/local/). &lt;br /&gt;
Needed Packages from Sunfreeware: SMCbinut, SMCbison, SMCcoreu, SMCfindu, SMCflex, SMCgawk, SMCgcc, SMCgrep, SMCgzip, SMCless, SMClibt, SMClicon, SMCmake, SMCncurs, SMCproj, SMCsed, SMCtar, SMCtcl, SMCtiff, SMCtk, SMCunzip, SMCzlib. &lt;br /&gt;
&lt;br /&gt;
* compile and install fftw-library ([http://www.fftw.org]). You need to re-compile the library with: &lt;br /&gt;
&lt;br /&gt;
      ./configure --with-pic --enable-shared; make ; make install. &lt;br /&gt;
&lt;br /&gt;
The pre-built packages don't work. &lt;br /&gt;
&lt;br /&gt;
* compile and install gdal library (see documentation of gdal, [http://www.gdal.org]).&lt;br /&gt;
&lt;br /&gt;
* compile and install any additional libraries (e. g. GEOS, [http://geos.refractions.net]). &lt;br /&gt;
&lt;br /&gt;
* set compiler flags and path. e. g.: &lt;br /&gt;
&lt;br /&gt;
      # on ultra-sparc machine:&lt;br /&gt;
      CFLAGS=&amp;quot;-O3 -mcpu=v9&amp;quot;&lt;br /&gt;
      CXXFLAGS=&amp;quot;-O3 -mcpu=v9&amp;quot;&lt;br /&gt;
      PATH=&amp;quot;/usr/local/bin:/opt/sfw/bin:/usr/ccs/bin:/usr/bin:/usr/sbin&amp;quot;&lt;br /&gt;
      export CFLAGS CXXFLAGS PATH&lt;br /&gt;
&lt;br /&gt;
Path has to be changed for the packages (Sunfreeware: /usr/local/bin, Solaris Companion: /opt/sfw/bin, Blastwave: /opt/csw/bin). &lt;br /&gt;
&lt;br /&gt;
* Next configure, e. g.: &lt;br /&gt;
&lt;br /&gt;
      ./configure --with-postgres-includes=/usr/include/pgsql/ \&lt;br /&gt;
      --with-postgres-libs=/usr/lib --with-postgres=yes \&lt;br /&gt;
      --with-includes=/usr/local/include/ncurses&lt;br /&gt;
&lt;br /&gt;
If you use n(ew)curses, you have to include the path /usr/local/include/ncurses. &lt;br /&gt;
&lt;br /&gt;
then:&lt;br /&gt;
&lt;br /&gt;
      make&lt;br /&gt;
      su&lt;br /&gt;
      make install&lt;br /&gt;
&lt;br /&gt;
If the shared libraries are not found at runtime of the modules, use 'crle' to add the paths of the libraries for the dynamic linker, e. g. as root:&lt;br /&gt;
&lt;br /&gt;
      crle -l /lib:/usr/lib:/usr/local/lib:/opt/sfw/lib:/usr/X11/lib&lt;br /&gt;
&lt;br /&gt;
Be careful not to omit a library path, the system may be unusable if you forget the /lib path.&lt;br /&gt;
&lt;br /&gt;
==== AIX ====&lt;br /&gt;
&lt;br /&gt;
A recent [ftp://ftp.gnu.org/gnu/make/ GNU make] (&amp;gt;= 3.81) and GNU coreutils are required. These are available with the [http://www-03.ibm.com/systems/power/software/aix/linux/toolbox/download.html IBM AIX toolbox] or through third-party AIX software repositories, e.g. [http://www.bullfreeware.com/ bullfreeware] and [http://www.perzl.org/aix/ perzl.org]. Note that 'make' does not work, only 'gmake' works. &lt;br /&gt;
&lt;br /&gt;
General instructions to compile on AIX are e.g. [http://www.perzl.org/aix/index.php?n=Main.Instructions here]&lt;br /&gt;
&lt;br /&gt;
On AIX, compilation results by default in 32 bit applications and static libraries. The [http://www.ibm.com/developerworks/aix/library/au-gnu.html IBM documentation] explains how to build 64 bit applications and shared libraries with GCC.&lt;br /&gt;
&lt;br /&gt;
'''GRASS 6: Using the IBM xlc compiler:'''&lt;br /&gt;
* ''see [http://thread.gmane.org/gmane.comp.gis.grass.user/32667 this mailing list thread]''&lt;br /&gt;
&lt;br /&gt;
Mike wrote in 2009:&lt;br /&gt;
&lt;br /&gt;
After attempting all the suggestions, I finally used&lt;br /&gt;
--disable-shared on the configure command, and all but&lt;br /&gt;
a handful of modules successfully compiled. I was able to&lt;br /&gt;
individually address the ones that failed through Makefile&lt;br /&gt;
edits and several small source code/header file edits.&lt;br /&gt;
&lt;br /&gt;
The environment variables and configure command that worked were:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
# xlc compiler:&lt;br /&gt;
export PATH=/usr/local/bin:/opt/freeware/bin:$PATH&lt;br /&gt;
export OBJECT_MODE=64&lt;br /&gt;
export LIBICONV=/opt/freeware&lt;br /&gt;
export CC=&amp;quot;xlc_r -q64&amp;quot;&lt;br /&gt;
export CFLAGS=&amp;quot;-O -qstrict&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;xlC_r -q64&amp;quot;&lt;br /&gt;
export CXXFLAGS=&amp;quot;-O -qstrict&amp;quot;&lt;br /&gt;
export AR=&amp;quot;ar -X64&amp;quot;&lt;br /&gt;
export F77=&amp;quot;xlf_r -q64&amp;quot;&lt;br /&gt;
export CPPFLAGS=&amp;quot;-I/afs/isis/pkg/libpng/include -I/usr/local/include -I$LIBICONV/include -I/usr/lpp/X11/include/X11&amp;quot;&lt;br /&gt;
export LDFLAGS=&amp;quot;-L/usr/local/lib -L$LIBICONV/lib -L/usr/lib -L/usr/X11R6/lib -lc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
./configure --prefix=/afs/isis/pkg/grass-6.4.0 \&lt;br /&gt;
  --enable-64bit \&lt;br /&gt;
  --disable-shared \&lt;br /&gt;
  --with-includes=&amp;quot;/usr/include/fontconfig /usr/include/X11 /usr/include/X11/Xft /usr/include/X11/ext&amp;quot; \&lt;br /&gt;
  --x-includes=/usr/include/X11 \&lt;br /&gt;
  --x-libraries=/usr/X11R6/lib \&lt;br /&gt;
  --with-fftw-includes=/afs/isis/pkg/fftw-3.2.2/include \&lt;br /&gt;
  --with-fftw-libs=/afs/isis/pkg/fftw-3.2.2/lib \&lt;br /&gt;
  --with-gdal=/afs/isis/pkg/gdal/bin/gdal-config \&lt;br /&gt;
  --with-proj-includes=/afs/isis/pkg/proj/include \&lt;br /&gt;
  --with-proj-libs=/afs/isis/pkg/proj/lib \&lt;br /&gt;
  --with-proj-share=/afs/isis/pkg/proj/share/proj \&lt;br /&gt;
  --with-tcltk-includes=/usr/local/include \&lt;br /&gt;
  --with-tcltk-libs=/usr/local/lib \&lt;br /&gt;
  --with-opengl-includes=/usr/include/GL&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''GRASS 7: Using the IBM xlc compiler:'''&lt;br /&gt;
&lt;br /&gt;
Get and install (in this order):&lt;br /&gt;
* [ftp://ftp.gnu.org/gnu/tar/ GNU tar]&lt;br /&gt;
* [ftp://ftp.gnu.org/gnu/make/ GNU make] (&amp;gt;= 3.81)&lt;br /&gt;
* [http://www.sqlite.org SQLite]&lt;br /&gt;
* [http://trac.osgeo.org/proj/ PROJ.4] (for ./configure parameters, see [[Talk:Compile and Install|here]])&lt;br /&gt;
* [http://www.gdal.org GDAL] (for ./configure parameters, see [[Talk:Compile and Install|here]])&lt;br /&gt;
* [http://grass.osgeo.org/grass70/source/snapshot/ GRASS GIS 7]&lt;br /&gt;
&lt;br /&gt;
The environment variables and configure command that worked:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## AIX 5.x&lt;br /&gt;
&lt;br /&gt;
export LIBPATH=/opt/freeware/lib64:/opt/freeware/lib&lt;br /&gt;
# make 'ar' happy&lt;br /&gt;
export OBJECT_MODE=64&lt;br /&gt;
&lt;br /&gt;
PREFIX=$HOME/private/bin&lt;br /&gt;
./configure \&lt;br /&gt;
  --prefix=$PREFIX \&lt;br /&gt;
  --disable-shared \&lt;br /&gt;
  --enable-largefile \&lt;br /&gt;
  --with-cxx \&lt;br /&gt;
  --with-proj-includes=$PREFIX/include/ \&lt;br /&gt;
  --with-proj-libs=$PREFIX/lib/ \&lt;br /&gt;
  --with-proj-share=$PREFIX/share/proj/ \&lt;br /&gt;
  --with-sqlite \&lt;br /&gt;
  --with-sqlite-includes=$PREFIX/include/ \&lt;br /&gt;
  --with-sqlite-libs=$PREFIX/lib/ \&lt;br /&gt;
  --with-tiff=no \&lt;br /&gt;
  --with-png=no \&lt;br /&gt;
  --with-fftw=no \&lt;br /&gt;
  --with-cairo=no \&lt;br /&gt;
  --with-freetype=no&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''GRASS 7: Using the GNU gcc compiler:'''&lt;br /&gt;
&lt;br /&gt;
Get and install (in this order):&lt;br /&gt;
* if needed, [ftp://ftp.gnu.org/gnu/tar/ GNU tar]&lt;br /&gt;
* if needed (the name is often 'gmake' and not 'make') [ftp://ftp.gnu.org/gnu/make/ GNU make] (&amp;gt;= 3.81)&lt;br /&gt;
* [http://www.sqlite.org SQLite]&lt;br /&gt;
* [http://trac.osgeo.org/proj/ PROJ.4] (for ./configure parameters, see [[Talk:Compile and Install|here]])&lt;br /&gt;
* [http://www.gdal.org GDAL] (for ./configure parameters, see [[Talk:Compile and Install|here]])&lt;br /&gt;
* [http://grass.osgeo.org/grass70/source/snapshot/ GRASS GIS 7]&lt;br /&gt;
&lt;br /&gt;
The environment variables and configure command that worked for AIX 5.x:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## AIX 5.x&lt;br /&gt;
&lt;br /&gt;
export LIBPATH=/opt/freeware/lib64:/opt/freeware/lib&lt;br /&gt;
# make 'ar' happy&lt;br /&gt;
export OBJECT_MODE=64&lt;br /&gt;
&lt;br /&gt;
PREFIX=$HOME/private/bin&lt;br /&gt;
CFLAGS='-ansi -D_ALL_SOURCE=1 -D_POSIX_SOURCE=1 -D_POSIX_C_SOURCE=200809L -Dinline=' ./configure \&lt;br /&gt;
  --prefix=$PREFIX \&lt;br /&gt;
  --disable-shared \&lt;br /&gt;
  --enable-largefile \&lt;br /&gt;
  --with-cxx \&lt;br /&gt;
  --with-proj-includes=$PREFIX/include/ \&lt;br /&gt;
  --with-proj-libs=$PREFIX/lib/ \&lt;br /&gt;
  --with-proj-share=$PREFIX/share/proj/ \&lt;br /&gt;
  --with-sqlite \&lt;br /&gt;
  --with-sqlite-includes=$PREFIX/include/ \&lt;br /&gt;
  --with-sqlite-libs=$PREFIX/lib/ \&lt;br /&gt;
  --with-tiff=no \&lt;br /&gt;
  --with-png=no \&lt;br /&gt;
  --with-fftw=no \&lt;br /&gt;
  --with-cairo=no \&lt;br /&gt;
  --with-freetype=no&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The environment variables and configure command that worked for AIX 7.x:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## AIX 7.x&lt;br /&gt;
export CC=&amp;quot;gcc&amp;quot;&lt;br /&gt;
export CXX=&amp;quot;g++&amp;quot;&lt;br /&gt;
PREFIX=$HOME/bin&lt;br /&gt;
&lt;br /&gt;
LDFLAGS=&amp;quot;-Wl,-bsvr4,-R,/opt/freeware/lib -L/opt/freeware/lib&amp;quot; CPPFLAGS=&amp;quot;-I/opt/freeware/include&amp;quot; ./configure \&lt;br /&gt;
  --prefix=$PREFIX \&lt;br /&gt;
  --enable-largefile \&lt;br /&gt;
  --enable-shared \&lt;br /&gt;
  --with-includes=/opt/freeware/include --with-libs=/opt/freeware/lib \&lt;br /&gt;
  --with-cxx \&lt;br /&gt;
  --with-proj-includes=$PREFIX/include/ \&lt;br /&gt;
  --with-proj-libs=$PREFIX/lib/ \&lt;br /&gt;
  --with-proj-share=$PREFIX/share/proj/ \&lt;br /&gt;
  --with-gdal=$PREFIX/bin/gdal-config \&lt;br /&gt;
  --with-sqlite \&lt;br /&gt;
  --with-sqlite-libs=$PREFIX/lib --with-sqlite-includes=$PREFIX/include \&lt;br /&gt;
  --with-png=no \&lt;br /&gt;
  --with-tiff=no \&lt;br /&gt;
  --with-fftw=no \&lt;br /&gt;
  --with-cairo=no \&lt;br /&gt;
  --with-opengl=no \&lt;br /&gt;
  --with-freetype=no&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== MS-Windows ====&lt;br /&gt;
&lt;br /&gt;
===== MS-Windows/Cygwin =====&lt;br /&gt;
&lt;br /&gt;
* See the [[Cygwin]] wiki pages&lt;br /&gt;
&lt;br /&gt;
===== MS-Windows/native =====&lt;br /&gt;
&lt;br /&gt;
====== Compile ======&lt;br /&gt;
&lt;br /&gt;
* [http://trac.osgeo.org/grass/wiki/CompileOnWindows GRASS Windows Native Binary Building Guide] (GRASS 6.4.x + 7.x)&lt;br /&gt;
* &amp;lt;strike&amp;gt;[http://www.webalice.it/marco.pasetti/grass/BuildFromSource.html GRASS Windows Native Binary Building Guide] (GRASS 6.3.x) &amp;lt;/strike&amp;gt;&lt;br /&gt;
* See/adapt [http://blog.qgis.org/node/124 idea] for unattended install of QGIS (et al) from [http://trac.osgeo.org/osgeo4w/ OSGeo4W] from the QuantumGIS Blog.&lt;br /&gt;
&lt;br /&gt;
See also [[WinGRASS Current Status]] for latest updates.&lt;br /&gt;
&lt;br /&gt;
=== Common problems and solutions ===&lt;br /&gt;
&lt;br /&gt;
During compilation, error can occur if certain packages are not installed. Here a list of problems with solution:&lt;br /&gt;
&lt;br /&gt;
* error: X11/Xlib.h: No such file or directory&lt;br /&gt;
** this suggests that you don't have the X headers installed&lt;br /&gt;
** Solution: Install the libx11-dev package&lt;br /&gt;
&lt;br /&gt;
* error:  g.list: error while loading shared libraries: libgdal1.6.0.so.1: cannot open shared object file: No such file or directory&lt;br /&gt;
** this error appears in the shell right after the user clicks GUI's &amp;quot;Start GRASS&amp;quot; button. The GUI shows an error about geographic extent and gets closed afterwards.&lt;br /&gt;
** It happens when you launch bin.i686 executable on 64bit system. Be careful and choose the right architecture.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Static compilation ===&lt;br /&gt;
&lt;br /&gt;
In order to get static rather than dynamically linked binaries, configure like this:&lt;br /&gt;
&lt;br /&gt;
  ./configure --disable-shared --enable-static&lt;br /&gt;
&lt;br /&gt;
This will however break the wxGUI and GRASS 7 completely because &amp;quot;ctypes&amp;quot; wants to link against shared libs, or there is something in the static libs that &amp;quot;ctypes&amp;quot; does not like.&lt;br /&gt;
&lt;br /&gt;
=== Optimization ===&lt;br /&gt;
&lt;br /&gt;
GCC and other compilers support [http://gcc.gnu.org/onlinedocs/gcc-4.3.3/gcc/Optimize-Options.html#Optimize-Options optimization]&lt;br /&gt;
&lt;br /&gt;
If you would like to set compiler optimisations, for a possibly faster binary, type (don't enter a &amp;quot;;&amp;quot; anywhere):&lt;br /&gt;
&lt;br /&gt;
        CFLAGS=-O ./configure&lt;br /&gt;
or,&lt;br /&gt;
        setenv CFLAGS -O&lt;br /&gt;
        ./configure&lt;br /&gt;
&lt;br /&gt;
whichever works on your shell. Use -O2 instead of -O if your compiler supports this (note: O is the letter, not zero). Using the &amp;quot;gcc&amp;quot; compiler, you can also specify processor specific flags (examples, please suggest better settings to us):&lt;br /&gt;
&lt;br /&gt;
  CFLAGS=&amp;quot;-mcpu=athlon -O2&amp;quot; # AMD Athlon processor with code optimisations&lt;br /&gt;
  CFLAGS=&amp;quot;-march=amdfam10&amp;quot;  # AMD Phenom II X4 64bit processor with gcc &amp;gt;=4.3&lt;br /&gt;
  CFLAGS=&amp;quot;-mcpu=pentium&amp;quot;    # Intel Pentium processor&lt;br /&gt;
  CFLAGS=&amp;quot;-mcpu=pentium4&amp;quot;   # Intel Pentium4 processor&lt;br /&gt;
  CFLAGS=&amp;quot;-O2 -msse -msse2 -mfpmath=sse -minline-all-stringops&amp;quot; # Intel XEON 64bit processor&lt;br /&gt;
  CFLAGS=&amp;quot;-mtune=nocona -m64 -minline-all-stringops&amp;quot;            # Intel Pentium 64bit processor&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To find out optional CFLAGS for your platform, enter:&lt;br /&gt;
  gcc -dumpspecs&lt;br /&gt;
&lt;br /&gt;
See also: http://gcc.gnu.org/&lt;br /&gt;
&lt;br /&gt;
A real fast GRASS version (and small binaries) will be created with LDFLAGS set to &amp;quot;stripping&amp;quot; (but this disables debugging):&lt;br /&gt;
&lt;br /&gt;
  CFLAGS=&amp;quot;-O2 -mcpu=&amp;lt;cpu_see_above&amp;gt; -Wall&amp;quot; LDFLAGS=&amp;quot;-s&amp;quot; ./configure&lt;br /&gt;
&lt;br /&gt;
=== Configure options and their meanings ===&lt;br /&gt;
&lt;br /&gt;
For configure there are many options and some GRASS modules are built only if some options are set. Here are listed common configuration options with short explanation.&lt;br /&gt;
&lt;br /&gt;
* --prefix=/path - Sets path where GRASS will be installed. GRASS will reside in /path/grass-version.&lt;br /&gt;
* --enable-largefile - Enables large (&amp;gt;2Gb on 32bit systems) support. For current large file support status look at [[Large File Support]] page.&lt;br /&gt;
* --with-cxx - Enables compilation of C++ code. Required for r.terraflow module.&lt;br /&gt;
* --with-readline - Enables readline support. If readline is enabled, you can use its history/editing facilities when entering r.mapcalc expressions on stdin.&lt;br /&gt;
* --with-glw - Enables GLw support. The GLw library provides OpenGL &amp;quot;canvas&amp;quot; widgets for Athena and Motif. &lt;br /&gt;
 &lt;br /&gt;
 That switch is unnecessary for normal compilation. It's only&lt;br /&gt;
 required for r3.showdspf, which isn't normally built; if you &lt;br /&gt;
 want it, you have build it manually &lt;br /&gt;
 (e.g. &amp;quot;make -C raster3d/r3.showdspf&amp;quot;).&lt;br /&gt;
 As similar functionality is now provided by NVIZ, r3.showdspf&lt;br /&gt;
 is deprecated.&lt;br /&gt;
 r3.showdspf uses the Motif widget (so you also need a &lt;br /&gt;
 Motif library, e.g. Lesstif or OpenMotif).&lt;br /&gt;
 [http://grass.itc.it/pipermail/grassuser/2006-December/037475.html Glynn Clements at GRASS-user mailing list]&lt;br /&gt;
&lt;br /&gt;
=== Parallelized compilation on multi-core CPUs ===&lt;br /&gt;
&lt;br /&gt;
You can dramatically accelerate the compilation of the GRASS code with the -j flag of &amp;quot;make&amp;quot; if you have a multi-core CPU system. This determines the maximum number of jobs to have running at once, so cores don't have to sit idle waiting for jobs on other cores to complete. A good rule of thumb for this value is &amp;lt;tt&amp;gt;number_of_cores * 1.5&amp;lt;/tt&amp;gt;, but note that setting any higher than the actual number of cores will only affect the timing slightly. For example, on a dual-core processor:&lt;br /&gt;
  make -j 4&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- CFLAGS=&amp;quot;-pipe&amp;quot; doesn't seem to help much --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== GRASS-GDAL plugin ==&lt;br /&gt;
&lt;br /&gt;
* see [[Compile and install GRASS and QGIS with GDAL/OGR Plugin]]&lt;br /&gt;
&lt;br /&gt;
== Addons ==&lt;br /&gt;
&lt;br /&gt;
Please note that the installation of [[AddOns/GRASS_6|Addons]] can be easily done with the {{cmd|g.extension}} manager. The compile instructions below are aiming at own development.&lt;br /&gt;
&lt;br /&gt;
=== Compiled modules ===&lt;br /&gt;
&lt;br /&gt;
This is the general way which works for C modules as well as scripts (Python or Shell/Bash modules) which has HTML documentation.&lt;br /&gt;
&lt;br /&gt;
'''Requirements:'''&lt;br /&gt;
&lt;br /&gt;
Either:&lt;br /&gt;
* a binary GRASS package, or&lt;br /&gt;
* source code which has been prepared with:&lt;br /&gt;
    ./configure [opionally flags]&lt;br /&gt;
    make libs&lt;br /&gt;
&lt;br /&gt;
Each of the [[GRASS_AddOns|addon]] modules should come with a Makefile. To compile it, just run:&lt;br /&gt;
    make MODULE_TOPDIR=/path/to/grass64/&lt;br /&gt;
&lt;br /&gt;
Note that the &amp;lt;tt&amp;gt;/path/to/grass64&amp;lt;/tt&amp;gt; has to be absolute, not relative.&lt;br /&gt;
&lt;br /&gt;
If using Bash it may be useful to set that up as an alias:&lt;br /&gt;
    alias gmake64='make MODULE_TOPDIR=/path/to/grass64/'&lt;br /&gt;
&lt;br /&gt;
Installation (perhaps requires &amp;quot;sudo&amp;quot;):&lt;br /&gt;
    make MODULE_TOPDIR=/path/to/grass64/ install&lt;br /&gt;
&lt;br /&gt;
Note: Compiled addons may require a re-compilation if you changed/updated your GRASS standard binaries.&lt;br /&gt;
&lt;br /&gt;
==== If binary comes with a -dev package ====&lt;br /&gt;
&lt;br /&gt;
''(work in progress, this text states how it eventually will be :)''&lt;br /&gt;
Nowadays one does not need to the source code, nor compiling GRASS by oneself to be able to add add-ons. On Debian, you can just install the grass-dev package and then run:&lt;br /&gt;
 make MODULE_TOPDIR=/usr/lib/grass64/ INST_DIR=/usr/lib/grass64/&lt;br /&gt;
&lt;br /&gt;
The grass-dev package essentially provides GRASS's &amp;lt;tt&amp;gt;include&amp;lt;/tt&amp;gt; header files and Make configuration files.&lt;br /&gt;
&lt;br /&gt;
=== Scripts ===&lt;br /&gt;
&lt;br /&gt;
If the addon module is a script, it is sufficient to copy it into the (GRASS binaries) path somewhere. Alternatively, install addons into a separate GRASS addons binaries/scripts directory which is easier to maintain. It avoids getting clobbered every time you reinstall GRASS. To use these separately stored scripts, set and export the GRASS_ADDON_PATH environment variable before starting GRASS and it will automatically be added to the module search path (see the {{cmd|variables}} help page). To simplify this, do for example:&lt;br /&gt;
&lt;br /&gt;
 # add in $HOME/.bashrc:&lt;br /&gt;
 GRASS_ADDON_PATH=/usr/local/grass/addons/&lt;br /&gt;
 export GRASS_ADDON_PATH&lt;br /&gt;
&lt;br /&gt;
Make sure that the script is executable, then just call it in GRASS typing the filename. Python scripts need to be called writing the extension as well, like:&lt;br /&gt;
 &lt;br /&gt;
 GRASS 6.5.svn (spearfish60):~ &amp;gt; v.krige.py&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Installation]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Large_File_Support&amp;diff=23528</id>
		<title>Large File Support</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Large_File_Support&amp;diff=23528"/>
		<updated>2016-09-11T05:22:10Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: Moved to Trac&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{MovedToTrac|LargeFileSupport}}&lt;br /&gt;
&lt;br /&gt;
[[Category: Development]]&lt;br /&gt;
[[Category: massive data analysis]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=Image_processing&amp;diff=23482</id>
		<title>Image processing</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=Image_processing&amp;diff=23482"/>
		<updated>2016-08-31T06:55:14Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: added i.landsat8.swlst&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
&lt;br /&gt;
For a general overview, see [http://grass.osgeo.org/grass70/manuals/imageryintro.html Introductiojn: image processing] in GRASS GIS&lt;br /&gt;
&lt;br /&gt;
=== General introduction ===&lt;br /&gt;
&lt;br /&gt;
'''Digital numbers and physical values (reflection/radiance-at-sensor):'''&lt;br /&gt;
&lt;br /&gt;
Satellite imagery is commonly stored in Digital Numbers (DN) for minimizing the storage volume, i.e. the originally sampled analog physical value (color, temperature, etc) is stored a discrete representation in 8-16 bits. For example, Landsat data are stored in 8bit values (i.e., ranging from 0 to 255); other satellite data may be stored in 10 or 16 bits. Having data stored in DN, it implies that these data are not yet the observed ground reality. Such data are called &amp;quot;at-satellite&amp;quot;, for example the amount of energy sensed by the sensor of the satellite platform is encoded in 8 or more bits. This energy is called radiance-at-sensor. To obtain physical values from DNs, satellite image providers use a linear transform equation &amp;lt;tt&amp;gt;(y = a * x + b)&amp;lt;/tt&amp;gt; to encode the radiance-at-sensor in 8 to 16 bits. DNs can be turned back into physical values by applying the reverse formula &amp;lt;tt&amp;gt;(x = (y - b) / a)&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
The GRASS GIS module {{cmd|i.landsat.toar}} easily transforms Landsat DN to radiance-at-sensor. The equivalent module for ASTER data is {{cmd|i.aster.toar}}. For other satellites, {{cmd|r.mapcalc}} can be employed.&lt;br /&gt;
&lt;br /&gt;
'''Reflection/radiance-at-sensor and surface reflectance'''&lt;br /&gt;
&lt;br /&gt;
When radiance-at-sensor has been obtained, still the atmosphere influences the signal as recorded at the sensor. This atmospheric interaction with the sun energy reflected back into space by ground/vegetation/soil needs to be corrected. There are two ways to apply atmospheric correction for satellite imagery. The simple way for Landsat is with {{cmd|i.landsat.toar}}, using the DOS correction method. The more accurate way is using {{cmd|i.atcorr}} (which works for many satellite sensors). The atmospherically corrected sensor data represent surface {{wikipedia|reflectance}}, which ranges theoretically from 0 % to 100 %. Note that this level of data correction is the proper level of correction to calculate vegetation indices.&lt;br /&gt;
&lt;br /&gt;
=== Image processing in GRASS GIS ===&lt;br /&gt;
Satellite imagery and orthophotos (aerial photographs) are handled in GRASS as raster maps and specialized tasks are performed using the '''imagery''' (i.*) modules. All general operations are handled by the raster modules.&lt;br /&gt;
&lt;br /&gt;
* {{cmd|imageryintro}}: A short introduction to image processing in GRASS 6&lt;br /&gt;
* Full [http://grass.osgeo.org/gdp/imagery/grass4_image_processing.pdf GRASS 4.0 Image Processing manual] (PDF, 47 pages)&lt;br /&gt;
* {{cmd|imagery}}: Imagery module help pages&lt;br /&gt;
&lt;br /&gt;
* Data import is generally handled by the {{cmd|r.in.gdal}} module&lt;br /&gt;
&lt;br /&gt;
== Screenshots ==&lt;br /&gt;
&lt;br /&gt;
* The [http://grass.osgeo.org/screenshots/remote-sensing/ imagery screenshots] page&lt;br /&gt;
&lt;br /&gt;
== Importing ==&lt;br /&gt;
&lt;br /&gt;
The wxGUI offers a convenient tool for single map and bulk import: &lt;br /&gt;
&lt;br /&gt;
* see [[Importing data]]&lt;br /&gt;
&lt;br /&gt;
=== Satellite Data ===&lt;br /&gt;
&lt;br /&gt;
==== Ocean Color ====&lt;br /&gt;
* [[MODIS]]&lt;br /&gt;
* [[MODIS#SeaWiFS|SeaWiFS]]&lt;br /&gt;
&lt;br /&gt;
==== Sea Surface Temperature (SST) ====&lt;br /&gt;
&lt;br /&gt;
* [[MODIS]]&lt;br /&gt;
* [[AVHRR]]&lt;br /&gt;
&lt;br /&gt;
==== High Resolution Data ====&lt;br /&gt;
&lt;br /&gt;
Commercial satellite imagery&lt;br /&gt;
&lt;br /&gt;
* [[IKONOS]]&lt;br /&gt;
* [[QuickBird]]&lt;br /&gt;
* [[WorldView]]&lt;br /&gt;
&lt;br /&gt;
See also,&lt;br /&gt;
&lt;br /&gt;
* [http://www.digitalglobe.com/sites/default/files/DigitalGlobe_Spectral_Response_1.pdf Spectral Response specifications for IKONOS, GeoEye, QuickBird, WorldView]&lt;br /&gt;
* various [http://apollomapping.com/about-us/whitepapers Whitepapers] on High Resolution Satellite Imagery&lt;br /&gt;
&lt;br /&gt;
=== Orthophotos ===&lt;br /&gt;
&lt;br /&gt;
The wxGUI offers a convenient tool for single map and bulk import: &lt;br /&gt;
&lt;br /&gt;
* see [[Importing data]]&lt;br /&gt;
&lt;br /&gt;
== Preprocessing ==&lt;br /&gt;
&lt;br /&gt;
See also [http://cloudsgate2.larc.nasa.gov/cgi-bin/predict/predict.cgi NASA LaRC Satellite Overpass Predictor]&lt;br /&gt;
&lt;br /&gt;
=== Geometric preprocessing/Georectification ===&lt;br /&gt;
&lt;br /&gt;
* Georectification tool is available from the File menu in the GUI.&lt;br /&gt;
* {{cmd|i.points}}, {{cmd|i.vpoints}} (scanned maps, satellite images)&lt;br /&gt;
* {{cmd|i.ortho.photo}} (aerial images)&lt;br /&gt;
&lt;br /&gt;
A multi-band image may be grouped and georectified with a single set of ground control points ({{cmd|i.group}}, {{cmd|i.target}}, {{cmd|i.rectify}}).&lt;br /&gt;
&lt;br /&gt;
See also the [[Georeferencing]] wiki page&lt;br /&gt;
&lt;br /&gt;
=== Orthorectification ===&lt;br /&gt;
&lt;br /&gt;
* see [[Orthorectification]]&lt;br /&gt;
* see [[Orthorectification digital camera|Ortho-rectification of oblique photographs]]&lt;br /&gt;
&lt;br /&gt;
=== Radiometric  preprocessing ===&lt;br /&gt;
&lt;br /&gt;
* use {{cmd|r.mapcalc}} to apply gain/bias formula&lt;br /&gt;
* [[LANDSAT]]: you can also use {{cmd|i.landsat.toar}} &amp;lt;strike&amp;gt;from [[GRASS AddOns]]&amp;lt;/strike&amp;gt; (included since 6.4)&lt;br /&gt;
&lt;br /&gt;
=== Correction for atmospheric effects ===&lt;br /&gt;
&lt;br /&gt;
Visit the dedicated page on [[Atmospheric correction]]&lt;br /&gt;
&lt;br /&gt;
==== Related Modules ====&lt;br /&gt;
&lt;br /&gt;
* {{addonCmd|i.landsat.dehaze}}: simple dark-object/Tasseled Cap based haze minimization (from [[GRASS AddOns]])&lt;br /&gt;
* {{cmd|i.atcorr}}: more complex correction but based on atmospheric models&lt;br /&gt;
&lt;br /&gt;
=== Correction for topographic/terrain effects ===&lt;br /&gt;
&lt;br /&gt;
In rugged terrain, such correction might be useful to minimize negative effects.&lt;br /&gt;
&lt;br /&gt;
* simple &amp;quot;cosine correction&amp;quot; using {{cmd|r.sunmask}}, {{cmd|r.mapcalc}} (tends to overshoot when slopes are high)&lt;br /&gt;
* In {{cmd|i.topo.corr}} the following correction methods are implemented: cosine, minnaert, percent, c-factor.&lt;br /&gt;
** '''Note,''' that for the sun's zenith (in degrees) parameter, the equation &amp;quot;'''Sun's Zenith''' = '''90''' - '''Sun's Elevation'''&amp;quot; is generally valid&lt;br /&gt;
&lt;br /&gt;
Examples:&lt;br /&gt;
* [http://sylla-consult.de/en/topographic-correction-of-landsat-imagery-using-grass-gis/ Topographic correction of Landsat imagery using GRASS GIS] (Blog article)&lt;br /&gt;
&lt;br /&gt;
=== Cloud removal ===&lt;br /&gt;
&lt;br /&gt;
* with {{cmd|i.landsat.acca}}&lt;br /&gt;
&lt;br /&gt;
== Image classification ==&lt;br /&gt;
&lt;br /&gt;
See the dedicated [[Image classification]] page.&lt;br /&gt;
&lt;br /&gt;
== Image segmentation ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.smap}}: Performs contextual image classification using sequential maximum a posteriori (SMAP) estimation. &lt;br /&gt;
* {{AddonCmd|r.smooth.seg}}: Performs image segmentation and discontinuity detection (based on the Mumford-Shah variational model).&lt;br /&gt;
* [[GRASS GSoC 2012 Image Segmentation|i.segment]]: Image Segmentation&lt;br /&gt;
&lt;br /&gt;
== Filtering ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.mfilter}}, {{cmd|r.neighbors}}&lt;br /&gt;
&lt;br /&gt;
== Fourier Transform ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.fft}}, {{cmd|i.ifft}}&lt;br /&gt;
* see also [[Image destriping]]&lt;br /&gt;
* see also [[Fourier transforms for multitemporal analysis]]&lt;br /&gt;
&lt;br /&gt;
== Canonical Component Analysis ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.cca}}&lt;br /&gt;
&lt;br /&gt;
== Principal Component Analysis ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|i.pca}}&lt;br /&gt;
* see also [[Principal Components Analysis]]&lt;br /&gt;
&lt;br /&gt;
== Texture ==&lt;br /&gt;
&lt;br /&gt;
A series of commonly used texture measures (derived from the Grey Level Co-occurrence Matrix, GLCM), also called Haralick's texture features are available:&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.texture}}: In case of panchromatic maps or limited amount of channels, it is often recommended to generate synthetic channels through texture analysis&lt;br /&gt;
&lt;br /&gt;
See [http://www.fp.ucalgary.ca/mhallbey/texture_calculations.htm here] and [http://murphylab.web.cmu.edu/publications/boland/boland_node26.html here] for the formulas to calculate texture. See also [http://wiki.landscapetoolbox.org/doku.php/remote_sensing_methods:canopy_texture_mapping canopy texture mapping].&lt;br /&gt;
&lt;br /&gt;
== Spectral unmixing ==&lt;br /&gt;
&lt;br /&gt;
* {{AddonCmd|i.spec.unmix}} is used to perform Spectral Unmixing ([https://svn.osgeo.org/grass/grass-addons/grass6/imagery/i.spec.unmix/description.html manual])&lt;br /&gt;
* {{AddonSrc|imagery|i.spec.unmix|version=7}}: version for GRASS GIS 7 (manual: {{addonCmd|i.spec.unmix}})&lt;br /&gt;
&lt;br /&gt;
== Thermal remote sensing ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.mapcalc}} can be used to convert from DN (digital number) of arbitrary sensors to Kelvin/Celsius/...&lt;br /&gt;
* {{cmd|i.landsat.toar}} - Calculates top-of-atmosphere radiance or reflectance and temperature for Landsat MSS/TM/ETM+/OLI&lt;br /&gt;
* {{AddonSrc|imagery|i.landsat8.swlst|version=7}} Practical split-window algorithm estimating Land Surface Temperature from Landsat 8 OLI/TIRS imagery&lt;br /&gt;
* {{cmd|i.aster.toar|version=70}} - Calculates top-of-atmosphere radiance or reflectance and temperature for ASTER&lt;br /&gt;
* [[MODIS#Advanced_MODIS_LST_time_series_reconstruction|MODIS]]&lt;br /&gt;
&lt;br /&gt;
== Time series analysis ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.series}}- Makes each output cell value a function of the values assigned to the corresponding cells in the input raster map layers. &lt;br /&gt;
* see also [[Time series]]&lt;br /&gt;
* see also [[Time series development]]&lt;br /&gt;
* see also [[MODIS#Advanced_MODIS_LST_time_series_reconstruction|MODIS]]&lt;br /&gt;
&lt;br /&gt;
== Enhancements ==&lt;br /&gt;
&lt;br /&gt;
=== Radiometric Enhancements ===&lt;br /&gt;
* {{cmd|i.landsat.rgb}} (GRASS 6.x) | {{cmd|i.colors.enhance|version=70}} (GRASS 7.x) &lt;br /&gt;
* Decorrelation stretching with {{cmd|r.colors}} or {{cmd|r.mapcalc}}&lt;br /&gt;
* Density slicing with {{cmd|r.colors}}&lt;br /&gt;
* [[Principal Component Analysis]] with {{cmd|i.pca}}&lt;br /&gt;
&lt;br /&gt;
=== Geometric Enhancements - Image Fusion - Pansharpening - Image Segmentation ===&lt;br /&gt;
&lt;br /&gt;
Image fusion and Pansharpening:&lt;br /&gt;
* {{cmd|i.rgb.his}} and {{cmd|i.his.rgb}}: can be used for image fusion&lt;br /&gt;
* {{cmd|i.fusion.brovey}}: image fusion of pan-chromatic and color channels&lt;br /&gt;
* {{cmd|i.pansharpen|version=70}}: Image fusion algorithms to sharpen multispectral with high-res panchromatic channels (GRASS 7)&lt;br /&gt;
&lt;br /&gt;
Segmentation:&lt;br /&gt;
* {{AddonCmd|r.smooth.seg}} which performs image segmentation and discontinuity detection (based on the Mumford-Shah variational model). The module generates a piece-wise smooth approximation of the input raster map and a raster map of the discontinuities of the output approximation. The discontinuities of the output approximation are preserved from being smoothed. (Addons)&lt;br /&gt;
* {{cmd|i.segment|version=70}}: Identifies segments (objects) from imagery data (GRASS 7)&lt;br /&gt;
&lt;br /&gt;
=== Optimal channel selection for color composites ===&lt;br /&gt;
* {{cmd|i.oif}}&lt;br /&gt;
&lt;br /&gt;
== Vegetation indices ==&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.mapcalc}} can be used to calculate vegetation indices&lt;br /&gt;
* In GRASS GIS 7, see also {{cmd|i.vi|version=70}}&lt;br /&gt;
* Search this wiki for NDVI (see top right search field)&lt;br /&gt;
&lt;br /&gt;
== Evapotranspiration ==&lt;br /&gt;
&lt;br /&gt;
* In GRASS GIS 7, i.eb.* and i.evapo.* are modules dedicated to evapotranspiration&lt;br /&gt;
&lt;br /&gt;
Please look at [[Image_processing/Evapotranspiration]] for some background information.&lt;br /&gt;
&lt;br /&gt;
== Stereo anaglyphs ==&lt;br /&gt;
&lt;br /&gt;
* see [[Stereo anaglyphs]]&lt;br /&gt;
&lt;br /&gt;
== Ideas collection for improving GRASS' Image processing capabilities ==&lt;br /&gt;
&lt;br /&gt;
Below modules need some tuning before being added to GRASS 6. Volunteers welcome.&lt;br /&gt;
&lt;br /&gt;
=== libCTL - Library for affine, Helmert and projective transformations in 2D ===&lt;br /&gt;
&lt;br /&gt;
To be evaluated: plain C translation&lt;br /&gt;
https://svn.code.sf.net/p/gvsigce/code/trunk/libraries/libCTL/&lt;br /&gt;
&lt;br /&gt;
* requires GNU Scienfic Library for the matrix algebra&lt;br /&gt;
* It is a small library that provides a handful of transformation methods from source to target (2D) coordinates. Currently, this includes affine, Helmert and projective transformations in 2D.&lt;br /&gt;
*  The main library is written in plain C and the transformation functions are a plain C conversion of the methods found in the QGIS (www.qgis.org) Georeferencer Plugin (projective and Helmert transformations) and Olivier Dalang's &amp;quot;worldfile transform&amp;quot; (https://gist.github.com/olivierdalang/ba97fc986ade4545068d).&lt;br /&gt;
* author: B Ducke&lt;br /&gt;
&lt;br /&gt;
=== Spectral unmixing ideas for processing hyperspectral image data ===&lt;br /&gt;
&lt;br /&gt;
* Make use of the [http://spectralpython.sourceforge.net/ Spectral Python] (SPy) which is a pure Python module for processing hyperspectral image data&lt;br /&gt;
&lt;br /&gt;
=== Spectral angle mapping ideas ===&lt;br /&gt;
&lt;br /&gt;
* {{AddonCmd|i.spec.sam}}&lt;br /&gt;
&lt;br /&gt;
=== Geocoding ideas ===&lt;br /&gt;
&lt;br /&gt;
* {{AddonCmd|i.homography}}: geocoding with lines (instead of points) with homography (as improved i.points; it was formerly called i.linespoints)&lt;br /&gt;
* support splines from GDAL (see [[GRASS_AddOns#Imagery_add-ons]])&lt;br /&gt;
* New [[WxGUI#Georectifier|Georectifier]]: see also http://gama.fsv.cvut.cz/~landa/grass/swf/georect.html&lt;br /&gt;
&lt;br /&gt;
=== Image matching ideas ===&lt;br /&gt;
* {{AddonCmd|i.points.auto}}: automated search of GCPs based on FFT correlation (as improved i.points)&lt;br /&gt;
: ''Reference:'' M. Neteler, D. Grasso, I. Michelazzi, L. Miori, S. Merler, and C. Furlanello, 2005: An integrated toolbox for image registration, fusion and classification. International Journal of Geoinformatics, 1(1), pp. 51-61 [http://www.grassbook.org/neteler/papers/neteler2005_IJG_051-061_draft.pdf PDF]&lt;br /&gt;
&lt;br /&gt;
=== Image classification ideas ===&lt;br /&gt;
&lt;br /&gt;
* [http://mpa.itc.it/merler/index.html#ml pr: C code for classification problems]&lt;br /&gt;
* GRASS implementation: i.pr.* source code is available [http://trac.osgeo.org/grass/browser/grass-addons/grass6/imagery/i.pr here])&lt;br /&gt;
&lt;br /&gt;
=== Stereo ideas ===&lt;br /&gt;
&lt;br /&gt;
This is stand-alone stereo modeling software (DEM extraction etc). Waits for integration into GRASS.&lt;br /&gt;
* http://grass.osgeo.org/outgoing/grass5/stereo-0.2b.tar.gz&lt;br /&gt;
* [http://grass.osgeo.org/gdp/stereo-grass/index.html Stereo Tutorial]&lt;br /&gt;
&lt;br /&gt;
=== Bundle block adjustment ===&lt;br /&gt;
&lt;br /&gt;
Needed to orthorectify a series aerial images taken sequentially with overlap. &amp;quot;Historical&amp;quot; method which is nowadays interesting for UAV flights with octocopters and such.&lt;br /&gt;
&lt;br /&gt;
Automatec GPC search could be done by &amp;quot;auto-sift&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Available: Octave code which prepares input to an {{cmd|i.ortho.photo}} batch job (contact Markus Neteler).&lt;br /&gt;
&lt;br /&gt;
=== Lidar LAS format ===&lt;br /&gt;
&lt;br /&gt;
LAS Tools by M. Isenburg, Howard Butler et al.: http://www.liblas.org&lt;br /&gt;
&lt;br /&gt;
    las2txt | r.in.xyz in=- fs=&amp;quot; &amp;quot;&lt;br /&gt;
&lt;br /&gt;
''Update:'' {{cmd|r.in.lidar|version=70}} and {{cmd|v.in.lidar|version=70}} implemented by Markus Metz (GRASS 7), but las2txt is still useful for added control such as filtering or importing secondary data streams such as intensity.&lt;br /&gt;
&lt;br /&gt;
(see [[LIDAR]])&lt;br /&gt;
&lt;br /&gt;
=== Improving the existing code ===&lt;br /&gt;
&lt;br /&gt;
It might be sensible to merge the various image libraries:&lt;br /&gt;
&lt;br /&gt;
* GRASS 6 standard libs:&lt;br /&gt;
** lib/imagery/: standard lib, in use (i.* except for i.points3, i.rectify3, see below)&lt;br /&gt;
** imagery/i.ortho.photo/libes/: standard lib, in use ({{cmd|i.ortho.photo}}, photo.*)&lt;br /&gt;
* GRASS 5 (! only) image3 lib:&lt;br /&gt;
** [http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_5_5/src/libes/image3 libes/image3/]: never finished improvement which integrated the standard lib and the ortho lib. Seems to provide also ortho rectification for satellite data ([http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_5_5/src/imagery/i.points3 i.points3], [http://trac.osgeo.org/grass/browser/grass/branches/releasebranch_5_5/src/imagery/i.rectify3 i.rectify3])&lt;br /&gt;
* GRASS 5/6 image proc commands:&lt;br /&gt;
** merge of {{cmd|i.points}}, {{cmd|i.vpoints}}, i.points3 (see above)&lt;br /&gt;
** merge of {{cmd|i.rectify}} and i.rectify3 (see above)&lt;br /&gt;
** &amp;lt;strike&amp;gt;addition of new resampling algorithms such as bilinear, cubic convolution (take from {{cmd|r.proj}} or {{cmd|r.resamp.aggreg}})&amp;lt;/strike&amp;gt; (done 10/2010)&lt;br /&gt;
** add other warping methods (maybe lanczos or thin splines from GDAL?): [[Addons#i.warp]]&lt;br /&gt;
** implement/finish linewise ortho-rectification of satellite data&lt;br /&gt;
&lt;br /&gt;
== Bibliography ==&lt;br /&gt;
&lt;br /&gt;
* Search for [http://scholar.google.com/scholar?sourceid=mozclient&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;q=grass+gis+image+processing &amp;quot;GRASS GIS Image processing&amp;quot;] - Google Scholar&lt;br /&gt;
* Search for [http://scholar.google.com/scholar?sourceid=mozclient&amp;amp;ie=utf-8&amp;amp;oe=utf-8&amp;amp;q=grass+gis+remote+sensing &amp;quot;GRASS GIS Remote Sensing&amp;quot;] - Google Scholar&lt;br /&gt;
&lt;br /&gt;
[[Category:Development]]&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Image processing]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Bonn_2016&amp;diff=23468</id>
		<title>GRASS Community Sprint Bonn 2016</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Bonn_2016&amp;diff=23468"/>
		<updated>2016-08-27T21:50:05Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: Updated activity&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{toc|right}}&lt;br /&gt;
During the [http://2016.foss4g.org/ FOSS4G 2016] , 21-28 August 2016, [http://en.wikipedia.org/wiki/Bonn Bonn], [https://en.wikipedia.org/wiki/Germany Germany], the GRASS GIS project will join the code sprint&lt;br /&gt;
&lt;br /&gt;
'''Important dates:'''&lt;br /&gt;
&lt;br /&gt;
* CodeSprint I: Sun 21.08.2016 12:00 - Tue 23.08.2016 (open end) (see also [http://2016.foss4g.org/programme.html#code-sprints here])&lt;br /&gt;
* [http://2016.foss4g.org/#page9 FOSS4G 2016 Schedule]&lt;br /&gt;
* CodeSprint II: Sat 27.08.2016 - Sun 28.08.2016 12:00 p.m. (see also [http://2016.foss4g.org/programme.html#code-sprints here])&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
Get together of GRASS GIS project members to take decisions and tackle small and larger problems.&lt;br /&gt;
&lt;br /&gt;
For this meeting, we welcome people committed to improving the GRASS GIS project. This includes developers, documenters, bug reporters, translators, and users!&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
If you are interested to sponsor the GRASS Community Sprint, please read about&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; '''sponsoring the GRASS project at [http://grass.osgeo.org/donations/ http://grass.osgeo.org/donations/]'''&amp;lt;br&amp;gt;&lt;br /&gt;
and, if needed, contact [[User:Neteler|Markus Neteler]] &amp;lt;tt&amp;gt;&amp;lt;neteler at osgeo.org&amp;gt;&amp;lt;/tt&amp;gt;. Any surplus at the end of the event will be turned over to the GRASS GIS project.&lt;br /&gt;
&lt;br /&gt;
The GRASS Community Sprint is a great occasion for you to support the development of GRASS. With your contribution you'll enable more developers to meet in Bonn. The community sprint is an important opportunity for the GRASS developers to discuss and collaboratively resolve bugs, plan the direction for the project and work on new features. Please see below for the more detailed agenda. The developers and contributors are donating their valuable time, so it would be great if in-kind funding can be made available from within the community to cover out-of-pocket expenses. All of the work that takes place at the community sprint will be directly contributed back into the GRASS project to the benefit of everyone who uses it.&lt;br /&gt;
&lt;br /&gt;
=== Thanks to our sponsors ===&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
&lt;br /&gt;
Bonn, Germany: Basecamp&lt;br /&gt;
&lt;br /&gt;
How to get to FOSS4G2016 OSGeo Code Sprint? &lt;br /&gt;
* http://alienus.de/basecamp1/en/arrival-bonn-hostel/&lt;br /&gt;
* http://www.openstreetmap.org/search?query=raste%201%20bonn#map=18/50.70762/7.12383&lt;br /&gt;
&lt;br /&gt;
By train&lt;br /&gt;
* From Bonn Main station take the U-Trains (Underground platform) 16, 63 or 68. Get off after 6 min at stop Dt. Telekom / Ollenhauerstr. &lt;br /&gt;
* http://alienus.de/basecamp1/en/arrival-bonn-hostel/&lt;br /&gt;
* http://www.openstreetmap.org/search?query=raste%201%20bonn#map=18/50.70762/7.12383&lt;br /&gt;
* [https://www.vrsinfo.de/englisch/the-vrs/vrs-about-us.html online public transport planner]&lt;br /&gt;
&lt;br /&gt;
By Car&lt;br /&gt;
* Coming from the highway A59 Basecamp is located at the end of the highway A562. For navigation systems it is best to type Basecamp's address: &amp;quot;''In der Raste 3, 53129 Bonn''&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== Accommodation and Costs ==&lt;br /&gt;
&lt;br /&gt;
* to be defined&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
* https://en.wikipedia.org/wiki/Bonn#Climate&lt;br /&gt;
&lt;br /&gt;
== Agenda - What we plan to do ==&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The program is generally open for your ideas. Please edit this wiki page!&lt;br /&gt;
&lt;br /&gt;
=== More core developers with SVN write access ===&lt;br /&gt;
* Develop a strategy to refresh the group with core SVN write access&lt;br /&gt;
&lt;br /&gt;
=== Web site ===&lt;br /&gt;
* Migrate the good old CMSMS to Wordpress&lt;br /&gt;
* Move development related stuff from CMS (https://grass.osgeo.org/development/) to trac Wiki&lt;br /&gt;
&lt;br /&gt;
=== Promo ===&lt;br /&gt;
* Finalize the new GRASS GIS flyer prepared by Vincent Bain&lt;br /&gt;
** needed: catchy time series screenshot&lt;br /&gt;
&lt;br /&gt;
=== New Releases ===&lt;br /&gt;
Minor releases:&lt;br /&gt;
* Release GRASS GIS 6.4.6:&lt;br /&gt;
** Coordination is done here: http://trac.osgeo.org/grass/wiki/Grass6Planning&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/6.4.6-News&lt;br /&gt;
* Release GRASS GIS 7.0.5: &lt;br /&gt;
** Coordination is done here: https://trac.osgeo.org/grass/wiki/Grass7Planning#a7.0.5tobebackported&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/7.0.5-News&lt;br /&gt;
&lt;br /&gt;
'''Major release''':&lt;br /&gt;
* Release GRASS GIS 7.2.0: &lt;br /&gt;
** Coordination is done here: https://trac.osgeo.org/grass/wiki/Grass7Planning#a7.2.0&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/7.2.0-News&lt;br /&gt;
&lt;br /&gt;
=== Documentation and translation ===&lt;br /&gt;
* Add examples to manual pages&lt;br /&gt;
* Add examples to Wiki pages&lt;br /&gt;
** GRASS-R/R-GRASS handling of raster time series&lt;br /&gt;
** Sentinel-2 processing&lt;br /&gt;
* Translation of messages&lt;br /&gt;
* Translation of Wiki pages&lt;br /&gt;
&lt;br /&gt;
=== Source code Quality Assessment ===&lt;br /&gt;
* integrate &amp;quot;coverity scan&amp;quot; with Travis, https://scan.coverity.com/travis_ci&lt;br /&gt;
* check &amp;quot;coverity scan&amp;quot;: copy-paste errors, https://scan.coverity.com/projects/1038&lt;br /&gt;
&lt;br /&gt;
=== Bug squashing ===&lt;br /&gt;
* Open bugs concerning GRASS 7: https://trac.osgeo.org/grass/report/19&lt;br /&gt;
* {{trac|2864}}: Add link to source code in the documentation pages (almost done, let's finish it!)&lt;br /&gt;
* {{trac|3042}}: Patches to make the build reproducible (fileordering, randomness)&lt;br /&gt;
* fix i.histo.match: https://lists.osgeo.org/pipermail/grass-dev/2013-February/062179.html&lt;br /&gt;
* Numpy and matplotlib issues when installing/updating from OSGeo4W (ticket [https://trac.osgeo.org/grass/ticket/3057 #3057])&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
&lt;br /&gt;
Please test in GRASS 7.2.svn!&lt;br /&gt;
* {{cmd|d.legend.vect|version=72}}&lt;br /&gt;
&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
* improve {{AddonCmd|r.modis}} addons&lt;br /&gt;
* integrate Google Summer of Code projects (where adequate)&lt;br /&gt;
* continue working on OBIA toolchain:&lt;br /&gt;
** Testing of mean shift in i.segment&lt;br /&gt;
** Finalization of {{AddonCmd|r.object.geometry}} and its integration into {{AddonCmd|i.segment.uspo}}&lt;br /&gt;
* add R-batch files to OSGeo4W-winGRASS7 see [https://trac.osgeo.org/osgeo4w/ticket/413 osgeo4w/ticket 413]&lt;br /&gt;
* GUI: Implement an optional session &amp;quot;kickstart&amp;quot; in GRASS with LatLong predefined, then open import wizard | switch projection inside (like most other GIS do!)&lt;br /&gt;
* TGRASS:&lt;br /&gt;
** suffix option for output mapnames in t.rast.mapcalc and t.rast.algebra (tickets [https://trac.osgeo.org/grass/ticket/2294 #2294] and [https://trac.osgeo.org/grass/ticket/2736 #2736])&lt;br /&gt;
** pattern option to list and remove space-time data sets (ticket [https://trac.osgeo.org/grass/ticket/2804 #2804])&lt;br /&gt;
** t.rast.what: input file with coordinates (ticket [https://trac.osgeo.org/grass/ticket/2721 #2721])&lt;br /&gt;
** t.remove: dual step removal (ticket [https://trac.osgeo.org/grass/ticket/2752 #2752])&lt;br /&gt;
** support for space-time datasets in g.gui.gmodeler (ticket [https://trac.osgeo.org/grass/ticket/2977 #2977])&lt;br /&gt;
&lt;br /&gt;
=== Better integration of git into development ===&lt;br /&gt;
* since github/gitlab/bitbucket etc are a valuable and recognized source of new source code, we should be able to receive such contributions easily&lt;br /&gt;
** OSGeo currently deploys a self-hosted &amp;quot;gitlab&amp;quot; repo: https://lists.osgeo.org/pipermail/sac/2016-August/007345.html&lt;br /&gt;
&lt;br /&gt;
... YOUR IDEA HERE ...&lt;br /&gt;
&lt;br /&gt;
== Planned participation ==&lt;br /&gt;
&lt;br /&gt;
For organizational reasons, please '''additionally register''' at: https://wiki.osgeo.org/wiki/FOSS4G_2016_Code_Sprint&lt;br /&gt;
&lt;br /&gt;
=== In person ===&lt;br /&gt;
&lt;br /&gt;
Please add your name here or contact [[User:Lucadelu|Luca Delucchi]] &amp;lt;tt&amp;gt;&amp;lt;lucadeluge at gmail com&amp;gt;&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;   border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#edf9c7; font-size:95%; empty-cells:show;&amp;quot; &lt;br /&gt;
|width=50px|'''No'''&lt;br /&gt;
|width=130px|'''Participant '''&lt;br /&gt;
|width=100px|'''Country'''&lt;br /&gt;
|width=100px|'''Arrival'''&lt;br /&gt;
|width=100px|'''Departure'''&lt;br /&gt;
|'''Topic'''&lt;br /&gt;
|width=75px|'''T-Shirt'''&lt;br /&gt;
|'''Notes'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Lucadelu|Luca Delucchi]]&lt;br /&gt;
|Italy&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| &lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:Landa|Martin Landa]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| &lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|[[User:Neteler|Markus Neteler]]&lt;br /&gt;
|Italy&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| Releases, project coordination, bug hunting, getting more ppl involved&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|[[User:NikosA|Nikos Alexandris]]&lt;br /&gt;
|Switzerland&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| CRO, create_iwave.py, i.&amp;lt;nowiki&amp;gt;[rgb|his].[his|rgb]&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
| S or M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[User:Veroandreo|Veronica Andreo]]&lt;br /&gt;
|Argentina&lt;br /&gt;
| August 26&lt;br /&gt;
| August 28&lt;br /&gt;
|&lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|[[User:mlennert|Moritz Lennert]]&lt;br /&gt;
|Belgium&lt;br /&gt;
| August 21&lt;br /&gt;
| August 27&lt;br /&gt;
| Releases, OBIA toolchain, GSoC module integration&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|[[User:sbl|Stefan Blumentrath]]&lt;br /&gt;
|Norway&lt;br /&gt;
| August 26&lt;br /&gt;
| August 28&lt;br /&gt;
| Port some Addons to python? (or whatever you put me up to)&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|[[User:MilenaN|Milena Nowotarska]]&lt;br /&gt;
|Poland&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
|&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|[[User:annazanchetta|Anna Zanchetta]]&lt;br /&gt;
|Italy - Israel&lt;br /&gt;
| August 22&lt;br /&gt;
| August 27&lt;br /&gt;
| Implementing and improving some imagery modules, inshallah&lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Via IRC chat ===&lt;br /&gt;
&lt;br /&gt;
(IRC is a nice archaic chat system, see [[IRC]])&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;   border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#edf9c7; font-size:95%; empty-cells:show;&amp;quot; &lt;br /&gt;
|width=50px|'''No'''&lt;br /&gt;
|width=130px|'''Participant '''&lt;br /&gt;
|width=100px|'''Country'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Ychemin|Yann Chemin]]&lt;br /&gt;
|France&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:hellik|Helmut Kudrnovsky]]&lt;br /&gt;
|Austria &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Individual Preparation ==&lt;br /&gt;
&lt;br /&gt;
* Bring your own computer&lt;br /&gt;
* Bring [http://en.wikipedia.org/wiki/Mains_electricity_by_country your power connector adapter] if needed (photo: [https://en.wikipedia.org/wiki/File:Schuko_plug_and_socket.png Germany]). See also http://www.power-plugs-sockets.com/&lt;br /&gt;
* Install subversion and the compiler tools, and come with a working GRASS development environment if possible.&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
We have to remember to take at least one group photo! :-) &lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* ''Is the GRASS Community Sprint just a coding event?''&lt;br /&gt;
** It is mainly a coding and documentation event. It is a working session for people who are already participants in the GRASS project and/or are committed to improving the GRASS project.&lt;br /&gt;
** On demand we can do some presentations of current working GRASS implementation and new upcoming features to spread the idea of Open Source GIS software&lt;br /&gt;
* ''Is the GRASS Community Sprint for developers only?''&lt;br /&gt;
** No: anybody can help, with testing, checking out bugs and fixes, documentation and more.&lt;br /&gt;
* ''Where can I get help and more information about the community sprint?''&lt;br /&gt;
** Contact [[User:Lucadelu|Luca Delucchi]] &amp;lt;tt&amp;gt;&amp;lt;lucadeluge at gmail com&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Participants and Reports ==&lt;br /&gt;
&lt;br /&gt;
===Moritz===&lt;br /&gt;
* OBIA Toolchain&lt;br /&gt;
** Cleaned up r.object.geometry and moved it to addons {{rev|69187}} + {{rev|69188}}, {{AddonCmd|r.object.geometry}}&lt;br /&gt;
** Modified {{AddonCmd|i.segment.stats}} to user.object.geometry instead of v.to.db&lt;br /&gt;
** Improved error handling in i.segment.stats and use temporary files on disk to reduce memory use&lt;br /&gt;
** Modified {{AddonCmd|i.segment.uspo}} to also allow testing new mean shift algorithm (currently only available in sandbox) {{rev|69236}}&lt;br /&gt;
** Tested mean shift algorithm&lt;br /&gt;
* Working on 6.4.6 release&lt;br /&gt;
** General bug triaging&lt;br /&gt;
** Backported fix of {{trac|1444}} to release_64&lt;br /&gt;
** Backported fix of {{trac|2558}} to release_64&lt;br /&gt;
* Scratched an old itch and implement a flag in {{Cmd|g.region}} to allow shell style output in flat (one line) style {{rev|69240}}&lt;br /&gt;
&lt;br /&gt;
*[https://trac.osgeo.org/grass/timeline?from=Aug+23%2C+2016&amp;amp;daysback=2&amp;amp;authors=mlennert&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;sfp_email=&amp;amp;sfph_mail=&amp;amp;update=Update Log overview]&lt;br /&gt;
&lt;br /&gt;
=== Markus ===&lt;br /&gt;
* assist CRO in cleaning PSC election voter email addresses&lt;br /&gt;
* minor pseudo-mercator discussions&lt;br /&gt;
* major datum shift file discussions with Even Rouault (GDAL) and fellow GRASS sprinters: libproj cleanup of local copies of NAD and datum shift files which are indeed used from GDAL; extended documentation in README.txt ({{trac|2456}}, {{rev|2456}})&lt;br /&gt;
&lt;br /&gt;
=== Anna Petrasova ===&lt;br /&gt;
* {{rev|69199}}: major backport of Adam's GSoC work to 7.2. (please test!)&lt;br /&gt;
* fix {{trac|3133}}, {{trac|2252}}&lt;br /&gt;
&lt;br /&gt;
=== Martin Landa ===&lt;br /&gt;
&lt;br /&gt;
* Fix {{trac|2480}}, {{trac|2765}}&lt;br /&gt;
* Bug reports for 7.0.5 milestone reviewed, outdated tickets closed&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Aug+28%2C+2016&amp;amp;daysback=7&amp;amp;authors=martinl&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;sfp_email=&amp;amp;sfph_mail=&amp;amp;update=Update Log overview]&lt;br /&gt;
&lt;br /&gt;
=== Vero ===&lt;br /&gt;
&lt;br /&gt;
* Tutorial: R-GRASS integration for raster time series handling/processing. Work in progress.&lt;br /&gt;
&lt;br /&gt;
=== Nikos ===&lt;br /&gt;
&lt;br /&gt;
===== Done =====&lt;br /&gt;
&lt;br /&gt;
* CRO related tasks&lt;br /&gt;
* Patched [https://trac.osgeo.org/grass/changeset/69012/grass/trunk/imagery/i.atcorr/create_iwave.py create_iwave.py], see {{trac|3027}} -- mentored by Moritz. &lt;br /&gt;
* Rewrote {{Cmd|i.rgb.his}} to allow for 16-bit input data -- need to test more though.&lt;br /&gt;
* Corrected erroneous function in {{AddonCmd|i.landsat8.swlst}} -- thanks to Stefan Blumentrath!&lt;br /&gt;
&lt;br /&gt;
===== On-Going =====&lt;br /&gt;
&lt;br /&gt;
* Rewrite: {{Cmd|i.his.rgb}}  -- see {{trac|774}}!&lt;br /&gt;
&lt;br /&gt;
===== Ideas =====&lt;br /&gt;
&lt;br /&gt;
* Scratching a new version for `create_iwave.py` -- vision: one Class to rule them all.&lt;br /&gt;
* Reviewing options to fuse {{Cmd|i.pansharpen}} with/into {{AddonCmd|i.fusion.hpf}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Workshops]]&lt;br /&gt;
[[Category: Code Sprint]]&lt;br /&gt;
[[Category: 2016]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Bonn_2016&amp;diff=23465</id>
		<title>GRASS Community Sprint Bonn 2016</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Bonn_2016&amp;diff=23465"/>
		<updated>2016-08-25T09:31:27Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: Updated activities&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{toc|right}}&lt;br /&gt;
During the [http://2016.foss4g.org/ FOSS4G 2016] , 21-28 August 2016, [http://en.wikipedia.org/wiki/Bonn Bonn], [https://en.wikipedia.org/wiki/Germany Germany], the GRASS GIS project will join the code sprint&lt;br /&gt;
&lt;br /&gt;
'''Important dates:'''&lt;br /&gt;
&lt;br /&gt;
* CodeSprint I: Sun 21.08.2016 12:00 - Tue 23.08.2016 (open end) (see also [http://2016.foss4g.org/programme.html#code-sprints here])&lt;br /&gt;
* [http://2016.foss4g.org/#page9 FOSS4G 2016 Schedule]&lt;br /&gt;
* CodeSprint II: Sat 27.08.2016 - Sun 28.08.2016 12:00 p.m. (see also [http://2016.foss4g.org/programme.html#code-sprints here])&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
Get together of GRASS GIS project members to take decisions and tackle small and larger problems.&lt;br /&gt;
&lt;br /&gt;
For this meeting, we welcome people committed to improving the GRASS GIS project. This includes developers, documenters, bug reporters, translators, and users!&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
If you are interested to sponsor the GRASS Community Sprint, please read about&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; '''sponsoring the GRASS project at [http://grass.osgeo.org/donations/ http://grass.osgeo.org/donations/]'''&amp;lt;br&amp;gt;&lt;br /&gt;
and, if needed, contact [[User:Neteler|Markus Neteler]] &amp;lt;tt&amp;gt;&amp;lt;neteler at osgeo.org&amp;gt;&amp;lt;/tt&amp;gt;. Any surplus at the end of the event will be turned over to the GRASS GIS project.&lt;br /&gt;
&lt;br /&gt;
The GRASS Community Sprint is a great occasion for you to support the development of GRASS. With your contribution you'll enable more developers to meet in Bonn. The community sprint is an important opportunity for the GRASS developers to discuss and collaboratively resolve bugs, plan the direction for the project and work on new features. Please see below for the more detailed agenda. The developers and contributors are donating their valuable time, so it would be great if in-kind funding can be made available from within the community to cover out-of-pocket expenses. All of the work that takes place at the community sprint will be directly contributed back into the GRASS project to the benefit of everyone who uses it.&lt;br /&gt;
&lt;br /&gt;
=== Thanks to our sponsors ===&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
&lt;br /&gt;
Bonn, Germany: Basecamp&lt;br /&gt;
&lt;br /&gt;
How to get to FOSS4G2016 OSGeo Code Sprint? &lt;br /&gt;
* http://alienus.de/basecamp1/en/arrival-bonn-hostel/&lt;br /&gt;
* http://www.openstreetmap.org/search?query=raste%201%20bonn#map=18/50.70762/7.12383&lt;br /&gt;
&lt;br /&gt;
By train&lt;br /&gt;
* From Bonn Main station take the U-Trains (Underground platform) 16, 63 or 68. Get off after 6 min at stop Dt. Telekom / Ollenhauerstr. &lt;br /&gt;
* http://alienus.de/basecamp1/en/arrival-bonn-hostel/&lt;br /&gt;
* http://www.openstreetmap.org/search?query=raste%201%20bonn#map=18/50.70762/7.12383&lt;br /&gt;
* [https://www.vrsinfo.de/englisch/the-vrs/vrs-about-us.html online public transport planner]&lt;br /&gt;
&lt;br /&gt;
By Car&lt;br /&gt;
* Coming from the highway A59 Basecamp is located at the end of the highway A562. For navigation systems it is best to type Basecamp's address: &amp;quot;''In der Raste 3, 53129 Bonn''&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== Accommodation and Costs ==&lt;br /&gt;
&lt;br /&gt;
* to be defined&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
* https://en.wikipedia.org/wiki/Bonn#Climate&lt;br /&gt;
&lt;br /&gt;
== Agenda - What we plan to do ==&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The program is generally open for your ideas. Please edit this wiki page!&lt;br /&gt;
&lt;br /&gt;
=== More core developers with SVN write access ===&lt;br /&gt;
* Develop a strategy to refresh the group with core SVN write access&lt;br /&gt;
&lt;br /&gt;
=== Web site ===&lt;br /&gt;
* Migrate the good old CMSMS to Wordpress&lt;br /&gt;
* Move development related stuff from CMS (https://grass.osgeo.org/development/) to trac Wiki&lt;br /&gt;
&lt;br /&gt;
=== Promo ===&lt;br /&gt;
* Finalize the new GRASS GIS flyer prepared by Vincent Bain&lt;br /&gt;
** needed: catchy time series screenshot&lt;br /&gt;
&lt;br /&gt;
=== New Releases ===&lt;br /&gt;
Minor releases:&lt;br /&gt;
* Release GRASS GIS 6.4.6:&lt;br /&gt;
** Coordination is done here: http://trac.osgeo.org/grass/wiki/Grass6Planning&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/6.4.6-News&lt;br /&gt;
* Release GRASS GIS 7.0.5: &lt;br /&gt;
** Coordination is done here: https://trac.osgeo.org/grass/wiki/Grass7Planning#a7.0.5tobebackported&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/7.0.5-News&lt;br /&gt;
&lt;br /&gt;
'''Major release''':&lt;br /&gt;
* Release GRASS GIS 7.2.0: &lt;br /&gt;
** Coordination is done here: https://trac.osgeo.org/grass/wiki/Grass7Planning#a7.2.0&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/7.2.0-News&lt;br /&gt;
&lt;br /&gt;
=== Documentation and translation ===&lt;br /&gt;
* Add examples to manual pages&lt;br /&gt;
* Add examples to Wiki pages&lt;br /&gt;
** GRASS-R/R-GRASS handling of raster time series&lt;br /&gt;
** Sentinel-2 processing&lt;br /&gt;
* Translation of messages&lt;br /&gt;
* Translation of Wiki pages&lt;br /&gt;
&lt;br /&gt;
=== Source code Quality Assessment ===&lt;br /&gt;
* integrate &amp;quot;coverity scan&amp;quot; with Travis, https://scan.coverity.com/travis_ci&lt;br /&gt;
* check &amp;quot;coverity scan&amp;quot;: copy-paste errors, https://scan.coverity.com/projects/1038&lt;br /&gt;
&lt;br /&gt;
=== Bug squashing ===&lt;br /&gt;
* Open bugs concerning GRASS 7: https://trac.osgeo.org/grass/report/19&lt;br /&gt;
* {{trac|2864}}: Add link to source code in the documentation pages (almost done, let's finish it!)&lt;br /&gt;
* {{trac|3042}}: Patches to make the build reproducible (fileordering, randomness)&lt;br /&gt;
* fix i.histo.match: https://lists.osgeo.org/pipermail/grass-dev/2013-February/062179.html&lt;br /&gt;
* Numpy and matplotlib issues when installing/updating from OSGeo4W (ticket [https://trac.osgeo.org/grass/ticket/3057 #3057])&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
&lt;br /&gt;
Please test in GRASS 7.2.svn!&lt;br /&gt;
* {{cmd|d.legend.vect|version=72}}&lt;br /&gt;
&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
* improve {{AddonCmd|r.modis}} addons&lt;br /&gt;
* integrate Google Summer of Code projects (where adequate)&lt;br /&gt;
* continue working on OBIA toolchain:&lt;br /&gt;
** Testing of mean shift in i.segment&lt;br /&gt;
** Finalization of {{AddonCmd|r.object.geometry}} and its integration into {{AddonCmd|i.segment.uspo}}&lt;br /&gt;
* add R-batch files to OSGeo4W-winGRASS7 see [https://trac.osgeo.org/osgeo4w/ticket/413 osgeo4w/ticket 413]&lt;br /&gt;
* GUI: Implement an optional session &amp;quot;kickstart&amp;quot; in GRASS with LatLong predefined, then open import wizard | switch projection inside (like most other GIS do!)&lt;br /&gt;
* TGRASS:&lt;br /&gt;
** suffix option for output mapnames in t.rast.mapcalc and t.rast.algebra (tickets [https://trac.osgeo.org/grass/ticket/2294 #2294] and [https://trac.osgeo.org/grass/ticket/2736 #2736])&lt;br /&gt;
** pattern option to list and remove space-time data sets (ticket [https://trac.osgeo.org/grass/ticket/2804 #2804])&lt;br /&gt;
** t.rast.what: input file with coordinates (ticket [https://trac.osgeo.org/grass/ticket/2721 #2721])&lt;br /&gt;
** t.remove: dual step removal (ticket [https://trac.osgeo.org/grass/ticket/2752 #2752])&lt;br /&gt;
** support for space-time datasets in g.gui.gmodeler (ticket [https://trac.osgeo.org/grass/ticket/2977 #2977])&lt;br /&gt;
&lt;br /&gt;
=== Better integration of git into development ===&lt;br /&gt;
* since github/gitlab/bitbucket etc are a valuable and recognized source of new source code, we should be able to receive such contributions easily&lt;br /&gt;
** OSGeo currently deploys a self-hosted &amp;quot;gitlab&amp;quot; repo: https://lists.osgeo.org/pipermail/sac/2016-August/007345.html&lt;br /&gt;
&lt;br /&gt;
... YOUR IDEA HERE ...&lt;br /&gt;
&lt;br /&gt;
== Planned participation ==&lt;br /&gt;
&lt;br /&gt;
For organizational reasons, please '''additionally register''' at: https://wiki.osgeo.org/wiki/FOSS4G_2016_Code_Sprint&lt;br /&gt;
&lt;br /&gt;
=== In person ===&lt;br /&gt;
&lt;br /&gt;
Please add your name here or contact [[User:Lucadelu|Luca Delucchi]] &amp;lt;tt&amp;gt;&amp;lt;lucadeluge at gmail com&amp;gt;&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;   border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#edf9c7; font-size:95%; empty-cells:show;&amp;quot; &lt;br /&gt;
|width=50px|'''No'''&lt;br /&gt;
|width=130px|'''Participant '''&lt;br /&gt;
|width=100px|'''Country'''&lt;br /&gt;
|width=100px|'''Arrival'''&lt;br /&gt;
|width=100px|'''Departure'''&lt;br /&gt;
|'''Topic'''&lt;br /&gt;
|width=75px|'''T-Shirt'''&lt;br /&gt;
|'''Notes'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Lucadelu|Luca Delucchi]]&lt;br /&gt;
|Italy&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| &lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:Landa|Martin Landa]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| &lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|[[User:Neteler|Markus Neteler]]&lt;br /&gt;
|Italy&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| Releases, project coordination, bug hunting, getting more ppl involved&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|[[User:NikosA|Nikos Alexandris]]&lt;br /&gt;
|Switzerland&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| CRO, create_iwave.py, i.&amp;lt;nowiki&amp;gt;[rgb|his].[his|rgb]&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
| S or M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[User:Veroandreo|Veronica Andreo]]&lt;br /&gt;
|Argentina&lt;br /&gt;
| August 26&lt;br /&gt;
| August 28&lt;br /&gt;
|&lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|[[User:mlennert|Moritz Lennert]]&lt;br /&gt;
|Belgium&lt;br /&gt;
| August 21&lt;br /&gt;
| August 27&lt;br /&gt;
| Releases, OBIA toolchain, GSoC module integration&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|[[User:sbl|Stefan Blumentrath]]&lt;br /&gt;
|Norway&lt;br /&gt;
| August 26&lt;br /&gt;
| August 28&lt;br /&gt;
| Port some Addons to python? (or whatever you put me up to)&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|[[User:MilenaN|Milena Nowotarska]]&lt;br /&gt;
|Poland&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
|&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|[[User:annazanchetta|Anna Zanchetta]]&lt;br /&gt;
|Italy - Israel&lt;br /&gt;
| August 22&lt;br /&gt;
| August 27&lt;br /&gt;
| Implementing and improving some imagery modules, inshallah&lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Via IRC chat ===&lt;br /&gt;
&lt;br /&gt;
(IRC is a nice archaic chat system, see [[IRC]])&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;   border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#edf9c7; font-size:95%; empty-cells:show;&amp;quot; &lt;br /&gt;
|width=50px|'''No'''&lt;br /&gt;
|width=130px|'''Participant '''&lt;br /&gt;
|width=100px|'''Country'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Ychemin|Yann Chemin]]&lt;br /&gt;
|France&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:hellik|Helmut Kudrnovsky]]&lt;br /&gt;
|Austria &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Individual Preparation ==&lt;br /&gt;
&lt;br /&gt;
* Bring your own computer&lt;br /&gt;
* Bring [http://en.wikipedia.org/wiki/Mains_electricity_by_country your power connector adapter] if needed (photo: [https://en.wikipedia.org/wiki/File:Schuko_plug_and_socket.png Germany]). See also http://www.power-plugs-sockets.com/&lt;br /&gt;
* Install subversion and the compiler tools, and come with a working GRASS development environment if possible.&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
We have to remember to take at least one group photo! :-) &lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* ''Is the GRASS Community Sprint just a coding event?''&lt;br /&gt;
** It is mainly a coding and documentation event. It is a working session for people who are already participants in the GRASS project and/or are committed to improving the GRASS project.&lt;br /&gt;
** On demand we can do some presentations of current working GRASS implementation and new upcoming features to spread the idea of Open Source GIS software&lt;br /&gt;
* ''Is the GRASS Community Sprint for developers only?''&lt;br /&gt;
** No: anybody can help, with testing, checking out bugs and fixes, documentation and more.&lt;br /&gt;
* ''Where can I get help and more information about the community sprint?''&lt;br /&gt;
** Contact [[User:Lucadelu|Luca Delucchi]] &amp;lt;tt&amp;gt;&amp;lt;lucadeluge at gmail com&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Participants and Reports ==&lt;br /&gt;
&lt;br /&gt;
===Moritz===&lt;br /&gt;
* OBIA Toolchain&lt;br /&gt;
** Cleaned up r.object.geometry and moved it to addons {{rev|69187}} + {{rev|69188}}, {{AddonCmd|r.object.geometry}}&lt;br /&gt;
** Modified {{AddonCmd|i.segment.stats}} to user.object.geometry instead of v.to.db&lt;br /&gt;
** Improved error handling in i.segment.stats and use temporary files on disk to reduce memory use&lt;br /&gt;
** Modified {{AddonCmd|i.segment.uspo}} to also allow testing new mean shift algorithm (currently only available in sandbox) {{rev|69236}}&lt;br /&gt;
** Tested mean shift algorithm&lt;br /&gt;
* Working on 6.4.6 release&lt;br /&gt;
** General bug triaging&lt;br /&gt;
** Backported fix of {{trac|1444}} to release_64&lt;br /&gt;
** Backported fix of {{trac|2558}} to release_64&lt;br /&gt;
* Scratched an old itch and implement a flag in {{Cmd|g.region}} to allow shell style output in flat (one line) style {{rev|69240}}&lt;br /&gt;
&lt;br /&gt;
*[https://trac.osgeo.org/grass/timeline?from=Aug+23%2C+2016&amp;amp;daysback=2&amp;amp;authors=mlennert&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;sfp_email=&amp;amp;sfph_mail=&amp;amp;update=Update Log overview]&lt;br /&gt;
&lt;br /&gt;
=== Markus ===&lt;br /&gt;
* assist CRO in cleaning PSC election voter email addresses&lt;br /&gt;
* minor pseudo-mercator discussions&lt;br /&gt;
* major datum shift file discussions with Even Rouault (GDAL) and fellow GRASS sprinters: libproj cleanup of local copies of NAD and datum shift files which are indeed used from GDAL; extended documentation in README.txt ({{trac|2456}}, {{rev|2456}})&lt;br /&gt;
&lt;br /&gt;
=== Anna Petrasova ===&lt;br /&gt;
* {{rev|69199}}: major backport of Adam's GSoC work to 7.2. (please test!)&lt;br /&gt;
* fix {{trac|3133}}, {{trac|2252}}&lt;br /&gt;
&lt;br /&gt;
=== Martin Landa ===&lt;br /&gt;
&lt;br /&gt;
* Fix {{trac|2480}}, {{trac|2765}}&lt;br /&gt;
* Bug reports for 7.0.5 milestone reviewed, outdated tickets closed&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Aug+28%2C+2016&amp;amp;daysback=7&amp;amp;authors=martinl&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;sfp_email=&amp;amp;sfph_mail=&amp;amp;update=Update Log overview]&lt;br /&gt;
&lt;br /&gt;
=== Vero ===&lt;br /&gt;
&lt;br /&gt;
* Tutorial: R-GRASS integration for raster time series handling/processing. Work in progress.&lt;br /&gt;
&lt;br /&gt;
=== Nikos ===&lt;br /&gt;
&lt;br /&gt;
* CRO related tasks&lt;br /&gt;
* Patched [https://trac.osgeo.org/grass/changeset/69012/grass/trunk/imagery/i.atcorr/create_iwave.py create_iwave.py], see {{trac|3027}} -- mentored by Moritz. | Scratching a new version for it -- vision: one Class to rule them all.&lt;br /&gt;
* Working on {{Cmd|i.rgb.his}} and {{Cmd|i.his.rgb}} to allow for 16-bit input data (DCELL?) -- see latest diff(s) in {{trac|774}}!&lt;br /&gt;
* Reviewing options to fuse {{Cmd|i.pansharpen}} with/into {{AddonCmd|i.fusion.hpf}}&lt;br /&gt;
&lt;br /&gt;
[[Category: Workshops]]&lt;br /&gt;
[[Category: Code Sprint]]&lt;br /&gt;
[[Category: 2016]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Bonn_2016&amp;diff=23464</id>
		<title>GRASS Community Sprint Bonn 2016</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Bonn_2016&amp;diff=23464"/>
		<updated>2016-08-24T09:49:35Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: trac|774&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{toc|right}}&lt;br /&gt;
During the [http://2016.foss4g.org/ FOSS4G 2016] , 21-28 August 2016, [http://en.wikipedia.org/wiki/Bonn Bonn], [https://en.wikipedia.org/wiki/Germany Germany], the GRASS GIS project will join the code sprint&lt;br /&gt;
&lt;br /&gt;
'''Important dates:'''&lt;br /&gt;
&lt;br /&gt;
* CodeSprint I: Sun 21.08.2016 12:00 - Tue 23.08.2016 (open end) (see also [http://2016.foss4g.org/programme.html#code-sprints here])&lt;br /&gt;
* [http://2016.foss4g.org/#page9 FOSS4G 2016 Schedule]&lt;br /&gt;
* CodeSprint II: Sat 27.08.2016 - Sun 28.08.2016 12:00 p.m. (see also [http://2016.foss4g.org/programme.html#code-sprints here])&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
Get together of GRASS GIS project members to take decisions and tackle small and larger problems.&lt;br /&gt;
&lt;br /&gt;
For this meeting, we welcome people committed to improving the GRASS GIS project. This includes developers, documenters, bug reporters, translators, and users!&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
If you are interested to sponsor the GRASS Community Sprint, please read about&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; '''sponsoring the GRASS project at [http://grass.osgeo.org/donations/ http://grass.osgeo.org/donations/]'''&amp;lt;br&amp;gt;&lt;br /&gt;
and, if needed, contact [[User:Neteler|Markus Neteler]] &amp;lt;tt&amp;gt;&amp;lt;neteler at osgeo.org&amp;gt;&amp;lt;/tt&amp;gt;. Any surplus at the end of the event will be turned over to the GRASS GIS project.&lt;br /&gt;
&lt;br /&gt;
The GRASS Community Sprint is a great occasion for you to support the development of GRASS. With your contribution you'll enable more developers to meet in Bonn. The community sprint is an important opportunity for the GRASS developers to discuss and collaboratively resolve bugs, plan the direction for the project and work on new features. Please see below for the more detailed agenda. The developers and contributors are donating their valuable time, so it would be great if in-kind funding can be made available from within the community to cover out-of-pocket expenses. All of the work that takes place at the community sprint will be directly contributed back into the GRASS project to the benefit of everyone who uses it.&lt;br /&gt;
&lt;br /&gt;
=== Thanks to our sponsors ===&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
&lt;br /&gt;
Bonn, Germany: Basecamp&lt;br /&gt;
&lt;br /&gt;
How to get to FOSS4G2016 OSGeo Code Sprint? &lt;br /&gt;
* http://alienus.de/basecamp1/en/arrival-bonn-hostel/&lt;br /&gt;
* http://www.openstreetmap.org/search?query=raste%201%20bonn#map=18/50.70762/7.12383&lt;br /&gt;
&lt;br /&gt;
By train&lt;br /&gt;
* From Bonn Main station take the U-Trains (Underground platform) 16, 63 or 68. Get off after 6 min at stop Dt. Telekom / Ollenhauerstr. &lt;br /&gt;
* http://alienus.de/basecamp1/en/arrival-bonn-hostel/&lt;br /&gt;
* http://www.openstreetmap.org/search?query=raste%201%20bonn#map=18/50.70762/7.12383&lt;br /&gt;
* [https://www.vrsinfo.de/englisch/the-vrs/vrs-about-us.html online public transport planner]&lt;br /&gt;
&lt;br /&gt;
By Car&lt;br /&gt;
* Coming from the highway A59 Basecamp is located at the end of the highway A562. For navigation systems it is best to type Basecamp's address: &amp;quot;''In der Raste 3, 53129 Bonn''&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== Accommodation and Costs ==&lt;br /&gt;
&lt;br /&gt;
* to be defined&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
* https://en.wikipedia.org/wiki/Bonn#Climate&lt;br /&gt;
&lt;br /&gt;
== Agenda - What we plan to do ==&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The program is generally open for your ideas. Please edit this wiki page!&lt;br /&gt;
&lt;br /&gt;
=== More core developers with SVN write access ===&lt;br /&gt;
* Develop a strategy to refresh the group with core SVN write access&lt;br /&gt;
&lt;br /&gt;
=== Web site ===&lt;br /&gt;
* Migrate the good old CMSMS to Wordpress&lt;br /&gt;
* Move development related stuff from CMS (https://grass.osgeo.org/development/) to trac Wiki&lt;br /&gt;
&lt;br /&gt;
=== Promo ===&lt;br /&gt;
* Finalize the new GRASS GIS flyer prepared by Vincent Bain&lt;br /&gt;
** needed: catchy time series screenshot&lt;br /&gt;
&lt;br /&gt;
=== New Releases ===&lt;br /&gt;
Minor releases:&lt;br /&gt;
* Release GRASS GIS 6.4.6:&lt;br /&gt;
** Coordination is done here: http://trac.osgeo.org/grass/wiki/Grass6Planning&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/6.4.6-News&lt;br /&gt;
* Release GRASS GIS 7.0.5: &lt;br /&gt;
** Coordination is done here: https://trac.osgeo.org/grass/wiki/Grass7Planning#a7.0.5tobebackported&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/7.0.5-News&lt;br /&gt;
&lt;br /&gt;
'''Major release''':&lt;br /&gt;
* Release GRASS GIS 7.2.0: &lt;br /&gt;
** Coordination is done here: https://trac.osgeo.org/grass/wiki/Grass7Planning#a7.2.0&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/7.2.0-News&lt;br /&gt;
&lt;br /&gt;
=== Documentation and translation ===&lt;br /&gt;
* Add examples to manual pages&lt;br /&gt;
* Add examples to Wiki pages&lt;br /&gt;
** GRASS-R/R-GRASS handling of raster time series&lt;br /&gt;
** Sentinel-2 processing&lt;br /&gt;
* Translation of messages&lt;br /&gt;
* Translation of Wiki pages&lt;br /&gt;
&lt;br /&gt;
=== Source code Quality Assessment ===&lt;br /&gt;
* integrate &amp;quot;coverity scan&amp;quot; with Travis, https://scan.coverity.com/travis_ci&lt;br /&gt;
* check &amp;quot;coverity scan&amp;quot;: copy-paste errors, https://scan.coverity.com/projects/1038&lt;br /&gt;
&lt;br /&gt;
=== Bug squashing ===&lt;br /&gt;
* Open bugs concerning GRASS 7: https://trac.osgeo.org/grass/report/19&lt;br /&gt;
* {{trac|2864}}: Add link to source code in the documentation pages (almost done, let's finish it!)&lt;br /&gt;
* {{trac|3042}}: Patches to make the build reproducible (fileordering, randomness)&lt;br /&gt;
* fix i.histo.match: https://lists.osgeo.org/pipermail/grass-dev/2013-February/062179.html&lt;br /&gt;
* Numpy and matplotlib issues when installing/updating from OSGeo4W (ticket [https://trac.osgeo.org/grass/ticket/3057 #3057])&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
&lt;br /&gt;
Please test in GRASS 7.2.svn!&lt;br /&gt;
* {{cmd|d.legend.vect|version=72}}&lt;br /&gt;
&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
* improve {{AddonCmd|r.modis}} addons&lt;br /&gt;
* integrate Google Summer of Code projects (where adequate)&lt;br /&gt;
* continue working on OBIA toolchain:&lt;br /&gt;
** Testing of mean shift in i.segment&lt;br /&gt;
** Finalization of {{AddonCmd|r.object.geometry}} and its integration into {{AddonCmd|i.segment.uspo}}&lt;br /&gt;
* add R-batch files to OSGeo4W-winGRASS7 see [https://trac.osgeo.org/osgeo4w/ticket/413 osgeo4w/ticket 413]&lt;br /&gt;
* GUI: Implement an optional session &amp;quot;kickstart&amp;quot; in GRASS with LatLong predefined, then open import wizard | switch projection inside (like most other GIS do!)&lt;br /&gt;
* TGRASS:&lt;br /&gt;
** suffix option for output mapnames in t.rast.mapcalc and t.rast.algebra (tickets [https://trac.osgeo.org/grass/ticket/2294 #2294] and [https://trac.osgeo.org/grass/ticket/2736 #2736])&lt;br /&gt;
** pattern option to list and remove space-time data sets (ticket [https://trac.osgeo.org/grass/ticket/2804 #2804])&lt;br /&gt;
** t.rast.what: input file with coordinates (ticket [https://trac.osgeo.org/grass/ticket/2721 #2721])&lt;br /&gt;
** t.remove: dual step removal (ticket [https://trac.osgeo.org/grass/ticket/2752 #2752])&lt;br /&gt;
** support for space-time datasets in g.gui.gmodeler (ticket [https://trac.osgeo.org/grass/ticket/2977 #2977])&lt;br /&gt;
&lt;br /&gt;
=== Better integration of git into development ===&lt;br /&gt;
* since github/gitlab/bitbucket etc are a valuable and recognized source of new source code, we should be able to receive such contributions easily&lt;br /&gt;
** OSGeo currently deploys a self-hosted &amp;quot;gitlab&amp;quot; repo: https://lists.osgeo.org/pipermail/sac/2016-August/007345.html&lt;br /&gt;
&lt;br /&gt;
... YOUR IDEA HERE ...&lt;br /&gt;
&lt;br /&gt;
== Planned participation ==&lt;br /&gt;
&lt;br /&gt;
For organizational reasons, please '''additionally register''' at: https://wiki.osgeo.org/wiki/FOSS4G_2016_Code_Sprint&lt;br /&gt;
&lt;br /&gt;
=== In person ===&lt;br /&gt;
&lt;br /&gt;
Please add your name here or contact [[User:Lucadelu|Luca Delucchi]] &amp;lt;tt&amp;gt;&amp;lt;lucadeluge at gmail com&amp;gt;&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;   border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#edf9c7; font-size:95%; empty-cells:show;&amp;quot; &lt;br /&gt;
|width=50px|'''No'''&lt;br /&gt;
|width=130px|'''Participant '''&lt;br /&gt;
|width=100px|'''Country'''&lt;br /&gt;
|width=100px|'''Arrival'''&lt;br /&gt;
|width=100px|'''Departure'''&lt;br /&gt;
|'''Topic'''&lt;br /&gt;
|width=75px|'''T-Shirt'''&lt;br /&gt;
|'''Notes'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Lucadelu|Luca Delucchi]]&lt;br /&gt;
|Italy&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| &lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:Landa|Martin Landa]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| &lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|[[User:Neteler|Markus Neteler]]&lt;br /&gt;
|Italy&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| Releases, project coordination, bug hunting, getting more ppl involved&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|[[User:NikosA|Nikos Alexandris]]&lt;br /&gt;
|Switzerland&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| CRO, create_iwave.py, i.&amp;lt;nowiki&amp;gt;[rgb|his].[his|rgb]&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
| S or M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[User:Veroandreo|Veronica Andreo]]&lt;br /&gt;
|Argentina&lt;br /&gt;
| August 26&lt;br /&gt;
| August 28&lt;br /&gt;
|&lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|[[User:mlennert|Moritz Lennert]]&lt;br /&gt;
|Belgium&lt;br /&gt;
| August 21&lt;br /&gt;
| August 27&lt;br /&gt;
| Releases, OBIA toolchain, GSoC module integration&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|[[User:sbl|Stefan Blumentrath]]&lt;br /&gt;
|Norway&lt;br /&gt;
| August 26&lt;br /&gt;
| August 28&lt;br /&gt;
| Port some Addons to python? (or whatever you put me up to)&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|[[User:MilenaN|Milena Nowotarska]]&lt;br /&gt;
|Poland&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
|&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|[[User:annazanchetta|Anna Zanchetta]]&lt;br /&gt;
|Italy - Israel&lt;br /&gt;
| August 22&lt;br /&gt;
| August 27&lt;br /&gt;
| Implementing and improving some imagery modules, inshallah&lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Via IRC chat ===&lt;br /&gt;
&lt;br /&gt;
(IRC is a nice archaic chat system, see [[IRC]])&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;   border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#edf9c7; font-size:95%; empty-cells:show;&amp;quot; &lt;br /&gt;
|width=50px|'''No'''&lt;br /&gt;
|width=130px|'''Participant '''&lt;br /&gt;
|width=100px|'''Country'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Ychemin|Yann Chemin]]&lt;br /&gt;
|France&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:hellik|Helmut Kudrnovsky]]&lt;br /&gt;
|Austria &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Individual Preparation ==&lt;br /&gt;
&lt;br /&gt;
* Bring your own computer&lt;br /&gt;
* Bring [http://en.wikipedia.org/wiki/Mains_electricity_by_country your power connector adapter] if needed (photo: [https://en.wikipedia.org/wiki/File:Schuko_plug_and_socket.png Germany]). See also http://www.power-plugs-sockets.com/&lt;br /&gt;
* Install subversion and the compiler tools, and come with a working GRASS development environment if possible.&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
We have to remember to take at least one group photo! :-) &lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* ''Is the GRASS Community Sprint just a coding event?''&lt;br /&gt;
** It is mainly a coding and documentation event. It is a working session for people who are already participants in the GRASS project and/or are committed to improving the GRASS project.&lt;br /&gt;
** On demand we can do some presentations of current working GRASS implementation and new upcoming features to spread the idea of Open Source GIS software&lt;br /&gt;
* ''Is the GRASS Community Sprint for developers only?''&lt;br /&gt;
** No: anybody can help, with testing, checking out bugs and fixes, documentation and more.&lt;br /&gt;
* ''Where can I get help and more information about the community sprint?''&lt;br /&gt;
** Contact [[User:Lucadelu|Luca Delucchi]] &amp;lt;tt&amp;gt;&amp;lt;lucadeluge at gmail com&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Participants and Reports ==&lt;br /&gt;
&lt;br /&gt;
===Moritz===&lt;br /&gt;
* OBIA Toolchain&lt;br /&gt;
** Cleaned up r.object.geometry and moved it to addons {{rev|69187}} + {{rev|69188}}, {{AddonCmd|r.object.geometry}}&lt;br /&gt;
** Modified {{AddonCmd|i.segment.stats}} to user.object.geometry instead of v.to.db&lt;br /&gt;
** Improved error handling in i.segment.stats and use temporary files on disk to reduce memory use&lt;br /&gt;
** Modified {{AddonCmd|i.segment.uspo}} to also allow testing new mean shift algorithm (currently only available in sandbox) {{rev|69236}}&lt;br /&gt;
** Tested mean shift algorithm&lt;br /&gt;
* Working on 6.4.6 release&lt;br /&gt;
** General bug triaging&lt;br /&gt;
** Backported fix of {{trac|1444}} to release_64&lt;br /&gt;
** Backported fix of {{trac|2558}} to release_64&lt;br /&gt;
* Scratched an old itch and implement a flag in {{Cmd|g.region}} to allow shell style output in flat (one line) style {{rev|69240}}&lt;br /&gt;
&lt;br /&gt;
*[https://trac.osgeo.org/grass/timeline?from=Aug+23%2C+2016&amp;amp;daysback=2&amp;amp;authors=mlennert&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;sfp_email=&amp;amp;sfph_mail=&amp;amp;update=Update Log overview]&lt;br /&gt;
&lt;br /&gt;
=== Markus ===&lt;br /&gt;
* assist CRO in cleaning PSC election voter email addresses&lt;br /&gt;
* minor pseudo-mercator discussions&lt;br /&gt;
* major datum shift file discussions with Even Rouault (GDAL) and fellow GRASS sprinters: libproj cleanup of local copies of NAD and datum shift files which are indeed used from GDAL; extended documentation in README.txt ({{trac|2456}}, {{rev|2456}})&lt;br /&gt;
&lt;br /&gt;
=== Anna Petrasova ===&lt;br /&gt;
* {{rev|69199}}: major backport of Adam's GSoC work to 7.2. (please test!)&lt;br /&gt;
* fix {{trac|3133}}, {{trac|2252}}&lt;br /&gt;
&lt;br /&gt;
=== Martin Landa ===&lt;br /&gt;
&lt;br /&gt;
* Fix {{trac|2480}}, {{trac|2765}}&lt;br /&gt;
* Bug reports for 7.0.5 milestone reviewed, outdated tickets closed&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Aug+28%2C+2016&amp;amp;daysback=7&amp;amp;authors=martinl&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;sfp_email=&amp;amp;sfph_mail=&amp;amp;update=Update Log overview]&lt;br /&gt;
&lt;br /&gt;
=== Vero ===&lt;br /&gt;
&lt;br /&gt;
* Tutorial: R-GRASS integration for raster time series handling/processing. Work in progress.&lt;br /&gt;
&lt;br /&gt;
=== Nikos ===&lt;br /&gt;
&lt;br /&gt;
* CRO related tasks&lt;br /&gt;
* Patched [https://trac.osgeo.org/grass/changeset/69012/grass/trunk/imagery/i.atcorr/create_iwave.py create_iwave.py], see {{trac|3027}} -- mentored by Moritz.&lt;br /&gt;
* Working on {{Cmd|i.rgb.his}} and {{Cmd|i.his.rgb}} to allow for 16-bit input data (DCELL?) -- see {{trac|774}}!&lt;br /&gt;
* Reviewing options to fuse {{Cmd|i.pansharpen}} with/into {{AddonCmd|i.fusion.hpf}}&lt;br /&gt;
&lt;br /&gt;
[[Category: Workshops]]&lt;br /&gt;
[[Category: Code Sprint]]&lt;br /&gt;
[[Category: 2016]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Bonn_2016&amp;diff=23463</id>
		<title>GRASS Community Sprint Bonn 2016</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Bonn_2016&amp;diff=23463"/>
		<updated>2016-08-24T06:17:53Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: /* In person */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{toc|right}}&lt;br /&gt;
During the [http://2016.foss4g.org/ FOSS4G 2016] , 21-28 August 2016, [http://en.wikipedia.org/wiki/Bonn Bonn], [https://en.wikipedia.org/wiki/Germany Germany], the GRASS GIS project will join the code sprint&lt;br /&gt;
&lt;br /&gt;
'''Important dates:'''&lt;br /&gt;
&lt;br /&gt;
* CodeSprint I: Sun 21.08.2016 12:00 - Tue 23.08.2016 (open end) (see also [http://2016.foss4g.org/programme.html#code-sprints here])&lt;br /&gt;
* [http://2016.foss4g.org/#page9 FOSS4G 2016 Schedule]&lt;br /&gt;
* CodeSprint II: Sat 27.08.2016 - Sun 28.08.2016 12:00 p.m. (see also [http://2016.foss4g.org/programme.html#code-sprints here])&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
Get together of GRASS GIS project members to take decisions and tackle small and larger problems.&lt;br /&gt;
&lt;br /&gt;
For this meeting, we welcome people committed to improving the GRASS GIS project. This includes developers, documenters, bug reporters, translators, and users!&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
If you are interested to sponsor the GRASS Community Sprint, please read about&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; '''sponsoring the GRASS project at [http://grass.osgeo.org/donations/ http://grass.osgeo.org/donations/]'''&amp;lt;br&amp;gt;&lt;br /&gt;
and, if needed, contact [[User:Neteler|Markus Neteler]] &amp;lt;tt&amp;gt;&amp;lt;neteler at osgeo.org&amp;gt;&amp;lt;/tt&amp;gt;. Any surplus at the end of the event will be turned over to the GRASS GIS project.&lt;br /&gt;
&lt;br /&gt;
The GRASS Community Sprint is a great occasion for you to support the development of GRASS. With your contribution you'll enable more developers to meet in Bonn. The community sprint is an important opportunity for the GRASS developers to discuss and collaboratively resolve bugs, plan the direction for the project and work on new features. Please see below for the more detailed agenda. The developers and contributors are donating their valuable time, so it would be great if in-kind funding can be made available from within the community to cover out-of-pocket expenses. All of the work that takes place at the community sprint will be directly contributed back into the GRASS project to the benefit of everyone who uses it.&lt;br /&gt;
&lt;br /&gt;
=== Thanks to our sponsors ===&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
&lt;br /&gt;
Bonn, Germany: Basecamp&lt;br /&gt;
&lt;br /&gt;
How to get to FOSS4G2016 OSGeo Code Sprint? &lt;br /&gt;
* http://alienus.de/basecamp1/en/arrival-bonn-hostel/&lt;br /&gt;
* http://www.openstreetmap.org/search?query=raste%201%20bonn#map=18/50.70762/7.12383&lt;br /&gt;
&lt;br /&gt;
By train&lt;br /&gt;
* From Bonn Main station take the U-Trains (Underground platform) 16, 63 or 68. Get off after 6 min at stop Dt. Telekom / Ollenhauerstr. &lt;br /&gt;
* http://alienus.de/basecamp1/en/arrival-bonn-hostel/&lt;br /&gt;
* http://www.openstreetmap.org/search?query=raste%201%20bonn#map=18/50.70762/7.12383&lt;br /&gt;
* [https://www.vrsinfo.de/englisch/the-vrs/vrs-about-us.html online public transport planner]&lt;br /&gt;
&lt;br /&gt;
By Car&lt;br /&gt;
* Coming from the highway A59 Basecamp is located at the end of the highway A562. For navigation systems it is best to type Basecamp's address: &amp;quot;''In der Raste 3, 53129 Bonn''&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== Accommodation and Costs ==&lt;br /&gt;
&lt;br /&gt;
* to be defined&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
* https://en.wikipedia.org/wiki/Bonn#Climate&lt;br /&gt;
&lt;br /&gt;
== Agenda - What we plan to do ==&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The program is generally open for your ideas. Please edit this wiki page!&lt;br /&gt;
&lt;br /&gt;
=== More core developers with SVN write access ===&lt;br /&gt;
* Develop a strategy to refresh the group with core SVN write access&lt;br /&gt;
&lt;br /&gt;
=== Web site ===&lt;br /&gt;
* Migrate the good old CMSMS to Wordpress&lt;br /&gt;
* Move development related stuff from CMS (https://grass.osgeo.org/development/) to trac Wiki&lt;br /&gt;
&lt;br /&gt;
=== Promo ===&lt;br /&gt;
* Finalize the new GRASS GIS flyer prepared by Vincent Bain&lt;br /&gt;
** needed: catchy time series screenshot&lt;br /&gt;
&lt;br /&gt;
=== New Releases ===&lt;br /&gt;
Minor releases:&lt;br /&gt;
* Release GRASS GIS 6.4.6:&lt;br /&gt;
** Coordination is done here: http://trac.osgeo.org/grass/wiki/Grass6Planning&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/6.4.6-News&lt;br /&gt;
* Release GRASS GIS 7.0.5: &lt;br /&gt;
** Coordination is done here: https://trac.osgeo.org/grass/wiki/Grass7Planning#a7.0.5tobebackported&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/7.0.5-News&lt;br /&gt;
&lt;br /&gt;
'''Major release''':&lt;br /&gt;
* Release GRASS GIS 7.2.0: &lt;br /&gt;
** Coordination is done here: https://trac.osgeo.org/grass/wiki/Grass7Planning#a7.2.0&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/7.2.0-News&lt;br /&gt;
&lt;br /&gt;
=== Documentation and translation ===&lt;br /&gt;
* Add examples to manual pages&lt;br /&gt;
* Add examples to Wiki pages&lt;br /&gt;
** GRASS-R/R-GRASS handling of raster time series&lt;br /&gt;
** Sentinel-2 processing&lt;br /&gt;
* Translation of messages&lt;br /&gt;
* Translation of Wiki pages&lt;br /&gt;
&lt;br /&gt;
=== Source code Quality Assessment ===&lt;br /&gt;
* integrate &amp;quot;coverity scan&amp;quot; with Travis, https://scan.coverity.com/travis_ci&lt;br /&gt;
* check &amp;quot;coverity scan&amp;quot;: copy-paste errors, https://scan.coverity.com/projects/1038&lt;br /&gt;
&lt;br /&gt;
=== Bug squashing ===&lt;br /&gt;
* Open bugs concerning GRASS 7: https://trac.osgeo.org/grass/report/19&lt;br /&gt;
* {{trac|2864}}: Add link to source code in the documentation pages (almost done, let's finish it!)&lt;br /&gt;
* {{trac|3042}}: Patches to make the build reproducible (fileordering, randomness)&lt;br /&gt;
* fix i.histo.match: https://lists.osgeo.org/pipermail/grass-dev/2013-February/062179.html&lt;br /&gt;
* Numpy and matplotlib issues when installing/updating from OSGeo4W (ticket [https://trac.osgeo.org/grass/ticket/3057 #3057])&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
&lt;br /&gt;
Please test in GRASS 7.2.svn!&lt;br /&gt;
* {{cmd|d.legend.vect|version=72}}&lt;br /&gt;
&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
* improve {{AddonCmd|r.modis}} addons&lt;br /&gt;
* integrate Google Summer of Code projects (where adequate)&lt;br /&gt;
* continue working on OBIA toolchain:&lt;br /&gt;
** Testing of mean shift in i.segment&lt;br /&gt;
** Finalization of {{AddonCmd|r.object.geometry}} and its integration into {{AddonCmd|i.segment.uspo}}&lt;br /&gt;
* add R-batch files to OSGeo4W-winGRASS7 see [https://trac.osgeo.org/osgeo4w/ticket/413 osgeo4w/ticket 413]&lt;br /&gt;
* GUI: Implement an optional session &amp;quot;kickstart&amp;quot; in GRASS with LatLong predefined, then open import wizard | switch projection inside (like most other GIS do!)&lt;br /&gt;
* TGRASS:&lt;br /&gt;
** suffix option for output mapnames in t.rast.mapcalc and t.rast.algebra (tickets [https://trac.osgeo.org/grass/ticket/2294 #2294] and [https://trac.osgeo.org/grass/ticket/2736 #2736])&lt;br /&gt;
** pattern option to list and remove space-time data sets (ticket [https://trac.osgeo.org/grass/ticket/2804 #2804])&lt;br /&gt;
** t.rast.what: input file with coordinates (ticket [https://trac.osgeo.org/grass/ticket/2721 #2721])&lt;br /&gt;
** t.remove: dual step removal (ticket [https://trac.osgeo.org/grass/ticket/2752 #2752])&lt;br /&gt;
** support for space-time datasets in g.gui.gmodeler (ticket [https://trac.osgeo.org/grass/ticket/2977 #2977])&lt;br /&gt;
&lt;br /&gt;
=== Better integration of git into development ===&lt;br /&gt;
* since github/gitlab/bitbucket etc are a valuable and recognized source of new source code, we should be able to receive such contributions easily&lt;br /&gt;
** OSGeo currently deploys a self-hosted &amp;quot;gitlab&amp;quot; repo: https://lists.osgeo.org/pipermail/sac/2016-August/007345.html&lt;br /&gt;
&lt;br /&gt;
... YOUR IDEA HERE ...&lt;br /&gt;
&lt;br /&gt;
== Planned participation ==&lt;br /&gt;
&lt;br /&gt;
For organizational reasons, please '''additionally register''' at: https://wiki.osgeo.org/wiki/FOSS4G_2016_Code_Sprint&lt;br /&gt;
&lt;br /&gt;
=== In person ===&lt;br /&gt;
&lt;br /&gt;
Please add your name here or contact [[User:Lucadelu|Luca Delucchi]] &amp;lt;tt&amp;gt;&amp;lt;lucadeluge at gmail com&amp;gt;&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;   border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#edf9c7; font-size:95%; empty-cells:show;&amp;quot; &lt;br /&gt;
|width=50px|'''No'''&lt;br /&gt;
|width=130px|'''Participant '''&lt;br /&gt;
|width=100px|'''Country'''&lt;br /&gt;
|width=100px|'''Arrival'''&lt;br /&gt;
|width=100px|'''Departure'''&lt;br /&gt;
|'''Topic'''&lt;br /&gt;
|width=75px|'''T-Shirt'''&lt;br /&gt;
|'''Notes'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Lucadelu|Luca Delucchi]]&lt;br /&gt;
|Italy&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| &lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:Landa|Martin Landa]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| &lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|[[User:Neteler|Markus Neteler]]&lt;br /&gt;
|Italy&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| Releases, project coordination, bug hunting, getting more ppl involved&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|[[User:NikosA|Nikos Alexandris]]&lt;br /&gt;
|Switzerland&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| CRO, create_iwave.py, i.&amp;lt;nowiki&amp;gt;[rgb|his].[his|rgb]&amp;lt;/nowiki&amp;gt; &lt;br /&gt;
| S or M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[User:Veroandreo|Veronica Andreo]]&lt;br /&gt;
|Argentina&lt;br /&gt;
| August 26&lt;br /&gt;
| August 28&lt;br /&gt;
|&lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|[[User:mlennert|Moritz Lennert]]&lt;br /&gt;
|Belgium&lt;br /&gt;
| August 21&lt;br /&gt;
| August 27&lt;br /&gt;
| Releases, OBIA toolchain, GSoC module integration&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|[[User:sbl|Stefan Blumentrath]]&lt;br /&gt;
|Norway&lt;br /&gt;
| August 26&lt;br /&gt;
| August 28&lt;br /&gt;
| Port some Addons to python? (or whatever you put me up to)&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|[[User:MilenaN|Milena Nowotarska]]&lt;br /&gt;
|Poland&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
|&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|[[User:annazanchetta|Anna Zanchetta]]&lt;br /&gt;
|Italy - Israel&lt;br /&gt;
| August 22&lt;br /&gt;
| August 27&lt;br /&gt;
| Implementing and improving some imagery modules, inshallah&lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Via IRC chat ===&lt;br /&gt;
&lt;br /&gt;
(IRC is a nice archaic chat system, see [[IRC]])&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;   border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#edf9c7; font-size:95%; empty-cells:show;&amp;quot; &lt;br /&gt;
|width=50px|'''No'''&lt;br /&gt;
|width=130px|'''Participant '''&lt;br /&gt;
|width=100px|'''Country'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Ychemin|Yann Chemin]]&lt;br /&gt;
|France&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:hellik|Helmut Kudrnovsky]]&lt;br /&gt;
|Austria &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Individual Preparation ==&lt;br /&gt;
&lt;br /&gt;
* Bring your own computer&lt;br /&gt;
* Bring [http://en.wikipedia.org/wiki/Mains_electricity_by_country your power connector adapter] if needed (photo: [https://en.wikipedia.org/wiki/File:Schuko_plug_and_socket.png Germany]). See also http://www.power-plugs-sockets.com/&lt;br /&gt;
* Install subversion and the compiler tools, and come with a working GRASS development environment if possible.&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
We have to remember to take at least one group photo! :-) &lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* ''Is the GRASS Community Sprint just a coding event?''&lt;br /&gt;
** It is mainly a coding and documentation event. It is a working session for people who are already participants in the GRASS project and/or are committed to improving the GRASS project.&lt;br /&gt;
** On demand we can do some presentations of current working GRASS implementation and new upcoming features to spread the idea of Open Source GIS software&lt;br /&gt;
* ''Is the GRASS Community Sprint for developers only?''&lt;br /&gt;
** No: anybody can help, with testing, checking out bugs and fixes, documentation and more.&lt;br /&gt;
* ''Where can I get help and more information about the community sprint?''&lt;br /&gt;
** Contact [[User:Lucadelu|Luca Delucchi]] &amp;lt;tt&amp;gt;&amp;lt;lucadeluge at gmail com&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Participants and Reports ==&lt;br /&gt;
&lt;br /&gt;
===Moritz===&lt;br /&gt;
* OBIA Toolchain&lt;br /&gt;
** Cleaned up r.object.geometry and moved it to addons {{rev|69187}} + {{rev|69188}}, {{AddonCmd|r.object.geometry}}&lt;br /&gt;
** Modified {{AddonCmd|i.segment.stats}} to user.object.geometry instead of v.to.db&lt;br /&gt;
** Improved error handling in i.segment.stats and use temporary files on disk to reduce memory use&lt;br /&gt;
** Modified {{AddonCmd|i.segment.uspo}} to also allow testing new mean shift algorithm (currently only available in sandbox) {{rev|69236}}&lt;br /&gt;
** Tested mean shift algorithm&lt;br /&gt;
* Working on 6.4.6 release&lt;br /&gt;
** General bug triaging&lt;br /&gt;
** Backported fix of {{trac|1444}} to release_64&lt;br /&gt;
** Backported fix of {{trac|2558}} to release_64&lt;br /&gt;
* Scratched an old itch and implement a flag in {{Cmd|g.region}} to allow shell style output in flat (one line) style {{rev|69240}}&lt;br /&gt;
&lt;br /&gt;
*[https://trac.osgeo.org/grass/timeline?from=Aug+23%2C+2016&amp;amp;daysback=2&amp;amp;authors=mlennert&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;sfp_email=&amp;amp;sfph_mail=&amp;amp;update=Update Log overview]&lt;br /&gt;
&lt;br /&gt;
=== Markus ===&lt;br /&gt;
* assist CRO in cleaning PSC election voter email addresses&lt;br /&gt;
* minor pseudo-mercator discussions&lt;br /&gt;
* major datum shift file discussions with Even Rouault (GDAL) and fellow GRASS sprinters: libproj cleanup of local copies of NAD and datum shift files which are indeed used from GDAL; extended documentation in README.txt ({{trac|2456}}, {{rev|2456}})&lt;br /&gt;
&lt;br /&gt;
=== Anna Petrasova ===&lt;br /&gt;
* {{rev|69199}}: major backport of Adam's GSoC work to 7.2. (please test!)&lt;br /&gt;
* fix {{trac|3133}}, {{trac|2252}}&lt;br /&gt;
&lt;br /&gt;
=== Martin Landa ===&lt;br /&gt;
&lt;br /&gt;
* Fix {{trac|2480}}, {{trac|2765}}&lt;br /&gt;
* Bug reports for 7.0.5 milestone reviewed, outdated tickets closed&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Aug+28%2C+2016&amp;amp;daysback=7&amp;amp;authors=martinl&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;sfp_email=&amp;amp;sfph_mail=&amp;amp;update=Update Log overview]&lt;br /&gt;
&lt;br /&gt;
=== Vero ===&lt;br /&gt;
&lt;br /&gt;
* Tutorial: R-GRASS integration for raster time series handling/processing. Work in progress.&lt;br /&gt;
&lt;br /&gt;
=== Nikos ===&lt;br /&gt;
&lt;br /&gt;
* CRO related tasks&lt;br /&gt;
* Patched [https://trac.osgeo.org/grass/changeset/69012/grass/trunk/imagery/i.atcorr/create_iwave.py create_iwave.py], see {{trac|3027}} -- mentored by Moritz.&lt;br /&gt;
* Working on {{Cmd|i.rgb.his}} and {{Cmd|i.his.rgb}} to allow for 16-bit input data (DCELL?)&lt;br /&gt;
* Reviewing options to fuse {{Cmd|i.pansharpen}} with/into {{AddonCmd|i.fusion.hpf}}&lt;br /&gt;
&lt;br /&gt;
[[Category: Workshops]]&lt;br /&gt;
[[Category: Code Sprint]]&lt;br /&gt;
[[Category: 2016]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Bonn_2016&amp;diff=23462</id>
		<title>GRASS Community Sprint Bonn 2016</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Bonn_2016&amp;diff=23462"/>
		<updated>2016-08-24T06:12:16Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: /* Planned participation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{toc|right}}&lt;br /&gt;
During the [http://2016.foss4g.org/ FOSS4G 2016] , 21-28 August 2016, [http://en.wikipedia.org/wiki/Bonn Bonn], [https://en.wikipedia.org/wiki/Germany Germany], the GRASS GIS project will join the code sprint&lt;br /&gt;
&lt;br /&gt;
'''Important dates:'''&lt;br /&gt;
&lt;br /&gt;
* CodeSprint I: Sun 21.08.2016 12:00 - Tue 23.08.2016 (open end) (see also [http://2016.foss4g.org/programme.html#code-sprints here])&lt;br /&gt;
* [http://2016.foss4g.org/#page9 FOSS4G 2016 Schedule]&lt;br /&gt;
* CodeSprint II: Sat 27.08.2016 - Sun 28.08.2016 12:00 p.m. (see also [http://2016.foss4g.org/programme.html#code-sprints here])&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
Get together of GRASS GIS project members to take decisions and tackle small and larger problems.&lt;br /&gt;
&lt;br /&gt;
For this meeting, we welcome people committed to improving the GRASS GIS project. This includes developers, documenters, bug reporters, translators, and users!&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
If you are interested to sponsor the GRASS Community Sprint, please read about&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; '''sponsoring the GRASS project at [http://grass.osgeo.org/donations/ http://grass.osgeo.org/donations/]'''&amp;lt;br&amp;gt;&lt;br /&gt;
and, if needed, contact [[User:Neteler|Markus Neteler]] &amp;lt;tt&amp;gt;&amp;lt;neteler at osgeo.org&amp;gt;&amp;lt;/tt&amp;gt;. Any surplus at the end of the event will be turned over to the GRASS GIS project.&lt;br /&gt;
&lt;br /&gt;
The GRASS Community Sprint is a great occasion for you to support the development of GRASS. With your contribution you'll enable more developers to meet in Bonn. The community sprint is an important opportunity for the GRASS developers to discuss and collaboratively resolve bugs, plan the direction for the project and work on new features. Please see below for the more detailed agenda. The developers and contributors are donating their valuable time, so it would be great if in-kind funding can be made available from within the community to cover out-of-pocket expenses. All of the work that takes place at the community sprint will be directly contributed back into the GRASS project to the benefit of everyone who uses it.&lt;br /&gt;
&lt;br /&gt;
=== Thanks to our sponsors ===&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
&lt;br /&gt;
Bonn, Germany: Basecamp&lt;br /&gt;
&lt;br /&gt;
How to get to FOSS4G2016 OSGeo Code Sprint? &lt;br /&gt;
* http://alienus.de/basecamp1/en/arrival-bonn-hostel/&lt;br /&gt;
* http://www.openstreetmap.org/search?query=raste%201%20bonn#map=18/50.70762/7.12383&lt;br /&gt;
&lt;br /&gt;
By train&lt;br /&gt;
* From Bonn Main station take the U-Trains (Underground platform) 16, 63 or 68. Get off after 6 min at stop Dt. Telekom / Ollenhauerstr. &lt;br /&gt;
* http://alienus.de/basecamp1/en/arrival-bonn-hostel/&lt;br /&gt;
* http://www.openstreetmap.org/search?query=raste%201%20bonn#map=18/50.70762/7.12383&lt;br /&gt;
* [https://www.vrsinfo.de/englisch/the-vrs/vrs-about-us.html online public transport planner]&lt;br /&gt;
&lt;br /&gt;
By Car&lt;br /&gt;
* Coming from the highway A59 Basecamp is located at the end of the highway A562. For navigation systems it is best to type Basecamp's address: &amp;quot;''In der Raste 3, 53129 Bonn''&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== Accommodation and Costs ==&lt;br /&gt;
&lt;br /&gt;
* to be defined&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
* https://en.wikipedia.org/wiki/Bonn#Climate&lt;br /&gt;
&lt;br /&gt;
== Agenda - What we plan to do ==&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The program is generally open for your ideas. Please edit this wiki page!&lt;br /&gt;
&lt;br /&gt;
=== More core developers with SVN write access ===&lt;br /&gt;
* Develop a strategy to refresh the group with core SVN write access&lt;br /&gt;
&lt;br /&gt;
=== Web site ===&lt;br /&gt;
* Migrate the good old CMSMS to Wordpress&lt;br /&gt;
* Move development related stuff from CMS (https://grass.osgeo.org/development/) to trac Wiki&lt;br /&gt;
&lt;br /&gt;
=== Promo ===&lt;br /&gt;
* Finalize the new GRASS GIS flyer prepared by Vincent Bain&lt;br /&gt;
** needed: catchy time series screenshot&lt;br /&gt;
&lt;br /&gt;
=== New Releases ===&lt;br /&gt;
Minor releases:&lt;br /&gt;
* Release GRASS GIS 6.4.6:&lt;br /&gt;
** Coordination is done here: http://trac.osgeo.org/grass/wiki/Grass6Planning&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/6.4.6-News&lt;br /&gt;
* Release GRASS GIS 7.0.5: &lt;br /&gt;
** Coordination is done here: https://trac.osgeo.org/grass/wiki/Grass7Planning#a7.0.5tobebackported&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/7.0.5-News&lt;br /&gt;
&lt;br /&gt;
'''Major release''':&lt;br /&gt;
* Release GRASS GIS 7.2.0: &lt;br /&gt;
** Coordination is done here: https://trac.osgeo.org/grass/wiki/Grass7Planning#a7.2.0&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/7.2.0-News&lt;br /&gt;
&lt;br /&gt;
=== Documentation and translation ===&lt;br /&gt;
* Add examples to manual pages&lt;br /&gt;
* Add examples to Wiki pages&lt;br /&gt;
** GRASS-R/R-GRASS handling of raster time series&lt;br /&gt;
** Sentinel-2 processing&lt;br /&gt;
* Translation of messages&lt;br /&gt;
* Translation of Wiki pages&lt;br /&gt;
&lt;br /&gt;
=== Source code Quality Assessment ===&lt;br /&gt;
* integrate &amp;quot;coverity scan&amp;quot; with Travis, https://scan.coverity.com/travis_ci&lt;br /&gt;
* check &amp;quot;coverity scan&amp;quot;: copy-paste errors, https://scan.coverity.com/projects/1038&lt;br /&gt;
&lt;br /&gt;
=== Bug squashing ===&lt;br /&gt;
* Open bugs concerning GRASS 7: https://trac.osgeo.org/grass/report/19&lt;br /&gt;
* {{trac|2864}}: Add link to source code in the documentation pages (almost done, let's finish it!)&lt;br /&gt;
* {{trac|3042}}: Patches to make the build reproducible (fileordering, randomness)&lt;br /&gt;
* fix i.histo.match: https://lists.osgeo.org/pipermail/grass-dev/2013-February/062179.html&lt;br /&gt;
* Numpy and matplotlib issues when installing/updating from OSGeo4W (ticket [https://trac.osgeo.org/grass/ticket/3057 #3057])&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
&lt;br /&gt;
Please test in GRASS 7.2.svn!&lt;br /&gt;
* {{cmd|d.legend.vect|version=72}}&lt;br /&gt;
&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
* improve {{AddonCmd|r.modis}} addons&lt;br /&gt;
* integrate Google Summer of Code projects (where adequate)&lt;br /&gt;
* continue working on OBIA toolchain:&lt;br /&gt;
** Testing of mean shift in i.segment&lt;br /&gt;
** Finalization of {{AddonCmd|r.object.geometry}} and its integration into {{AddonCmd|i.segment.uspo}}&lt;br /&gt;
* add R-batch files to OSGeo4W-winGRASS7 see [https://trac.osgeo.org/osgeo4w/ticket/413 osgeo4w/ticket 413]&lt;br /&gt;
* GUI: Implement an optional session &amp;quot;kickstart&amp;quot; in GRASS with LatLong predefined, then open import wizard | switch projection inside (like most other GIS do!)&lt;br /&gt;
* TGRASS:&lt;br /&gt;
** suffix option for output mapnames in t.rast.mapcalc and t.rast.algebra (tickets [https://trac.osgeo.org/grass/ticket/2294 #2294] and [https://trac.osgeo.org/grass/ticket/2736 #2736])&lt;br /&gt;
** pattern option to list and remove space-time data sets (ticket [https://trac.osgeo.org/grass/ticket/2804 #2804])&lt;br /&gt;
** t.rast.what: input file with coordinates (ticket [https://trac.osgeo.org/grass/ticket/2721 #2721])&lt;br /&gt;
** t.remove: dual step removal (ticket [https://trac.osgeo.org/grass/ticket/2752 #2752])&lt;br /&gt;
** support for space-time datasets in g.gui.gmodeler (ticket [https://trac.osgeo.org/grass/ticket/2977 #2977])&lt;br /&gt;
&lt;br /&gt;
=== Better integration of git into development ===&lt;br /&gt;
* since github/gitlab/bitbucket etc are a valuable and recognized source of new source code, we should be able to receive such contributions easily&lt;br /&gt;
** OSGeo currently deploys a self-hosted &amp;quot;gitlab&amp;quot; repo: https://lists.osgeo.org/pipermail/sac/2016-August/007345.html&lt;br /&gt;
&lt;br /&gt;
... YOUR IDEA HERE ...&lt;br /&gt;
&lt;br /&gt;
== Planned participation ==&lt;br /&gt;
&lt;br /&gt;
For organizational reasons, please '''additionally register''' at: https://wiki.osgeo.org/wiki/FOSS4G_2016_Code_Sprint&lt;br /&gt;
&lt;br /&gt;
=== In person ===&lt;br /&gt;
&lt;br /&gt;
Please add your name here or contact [[User:Lucadelu|Luca Delucchi]] &amp;lt;tt&amp;gt;&amp;lt;lucadeluge at gmail com&amp;gt;&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;   border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#edf9c7; font-size:95%; empty-cells:show;&amp;quot; &lt;br /&gt;
|width=50px|'''No'''&lt;br /&gt;
|width=130px|'''Participant '''&lt;br /&gt;
|width=100px|'''Country'''&lt;br /&gt;
|width=100px|'''Arrival'''&lt;br /&gt;
|width=100px|'''Departure'''&lt;br /&gt;
|'''Topic'''&lt;br /&gt;
|width=75px|'''T-Shirt'''&lt;br /&gt;
|'''Notes'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Lucadelu|Luca Delucchi]]&lt;br /&gt;
|Italy&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| &lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:Landa|Martin Landa]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| &lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|[[User:Neteler|Markus Neteler]]&lt;br /&gt;
|Italy&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| Releases, project coordination, bug hunting, getting more ppl involved&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|[[User:NikosA|Nikos Alexandris]]&lt;br /&gt;
|Switzerland&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| CRO, create_iwave.py, i.[rgb|his].[his|rgb] &lt;br /&gt;
| S or M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[User:Veroandreo|Veronica Andreo]]&lt;br /&gt;
|Argentina&lt;br /&gt;
| August 26&lt;br /&gt;
| August 28&lt;br /&gt;
|&lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|[[User:mlennert|Moritz Lennert]]&lt;br /&gt;
|Belgium&lt;br /&gt;
| August 21&lt;br /&gt;
| August 27&lt;br /&gt;
| Releases, OBIA toolchain, GSoC module integration&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|[[User:sbl|Stefan Blumentrath]]&lt;br /&gt;
|Norway&lt;br /&gt;
| August 26&lt;br /&gt;
| August 28&lt;br /&gt;
| Port some Addons to python? (or whatever you put me up to)&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|[[User:MilenaN|Milena Nowotarska]]&lt;br /&gt;
|Poland&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
|&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|[[User:annazanchetta|Anna Zanchetta]]&lt;br /&gt;
|Italy - Israel&lt;br /&gt;
| August 22&lt;br /&gt;
| August 27&lt;br /&gt;
| Implementing and improving some imagery modules, inshallah&lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Via IRC chat ===&lt;br /&gt;
&lt;br /&gt;
(IRC is a nice archaic chat system, see [[IRC]])&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;   border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#edf9c7; font-size:95%; empty-cells:show;&amp;quot; &lt;br /&gt;
|width=50px|'''No'''&lt;br /&gt;
|width=130px|'''Participant '''&lt;br /&gt;
|width=100px|'''Country'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Ychemin|Yann Chemin]]&lt;br /&gt;
|France&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:hellik|Helmut Kudrnovsky]]&lt;br /&gt;
|Austria &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Individual Preparation ==&lt;br /&gt;
&lt;br /&gt;
* Bring your own computer&lt;br /&gt;
* Bring [http://en.wikipedia.org/wiki/Mains_electricity_by_country your power connector adapter] if needed (photo: [https://en.wikipedia.org/wiki/File:Schuko_plug_and_socket.png Germany]). See also http://www.power-plugs-sockets.com/&lt;br /&gt;
* Install subversion and the compiler tools, and come with a working GRASS development environment if possible.&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
We have to remember to take at least one group photo! :-) &lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* ''Is the GRASS Community Sprint just a coding event?''&lt;br /&gt;
** It is mainly a coding and documentation event. It is a working session for people who are already participants in the GRASS project and/or are committed to improving the GRASS project.&lt;br /&gt;
** On demand we can do some presentations of current working GRASS implementation and new upcoming features to spread the idea of Open Source GIS software&lt;br /&gt;
* ''Is the GRASS Community Sprint for developers only?''&lt;br /&gt;
** No: anybody can help, with testing, checking out bugs and fixes, documentation and more.&lt;br /&gt;
* ''Where can I get help and more information about the community sprint?''&lt;br /&gt;
** Contact [[User:Lucadelu|Luca Delucchi]] &amp;lt;tt&amp;gt;&amp;lt;lucadeluge at gmail com&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Participants and Reports ==&lt;br /&gt;
&lt;br /&gt;
===Moritz===&lt;br /&gt;
* OBIA Toolchain&lt;br /&gt;
** Cleaned up r.object.geometry and moved it to addons {{rev|69187}} + {{rev|69188}}, {{AddonCmd|r.object.geometry}}&lt;br /&gt;
** Modified {{AddonCmd|i.segment.stats}} to user.object.geometry instead of v.to.db&lt;br /&gt;
** Improved error handling in i.segment.stats and use temporary files on disk to reduce memory use&lt;br /&gt;
** Modified {{AddonCmd|i.segment.uspo}} to also allow testing new mean shift algorithm (currently only available in sandbox) {{rev|69236}}&lt;br /&gt;
** Tested mean shift algorithm&lt;br /&gt;
* Working on 6.4.6 release&lt;br /&gt;
** General bug triaging&lt;br /&gt;
** Backported fix of {{trac|1444}} to release_64&lt;br /&gt;
** Backported fix of {{trac|2558}} to release_64&lt;br /&gt;
* Scratched an old itch and implement a flag in {{Cmd|g.region}} to allow shell style output in flat (one line) style {{rev|69240}}&lt;br /&gt;
&lt;br /&gt;
*[https://trac.osgeo.org/grass/timeline?from=Aug+23%2C+2016&amp;amp;daysback=2&amp;amp;authors=mlennert&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;sfp_email=&amp;amp;sfph_mail=&amp;amp;update=Update Log overview]&lt;br /&gt;
&lt;br /&gt;
=== Markus ===&lt;br /&gt;
* assist CRO in cleaning PSC election voter email addresses&lt;br /&gt;
* minor pseudo-mercator discussions&lt;br /&gt;
* major datum shift file discussions with Even Rouault (GDAL) and fellow GRASS sprinters: libproj cleanup of local copies of NAD and datum shift files which are indeed used from GDAL; extended documentation in README.txt ({{trac|2456}}, {{rev|2456}})&lt;br /&gt;
&lt;br /&gt;
=== Anna Petrasova ===&lt;br /&gt;
* {{rev|69199}}: major backport of Adam's GSoC work to 7.2. (please test!)&lt;br /&gt;
* fix {{trac|3133}}, {{trac|2252}}&lt;br /&gt;
&lt;br /&gt;
=== Martin Landa ===&lt;br /&gt;
&lt;br /&gt;
* Fix {{trac|2480}}, {{trac|2765}}&lt;br /&gt;
* Bug reports for 7.0.5 milestone reviewed, outdated tickets closed&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Aug+28%2C+2016&amp;amp;daysback=7&amp;amp;authors=martinl&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;sfp_email=&amp;amp;sfph_mail=&amp;amp;update=Update Log overview]&lt;br /&gt;
&lt;br /&gt;
=== Vero ===&lt;br /&gt;
&lt;br /&gt;
* Tutorial: R-GRASS integration for raster time series handling/processing. Work in progress.&lt;br /&gt;
&lt;br /&gt;
=== Nikos ===&lt;br /&gt;
&lt;br /&gt;
* CRO related tasks&lt;br /&gt;
* Patched [https://trac.osgeo.org/grass/changeset/69012/grass/trunk/imagery/i.atcorr/create_iwave.py create_iwave.py], see {{trac|3027}} -- mentored by Moritz.&lt;br /&gt;
* Working on {{Cmd|i.rgb.his}} and {{Cmd|i.his.rgb}} to allow for 16-bit input data (DCELL?)&lt;br /&gt;
* Reviewing options to fuse {{Cmd|i.pansharpen}} with/into {{AddonCmd|i.fusion.hpf}}&lt;br /&gt;
&lt;br /&gt;
[[Category: Workshops]]&lt;br /&gt;
[[Category: Code Sprint]]&lt;br /&gt;
[[Category: 2016]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Bonn_2016&amp;diff=23461</id>
		<title>GRASS Community Sprint Bonn 2016</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Bonn_2016&amp;diff=23461"/>
		<updated>2016-08-23T23:30:53Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: Added activity&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{toc|right}}&lt;br /&gt;
During the [http://2016.foss4g.org/ FOSS4G 2016] , 21-28 August 2016, [http://en.wikipedia.org/wiki/Bonn Bonn], [https://en.wikipedia.org/wiki/Germany Germany], the GRASS GIS project will join the code sprint&lt;br /&gt;
&lt;br /&gt;
'''Important dates:'''&lt;br /&gt;
&lt;br /&gt;
* CodeSprint I: Sun 21.08.2016 12:00 - Tue 23.08.2016 (open end) (see also [http://2016.foss4g.org/programme.html#code-sprints here])&lt;br /&gt;
* [http://2016.foss4g.org/#page9 FOSS4G 2016 Schedule]&lt;br /&gt;
* CodeSprint II: Sat 27.08.2016 - Sun 28.08.2016 12:00 p.m. (see also [http://2016.foss4g.org/programme.html#code-sprints here])&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
Get together of GRASS GIS project members to take decisions and tackle small and larger problems.&lt;br /&gt;
&lt;br /&gt;
For this meeting, we welcome people committed to improving the GRASS GIS project. This includes developers, documenters, bug reporters, translators, and users!&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
If you are interested to sponsor the GRASS Community Sprint, please read about&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; '''sponsoring the GRASS project at [http://grass.osgeo.org/donations/ http://grass.osgeo.org/donations/]'''&amp;lt;br&amp;gt;&lt;br /&gt;
and, if needed, contact [[User:Neteler|Markus Neteler]] &amp;lt;tt&amp;gt;&amp;lt;neteler at osgeo.org&amp;gt;&amp;lt;/tt&amp;gt;. Any surplus at the end of the event will be turned over to the GRASS GIS project.&lt;br /&gt;
&lt;br /&gt;
The GRASS Community Sprint is a great occasion for you to support the development of GRASS. With your contribution you'll enable more developers to meet in Bonn. The community sprint is an important opportunity for the GRASS developers to discuss and collaboratively resolve bugs, plan the direction for the project and work on new features. Please see below for the more detailed agenda. The developers and contributors are donating their valuable time, so it would be great if in-kind funding can be made available from within the community to cover out-of-pocket expenses. All of the work that takes place at the community sprint will be directly contributed back into the GRASS project to the benefit of everyone who uses it.&lt;br /&gt;
&lt;br /&gt;
=== Thanks to our sponsors ===&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
&lt;br /&gt;
Bonn, Germany: Basecamp&lt;br /&gt;
&lt;br /&gt;
How to get to FOSS4G2016 OSGeo Code Sprint? &lt;br /&gt;
* http://alienus.de/basecamp1/en/arrival-bonn-hostel/&lt;br /&gt;
* http://www.openstreetmap.org/search?query=raste%201%20bonn#map=18/50.70762/7.12383&lt;br /&gt;
&lt;br /&gt;
By train&lt;br /&gt;
* From Bonn Main station take the U-Trains (Underground platform) 16, 63 or 68. Get off after 6 min at stop Dt. Telekom / Ollenhauerstr. &lt;br /&gt;
* http://alienus.de/basecamp1/en/arrival-bonn-hostel/&lt;br /&gt;
* http://www.openstreetmap.org/search?query=raste%201%20bonn#map=18/50.70762/7.12383&lt;br /&gt;
* [https://www.vrsinfo.de/englisch/the-vrs/vrs-about-us.html online public transport planner]&lt;br /&gt;
&lt;br /&gt;
By Car&lt;br /&gt;
* Coming from the highway A59 Basecamp is located at the end of the highway A562. For navigation systems it is best to type Basecamp's address: &amp;quot;''In der Raste 3, 53129 Bonn''&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== Accommodation and Costs ==&lt;br /&gt;
&lt;br /&gt;
* to be defined&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
* https://en.wikipedia.org/wiki/Bonn#Climate&lt;br /&gt;
&lt;br /&gt;
== Agenda - What we plan to do ==&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The program is generally open for your ideas. Please edit this wiki page!&lt;br /&gt;
&lt;br /&gt;
=== More core developers with SVN write access ===&lt;br /&gt;
* Develop a strategy to refresh the group with core SVN write access&lt;br /&gt;
&lt;br /&gt;
=== Web site ===&lt;br /&gt;
* Migrate the good old CMSMS to Wordpress&lt;br /&gt;
* Move development related stuff from CMS (https://grass.osgeo.org/development/) to trac Wiki&lt;br /&gt;
&lt;br /&gt;
=== Promo ===&lt;br /&gt;
* Finalize the new GRASS GIS flyer prepared by Vincent Bain&lt;br /&gt;
** needed: catchy time series screenshot&lt;br /&gt;
&lt;br /&gt;
=== New Releases ===&lt;br /&gt;
Minor releases:&lt;br /&gt;
* Release GRASS GIS 6.4.6:&lt;br /&gt;
** Coordination is done here: http://trac.osgeo.org/grass/wiki/Grass6Planning&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/6.4.6-News&lt;br /&gt;
* Release GRASS GIS 7.0.5: &lt;br /&gt;
** Coordination is done here: https://trac.osgeo.org/grass/wiki/Grass7Planning#a7.0.5tobebackported&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/7.0.5-News&lt;br /&gt;
&lt;br /&gt;
'''Major release''':&lt;br /&gt;
* Release GRASS GIS 7.2.0: &lt;br /&gt;
** Coordination is done here: https://trac.osgeo.org/grass/wiki/Grass7Planning#a7.2.0&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/7.2.0-News&lt;br /&gt;
&lt;br /&gt;
=== Documentation and translation ===&lt;br /&gt;
* Add examples to manual pages&lt;br /&gt;
* Add examples to Wiki pages&lt;br /&gt;
** GRASS-R/R-GRASS handling of raster time series&lt;br /&gt;
** Sentinel-2 processing&lt;br /&gt;
* Translation of messages&lt;br /&gt;
* Translation of Wiki pages&lt;br /&gt;
&lt;br /&gt;
=== Source code Quality Assessment ===&lt;br /&gt;
* integrate &amp;quot;coverity scan&amp;quot; with Travis, https://scan.coverity.com/travis_ci&lt;br /&gt;
* check &amp;quot;coverity scan&amp;quot;: copy-paste errors, https://scan.coverity.com/projects/1038&lt;br /&gt;
&lt;br /&gt;
=== Bug squashing ===&lt;br /&gt;
* Open bugs concerning GRASS 7: https://trac.osgeo.org/grass/report/19&lt;br /&gt;
* {{trac|2864}}: Add link to source code in the documentation pages (almost done, let's finish it!)&lt;br /&gt;
* {{trac|3042}}: Patches to make the build reproducible (fileordering, randomness)&lt;br /&gt;
* fix i.histo.match: https://lists.osgeo.org/pipermail/grass-dev/2013-February/062179.html&lt;br /&gt;
* Numpy and matplotlib issues when installing/updating from OSGeo4W (ticket [https://trac.osgeo.org/grass/ticket/3057 #3057])&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
&lt;br /&gt;
Please test in GRASS 7.2.svn!&lt;br /&gt;
* {{cmd|d.legend.vect|version=72}}&lt;br /&gt;
&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
* improve {{AddonCmd|r.modis}} addons&lt;br /&gt;
* integrate Google Summer of Code projects (where adequate)&lt;br /&gt;
* continue working on OBIA toolchain:&lt;br /&gt;
** Testing of mean shift in i.segment&lt;br /&gt;
** Finalization of {{AddonCmd|r.object.geometry}} and its integration into {{AddonCmd|i.segment.uspo}}&lt;br /&gt;
* add R-batch files to OSGeo4W-winGRASS7 see [https://trac.osgeo.org/osgeo4w/ticket/413 osgeo4w/ticket 413]&lt;br /&gt;
* GUI: Implement an optional session &amp;quot;kickstart&amp;quot; in GRASS with LatLong predefined, then open import wizard | switch projection inside (like most other GIS do!)&lt;br /&gt;
* TGRASS:&lt;br /&gt;
** suffix option for output mapnames in t.rast.mapcalc and t.rast.algebra (tickets [https://trac.osgeo.org/grass/ticket/2294 #2294] and [https://trac.osgeo.org/grass/ticket/2736 #2736])&lt;br /&gt;
** pattern option to list and remove space-time data sets (ticket [https://trac.osgeo.org/grass/ticket/2804 #2804])&lt;br /&gt;
** t.rast.what: input file with coordinates (ticket [https://trac.osgeo.org/grass/ticket/2721 #2721])&lt;br /&gt;
** t.remove: dual step removal (ticket [https://trac.osgeo.org/grass/ticket/2752 #2752])&lt;br /&gt;
** support for space-time datasets in g.gui.gmodeler (ticket [https://trac.osgeo.org/grass/ticket/2977 #2977])&lt;br /&gt;
&lt;br /&gt;
=== Better integration of git into development ===&lt;br /&gt;
* since github/gitlab/bitbucket etc are a valuable and recognized source of new source code, we should be able to receive such contributions easily&lt;br /&gt;
** OSGeo currently deploys a self-hosted &amp;quot;gitlab&amp;quot; repo: https://lists.osgeo.org/pipermail/sac/2016-August/007345.html&lt;br /&gt;
&lt;br /&gt;
... YOUR IDEA HERE ...&lt;br /&gt;
&lt;br /&gt;
== Planned participation ==&lt;br /&gt;
&lt;br /&gt;
For organizational reasons, please '''additionally register''' at: https://wiki.osgeo.org/wiki/FOSS4G_2016_Code_Sprint&lt;br /&gt;
&lt;br /&gt;
=== In person ===&lt;br /&gt;
&lt;br /&gt;
Please add your name here or contact [[User:Lucadelu|Luca Delucchi]] &amp;lt;tt&amp;gt;&amp;lt;lucadeluge at gmail com&amp;gt;&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;   border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#edf9c7; font-size:95%; empty-cells:show;&amp;quot; &lt;br /&gt;
|width=50px|'''No'''&lt;br /&gt;
|width=130px|'''Participant '''&lt;br /&gt;
|width=100px|'''Country'''&lt;br /&gt;
|width=100px|'''Arrival'''&lt;br /&gt;
|width=100px|'''Departure'''&lt;br /&gt;
|'''Topic'''&lt;br /&gt;
|width=75px|'''T-Shirt'''&lt;br /&gt;
|'''Notes'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Lucadelu|Luca Delucchi]]&lt;br /&gt;
|Italy&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| &lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:Landa|Martin Landa]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| &lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|[[User:Neteler|Markus Neteler]]&lt;br /&gt;
|Italy&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| Releases, project coordination, bug hunting, getting more ppl involved&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|[[User:NikosA|Nikos Alexandris]]&lt;br /&gt;
|Switzerland&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| &lt;br /&gt;
| S or M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[User:Veroandreo|Veronica Andreo]]&lt;br /&gt;
|Argentina&lt;br /&gt;
| August 26&lt;br /&gt;
| August 28&lt;br /&gt;
|&lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|[[User:mlennert|Moritz Lennert]]&lt;br /&gt;
|Belgium&lt;br /&gt;
| August 21&lt;br /&gt;
| August 27&lt;br /&gt;
| Releases, OBIA toolchain, GSoC module integration&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|[[User:sbl|Stefan Blumentrath]]&lt;br /&gt;
|Norway&lt;br /&gt;
| August 26&lt;br /&gt;
| August 28&lt;br /&gt;
| Port some Addons to python? (or whatever you put me up to)&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|[[User:MilenaN|Milena Nowotarska]]&lt;br /&gt;
|Poland&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
|&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|[[User:annazanchetta|Anna Zanchetta]]&lt;br /&gt;
|Italy - Israel&lt;br /&gt;
| August 22&lt;br /&gt;
| August 27&lt;br /&gt;
| Implementing and improving some imagery modules, inshallah&lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Via IRC chat ===&lt;br /&gt;
&lt;br /&gt;
(IRC is a nice archaic chat system, see [[IRC]])&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;   border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#edf9c7; font-size:95%; empty-cells:show;&amp;quot; &lt;br /&gt;
|width=50px|'''No'''&lt;br /&gt;
|width=130px|'''Participant '''&lt;br /&gt;
|width=100px|'''Country'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Ychemin|Yann Chemin]]&lt;br /&gt;
|France&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:hellik|Helmut Kudrnovsky]]&lt;br /&gt;
|Austria &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Individual Preparation ==&lt;br /&gt;
&lt;br /&gt;
* Bring your own computer&lt;br /&gt;
* Bring [http://en.wikipedia.org/wiki/Mains_electricity_by_country your power connector adapter] if needed (photo: [https://en.wikipedia.org/wiki/File:Schuko_plug_and_socket.png Germany]). See also http://www.power-plugs-sockets.com/&lt;br /&gt;
* Install subversion and the compiler tools, and come with a working GRASS development environment if possible.&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
We have to remember to take at least one group photo! :-) &lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* ''Is the GRASS Community Sprint just a coding event?''&lt;br /&gt;
** It is mainly a coding and documentation event. It is a working session for people who are already participants in the GRASS project and/or are committed to improving the GRASS project.&lt;br /&gt;
** On demand we can do some presentations of current working GRASS implementation and new upcoming features to spread the idea of Open Source GIS software&lt;br /&gt;
* ''Is the GRASS Community Sprint for developers only?''&lt;br /&gt;
** No: anybody can help, with testing, checking out bugs and fixes, documentation and more.&lt;br /&gt;
* ''Where can I get help and more information about the community sprint?''&lt;br /&gt;
** Contact [[User:Lucadelu|Luca Delucchi]] &amp;lt;tt&amp;gt;&amp;lt;lucadeluge at gmail com&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Participants and Reports ==&lt;br /&gt;
&lt;br /&gt;
===Moritz===&lt;br /&gt;
* OBIA Toolchain&lt;br /&gt;
** Cleaned up r.object.geometry and moved it to addons {{rev|69187}} + {{rev|69188}}, {{AddonCmd|r.object.geometry}}&lt;br /&gt;
** Modified {{AddonCmd|i.segment.stats}} to user.object.geometry instead of v.to.db&lt;br /&gt;
** Improved error handling in i.segment.stats and use temporary files on disk to reduce memory use&lt;br /&gt;
** Modified {{AddonCmd|i.segment.uspo}} to also allow testing new mean shift algorithm (currently only available in sandbox) {{rev|69236}}&lt;br /&gt;
** Tested mean shift algorithm&lt;br /&gt;
* Working on 6.4.6 release&lt;br /&gt;
** General bug triaging&lt;br /&gt;
** Backported fix of {{trac|1444}} to release_64&lt;br /&gt;
** Backported fix of {{trac|2558}} to release_64&lt;br /&gt;
* Scratched an old itch and implement a flag in {{Cmd|g.region}} to allow shell style output in flat (one line) style {{rev|69240}}&lt;br /&gt;
&lt;br /&gt;
*[https://trac.osgeo.org/grass/timeline?from=Aug+23%2C+2016&amp;amp;daysback=2&amp;amp;authors=mlennert&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;sfp_email=&amp;amp;sfph_mail=&amp;amp;update=Update Log overview]&lt;br /&gt;
&lt;br /&gt;
=== Markus ===&lt;br /&gt;
* assist CRO in cleaning PSC election voter email addresses&lt;br /&gt;
* minor pseudo-mercator discussions&lt;br /&gt;
* major datum shift file discussions with Even Rouault (GDAL) and fellow GRASS sprinters: libproj cleanup of local copies of NAD and datum shift files which are indeed used from GDAL; extended documentation in README.txt ({{trac|2456}}, {{rev|2456}})&lt;br /&gt;
&lt;br /&gt;
=== Anna Petrasova ===&lt;br /&gt;
* {{rev|69199}}: major backport of Adam's GSoC work to 7.2. (please test!)&lt;br /&gt;
* fix {{trac|3133}}, {{trac|2252}}&lt;br /&gt;
&lt;br /&gt;
=== Martin Landa ===&lt;br /&gt;
&lt;br /&gt;
* Fix {{trac|2480}}, {{trac|2765}}&lt;br /&gt;
* Bug reports for 7.0.5 milestone reviewed, outdated tickets closed&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Aug+28%2C+2016&amp;amp;daysback=7&amp;amp;authors=martinl&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;sfp_email=&amp;amp;sfph_mail=&amp;amp;update=Update Log overview]&lt;br /&gt;
&lt;br /&gt;
=== Vero ===&lt;br /&gt;
&lt;br /&gt;
* Tutorial: R-GRASS integration for raster time series handling/processing. Work in progress.&lt;br /&gt;
&lt;br /&gt;
=== Nikos ===&lt;br /&gt;
&lt;br /&gt;
* CRO related tasks&lt;br /&gt;
* Patched [https://trac.osgeo.org/grass/changeset/69012/grass/trunk/imagery/i.atcorr/create_iwave.py create_iwave.py], see {{trac|3027}} -- mentored by Moritz.&lt;br /&gt;
* Working on {{Cmd|i.rgb.his}} and {{Cmd|i.his.rgb}} to allow for 16-bit input data (DCELL?)&lt;br /&gt;
* Reviewing options to fuse {{Cmd|i.pansharpen}} with/into {{AddonCmd|i.fusion.hpf}}&lt;br /&gt;
&lt;br /&gt;
[[Category: Workshops]]&lt;br /&gt;
[[Category: Code Sprint]]&lt;br /&gt;
[[Category: 2016]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Bonn_2016&amp;diff=23460</id>
		<title>GRASS Community Sprint Bonn 2016</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=GRASS_Community_Sprint_Bonn_2016&amp;diff=23460"/>
		<updated>2016-08-23T15:24:14Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: Added activity during code sprint in Bonn&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{toc|right}}&lt;br /&gt;
During the [http://2016.foss4g.org/ FOSS4G 2016] , 21-28 August 2016, [http://en.wikipedia.org/wiki/Bonn Bonn], [https://en.wikipedia.org/wiki/Germany Germany], the GRASS GIS project will join the code sprint&lt;br /&gt;
&lt;br /&gt;
'''Important dates:'''&lt;br /&gt;
&lt;br /&gt;
* CodeSprint I: Sun 21.08.2016 12:00 - Tue 23.08.2016 (open end) (see also [http://2016.foss4g.org/programme.html#code-sprints here])&lt;br /&gt;
* [http://2016.foss4g.org/#page9 FOSS4G 2016 Schedule]&lt;br /&gt;
* CodeSprint II: Sat 27.08.2016 - Sun 28.08.2016 12:00 p.m. (see also [http://2016.foss4g.org/programme.html#code-sprints here])&lt;br /&gt;
&lt;br /&gt;
== Purpose ==&lt;br /&gt;
&lt;br /&gt;
Get together of GRASS GIS project members to take decisions and tackle small and larger problems.&lt;br /&gt;
&lt;br /&gt;
For this meeting, we welcome people committed to improving the GRASS GIS project. This includes developers, documenters, bug reporters, translators, and users!&lt;br /&gt;
&lt;br /&gt;
== Sponsors ==&lt;br /&gt;
&lt;br /&gt;
If you are interested to sponsor the GRASS Community Sprint, please read about&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp; '''sponsoring the GRASS project at [http://grass.osgeo.org/donations/ http://grass.osgeo.org/donations/]'''&amp;lt;br&amp;gt;&lt;br /&gt;
and, if needed, contact [[User:Neteler|Markus Neteler]] &amp;lt;tt&amp;gt;&amp;lt;neteler at osgeo.org&amp;gt;&amp;lt;/tt&amp;gt;. Any surplus at the end of the event will be turned over to the GRASS GIS project.&lt;br /&gt;
&lt;br /&gt;
The GRASS Community Sprint is a great occasion for you to support the development of GRASS. With your contribution you'll enable more developers to meet in Bonn. The community sprint is an important opportunity for the GRASS developers to discuss and collaboratively resolve bugs, plan the direction for the project and work on new features. Please see below for the more detailed agenda. The developers and contributors are donating their valuable time, so it would be great if in-kind funding can be made available from within the community to cover out-of-pocket expenses. All of the work that takes place at the community sprint will be directly contributed back into the GRASS project to the benefit of everyone who uses it.&lt;br /&gt;
&lt;br /&gt;
=== Thanks to our sponsors ===&lt;br /&gt;
&lt;br /&gt;
== Venue ==&lt;br /&gt;
&lt;br /&gt;
Bonn, Germany: Basecamp&lt;br /&gt;
&lt;br /&gt;
How to get to FOSS4G2016 OSGeo Code Sprint? &lt;br /&gt;
* http://alienus.de/basecamp1/en/arrival-bonn-hostel/&lt;br /&gt;
* http://www.openstreetmap.org/search?query=raste%201%20bonn#map=18/50.70762/7.12383&lt;br /&gt;
&lt;br /&gt;
By train&lt;br /&gt;
* From Bonn Main station take the U-Trains (Underground platform) 16, 63 or 68. Get off after 6 min at stop Dt. Telekom / Ollenhauerstr. &lt;br /&gt;
* http://alienus.de/basecamp1/en/arrival-bonn-hostel/&lt;br /&gt;
* http://www.openstreetmap.org/search?query=raste%201%20bonn#map=18/50.70762/7.12383&lt;br /&gt;
* [https://www.vrsinfo.de/englisch/the-vrs/vrs-about-us.html online public transport planner]&lt;br /&gt;
&lt;br /&gt;
By Car&lt;br /&gt;
* Coming from the highway A59 Basecamp is located at the end of the highway A562. For navigation systems it is best to type Basecamp's address: &amp;quot;''In der Raste 3, 53129 Bonn''&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== Accommodation and Costs ==&lt;br /&gt;
&lt;br /&gt;
* to be defined&lt;br /&gt;
&lt;br /&gt;
== Weather ==&lt;br /&gt;
&lt;br /&gt;
* https://en.wikipedia.org/wiki/Bonn#Climate&lt;br /&gt;
&lt;br /&gt;
== Agenda - What we plan to do ==&lt;br /&gt;
&lt;br /&gt;
'''Note:''' The program is generally open for your ideas. Please edit this wiki page!&lt;br /&gt;
&lt;br /&gt;
=== More core developers with SVN write access ===&lt;br /&gt;
* Develop a strategy to refresh the group with core SVN write access&lt;br /&gt;
&lt;br /&gt;
=== Web site ===&lt;br /&gt;
* Migrate the good old CMSMS to Wordpress&lt;br /&gt;
* Move development related stuff from CMS (https://grass.osgeo.org/development/) to trac Wiki&lt;br /&gt;
&lt;br /&gt;
=== Promo ===&lt;br /&gt;
* Finalize the new GRASS GIS flyer prepared by Vincent Bain&lt;br /&gt;
** needed: catchy time series screenshot&lt;br /&gt;
&lt;br /&gt;
=== New Releases ===&lt;br /&gt;
Minor releases:&lt;br /&gt;
* Release GRASS GIS 6.4.6:&lt;br /&gt;
** Coordination is done here: http://trac.osgeo.org/grass/wiki/Grass6Planning&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/6.4.6-News&lt;br /&gt;
* Release GRASS GIS 7.0.5: &lt;br /&gt;
** Coordination is done here: https://trac.osgeo.org/grass/wiki/Grass7Planning#a7.0.5tobebackported&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/7.0.5-News&lt;br /&gt;
&lt;br /&gt;
'''Major release''':&lt;br /&gt;
* Release GRASS GIS 7.2.0: &lt;br /&gt;
** Coordination is done here: https://trac.osgeo.org/grass/wiki/Grass7Planning#a7.2.0&lt;br /&gt;
** Changes are tracked at: https://trac.osgeo.org/grass/wiki/Release/7.2.0-News&lt;br /&gt;
&lt;br /&gt;
=== Documentation and translation ===&lt;br /&gt;
* Add examples to manual pages&lt;br /&gt;
* Add examples to Wiki pages&lt;br /&gt;
** GRASS-R/R-GRASS handling of raster time series&lt;br /&gt;
** Sentinel-2 processing&lt;br /&gt;
* Translation of messages&lt;br /&gt;
* Translation of Wiki pages&lt;br /&gt;
&lt;br /&gt;
=== Source code Quality Assessment ===&lt;br /&gt;
* integrate &amp;quot;coverity scan&amp;quot; with Travis, https://scan.coverity.com/travis_ci&lt;br /&gt;
* check &amp;quot;coverity scan&amp;quot;: copy-paste errors, https://scan.coverity.com/projects/1038&lt;br /&gt;
&lt;br /&gt;
=== Bug squashing ===&lt;br /&gt;
* Open bugs concerning GRASS 7: https://trac.osgeo.org/grass/report/19&lt;br /&gt;
* {{trac|2864}}: Add link to source code in the documentation pages (almost done, let's finish it!)&lt;br /&gt;
* {{trac|3042}}: Patches to make the build reproducible (fileordering, randomness)&lt;br /&gt;
* fix i.histo.match: https://lists.osgeo.org/pipermail/grass-dev/2013-February/062179.html&lt;br /&gt;
* Numpy and matplotlib issues when installing/updating from OSGeo4W (ticket [https://trac.osgeo.org/grass/ticket/3057 #3057])&lt;br /&gt;
&lt;br /&gt;
=== Testing ===&lt;br /&gt;
&lt;br /&gt;
Please test in GRASS 7.2.svn!&lt;br /&gt;
* {{cmd|d.legend.vect|version=72}}&lt;br /&gt;
&lt;br /&gt;
=== Improvements ===&lt;br /&gt;
* improve {{AddonCmd|r.modis}} addons&lt;br /&gt;
* integrate Google Summer of Code projects (where adequate)&lt;br /&gt;
* continue working on OBIA toolchain:&lt;br /&gt;
** Testing of mean shift in i.segment&lt;br /&gt;
** Finalization of {{AddonCmd|r.object.geometry}} and its integration into {{AddonCmd|i.segment.uspo}}&lt;br /&gt;
* add R-batch files to OSGeo4W-winGRASS7 see [https://trac.osgeo.org/osgeo4w/ticket/413 osgeo4w/ticket 413]&lt;br /&gt;
* GUI: Implement an optional session &amp;quot;kickstart&amp;quot; in GRASS with LatLong predefined, then open import wizard | switch projection inside (like most other GIS do!)&lt;br /&gt;
* TGRASS:&lt;br /&gt;
** suffix option for output mapnames in t.rast.mapcalc and t.rast.algebra (tickets [https://trac.osgeo.org/grass/ticket/2294 #2294] and [https://trac.osgeo.org/grass/ticket/2736 #2736])&lt;br /&gt;
** pattern option to list and remove space-time data sets (ticket [https://trac.osgeo.org/grass/ticket/2804 #2804])&lt;br /&gt;
** t.rast.what: input file with coordinates (ticket [https://trac.osgeo.org/grass/ticket/2721 #2721])&lt;br /&gt;
** t.remove: dual step removal (ticket [https://trac.osgeo.org/grass/ticket/2752 #2752])&lt;br /&gt;
** support for space-time datasets in g.gui.gmodeler (ticket [https://trac.osgeo.org/grass/ticket/2977 #2977])&lt;br /&gt;
&lt;br /&gt;
=== Better integration of git into development ===&lt;br /&gt;
* since github/gitlab/bitbucket etc are a valuable and recognized source of new source code, we should be able to receive such contributions easily&lt;br /&gt;
** OSGeo currently deploys a self-hosted &amp;quot;gitlab&amp;quot; repo: https://lists.osgeo.org/pipermail/sac/2016-August/007345.html&lt;br /&gt;
&lt;br /&gt;
... YOUR IDEA HERE ...&lt;br /&gt;
&lt;br /&gt;
== Planned participation ==&lt;br /&gt;
&lt;br /&gt;
For organizational reasons, please '''additionally register''' at: https://wiki.osgeo.org/wiki/FOSS4G_2016_Code_Sprint&lt;br /&gt;
&lt;br /&gt;
=== In person ===&lt;br /&gt;
&lt;br /&gt;
Please add your name here or contact [[User:Lucadelu|Luca Delucchi]] &amp;lt;tt&amp;gt;&amp;lt;lucadeluge at gmail com&amp;gt;&amp;lt;/tt&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;   border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#edf9c7; font-size:95%; empty-cells:show;&amp;quot; &lt;br /&gt;
|width=50px|'''No'''&lt;br /&gt;
|width=130px|'''Participant '''&lt;br /&gt;
|width=100px|'''Country'''&lt;br /&gt;
|width=100px|'''Arrival'''&lt;br /&gt;
|width=100px|'''Departure'''&lt;br /&gt;
|'''Topic'''&lt;br /&gt;
|width=75px|'''T-Shirt'''&lt;br /&gt;
|'''Notes'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Lucadelu|Luca Delucchi]]&lt;br /&gt;
|Italy&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| &lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:Landa|Martin Landa]]&lt;br /&gt;
|Czech Republic&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| &lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|[[User:Neteler|Markus Neteler]]&lt;br /&gt;
|Italy&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| Releases, project coordination, bug hunting, getting more ppl involved&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|[[User:NikosA|Nikos Alexandris]]&lt;br /&gt;
|Switzerland&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
| &lt;br /&gt;
| S or M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|[[User:Veroandreo|Veronica Andreo]]&lt;br /&gt;
|Argentina&lt;br /&gt;
| August 26&lt;br /&gt;
| August 28&lt;br /&gt;
|&lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|[[User:mlennert|Moritz Lennert]]&lt;br /&gt;
|Belgium&lt;br /&gt;
| August 21&lt;br /&gt;
| August 27&lt;br /&gt;
| Releases, OBIA toolchain, GSoC module integration&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|[[User:sbl|Stefan Blumentrath]]&lt;br /&gt;
|Norway&lt;br /&gt;
| August 26&lt;br /&gt;
| August 28&lt;br /&gt;
| Port some Addons to python? (or whatever you put me up to)&lt;br /&gt;
| L&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|[[User:MilenaN|Milena Nowotarska]]&lt;br /&gt;
|Poland&lt;br /&gt;
| August 21&lt;br /&gt;
| August 28&lt;br /&gt;
|&lt;br /&gt;
| M&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|[[User:annazanchetta|Anna Zanchetta]]&lt;br /&gt;
|Italy - Israel&lt;br /&gt;
| August 22&lt;br /&gt;
| August 27&lt;br /&gt;
| Implementing and improving some imagery modules, inshallah&lt;br /&gt;
| S&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Via IRC chat ===&lt;br /&gt;
&lt;br /&gt;
(IRC is a nice archaic chat system, see [[IRC]])&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;   border=&amp;quot;2&amp;quot; cellspacing=&amp;quot;0&amp;quot; cellpadding=&amp;quot;4&amp;quot; rules=&amp;quot;all&amp;quot; style=&amp;quot;margin:1em 1em 1em 0; border:solid 1px #AAAAAA; border-collapse:collapse; background-color:#edf9c7; font-size:95%; empty-cells:show;&amp;quot; &lt;br /&gt;
|width=50px|'''No'''&lt;br /&gt;
|width=130px|'''Participant '''&lt;br /&gt;
|width=100px|'''Country'''&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|[[User:Ychemin|Yann Chemin]]&lt;br /&gt;
|France&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|[[User:hellik|Helmut Kudrnovsky]]&lt;br /&gt;
|Austria &lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Individual Preparation ==&lt;br /&gt;
&lt;br /&gt;
* Bring your own computer&lt;br /&gt;
* Bring [http://en.wikipedia.org/wiki/Mains_electricity_by_country your power connector adapter] if needed (photo: [https://en.wikipedia.org/wiki/File:Schuko_plug_and_socket.png Germany]). See also http://www.power-plugs-sockets.com/&lt;br /&gt;
* Install subversion and the compiler tools, and come with a working GRASS development environment if possible.&lt;br /&gt;
&lt;br /&gt;
== Photos ==&lt;br /&gt;
&lt;br /&gt;
We have to remember to take at least one group photo! :-) &lt;br /&gt;
&lt;br /&gt;
== FAQ ==&lt;br /&gt;
&lt;br /&gt;
* ''Is the GRASS Community Sprint just a coding event?''&lt;br /&gt;
** It is mainly a coding and documentation event. It is a working session for people who are already participants in the GRASS project and/or are committed to improving the GRASS project.&lt;br /&gt;
** On demand we can do some presentations of current working GRASS implementation and new upcoming features to spread the idea of Open Source GIS software&lt;br /&gt;
* ''Is the GRASS Community Sprint for developers only?''&lt;br /&gt;
** No: anybody can help, with testing, checking out bugs and fixes, documentation and more.&lt;br /&gt;
* ''Where can I get help and more information about the community sprint?''&lt;br /&gt;
** Contact [[User:Lucadelu|Luca Delucchi]] &amp;lt;tt&amp;gt;&amp;lt;lucadeluge at gmail com&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Participants and Reports ==&lt;br /&gt;
&lt;br /&gt;
===Moritz===&lt;br /&gt;
* OBIA Toolchain&lt;br /&gt;
** Cleaned up r.object.geometry and moved it to addons {{rev|69187}} + {{rev|69188}}, {{AddonCmd|r.object.geometry}}&lt;br /&gt;
** Modified {{AddonCmd|i.segment.stats}} to user.object.geometry instead of v.to.db&lt;br /&gt;
** Improved error handling in i.segment.stats and use temporary files on disk to reduce memory use&lt;br /&gt;
** Modified {{AddonCmd|i.segment.uspo}} to also allow testing new mean shift algorithm (currently only available in sandbox) {{rev|69236}}&lt;br /&gt;
** Tested mean shift algorithm&lt;br /&gt;
* Working on 6.4.6 release&lt;br /&gt;
** General bug triaging&lt;br /&gt;
** Backported fix of {{trac|1444}} to release_64&lt;br /&gt;
** Backported fix of {{trac|2558}} to release_64&lt;br /&gt;
* Scratched an old itch and implement a flag in {{Cmd|g.region}} to allow shell style output in flat (one line) style {{rev|69240}}&lt;br /&gt;
&lt;br /&gt;
*[https://trac.osgeo.org/grass/timeline?from=Aug+23%2C+2016&amp;amp;daysback=2&amp;amp;authors=mlennert&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;sfp_email=&amp;amp;sfph_mail=&amp;amp;update=Update Log overview]&lt;br /&gt;
&lt;br /&gt;
=== Markus ===&lt;br /&gt;
* assist CRO in cleaning PSC election voter email addresses&lt;br /&gt;
* minor pseudo-mercator discussions&lt;br /&gt;
* major datum shift file discussions with Even Rouault (GDAL) and fellow GRASS sprinters: libproj cleanup of local copies of NAD and datum shift files which are indeed used from GDAL; extended documentation in README.txt ({{trac|2456}}, {{rev|2456}})&lt;br /&gt;
&lt;br /&gt;
=== Anna Petrasova ===&lt;br /&gt;
* {{rev|69199}}: major backport of Adam's GSoC work to 7.2. (please test!)&lt;br /&gt;
* fix {{trac|3133}}, {{trac|2252}}&lt;br /&gt;
&lt;br /&gt;
=== Martin Landa ===&lt;br /&gt;
&lt;br /&gt;
* Fix {{trac|2480}}, {{trac|2765}}&lt;br /&gt;
* Bug reports for 7.0.5 milestone reviewed, outdated tickets closed&lt;br /&gt;
* [https://trac.osgeo.org/grass/timeline?from=Aug+28%2C+2016&amp;amp;daysback=7&amp;amp;authors=martinl&amp;amp;milestone=on&amp;amp;ticket=on&amp;amp;changeset=on&amp;amp;wiki=on&amp;amp;sfp_email=&amp;amp;sfph_mail=&amp;amp;update=Update Log overview]&lt;br /&gt;
&lt;br /&gt;
=== Vero ===&lt;br /&gt;
&lt;br /&gt;
* Tutorial: R-GRASS integration for raster time series handling/processing. Work in progress.&lt;br /&gt;
&lt;br /&gt;
=== Nikos ===&lt;br /&gt;
&lt;br /&gt;
* Patched [https://trac.osgeo.org/grass/changeset/69012/grass/trunk/imagery/i.atcorr/create_iwave.py create_iwave.py], see {{trac|3027}} -- mentored by Moritz.&lt;br /&gt;
* Working on {{Cmd|i.rgb.his}} and {{Cmd|i.his.rgb}} to allow for 16-bit input data (DCELL?)&lt;br /&gt;
* Reviewing options to fuse {{Cmd|i.pansharpen}} with/into {{AddonCmd|i.fusion.hpf}}&lt;br /&gt;
&lt;br /&gt;
[[Category: Workshops]]&lt;br /&gt;
[[Category: Code Sprint]]&lt;br /&gt;
[[Category: 2016]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=QuickBird&amp;diff=23385</id>
		<title>QuickBird</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=QuickBird&amp;diff=23385"/>
		<updated>2016-08-14T08:19:48Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: added i.quickbird.toar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
QuickBird is a commercial earth observation satellite. Details about the sensor are provided at Digital Globe's [http://www.digitalglobe.com/sites/default/files/QuickBird-DS-QB-PROD.pdf QuickBird Data Sheet]. Wikipedia's article on {{wikipedia|QuickBird}} provides an informative overview as well.&lt;br /&gt;
&lt;br /&gt;
=== Quick Facts ===&lt;br /&gt;
&lt;br /&gt;
* Panchromatic (black and white) and Multi-Spectral imagery&lt;br /&gt;
* Multi-spectral bands are ordered as&lt;br /&gt;
&lt;br /&gt;
 band 1 = blue&lt;br /&gt;
      2 = green&lt;br /&gt;
      3 = red&lt;br /&gt;
      4 = Near IR&lt;br /&gt;
&lt;br /&gt;
* Scenes are 16.5km x 16.5km.&lt;br /&gt;
&lt;br /&gt;
* Data is 11-bit integers stored in a 16-bit integer field. Thus band minimum = 0, band maximum = 2047. &amp;lt;!--(&amp;lt;math&amp;gt;2^{11}-1&amp;lt;/math&amp;gt;)--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Available pixel resolutions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! Product&lt;br /&gt;
! Black &amp;amp; White&lt;br /&gt;
! Multispectral&lt;br /&gt;
! Color &amp;amp; Pan-sharpened&lt;br /&gt;
|-&lt;br /&gt;
| Basic&lt;br /&gt;
| 61 cm to 72 cm as collected&lt;br /&gt;
| 2.44 m to 2.88 m as collected&lt;br /&gt;
| not available&lt;br /&gt;
|-&lt;br /&gt;
| Standard&lt;br /&gt;
| 60 cm or 70 cm&lt;br /&gt;
| 2.4 m or 2.8 m&lt;br /&gt;
| 60 cm or 70 cm&lt;br /&gt;
|-&lt;br /&gt;
| Orthorectified&lt;br /&gt;
| 60 cm or 70 cm&lt;br /&gt;
| 2.4 m or 2.8 m&lt;br /&gt;
| 60 cm or 70 cm&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
&lt;br /&gt;
From the whitepaper [http://www.apollomapping.com/wp-content/user_uploads/2011/09/Radiance_Conversion_of_QuickBird_Data.pdf Radiance Conversion of QuickBird Data]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;QuickBird products are delivered to the customer as radiometrically corrected image pixels (qPixel,Band).&lt;br /&gt;
Radiometric correction includes a dark offset subtraction and a non-uniformity correction (detector-to-detector&lt;br /&gt;
relative gain). Corrected counts are specific to the QuickBird instrument and therefore QuickBird imagery MUST be&lt;br /&gt;
converted to spectral radiance before radiometric/spectral analysis or comparison with imagery from other sensors in&lt;br /&gt;
a radiometric/spectral manner.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Availability (Sample Data) ==&lt;br /&gt;
&lt;br /&gt;
* Search for commercial satellite image providers in the internet.&lt;br /&gt;
* Some sample QuickBird2 data are available at Digital Globe's collection of [http://www.digitalglobe.com/product-samples Imagery Product Samples] &lt;br /&gt;
* [http://www.landcover.org/ The Global Land Cover Facility (GLCF)] provides some [http://glcf.umd.edu/data/quickbird/ QuickBird] acqusitions for education or research purposes only.&lt;br /&gt;
&lt;br /&gt;
== Modules overview ==&lt;br /&gt;
&lt;br /&gt;
=== Outside of GRASS ===&lt;br /&gt;
&lt;br /&gt;
* gdalinfo&lt;br /&gt;
* gdalwarp&lt;br /&gt;
&lt;br /&gt;
=== Inside GRASS GIS ===&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.in.gdal}}&lt;br /&gt;
* {{cmd|r.mapcalc}}&lt;br /&gt;
* {{cmd|r.colors}}&lt;br /&gt;
* {{cmd|i.colors.enhance|version=70}}&lt;br /&gt;
* {{AddonSrc|imagery|i.fusion.hpf|version=7}}&lt;br /&gt;
* {{cmd|i.pansharpen|version=70}} (GRASS 7.x)&lt;br /&gt;
* [https://github.com/NikosAlexandris/i.quickbird.toar i.quickbird.toar]&lt;br /&gt;
* {{cmd|i.vi|version=70}} (GRASS 7.x) &lt;br /&gt;
* {{cmd|i.segment|version=70}} (GRASS 7.x)&lt;br /&gt;
&lt;br /&gt;
== Pre-Processing ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
Typically, multispectral satellite data are converted into physical quantities such as ''Radiance'' or ''Reflectance'' before they are subjected in multispectral analysis techniques (image interpretation, band arithmetic, vegetation indices, matrix transformations, etc.). The latter can be differentiated in ''Top of Atmosphere Reflectance'' (ToAR) which does not account for atmospheric effects (absorption or scattering) and in ''Top of Canopy Reflectance'' (ToCR) which introduces a &amp;quot;correction&amp;quot; for atmospheric effects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In order to derive Reflectance values, likewise as with remotely sensed data acquired by other sensors, QuickBird raw image digital numbers (DNs), also referred to as ''radiometrically corrected image pixels'' need to be converted to ''Top of Atmosphere Radiance'' values.  Spectral Radiance values are then converted to Reflectance values based on various acquisition related parameters. Note, ''Spectal Radiance'' is the measure of the quantity of radiation that hits the sensor and typically expressed in &amp;lt;math&amp;gt;\frac{W}{m^2*sr*nm}&amp;lt;/math&amp;gt;, that is ''watts'' per ''unit source area'', per ''unit solid angle'', and per ''unit wavelength''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Converting QuickBird DNs to ''Top of Atmosphere'' Radiance, as described by Keith Krause (2005) in ''Radiometric Use of QuickBird Imagery, Technical Note'', can be done by using the following equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L_{\lambda\text{Pixel, Band}} = \frac{K_{\text{Band}} * q_{\text{Pixel, Band}}}{\Delta\lambda_{\text{Band}}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;where:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;L_{\lambda\text{Pixel,Band}}&amp;lt;/math&amp;gt;:  Top-of-Atmosphere Spectral Radiance image pixels [W-m-2-sr-1-μm-1]&lt;br /&gt;
* &amp;lt;math&amp;gt;K_{\text{Band}}&amp;lt;/math&amp;gt;:  the absolute radiometric calibration factor [W-m-2-sr-1-count-1] for a given band&lt;br /&gt;
* &amp;lt;math&amp;gt;q_{\text{Pixel,Band}}&amp;lt;/math&amp;gt;:  radiometrically corrected image pixels [counts  or  Digital Numbers]&lt;br /&gt;
* &amp;lt;math&amp;gt;\Delta_{\lambda_{\text{Band}}}&amp;lt;/math&amp;gt;:  the effective bandwidth [μm] for a given band&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Converting to Top of Atmosphere Reflectance, also referred to as Planetary Reflectance, can be done by using the following equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\rho_p = \frac{\pi * L\lambda * d^2}{ESUN\lambda * cos(\Theta_S)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;where:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\rho&amp;lt;/math&amp;gt; - Unitless Planetary Reflectance&lt;br /&gt;
* &amp;lt;math&amp;gt;\pi&amp;lt;/math&amp;gt; - mathematical constant (3.14159265358)&lt;br /&gt;
* &amp;lt;math&amp;gt;L\lambda&amp;lt;/math&amp;gt; spectral Radiance at the sensor's aperture, from equation... '''''ToADD'''''&lt;br /&gt;
* &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; - Earth-Sun distance in astronomical units, interpolated values&lt;br /&gt;
* &amp;lt;math&amp;gt;Esun&amp;lt;/math&amp;gt; - Mean solar exoatmospheric irradiance(s) (W/m2/μm), interpolated values&lt;br /&gt;
* &amp;lt;math&amp;gt;cos(\theta_s)&amp;lt;/math&amp;gt; - {{wikipedia||Solar_zenith_angle}} from the image acquisition's metadata&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Importing data ===&lt;br /&gt;
&lt;br /&gt;
==== File Formats &amp;amp; Metadata ====&lt;br /&gt;
&lt;br /&gt;
* GeoTIFF, NITF 2.1, NITF 2.0&lt;br /&gt;
* Image bits / pixel: 8 or 16 bits&lt;br /&gt;
&lt;br /&gt;
Setting up a Location in GRASS GIS requires to know the Spatial Reference System in which the data of interest are projected. Retrieving the projection parameters of QuickBird imagery, can be done by using the `gdalinfo` program.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* Various ways of Location creation based on georeferenced data&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Importing ====&lt;br /&gt;
&lt;br /&gt;
Once inside an appropriate Location, importing the data is done with the {{cmd|r.in.gdal}} module.&lt;br /&gt;
&lt;br /&gt;
For example, GeoTIFF files/bands, can be imported in one go by looping {{cmd|r.in.gdal}} over all of them&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for TIF in `echo *.tif`; do r.in.gdal in=${TIF} out=${TIF%%.*}; done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cleanup ===&lt;br /&gt;
Rename the NIR band&lt;br /&gt;
 {{cmd|g.rename}} QBird_Multichrom.4,QBird_Multichrom.NIR&lt;br /&gt;
&lt;br /&gt;
It is very likely that the Red and Blue bands are swapped (in older datasets), so fix that by renaming them. (see [http://osdir.com/ml/gis.gdal.devel/2004-03/msg00025.html])&lt;br /&gt;
 g.rename QBird_Multichrom.blue,QBird_Multichrom.realred&lt;br /&gt;
 g.rename QBird_Multichrom.red,QBird_Multichrom.blue&lt;br /&gt;
 g.rename QBird_Multichrom.realred,QBird_Multichrom.red&lt;br /&gt;
&lt;br /&gt;
No data is set to 0, so convert that to NULL with {{cmd|r.null}}:&lt;br /&gt;
 for BAND in red green blue NIR ; do&lt;br /&gt;
   r.null QBird_Multichrom.$BAND setnull=0&lt;br /&gt;
   echo $BAND:&lt;br /&gt;
   r.info -r QBird_Multichrom.$BAND&lt;br /&gt;
   echo&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Set color tables appropriately for 11-bit data:&lt;br /&gt;
 for BAND in red green blue NIR ; do&lt;br /&gt;
   {{cmd|r.colors}} QBird_Multichrom.$BAND color=rules &amp;lt;&amp;lt; EOF&lt;br /&gt;
     0 black&lt;br /&gt;
     2047 white&lt;br /&gt;
 EOF&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is not necessarily needed, but if you wish to rescale to 8-bit data you can use {{cmd|r.rescale}} as follows:&lt;br /&gt;
 for BAND in red green blue NIR ; do&lt;br /&gt;
   r.rescale in=QBird_Multichrom.$BAND from=0,2047 \&lt;br /&gt;
      out=QBird_Multichrom255.$BAND to=0,255&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Display the 3-band RGB image:&lt;br /&gt;
 {{cmd|d.rgb}} r=QBird_Multichrom.red g=QBird_Multichrom.green b=QBird_Multichrom.blue&lt;br /&gt;
&lt;br /&gt;
If the image is excessively dark you might try using the {{cmd|i.landsat.rgb}} module to auto-balance the colors and redraw:&lt;br /&gt;
 i.landsat.rgb r=QBird_Multichrom.red g=QBird_Multichrom.green b=QBird_Multichrom.blue&lt;br /&gt;
 d.redraw&lt;br /&gt;
&lt;br /&gt;
=== Deriving Physical Quantities ===&lt;br /&gt;
&lt;br /&gt;
Converting Digital Numbers to Radiance/Reflectance requires knowledge about the sensor's specific spectral band parameters. These are, as extracted from the document ''Radiometric Use of QuickBird Imagery, Technical Note. 2005-11-07, by Keith Krause.''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# Band-Averaged Solar Spectral Irradiance [W/sq.m./μm]&lt;br /&gt;
Pan_Esun=1381.79&lt;br /&gt;
Blue_Esun=1924.59&lt;br /&gt;
Green_Esun=1843.08&lt;br /&gt;
Red_Esun=1574.77&lt;br /&gt;
NIR_Esun=1113.71&lt;br /&gt;
&lt;br /&gt;
# Revised K Factors &amp;amp; Effective Bandwidths&lt;br /&gt;
&lt;br /&gt;
# 1st column: K Conversion Factors (&amp;amp; Pan TDI Level) for  16-Bit  products [W/sq.m./sr/count]&lt;br /&gt;
# 2nd column: Effective Bandwidth [μm] per Spectral Band&lt;br /&gt;
&lt;br /&gt;
K16_Pan10=0.08381880	;	Pan10_Width=0.398&lt;br /&gt;
K16_Pan13=0.06447600	;	Pan13_Width=0.398&lt;br /&gt;
K16_Pan18=0.04656600	;	Pan18_Width=0.398&lt;br /&gt;
K16_Pan24=0.03494440	;	Pan24_Width=0.398&lt;br /&gt;
K16_Pan32=0.02618840	;	Pan32_Width=0.398&lt;br /&gt;
K16_Blue=0.01604120	;	Blue_Width=0.068&lt;br /&gt;
K16_Green=0.01438470	;	Green_Width=0.099&lt;br /&gt;
K16_Red=0.01267350	;	Red_Width=0.071&lt;br /&gt;
K16_NIR=0.01542420	;	NIR_Width=0.114&lt;br /&gt;
&lt;br /&gt;
# 1st column: k′ Conversion Factors for  8-Bit  products&lt;br /&gt;
# 2nd column being identical (as above) not repeated!&lt;br /&gt;
&lt;br /&gt;
K8_Pan10=1.02681367&lt;br /&gt;
K8_Pan13=1.02848939&lt;br /&gt;
K8_Pan18=1.02794702&lt;br /&gt;
K8_Pan24=1.02989685&lt;br /&gt;
K8_Pan32=1.02739898&lt;br /&gt;
K8_Blue=1.12097834&lt;br /&gt;
K8_Green=1.37652632&lt;br /&gt;
K8_Red=1.30924587&lt;br /&gt;
K8_NIR=0.98368622&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attention for 32-bit floating point calculations is requried. As stated, in the same document,&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''NOTE: conversion equations are to be performed on all pixels in a given band of a QuickBird image and should use 32-bit floating point calculations.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Spectral Radiance ====&lt;br /&gt;
&lt;br /&gt;
Converting a Blue Band (Digital Numbers) in to Spectral Radiance in the ''correct'' units to be further used for the conversion in to unitless Reflectance:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# set the region&lt;br /&gt;
g.region rast=Blue_DNs -p&lt;br /&gt;
&lt;br /&gt;
# convert DNs to spectral Radiance values&lt;br /&gt;
r.mapcalc &amp;quot;Blue_Radiance = '''ToAdd''' &amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Planetary Reflectance ====&lt;br /&gt;
&lt;br /&gt;
The equation to derive Reflectance values incorporates in addition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* The mathematical constant {{wikipedia|Pi}} &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;PI=3.14159265358&amp;lt;/source&amp;gt;.&lt;br /&gt;
* The Earth-Sun distance in astronomical units which depends on the acquisition's day of year (DOY -- also referred to as Julian day, {{wikipedia|Ordinal_date}}) and can be retrieved from the following spreadsheet &amp;lt;http://landsathandbook.gsfc.nasa.gov/excel_docs/d.xls&amp;gt;.&lt;br /&gt;
* The mean solar exoatmospheric irradiance in &amp;lt;math&amp;gt;\frac{W}{m^2*\mu m}&amp;lt;/math&amp;gt;. See 3rd column of (interplated) values given above.&lt;br /&gt;
* The cosine of the ''Solar Zenith Angle'' (SZA) at the time of the acquisition. The SZA can be calculated from its complementary ''Solar Elevation Angle'' (SEA) given in the image acquisition's metadata.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following example we accept as the acquisition's &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;DOY=...&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;SEA=...&amp;lt;/source&amp;gt;. Hence, we get the Earth-Sun distance &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;ESD=...&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;SZA = ... deg&amp;lt;/source&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Converting the in-Blue spectral band at-sensor Radiance in to Planerary Reflectance:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;PI=3.14159265358; ESD=...; BAND_Esun=...; SZA=...&amp;lt;/source&amp;gt;&lt;br /&gt;
 {{cmd|r.mapcalc}} &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;&amp;quot;Blue_Reflectance = ( ${PI} * Blue_Radiance * ${ESD}^2 ) / ( ${BAND_Esun} * cos(${SZA}) )&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Automatising Conversions ====&lt;br /&gt;
&lt;br /&gt;
Scripting the conversion process avoids repeating the same steps for each band separately.&lt;br /&gt;
&lt;br /&gt;
===== in Python =====&lt;br /&gt;
&lt;br /&gt;
A custom python script, performing the operations of interest, might be like [https://github.com/NikosAlexandris/i.quickbird.toar i.quickbird.toar (for GRASS 7.x)]&lt;br /&gt;
&lt;br /&gt;
===== in bash =====&lt;br /&gt;
&lt;br /&gt;
Am example bash shell script, might look like the one that follows. '''Note,''' however, constants, band parameters and acquisition related metadata are hard-coded! Reviewing the code and altering appropriately is required, i.e. checking for the parameters &amp;lt;code&amp;gt;ESD&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SEA&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;PanTDI&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;K_BAND&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!bin/bash&lt;br /&gt;
&lt;br /&gt;
# Pi, first 11 decimals&lt;br /&gt;
PI=3.14159265358&lt;br /&gt;
&lt;br /&gt;
# HardCoded MetaData!&lt;br /&gt;
&lt;br /&gt;
  # Acquisition's Day of Year and estimated Earth-Sun Distance&lt;br /&gt;
  DOY=274; ESD=1.001190 &lt;br /&gt;
&lt;br /&gt;
  # Sun Zenith Angle based on the acquisition's Sun Elevation Angle&lt;br /&gt;
  SEA=67.8; SZA=$(echo &amp;quot;90 - ${SEA}&amp;quot; | bc )&lt;br /&gt;
&lt;br /&gt;
  # which Pan TDI level?&lt;br /&gt;
  PanTDI=&amp;quot;10&amp;quot;  # evaluate below...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Spectral Irradiance [W-m-2-μm-1] 	&lt;br /&gt;
&lt;br /&gt;
Pan_Esun=1381.79&lt;br /&gt;
Blue_Esun=1924.59&lt;br /&gt;
Green_Esun=1843.08&lt;br /&gt;
Red_Esun=1574.77&lt;br /&gt;
NIR_Esun=1113.71&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# 1st column: K Conversion Factors for   16-Bit   products&lt;br /&gt;
# 2nd column: Effective Bandwidth [μm] per Spectral Band&lt;br /&gt;
&lt;br /&gt;
K16_Pan10=0.08381880;	Pan10_Width=0.398&lt;br /&gt;
K16_Pan13=0.06447600;	Pan13_Width=0.398&lt;br /&gt;
K16_Pan18=0.04656600;	Pan18_Width=0.398&lt;br /&gt;
K16_Pan24=0.03494440;	Pan24_Width=0.398&lt;br /&gt;
K16_Pan32=0.02618840;	Pan32_Width=0.398&lt;br /&gt;
K16_Blue=0.01604120 ;	Blue_Width=0.068&lt;br /&gt;
K16_Green=0.01438470;	Green_Width=0.099&lt;br /&gt;
K16_Red=0.01267350  ;	Red_Width=0.071&lt;br /&gt;
K16_NIR=0.01542420  ;	NIR_Width=0.114&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# 1st column: k′ Conversion Factors for   8-Bit   products&lt;br /&gt;
# Effective Bandwidths [μm] per Spectral Band: as above&lt;br /&gt;
&lt;br /&gt;
K8_Pan10=1.02681367&lt;br /&gt;
K8_Pan13=1.02848939&lt;br /&gt;
K8_Pan18=1.02794702&lt;br /&gt;
K8_Pan24=1.02989685&lt;br /&gt;
K8_Pan32=1.02739898&lt;br /&gt;
K8_Blue=1.12097834&lt;br /&gt;
K8_Green=1.37652632&lt;br /&gt;
K8_Red=1.30924587&lt;br /&gt;
K8_NIR=0.98368622&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Bands&lt;br /&gt;
Spectral_Bands=&amp;quot;Pan Blue Green Red NIR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# loop over all bands&lt;br /&gt;
for BAND in ${Spectral_Bands}; do&lt;br /&gt;
&lt;br /&gt;
  # which Pan TDI level?&lt;br /&gt;
  if [[ ${BAND} == Pan ]]&lt;br /&gt;
  then&lt;br /&gt;
    eval Pan=&amp;quot;Pan${PanTDI}&amp;quot;; echo &amp;quot;Note, processing for ${Pan}&amp;quot;&lt;br /&gt;
    eval BAND=&amp;quot;${Pan}&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
  # some echo...&lt;br /&gt;
  echo &amp;quot;Processing the ${BAND} spectral band&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # set band parameters as variables  -- using  K16  for 16-bit data!&lt;br /&gt;
  eval K_BAND=&amp;quot;K16_${BAND}&amp;quot;&lt;br /&gt;
  eval BAND_Width=&amp;quot;${BAND}_Width&amp;quot;&lt;br /&gt;
  echo &amp;quot;Band Parameters set to K=${!K_BAND}, Bandwidth=${!BAND_Width}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  if [[ ${BAND} == Pan* ]]&lt;br /&gt;
  then&lt;br /&gt;
    BAND=&amp;quot;Pan&amp;quot; ; echo &amp;quot;Processing the ${BAND} spectral band&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
  # set region&lt;br /&gt;
  g.region rast=${BAND}_DNs #-pg&lt;br /&gt;
  echo &amp;quot;Region matching the ${BAND} spectral band&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # conversion to Radiance based on (1) -- attention: 32-bit calculations required&lt;br /&gt;
  r.mapcalc &amp;quot;${BAND}_Radiance = ( double(${!K_BAND}) * ${BAND}_DNs ) / ${!BAND_Width}&amp;quot;&lt;br /&gt;
  r.info -r &amp;quot;${BAND}_Radiance&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # add info&lt;br /&gt;
  r.support map=${BAND}_Radiance \&lt;br /&gt;
  title=&amp;quot;&amp;quot; \&lt;br /&gt;
  units=&amp;quot;W / sq.m. / μm / ster&amp;quot; \&lt;br /&gt;
  description=&amp;quot;Top-of-Atmosphere `echo ${BAND}` band spectral Radiance [W/m^2/sr/μm]&amp;quot; \&lt;br /&gt;
  source1='&amp;quot;Radiometric Use of QuickBird Imagery, Technical Note (2005),&amp;quot; by Keith Krause, Digital Globe'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  eval BAND_Esun=&amp;quot;${BAND}_Esun&amp;quot;; echo &amp;quot;Using Esun=${!BAND_Esun}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # calculate ToAR  -- ${BAND}_Radiance is already 32-bit -- see above!&lt;br /&gt;
  r.mapcalc &amp;quot;${BAND}_ToAR = \&lt;br /&gt;
	( ${PI} * ${BAND}_Radiance * ${ESD}^2 ) / ( ${!BAND_Esun} * cos(${SZA}) )&amp;quot;&lt;br /&gt;
  r.info -r ${BAND}_ToAR&lt;br /&gt;
&lt;br /&gt;
  # add some metadata&lt;br /&gt;
  r.support map=${BAND}_ToAR \&lt;br /&gt;
  title=&amp;quot;echo ${BAND} band (Top of Atmosphere Reflectance)&amp;quot; \&lt;br /&gt;
  units=&amp;quot;Unitless planetary reflectance&amp;quot; \&lt;br /&gt;
  description=&amp;quot;Top of Atmosphere `echo ${BAND}` band spectral Reflectance (unitless)&amp;quot; \&lt;br /&gt;
  source1='&amp;quot;Radiometric Use of QuickBird Imagery, Technical Note (2005),&amp;quot; by Keith Krause, Digital Globe' \&lt;br /&gt;
  source2=&amp;quot;Digital Globe&amp;quot; \&lt;br /&gt;
  history=&amp;quot;PI=3.14159265358; K=${!K_BAND}; Bandwidth=${!BAND_Width}; ESD=${ESD}; Esun=${!BAND_Esun}; SZA=${SZA}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Atmospheric correction ===&lt;br /&gt;
&lt;br /&gt;
See [[Atmospheric correction]]&lt;br /&gt;
&lt;br /&gt;
== Post-Processing ==&lt;br /&gt;
&lt;br /&gt;
Having beforehand satellite image data expressed in physical quantities (radiance or reflectance) is preferred to follow-up with digital image analysis techniques.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pan Sharpening ==&lt;br /&gt;
&lt;br /&gt;
In GRASS ver. 6.x, one can use the {{cmd|i.fusion.brovey}} module.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i.fusion.brovey -q ms1=qbird_green ms2=qbird_nir ms3=qbird_red pan=qbird_pan outputprefix=brov&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Documentation]]&lt;br /&gt;
[[Category: Geodata]]&lt;br /&gt;
[[Category: High Resolution]]&lt;br /&gt;
[[Category: QuikBird]]&lt;br /&gt;
[[Category: Import]]&lt;br /&gt;
[[Category: Digital Numbers]]&lt;br /&gt;
[[Category: Radiance]]&lt;br /&gt;
[[Category: Reflectance]]&lt;br /&gt;
[[Category: Image processing]]&lt;br /&gt;
&lt;br /&gt;
=== HPFA based sharpening ===&lt;br /&gt;
&lt;br /&gt;
The following screenshots exemplify the High Pass Filtering Addition fusion technique applied in a fragment of the QuickBird acquisition &amp;quot;04APR05050541-X2AS_R1C1-000000186011_01_P001-Sri_Lanka-Kokilai_Lagoon&amp;quot; which is publicly available via the GLCF. An implementation of this technique for GRASS-GIS is available as a grass-addon {{AddonSrc|imagery|i.fusion.hpf|version=7}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[File:Pan_04APR05050541-M2AS-000000186011_01_P001.jpg|thumb|400px|border|center|Fragment from the high resolution (0.7m) panchromatic image]]&lt;br /&gt;
|[[File:RGB_04APR05050541-M2AS-000000186011_01_P001.jpg|thumb|400px|border|center|Fragment from the low resolution (2.8m) multi-spectral RGB composite image]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[File:RGB_HPF_Sharpened_Default_Parameters.jpg|thumb|400px|border|center|Fragment from the HPFA Pan-Sharpened RGB composite image. Sharpening performed with default parameters.]]&lt;br /&gt;
|[[File:RGB_HPF_Sharpened_Center_Low_Modulator_Min.jpg|thumb|400px|border|center|Fragment from another HPFA Pan-Sharpened RGB composite image. Sharpening performed with ''center=low'' and ''modulator=min'' parameters.]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=QuickBird&amp;diff=23384</id>
		<title>QuickBird</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=QuickBird&amp;diff=23384"/>
		<updated>2016-08-14T08:17:17Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: updated list of grass related modules&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
QuickBird is a commercial earth observation satellite. Details about the sensor are provided at Digital Globe's [http://www.digitalglobe.com/sites/default/files/QuickBird-DS-QB-PROD.pdf QuickBird Data Sheet]. Wikipedia's article on {{wikipedia|QuickBird}} provides an informative overview as well.&lt;br /&gt;
&lt;br /&gt;
=== Quick Facts ===&lt;br /&gt;
&lt;br /&gt;
* Panchromatic (black and white) and Multi-Spectral imagery&lt;br /&gt;
* Multi-spectral bands are ordered as&lt;br /&gt;
&lt;br /&gt;
 band 1 = blue&lt;br /&gt;
      2 = green&lt;br /&gt;
      3 = red&lt;br /&gt;
      4 = Near IR&lt;br /&gt;
&lt;br /&gt;
* Scenes are 16.5km x 16.5km.&lt;br /&gt;
&lt;br /&gt;
* Data is 11-bit integers stored in a 16-bit integer field. Thus band minimum = 0, band maximum = 2047. &amp;lt;!--(&amp;lt;math&amp;gt;2^{11}-1&amp;lt;/math&amp;gt;)--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Available pixel resolutions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! Product&lt;br /&gt;
! Black &amp;amp; White&lt;br /&gt;
! Multispectral&lt;br /&gt;
! Color &amp;amp; Pan-sharpened&lt;br /&gt;
|-&lt;br /&gt;
| Basic&lt;br /&gt;
| 61 cm to 72 cm as collected&lt;br /&gt;
| 2.44 m to 2.88 m as collected&lt;br /&gt;
| not available&lt;br /&gt;
|-&lt;br /&gt;
| Standard&lt;br /&gt;
| 60 cm or 70 cm&lt;br /&gt;
| 2.4 m or 2.8 m&lt;br /&gt;
| 60 cm or 70 cm&lt;br /&gt;
|-&lt;br /&gt;
| Orthorectified&lt;br /&gt;
| 60 cm or 70 cm&lt;br /&gt;
| 2.4 m or 2.8 m&lt;br /&gt;
| 60 cm or 70 cm&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
&lt;br /&gt;
From the whitepaper [http://www.apollomapping.com/wp-content/user_uploads/2011/09/Radiance_Conversion_of_QuickBird_Data.pdf Radiance Conversion of QuickBird Data]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;QuickBird products are delivered to the customer as radiometrically corrected image pixels (qPixel,Band).&lt;br /&gt;
Radiometric correction includes a dark offset subtraction and a non-uniformity correction (detector-to-detector&lt;br /&gt;
relative gain). Corrected counts are specific to the QuickBird instrument and therefore QuickBird imagery MUST be&lt;br /&gt;
converted to spectral radiance before radiometric/spectral analysis or comparison with imagery from other sensors in&lt;br /&gt;
a radiometric/spectral manner.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Availability (Sample Data) ==&lt;br /&gt;
&lt;br /&gt;
* Search for commercial satellite image providers in the internet.&lt;br /&gt;
* Some sample QuickBird2 data are available at Digital Globe's collection of [http://www.digitalglobe.com/product-samples Imagery Product Samples] &lt;br /&gt;
* [http://www.landcover.org/ The Global Land Cover Facility (GLCF)] provides some [http://glcf.umd.edu/data/quickbird/ QuickBird] acqusitions for education or research purposes only.&lt;br /&gt;
&lt;br /&gt;
== Modules overview ==&lt;br /&gt;
&lt;br /&gt;
=== Outside of GRASS ===&lt;br /&gt;
&lt;br /&gt;
* gdalinfo&lt;br /&gt;
* gdalwarp&lt;br /&gt;
&lt;br /&gt;
=== Inside GRASS GIS ===&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.in.gdal}}&lt;br /&gt;
* {{cmd|r.mapcalc}}&lt;br /&gt;
* {{cmd|r.colors}}&lt;br /&gt;
* {{cmd|i.colors.enhance|version=70}}&lt;br /&gt;
* {{AddonSrc|imagery|i.fusion.hpf|version=7}}&lt;br /&gt;
* {{cmd|i.pansharpen|version=70}} (GRASS 7.x)&lt;br /&gt;
* {{cmd|i.vi|version=70}} (GRASS 7.x) &lt;br /&gt;
* {{cmd|i.segment|version=70}} (GRASS 7.x)&lt;br /&gt;
&lt;br /&gt;
== Pre-Processing ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
Typically, multispectral satellite data are converted into physical quantities such as ''Radiance'' or ''Reflectance'' before they are subjected in multispectral analysis techniques (image interpretation, band arithmetic, vegetation indices, matrix transformations, etc.). The latter can be differentiated in ''Top of Atmosphere Reflectance'' (ToAR) which does not account for atmospheric effects (absorption or scattering) and in ''Top of Canopy Reflectance'' (ToCR) which introduces a &amp;quot;correction&amp;quot; for atmospheric effects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In order to derive Reflectance values, likewise as with remotely sensed data acquired by other sensors, QuickBird raw image digital numbers (DNs), also referred to as ''radiometrically corrected image pixels'' need to be converted to ''Top of Atmosphere Radiance'' values.  Spectral Radiance values are then converted to Reflectance values based on various acquisition related parameters. Note, ''Spectal Radiance'' is the measure of the quantity of radiation that hits the sensor and typically expressed in &amp;lt;math&amp;gt;\frac{W}{m^2*sr*nm}&amp;lt;/math&amp;gt;, that is ''watts'' per ''unit source area'', per ''unit solid angle'', and per ''unit wavelength''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Converting QuickBird DNs to ''Top of Atmosphere'' Radiance, as described by Keith Krause (2005) in ''Radiometric Use of QuickBird Imagery, Technical Note'', can be done by using the following equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L_{\lambda\text{Pixel, Band}} = \frac{K_{\text{Band}} * q_{\text{Pixel, Band}}}{\Delta\lambda_{\text{Band}}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;where:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;L_{\lambda\text{Pixel,Band}}&amp;lt;/math&amp;gt;:  Top-of-Atmosphere Spectral Radiance image pixels [W-m-2-sr-1-μm-1]&lt;br /&gt;
* &amp;lt;math&amp;gt;K_{\text{Band}}&amp;lt;/math&amp;gt;:  the absolute radiometric calibration factor [W-m-2-sr-1-count-1] for a given band&lt;br /&gt;
* &amp;lt;math&amp;gt;q_{\text{Pixel,Band}}&amp;lt;/math&amp;gt;:  radiometrically corrected image pixels [counts  or  Digital Numbers]&lt;br /&gt;
* &amp;lt;math&amp;gt;\Delta_{\lambda_{\text{Band}}}&amp;lt;/math&amp;gt;:  the effective bandwidth [μm] for a given band&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Converting to Top of Atmosphere Reflectance, also referred to as Planetary Reflectance, can be done by using the following equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\rho_p = \frac{\pi * L\lambda * d^2}{ESUN\lambda * cos(\Theta_S)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;where:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\rho&amp;lt;/math&amp;gt; - Unitless Planetary Reflectance&lt;br /&gt;
* &amp;lt;math&amp;gt;\pi&amp;lt;/math&amp;gt; - mathematical constant (3.14159265358)&lt;br /&gt;
* &amp;lt;math&amp;gt;L\lambda&amp;lt;/math&amp;gt; spectral Radiance at the sensor's aperture, from equation... '''''ToADD'''''&lt;br /&gt;
* &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; - Earth-Sun distance in astronomical units, interpolated values&lt;br /&gt;
* &amp;lt;math&amp;gt;Esun&amp;lt;/math&amp;gt; - Mean solar exoatmospheric irradiance(s) (W/m2/μm), interpolated values&lt;br /&gt;
* &amp;lt;math&amp;gt;cos(\theta_s)&amp;lt;/math&amp;gt; - {{wikipedia||Solar_zenith_angle}} from the image acquisition's metadata&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Importing data ===&lt;br /&gt;
&lt;br /&gt;
==== File Formats &amp;amp; Metadata ====&lt;br /&gt;
&lt;br /&gt;
* GeoTIFF, NITF 2.1, NITF 2.0&lt;br /&gt;
* Image bits / pixel: 8 or 16 bits&lt;br /&gt;
&lt;br /&gt;
Setting up a Location in GRASS GIS requires to know the Spatial Reference System in which the data of interest are projected. Retrieving the projection parameters of QuickBird imagery, can be done by using the `gdalinfo` program.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* Various ways of Location creation based on georeferenced data&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Importing ====&lt;br /&gt;
&lt;br /&gt;
Once inside an appropriate Location, importing the data is done with the {{cmd|r.in.gdal}} module.&lt;br /&gt;
&lt;br /&gt;
For example, GeoTIFF files/bands, can be imported in one go by looping {{cmd|r.in.gdal}} over all of them&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for TIF in `echo *.tif`; do r.in.gdal in=${TIF} out=${TIF%%.*}; done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cleanup ===&lt;br /&gt;
Rename the NIR band&lt;br /&gt;
 {{cmd|g.rename}} QBird_Multichrom.4,QBird_Multichrom.NIR&lt;br /&gt;
&lt;br /&gt;
It is very likely that the Red and Blue bands are swapped (in older datasets), so fix that by renaming them. (see [http://osdir.com/ml/gis.gdal.devel/2004-03/msg00025.html])&lt;br /&gt;
 g.rename QBird_Multichrom.blue,QBird_Multichrom.realred&lt;br /&gt;
 g.rename QBird_Multichrom.red,QBird_Multichrom.blue&lt;br /&gt;
 g.rename QBird_Multichrom.realred,QBird_Multichrom.red&lt;br /&gt;
&lt;br /&gt;
No data is set to 0, so convert that to NULL with {{cmd|r.null}}:&lt;br /&gt;
 for BAND in red green blue NIR ; do&lt;br /&gt;
   r.null QBird_Multichrom.$BAND setnull=0&lt;br /&gt;
   echo $BAND:&lt;br /&gt;
   r.info -r QBird_Multichrom.$BAND&lt;br /&gt;
   echo&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Set color tables appropriately for 11-bit data:&lt;br /&gt;
 for BAND in red green blue NIR ; do&lt;br /&gt;
   {{cmd|r.colors}} QBird_Multichrom.$BAND color=rules &amp;lt;&amp;lt; EOF&lt;br /&gt;
     0 black&lt;br /&gt;
     2047 white&lt;br /&gt;
 EOF&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is not necessarily needed, but if you wish to rescale to 8-bit data you can use {{cmd|r.rescale}} as follows:&lt;br /&gt;
 for BAND in red green blue NIR ; do&lt;br /&gt;
   r.rescale in=QBird_Multichrom.$BAND from=0,2047 \&lt;br /&gt;
      out=QBird_Multichrom255.$BAND to=0,255&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Display the 3-band RGB image:&lt;br /&gt;
 {{cmd|d.rgb}} r=QBird_Multichrom.red g=QBird_Multichrom.green b=QBird_Multichrom.blue&lt;br /&gt;
&lt;br /&gt;
If the image is excessively dark you might try using the {{cmd|i.landsat.rgb}} module to auto-balance the colors and redraw:&lt;br /&gt;
 i.landsat.rgb r=QBird_Multichrom.red g=QBird_Multichrom.green b=QBird_Multichrom.blue&lt;br /&gt;
 d.redraw&lt;br /&gt;
&lt;br /&gt;
=== Deriving Physical Quantities ===&lt;br /&gt;
&lt;br /&gt;
Converting Digital Numbers to Radiance/Reflectance requires knowledge about the sensor's specific spectral band parameters. These are, as extracted from the document ''Radiometric Use of QuickBird Imagery, Technical Note. 2005-11-07, by Keith Krause.''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# Band-Averaged Solar Spectral Irradiance [W/sq.m./μm]&lt;br /&gt;
Pan_Esun=1381.79&lt;br /&gt;
Blue_Esun=1924.59&lt;br /&gt;
Green_Esun=1843.08&lt;br /&gt;
Red_Esun=1574.77&lt;br /&gt;
NIR_Esun=1113.71&lt;br /&gt;
&lt;br /&gt;
# Revised K Factors &amp;amp; Effective Bandwidths&lt;br /&gt;
&lt;br /&gt;
# 1st column: K Conversion Factors (&amp;amp; Pan TDI Level) for  16-Bit  products [W/sq.m./sr/count]&lt;br /&gt;
# 2nd column: Effective Bandwidth [μm] per Spectral Band&lt;br /&gt;
&lt;br /&gt;
K16_Pan10=0.08381880	;	Pan10_Width=0.398&lt;br /&gt;
K16_Pan13=0.06447600	;	Pan13_Width=0.398&lt;br /&gt;
K16_Pan18=0.04656600	;	Pan18_Width=0.398&lt;br /&gt;
K16_Pan24=0.03494440	;	Pan24_Width=0.398&lt;br /&gt;
K16_Pan32=0.02618840	;	Pan32_Width=0.398&lt;br /&gt;
K16_Blue=0.01604120	;	Blue_Width=0.068&lt;br /&gt;
K16_Green=0.01438470	;	Green_Width=0.099&lt;br /&gt;
K16_Red=0.01267350	;	Red_Width=0.071&lt;br /&gt;
K16_NIR=0.01542420	;	NIR_Width=0.114&lt;br /&gt;
&lt;br /&gt;
# 1st column: k′ Conversion Factors for  8-Bit  products&lt;br /&gt;
# 2nd column being identical (as above) not repeated!&lt;br /&gt;
&lt;br /&gt;
K8_Pan10=1.02681367&lt;br /&gt;
K8_Pan13=1.02848939&lt;br /&gt;
K8_Pan18=1.02794702&lt;br /&gt;
K8_Pan24=1.02989685&lt;br /&gt;
K8_Pan32=1.02739898&lt;br /&gt;
K8_Blue=1.12097834&lt;br /&gt;
K8_Green=1.37652632&lt;br /&gt;
K8_Red=1.30924587&lt;br /&gt;
K8_NIR=0.98368622&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attention for 32-bit floating point calculations is requried. As stated, in the same document,&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''NOTE: conversion equations are to be performed on all pixels in a given band of a QuickBird image and should use 32-bit floating point calculations.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Spectral Radiance ====&lt;br /&gt;
&lt;br /&gt;
Converting a Blue Band (Digital Numbers) in to Spectral Radiance in the ''correct'' units to be further used for the conversion in to unitless Reflectance:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# set the region&lt;br /&gt;
g.region rast=Blue_DNs -p&lt;br /&gt;
&lt;br /&gt;
# convert DNs to spectral Radiance values&lt;br /&gt;
r.mapcalc &amp;quot;Blue_Radiance = '''ToAdd''' &amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Planetary Reflectance ====&lt;br /&gt;
&lt;br /&gt;
The equation to derive Reflectance values incorporates in addition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* The mathematical constant {{wikipedia|Pi}} &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;PI=3.14159265358&amp;lt;/source&amp;gt;.&lt;br /&gt;
* The Earth-Sun distance in astronomical units which depends on the acquisition's day of year (DOY -- also referred to as Julian day, {{wikipedia|Ordinal_date}}) and can be retrieved from the following spreadsheet &amp;lt;http://landsathandbook.gsfc.nasa.gov/excel_docs/d.xls&amp;gt;.&lt;br /&gt;
* The mean solar exoatmospheric irradiance in &amp;lt;math&amp;gt;\frac{W}{m^2*\mu m}&amp;lt;/math&amp;gt;. See 3rd column of (interplated) values given above.&lt;br /&gt;
* The cosine of the ''Solar Zenith Angle'' (SZA) at the time of the acquisition. The SZA can be calculated from its complementary ''Solar Elevation Angle'' (SEA) given in the image acquisition's metadata.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following example we accept as the acquisition's &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;DOY=...&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;SEA=...&amp;lt;/source&amp;gt;. Hence, we get the Earth-Sun distance &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;ESD=...&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;SZA = ... deg&amp;lt;/source&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Converting the in-Blue spectral band at-sensor Radiance in to Planerary Reflectance:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;PI=3.14159265358; ESD=...; BAND_Esun=...; SZA=...&amp;lt;/source&amp;gt;&lt;br /&gt;
 {{cmd|r.mapcalc}} &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;&amp;quot;Blue_Reflectance = ( ${PI} * Blue_Radiance * ${ESD}^2 ) / ( ${BAND_Esun} * cos(${SZA}) )&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Automatising Conversions ====&lt;br /&gt;
&lt;br /&gt;
Scripting the conversion process avoids repeating the same steps for each band separately.&lt;br /&gt;
&lt;br /&gt;
===== in Python =====&lt;br /&gt;
&lt;br /&gt;
A custom python script, performing the operations of interest, might be like [https://github.com/NikosAlexandris/i.quickbird.toar i.quickbird.toar (for GRASS 7.x)]&lt;br /&gt;
&lt;br /&gt;
===== in bash =====&lt;br /&gt;
&lt;br /&gt;
Am example bash shell script, might look like the one that follows. '''Note,''' however, constants, band parameters and acquisition related metadata are hard-coded! Reviewing the code and altering appropriately is required, i.e. checking for the parameters &amp;lt;code&amp;gt;ESD&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SEA&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;PanTDI&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;K_BAND&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!bin/bash&lt;br /&gt;
&lt;br /&gt;
# Pi, first 11 decimals&lt;br /&gt;
PI=3.14159265358&lt;br /&gt;
&lt;br /&gt;
# HardCoded MetaData!&lt;br /&gt;
&lt;br /&gt;
  # Acquisition's Day of Year and estimated Earth-Sun Distance&lt;br /&gt;
  DOY=274; ESD=1.001190 &lt;br /&gt;
&lt;br /&gt;
  # Sun Zenith Angle based on the acquisition's Sun Elevation Angle&lt;br /&gt;
  SEA=67.8; SZA=$(echo &amp;quot;90 - ${SEA}&amp;quot; | bc )&lt;br /&gt;
&lt;br /&gt;
  # which Pan TDI level?&lt;br /&gt;
  PanTDI=&amp;quot;10&amp;quot;  # evaluate below...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Spectral Irradiance [W-m-2-μm-1] 	&lt;br /&gt;
&lt;br /&gt;
Pan_Esun=1381.79&lt;br /&gt;
Blue_Esun=1924.59&lt;br /&gt;
Green_Esun=1843.08&lt;br /&gt;
Red_Esun=1574.77&lt;br /&gt;
NIR_Esun=1113.71&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# 1st column: K Conversion Factors for   16-Bit   products&lt;br /&gt;
# 2nd column: Effective Bandwidth [μm] per Spectral Band&lt;br /&gt;
&lt;br /&gt;
K16_Pan10=0.08381880;	Pan10_Width=0.398&lt;br /&gt;
K16_Pan13=0.06447600;	Pan13_Width=0.398&lt;br /&gt;
K16_Pan18=0.04656600;	Pan18_Width=0.398&lt;br /&gt;
K16_Pan24=0.03494440;	Pan24_Width=0.398&lt;br /&gt;
K16_Pan32=0.02618840;	Pan32_Width=0.398&lt;br /&gt;
K16_Blue=0.01604120 ;	Blue_Width=0.068&lt;br /&gt;
K16_Green=0.01438470;	Green_Width=0.099&lt;br /&gt;
K16_Red=0.01267350  ;	Red_Width=0.071&lt;br /&gt;
K16_NIR=0.01542420  ;	NIR_Width=0.114&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# 1st column: k′ Conversion Factors for   8-Bit   products&lt;br /&gt;
# Effective Bandwidths [μm] per Spectral Band: as above&lt;br /&gt;
&lt;br /&gt;
K8_Pan10=1.02681367&lt;br /&gt;
K8_Pan13=1.02848939&lt;br /&gt;
K8_Pan18=1.02794702&lt;br /&gt;
K8_Pan24=1.02989685&lt;br /&gt;
K8_Pan32=1.02739898&lt;br /&gt;
K8_Blue=1.12097834&lt;br /&gt;
K8_Green=1.37652632&lt;br /&gt;
K8_Red=1.30924587&lt;br /&gt;
K8_NIR=0.98368622&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Bands&lt;br /&gt;
Spectral_Bands=&amp;quot;Pan Blue Green Red NIR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# loop over all bands&lt;br /&gt;
for BAND in ${Spectral_Bands}; do&lt;br /&gt;
&lt;br /&gt;
  # which Pan TDI level?&lt;br /&gt;
  if [[ ${BAND} == Pan ]]&lt;br /&gt;
  then&lt;br /&gt;
    eval Pan=&amp;quot;Pan${PanTDI}&amp;quot;; echo &amp;quot;Note, processing for ${Pan}&amp;quot;&lt;br /&gt;
    eval BAND=&amp;quot;${Pan}&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
  # some echo...&lt;br /&gt;
  echo &amp;quot;Processing the ${BAND} spectral band&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # set band parameters as variables  -- using  K16  for 16-bit data!&lt;br /&gt;
  eval K_BAND=&amp;quot;K16_${BAND}&amp;quot;&lt;br /&gt;
  eval BAND_Width=&amp;quot;${BAND}_Width&amp;quot;&lt;br /&gt;
  echo &amp;quot;Band Parameters set to K=${!K_BAND}, Bandwidth=${!BAND_Width}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  if [[ ${BAND} == Pan* ]]&lt;br /&gt;
  then&lt;br /&gt;
    BAND=&amp;quot;Pan&amp;quot; ; echo &amp;quot;Processing the ${BAND} spectral band&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
  # set region&lt;br /&gt;
  g.region rast=${BAND}_DNs #-pg&lt;br /&gt;
  echo &amp;quot;Region matching the ${BAND} spectral band&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # conversion to Radiance based on (1) -- attention: 32-bit calculations required&lt;br /&gt;
  r.mapcalc &amp;quot;${BAND}_Radiance = ( double(${!K_BAND}) * ${BAND}_DNs ) / ${!BAND_Width}&amp;quot;&lt;br /&gt;
  r.info -r &amp;quot;${BAND}_Radiance&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # add info&lt;br /&gt;
  r.support map=${BAND}_Radiance \&lt;br /&gt;
  title=&amp;quot;&amp;quot; \&lt;br /&gt;
  units=&amp;quot;W / sq.m. / μm / ster&amp;quot; \&lt;br /&gt;
  description=&amp;quot;Top-of-Atmosphere `echo ${BAND}` band spectral Radiance [W/m^2/sr/μm]&amp;quot; \&lt;br /&gt;
  source1='&amp;quot;Radiometric Use of QuickBird Imagery, Technical Note (2005),&amp;quot; by Keith Krause, Digital Globe'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  eval BAND_Esun=&amp;quot;${BAND}_Esun&amp;quot;; echo &amp;quot;Using Esun=${!BAND_Esun}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # calculate ToAR  -- ${BAND}_Radiance is already 32-bit -- see above!&lt;br /&gt;
  r.mapcalc &amp;quot;${BAND}_ToAR = \&lt;br /&gt;
	( ${PI} * ${BAND}_Radiance * ${ESD}^2 ) / ( ${!BAND_Esun} * cos(${SZA}) )&amp;quot;&lt;br /&gt;
  r.info -r ${BAND}_ToAR&lt;br /&gt;
&lt;br /&gt;
  # add some metadata&lt;br /&gt;
  r.support map=${BAND}_ToAR \&lt;br /&gt;
  title=&amp;quot;echo ${BAND} band (Top of Atmosphere Reflectance)&amp;quot; \&lt;br /&gt;
  units=&amp;quot;Unitless planetary reflectance&amp;quot; \&lt;br /&gt;
  description=&amp;quot;Top of Atmosphere `echo ${BAND}` band spectral Reflectance (unitless)&amp;quot; \&lt;br /&gt;
  source1='&amp;quot;Radiometric Use of QuickBird Imagery, Technical Note (2005),&amp;quot; by Keith Krause, Digital Globe' \&lt;br /&gt;
  source2=&amp;quot;Digital Globe&amp;quot; \&lt;br /&gt;
  history=&amp;quot;PI=3.14159265358; K=${!K_BAND}; Bandwidth=${!BAND_Width}; ESD=${ESD}; Esun=${!BAND_Esun}; SZA=${SZA}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Atmospheric correction ===&lt;br /&gt;
&lt;br /&gt;
See [[Atmospheric correction]]&lt;br /&gt;
&lt;br /&gt;
== Post-Processing ==&lt;br /&gt;
&lt;br /&gt;
Having beforehand satellite image data expressed in physical quantities (radiance or reflectance) is preferred to follow-up with digital image analysis techniques.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pan Sharpening ==&lt;br /&gt;
&lt;br /&gt;
In GRASS ver. 6.x, one can use the {{cmd|i.fusion.brovey}} module.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i.fusion.brovey -q ms1=qbird_green ms2=qbird_nir ms3=qbird_red pan=qbird_pan outputprefix=brov&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Documentation]]&lt;br /&gt;
[[Category: Geodata]]&lt;br /&gt;
[[Category: High Resolution]]&lt;br /&gt;
[[Category: QuikBird]]&lt;br /&gt;
[[Category: Import]]&lt;br /&gt;
[[Category: Digital Numbers]]&lt;br /&gt;
[[Category: Radiance]]&lt;br /&gt;
[[Category: Reflectance]]&lt;br /&gt;
[[Category: Image processing]]&lt;br /&gt;
&lt;br /&gt;
=== HPFA based sharpening ===&lt;br /&gt;
&lt;br /&gt;
The following screenshots exemplify the High Pass Filtering Addition fusion technique applied in a fragment of the QuickBird acquisition &amp;quot;04APR05050541-X2AS_R1C1-000000186011_01_P001-Sri_Lanka-Kokilai_Lagoon&amp;quot; which is publicly available via the GLCF. An implementation of this technique for GRASS-GIS is available as a grass-addon {{AddonSrc|imagery|i.fusion.hpf|version=7}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[File:Pan_04APR05050541-M2AS-000000186011_01_P001.jpg|thumb|400px|border|center|Fragment from the high resolution (0.7m) panchromatic image]]&lt;br /&gt;
|[[File:RGB_04APR05050541-M2AS-000000186011_01_P001.jpg|thumb|400px|border|center|Fragment from the low resolution (2.8m) multi-spectral RGB composite image]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[File:RGB_HPF_Sharpened_Default_Parameters.jpg|thumb|400px|border|center|Fragment from the HPFA Pan-Sharpened RGB composite image. Sharpening performed with default parameters.]]&lt;br /&gt;
|[[File:RGB_HPF_Sharpened_Center_Low_Modulator_Min.jpg|thumb|400px|border|center|Fragment from another HPFA Pan-Sharpened RGB composite image. Sharpening performed with ''center=low'' and ''modulator=min'' parameters.]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=WorldView&amp;diff=23383</id>
		<title>WorldView</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=WorldView&amp;diff=23383"/>
		<updated>2016-08-14T08:16:44Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: updated list of grass related modules&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= This page is under construction =&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
&lt;br /&gt;
WorldView-1, WorldView-2 and WorldView-3 are commercial earth observation satellites. Details about the sensors are provided at Digital Globe's collection of [http://www.digitalglobe.com/resources/satellite-information Spacecraft Data Sheets].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is recommended -- actually it is a necessity! -- to have a look at the documentation explaining [http://www.digitalglobe.com/sites/default/files/Imagery_Support_Data_Documentation%20%281%29.pdf Digital Globe's products metadata]. Note, all of DigitalGlobe’s satellites collect data using an 11 bit dynamic range. For technical reasons, products are delivered as either 16-bit or 8-bit data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Availability (Sample Data) ==&lt;br /&gt;
&lt;br /&gt;
* Search for commercial satellite image providers in the internet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modules overview ==&lt;br /&gt;
&lt;br /&gt;
=== Outside of GRASS ===&lt;br /&gt;
&lt;br /&gt;
Satellite imagery can be managed and, at some extent, pre-processed with various [http://www.gdal.org/gdal_utilities.html GDAL utilities].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.gdal.org/gdalmanage.html gdalmanage]&lt;br /&gt;
* [http://www.gdal.org/gdalinfo.html gdalinfo]&lt;br /&gt;
* [http://www.gdal.org/gdal_translate.html gdal_translate]&lt;br /&gt;
* [http://www.gdal.org/gdalbuildvrt.html gdalbuildvrt]&lt;br /&gt;
* [http://www.gdal.org/gdalwarp.html gdalwarp]&lt;br /&gt;
&lt;br /&gt;
=== Inside GRASS GIS ===&lt;br /&gt;
&lt;br /&gt;
GRASS GIS features a complete set of modules and various add-ons enabling pre- and post-processing of WorldView satellite imagery. The following lists offer an overview of related modules and add-ons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.in.gdal}}&lt;br /&gt;
* {{cmd|r.mapcalc}}&lt;br /&gt;
* {{cmd|r.colors}}&lt;br /&gt;
* {{cmd|i.colors.enhance|version=70}}&lt;br /&gt;
* {{AddonSrc|imagery|i.fusion.hpf|version=7}}&lt;br /&gt;
* {{cmd|i.pansharpen}}&lt;br /&gt;
* [https://github.com/NikosAlexandris/i.worldview.toar i.worldview.toar]&lt;br /&gt;
* {{cmd|i.vi}}&lt;br /&gt;
* {{cmd|i.segment}}&lt;br /&gt;
* ...''more to add''&lt;br /&gt;
&lt;br /&gt;
== Pre-Processing ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
Typically, multispectral satellite data are converted into physical quantities such as ''Radiance'' or ''Reflectance'' before they are subjected in multispectral analysis techniques (image interpretation, band arithmetic, vegetation indices, matrix transformations, etc.). The latter can be differentiated in ''Top of Atmosphere Reflectance'' (ToAR) which does not account for atmospheric effects (absorption or scattering) and in ''Top of Canopy Reflectance'' (ToCR) which introduces a &amp;quot;correction&amp;quot; for atmospheric effects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In order to derive Reflectance values, likewise as with remotely sensed data acquired by other sensors, WorldView raw image digital numbers (DNs) need to be converted to ''at-sensor spectral Radiance'' values.  At-sensor spectral Radiance values are an important input for the equation to derive Reflectance values. Note, ''Spectal Radiance'' is the measure of the quantity of radiation that hits the sensor and typically expressed in &amp;lt;math&amp;gt;\frac{W}{m^2*sr*nm}&amp;lt;/math&amp;gt;, that is ''watts'' per ''unit source area'', per ''unit solid angle'', and per ''unit wavelength''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Converting WorldView DNs to ''Top of Atmosphere'' Radiance, as described in [http://www.digitalglobe.com/downloads/Radiometric_Use_of_WorldView-2_Imagery.pdf Radiometric Use of WorldView-2 Imagery, Technical Note (2010)] by Todd Updike and Chris Comp, can be done by using the following equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L_{\lambda\text{Pixel, Band}} = \frac{K_{\text{Band}} * q_{\text{Pixel, Band}}}{\Delta\lambda_{\text{Band}}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;where:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;L_{\lambda\text{Pixel,Band}}&amp;lt;/math&amp;gt;:  Top-of-Atmosphere Spectral Radiance image pixels [W-m-2-sr-1-μm-1]&lt;br /&gt;
* &amp;lt;math&amp;gt;K_{\text{Band}}&amp;lt;/math&amp;gt;:  the absolute radiometric calibration factor [W-m-2-sr-1-count-1] for a given band&lt;br /&gt;
* &amp;lt;math&amp;gt;q_{\text{Pixel,Band}}&amp;lt;/math&amp;gt;:  radiometrically corrected image pixels [counts  or  Digital Numbers]&lt;br /&gt;
* &amp;lt;math&amp;gt;\Delta_{\lambda_{\text{Band}}}&amp;lt;/math&amp;gt;:  the effective bandwidth [μm] for a given band&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Converting to Top of Atmosphere Reflectance, also referred to as Planetary Reflectance, can be done by using the following equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\rho_p = \frac{\pi * L\lambda * d^2}{ESUN\lambda * cos(\Theta_S)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;where:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\rho&amp;lt;/math&amp;gt; - Unitless Planetary Reflectance&lt;br /&gt;
* &amp;lt;math&amp;gt;\pi&amp;lt;/math&amp;gt; - mathematical constant (3.14159265358)&lt;br /&gt;
* &amp;lt;math&amp;gt;L\lambda&amp;lt;/math&amp;gt; spectral Radiance at the sensor's aperture, from equation... '''''ToADD'''''&lt;br /&gt;
* &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; - Earth-Sun distance in astronomical units, interpolated values&lt;br /&gt;
* &amp;lt;math&amp;gt;Esun&amp;lt;/math&amp;gt; - Mean solar exoatmospheric irradiance(s) (W/m2/μm), interpolated values&lt;br /&gt;
* &amp;lt;math&amp;gt;cos(\theta_s)&amp;lt;/math&amp;gt; - {{wikipedia||Solar_zenith_angle}} from the image acquisition's metadata&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Importing data ===&lt;br /&gt;
&lt;br /&gt;
==== File Formats &amp;amp; Metadata ====&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
==== Importing ====&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* Location creation based on georeferenced data&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once inside a Location that is defined by the spatial reference system in which the bands of interest are projected, they can be imported with the {{cmd|r.in.gdal}} module.&lt;br /&gt;
&lt;br /&gt;
For example, GeoTIFF files can be imported by looping {{cmd|r.in.gdal}} over all of them&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for TIF in `echo *.tif`; do r.in.gdal in=${TIF} out=${TIF%%.*}; done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To keep the raw material untouched, we create another Mapset inside the same Location and copy over the bands giving, ''optionally'' at the same time, a new name for each.&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
=== Deriving Physical Quantities ===&lt;br /&gt;
&lt;br /&gt;
Conversions implemented in the GRASS module [https://github.com/NikosAlexandris/i.worldview.toar i.worldview.toar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''ToCleanUp''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Converting Digital Numbers to Radiance/Reflectance requires knowledge about the sensor's specific spectral band parameters. In the following listed parameters (see below), the ''Effective Bandwidth''s and the ''Band-Averaged Solar Spectral Irradiance''s are extracted from the document [http://www.digitalglobe.com/downloads/Radiometric_Use_of_WorldView-2_Imagery.pdf Radiometric Use of WorldView-2 Imagery, Technical Note (2010)] by Todd Updike and Chris Comp. The Absolute Calibration Factors are extracted from a WorldView-2 product, specifically from an image metadata file (extension .IMD).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note,''' however, as stated in the above document,&lt;br /&gt;
&lt;br /&gt;
   The absolute radiometric calibration factor is dependent on the specific band, &lt;br /&gt;
   as well as the TDI exposure level, line rate, pixel aggregation, and bit depth &lt;br /&gt;
   of the product. Based on these parameters, the appropriate value is provided in &lt;br /&gt;
   the .IMD file. For this reason, care should be taken not to mix absolute radiometric &lt;br /&gt;
   calibration factors between products that might have different collection conditions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
Pan_CalCoef=0.05678345		;	Pan_Width=0.2846000		;	Pan_Esun=1580.8140&lt;br /&gt;
Coastal_CalCoef=0.009295654	;	Coastal_CalCoef=0.04730000	;	Coastal_Esun=1758.2229&lt;br /&gt;
Blue_CalCoef=0.01260825		;	Blue_Width=0.05430000		;	Blue_Esun=1974.2416&lt;br /&gt;
Green_CalCoef=0.009713071	;	Green_Width=0.06300000		;	Green_Esun=1856.4104&lt;br /&gt;
Yellow_CalCoef=0.005829815	;	Yellow_Width=0.03740000		;	Yellow_Esun=1738.4791&lt;br /&gt;
Red_CalCoef=0.01103623		;	Red_Width=0.05740000		;	Red_Esun=1559.4555&lt;br /&gt;
RedEdge_CalCoef=0.005188136	;	RedEdge_Width=0.03930000	;	Red_Edge_Esun=1342.0695&lt;br /&gt;
NIR1_CalCoef=0.01224380		;	NIR1_Width=0.09890000		;	NIR_Esun=1069.7302&lt;br /&gt;
NIR2_CalCoef=0.009042234	;	NIR2_Width=0.09960000		;	NIR2_Esun=861.2866&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following examples exemplify the conversion of raw Blue band digital numbers into Radiance and Reflectance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Spectral Radiance ====&lt;br /&gt;
&lt;br /&gt;
Converting a Blue Band (Digital Numbers) in to Spectral at-sensor Radiance in the ''correct'' units to be further used for the conversion in to unitless Reflectance:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# set the region&lt;br /&gt;
g.region rast=Blue_DNs -p&lt;br /&gt;
&lt;br /&gt;
# convert DNs to spectral Radiance values&lt;br /&gt;
r.mapcalc &amp;quot;Blue_Radiance = ( (10000 * WorldView_Blue_DNs) / (... * ...) )&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Planetary Reflectance ====&lt;br /&gt;
&lt;br /&gt;
The equation to derive Reflectance values incorporates in addition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* The mathematical constant {{wikipedia|Pi}} &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;PI=3.14159265358&amp;lt;/source&amp;gt;.&lt;br /&gt;
* The Earth-Sun distance in astronomical units which depends on the acquisition's day of year (DOY -- also referred to as Julian day, {{wikipedia|Ordinal_date}}) and can be retrieved from the following spreadsheet &amp;lt;http://landsathandbook.gsfc.nasa.gov/excel_docs/d.xls&amp;gt;.&lt;br /&gt;
* The mean solar exoatmospheric irradiance in &amp;lt;math&amp;gt;\frac{W}{m^2*\mu m}&amp;lt;/math&amp;gt;. See 3rd column of (interplated) values given above.&lt;br /&gt;
* The cosine of the ''Solar Zenith Angle'' (SZA) at the time of the acquisition. The SZA can be calculated from its complementary ''Solar Elevation Angle'' (SEA) given in the image acquisition's metadata.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following example we accept as the acquisition's &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;DOY=...&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;SEA=...&amp;lt;/source&amp;gt;. Hence, we get the Earth-Sun distance &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;ESD=...&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;SZA = ... deg&amp;lt;/source&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In any case, '''note''' that Top-of-Atmosphere Reflectance does not account for topographic, atmospheric, or BRDF differences.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Converting the in-Blue spectral band at-sensor Radiance in to Planerary Reflectance:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;PI=...; ESD=...; BAND_Esun=...; SZA=...&amp;lt;/source&amp;gt;&lt;br /&gt;
 {{cmd|r.mapcalc}} &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;&amp;quot;Blue_Reflectance = ( ${PI} * Blue_Radiance * ${ESD}^2 ) / ( ${BAND_Esun} * cos(${SZA}) )&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Automatising Conversions ====&lt;br /&gt;
&lt;br /&gt;
The conversion process can be scripted to avoid repeating the same steps for each band separately.&lt;br /&gt;
&lt;br /&gt;
===== Python =====&lt;br /&gt;
&lt;br /&gt;
A custom python script, performing the operations of interest, might be like [https://github.com/NikosAlexandris/i.worldview.toar i.worldview.toar (for GRASS 7.x)]&lt;br /&gt;
 &lt;br /&gt;
===== Bash =====&lt;br /&gt;
In bash, such a script might be as the following example. '''Note,''' however, in this example script constants, band parameters and acquisition related metadata are hard-coded!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# π, first 11 decimals&lt;br /&gt;
PI=3.14159265358&lt;br /&gt;
&lt;br /&gt;
# HardCoded MetaData!&lt;br /&gt;
&lt;br /&gt;
  # Acquisition's Day of Year and estimated Earth-Sun Distance&lt;br /&gt;
  DOY=100; ESD=1.00184&lt;br /&gt;
&lt;br /&gt;
  # Sun Zenith Angle based on the acquisition's Sun Elevation Angle&lt;br /&gt;
  SEA=53.8; SZA=$(echo &amp;quot;90 - ${SEA}&amp;quot; | bc )&lt;br /&gt;
&lt;br /&gt;
  # some echo&lt;br /&gt;
  echo &amp;quot;Acquisition-specific parameters&amp;quot;&lt;br /&gt;
  echo &amp;quot;Day of Year: ${DOY}, Earth-Sun Distance: ${ESD}, Sun Zenith Angle: ${SZA}&amp;quot;&lt;br /&gt;
  echo -e &amp;quot;\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# 1st column: Absolute Calibration Factors&lt;br /&gt;
# 2nd column: Spectral Band Effective Bandwidth, Δλ&lt;br /&gt;
# 3rd column: Band-Averaged Solar Spectral Irradiance [W/sq.m./micro-m]&lt;br /&gt;
&lt;br /&gt;
K_Pan=0.05678345	;	Pan_Width=0.2846000		;	Pan_Esun=1580.8140&lt;br /&gt;
K_Coastal=0.009295654	;	Coastal_Width=0.04730000	;	Coastal_Esun=1758.2229&lt;br /&gt;
K_Blue=0.01260825	;	Blue_Width=0.05430000		;	Blue_Esun=1974.2416&lt;br /&gt;
K_Green=0.009713071	;	Green_Width=0.06300000		;	Green_Esun=1856.4104&lt;br /&gt;
K_Yellow=0.005829815	;	Yellow_Width=0.03740000		;	Yellow_Esun=1738.4791&lt;br /&gt;
K_Red=0.01103623	;	Red_Width=0.05740000		;	Red_Esun=1559.4555&lt;br /&gt;
K_RedEdge=0.005188136	;	RedEdge_Width=0.03930000	;	RedEdge_Esun=1342.0695&lt;br /&gt;
K_NIR1=0.01224380	;	NIR1_Width=0.09890000		;	NIR1_Esun=1069.7302&lt;br /&gt;
K_NIR2=0.009042234	;	NIR2_Width=0.09960000		;	NIR2_Esun=861.2866&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Bands&lt;br /&gt;
Spectral_Bands=&amp;quot;Pan Coastal Blue Green Yellow Red RedEdge NIR1 NIR2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# loop over all bands&lt;br /&gt;
for BAND in ${Spectral_Bands}; do&lt;br /&gt;
&lt;br /&gt;
  # some echo&lt;br /&gt;
  echo -e &amp;quot;Processing the \&amp;quot;${BAND}\&amp;quot; spectral band&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # set band parameters as variables&lt;br /&gt;
  eval BAND_Width=&amp;quot;${BAND}_Width&amp;quot;&lt;br /&gt;
  echo &amp;quot;* Band-specific radiometric parameters set to K=${!K_BAND}, Bandwidth=${!BAND_Width}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # set region&lt;br /&gt;
  g.region rast=${BAND}_DNs&lt;br /&gt;
&lt;br /&gt;
  # conversion to Radiance based on (1) -- attention: 32-bit calculations required&lt;br /&gt;
  echo &amp;quot;* Converting ${BAND} Digital Numebrs to Radiance...&amp;quot; | tr -d &amp;quot;\n&amp;quot;&lt;br /&gt;
  r.mapcalc &amp;quot;${BAND}_Radiance = ( double(${!K_BAND}) * ${BAND}_DNs ) / ${!BAND_Width}&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  # report range&lt;br /&gt;
  echo &amp;quot;* Reporting range of the ${BAND} spectral radiance: &amp;quot; | tr -d &amp;quot;\n&amp;quot;&lt;br /&gt;
  # r.info -r &amp;quot;${BAND}_Radiance&amp;quot;&lt;br /&gt;
  r.info -r &amp;quot;${BAND}_Radiance&amp;quot; | tr &amp;quot;\n&amp;quot; &amp;quot;,&amp;quot; | cut -d&amp;quot;,&amp;quot; -f1,2 | sed 's/,/,\ /'&lt;br /&gt;
&lt;br /&gt;
  # add info&lt;br /&gt;
  r.support map=${BAND}_Radiance \&lt;br /&gt;
  title=&amp;quot;&amp;quot; \&lt;br /&gt;
  units=&amp;quot;W / sq.m. / μm / ster&amp;quot; \&lt;br /&gt;
  description=&amp;quot;Top-of-Atmosphere `echo ${BAND}` band spectral Radiance [W/m^2/sr/μm]&amp;quot; \&lt;br /&gt;
  source1='&amp;quot;Radiometric Use of WorldView-2 Imagery, Technical Note (2010)&amp;quot;, by Todd Updike &amp;amp; Chris Comp'&lt;br /&gt;
&lt;br /&gt;
  # Esun&lt;br /&gt;
  eval BAND_Esun=&amp;quot;${BAND}_Esun&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # some echo&lt;br /&gt;
  echo &amp;quot;* Parameters required for the conversion: Esun= ${!BAND_Esun}, ESD= ${ESD}, ${SZA}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # calculate ToAR&lt;br /&gt;
  echo &amp;quot;* Converting ${BAND}_Radiance to Top of Atmosphere Reflectance...&amp;quot; | tr -d &amp;quot;\n&amp;quot;&lt;br /&gt;
  r.mapcalc &amp;quot;${BAND}_ToAR = \&lt;br /&gt;
	( ${PI} * ${BAND}_Radiance * ${ESD}^2 ) / ( ${!BAND_Esun} * cos(${SZA}) )&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # report range&lt;br /&gt;
  echo &amp;quot;* Reporting range of the ${BAND} spectral radiance: &amp;quot; | tr -d &amp;quot;\n&amp;quot;&lt;br /&gt;
  r.info -r ${BAND}_ToAR | tr &amp;quot;\n&amp;quot; &amp;quot;,&amp;quot; | cut -d&amp;quot;,&amp;quot; -f1,2 | sed 's/,/,\ /'&lt;br /&gt;
&lt;br /&gt;
  # add some metadata&lt;br /&gt;
  r.support map=${BAND}_ToAR \&lt;br /&gt;
  title=&amp;quot;echo ${BAND} band (Top of Atmosphere Reflectance)&amp;quot; \&lt;br /&gt;
  units=&amp;quot;Unitless planetary reflectance&amp;quot; \&lt;br /&gt;
  description=&amp;quot;Top of Atmosphere `echo ${BAND}` band spectral Reflectance (unitless)&amp;quot; \&lt;br /&gt;
  source1='&amp;quot;Radiometric Use of WorldView-2 Imagery, Technical Note (2010)&amp;quot;, by Todd Updike &amp;amp; Chris Comp, Digital Globe' \&lt;br /&gt;
  source2=&amp;quot;Digital Globe&amp;quot; \&lt;br /&gt;
  history=&amp;quot;PI=3.14159265358; K=${!K_BAND}; Bandwidth=${!BAND_Width}; ESD=${ESD}; Esun=${!BAND_Esun}; SZA=${SZA}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  echo -e &amp;quot;\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Atmospheric correction ===&lt;br /&gt;
&lt;br /&gt;
See [[Atmospheric correction]]&lt;br /&gt;
&lt;br /&gt;
== Post-Processing ==&lt;br /&gt;
&lt;br /&gt;
Having beforehand satellite image data expressed in physical quantities (radiance or reflectance) is preferred to follow-up with digital image analysis techniques. A few common post-processing practices are Contrast-Enhancement, Pan-Sharpening and creating Pseudo- or True-Color Composites. Other well known enhancing manipualtions to support the analyses of satellite imagery, include deriving Vegetation Indices, transforming multi-spectral data based on [[Principal_Components_Analysis | PCA]] and Segmenting images.&lt;br /&gt;
&lt;br /&gt;
=== Contrast Enhancement ===&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
=== Pan-Sharpening ===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Pansharpened_image Pan-Sharpening] / [http://en.wikipedia.org/wiki/Image_fusion Fusion] is the process of merging high-resolution panchromatic and lower resolution multi-spectral imagery. [http://grass.osgeo.org/grass70/ GRASS 7] holds a dedicated pan-sharpening module, {{cmd|i.pansharpen}} which features three techniques for sharpening, namely the [http://wiki.awf.forst.uni-goettingen.de/wiki/index.php/Brovey_Transformation Brovey transformation], the classical IHS method and one that is based on [[Principal Components Analysis]] (PCA).&lt;br /&gt;
Another algorithm deriving excellent detail and a realistic representation of original multispectral scene colors, is the High-Pass Filter Addition (HPFA) technique. It is implemented via the {{AddonSrc|imagery|i.fusion.hpf|version=7}} add-on (for GRASS 6, please refer to a bash shell script https://github.com/NikosAlexandris/i.fusion.hpf.sh which is, however, unmaintained). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One approach inside GRASS-GIS to get an acceptable color-balanced composite image after Pan-sharpening 11-bit IKONOS spectral bands comprises the following steps&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
# rescale the 11-bit WorldView spectral bands to 8-bit ranging in [0, 255] ({{cmd|r.rescale}})&lt;br /&gt;
# pan-sharpen with any of the featured methods (Brovey, IHS, PCA) ({{cmd|i.pansharpen}})&lt;br /&gt;
# color-balance by using the {{cmd|i.landsat.rgb}} module or manually adjusting the color tables of the bands of interest&lt;br /&gt;
# create a composite image by using the {{cmd|r.compose}} module&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
==== Automatising Sharpening &amp;amp; RGB Composition ====&lt;br /&gt;
&lt;br /&gt;
An ''experimental'' bash script to automatise the sharpening/fusion and RGB composition process is demonstrated here. The script uses the Spectral Reflectance values (double precision values), gained from previous steps (see above), and produces Pan-sharpened images by applying all of the three methods that {{cmd|i.pansharpen}} offers. In addition, it attempts to produce True-Color composite images, without and with re-balancing the color tables by using the {{cmd|i.landsat.rgb}} module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initial tests indicate that at least one of the three sharpening methods, combined with re-balancing, produces very clear and balanced True-Color composites. Note, there is no 100% confidence that it will produce nice looking True-Color composites. Some of the methods might simply work, others might deliver fancy-colored images. As usual, some manual action might be required to get the re-balancing to work as best as possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The script can be expanded in terms of using more inputs by utilising bash's positional parameters.  However, care has to be taken to alter the instruction that concerns the conversion from double precision values to 8-bit integers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Color Composites ===&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== Vegetation Indices ==&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== PCA ==&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== WordView Image classification ==&lt;br /&gt;
&lt;br /&gt;
See [[Image classification]]&lt;br /&gt;
&lt;br /&gt;
== References / Sources ==&lt;br /&gt;
&lt;br /&gt;
* ...&lt;br /&gt;
* [http://landsathandbook.gsfc.nasa.gov/data_prod/prog_sect11_3.html Landsat7 Science Data Users Handbook, Chapter 11, Section 3]&lt;br /&gt;
* [http://igett.delmar.edu/Resources/Remote%20Sensing%20Technology%20Training/Calculation-DN_to_Reflectance_Irish_20June08.pdf Calibrated Landsat Digital Number (DN) to Top of Atmosphere (TOA) Reflectance Conversion, by Richard Irish]&lt;br /&gt;
* from [http://landsat.usgs.gov/tools_access_all_faqs.php FAQs about the Landsat Missions]&lt;br /&gt;
** [http://landsat.usgs.gov/how_is_radiance_calculated.php How is radiance calculated?]&lt;br /&gt;
** [http://landsat.usgs.gov/at_sensor_reflectance_calculated.php How is at-sensor reflectance calculated?]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* GRASS-Wiki page about [http://grasswiki.osgeo.org/wiki/Image_processing Image Processing]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Documentation]]&lt;br /&gt;
[[Category: FAQ]]&lt;br /&gt;
[[Category: WorldView]]&lt;br /&gt;
[[Category: High Resolution]]&lt;br /&gt;
[[Category: Import]]&lt;br /&gt;
[[Category: Digital Numbers]]&lt;br /&gt;
[[Category: Radiance]]&lt;br /&gt;
[[Category: Reflectance]]&lt;br /&gt;
[[Category: Image processing]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=IKONOS&amp;diff=23382</id>
		<title>IKONOS</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=IKONOS&amp;diff=23382"/>
		<updated>2016-08-14T08:15:54Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: updated list of grass related modules&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
IKONOS is a commercial earth observation satellite. Details about the sensor are provided at Digital Globe's [http://www.digitalglobe.com/sites/default/files/DG_IKONOS_DS.pdf IKONOS Data Sheet]. [http://en.wikipedia.org/wiki/Ikonos Wikipedia's article on IKONOS] provides a nice overview as well.&lt;br /&gt;
&lt;br /&gt;
== Availability (Sample Data) ==&lt;br /&gt;
&lt;br /&gt;
* Search for commercial satellite image providers in the internet.&lt;br /&gt;
* [http://www.landcover.org/ The Global Land Cover Facility (GLCF)] provides [ftp://ftp.glcf.umd.edu/glcf/China_earthquake_May_2008/IKONOS/ four openly available IKONOS scenes of western Sichuan].&lt;br /&gt;
* ISPRS provides a small [http://www.isprs.org/data/ikonos/ IKONOS data set], fragments from a Panchromatic image as well as from a Stereo product.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modules overview ==&lt;br /&gt;
&lt;br /&gt;
=== Outside of GRASS ===&lt;br /&gt;
&lt;br /&gt;
Satellite imagery can be managed and, at some extent, pre-processed with various [http://www.gdal.org/gdal_utilities.html GDAL utilities].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.gdal.org/gdalmanage.html gdalmanage]&lt;br /&gt;
* [http://www.gdal.org/gdalinfo.html gdalinfo]&lt;br /&gt;
* [http://www.gdal.org/gdal_translate.html gdal_translate]&lt;br /&gt;
* [http://www.gdal.org/gdalbuildvrt.html gdalbuildvrt]&lt;br /&gt;
* [http://www.gdal.org/gdalwarp.html gdalwarp]&lt;br /&gt;
&lt;br /&gt;
=== Inside GRASS GIS ===&lt;br /&gt;
&lt;br /&gt;
GRASS GIS features a complete set of modules and various add-ons enabling pre- and post-processing of IKONOS satellite imagery. The following lists offer an overview of related modules and add-ons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.in.gdal}}&lt;br /&gt;
* {{cmd|r.mapcalc}}&lt;br /&gt;
* {{cmd|r.colors}}&lt;br /&gt;
* {{cmd|i.colors.enhance|version=70}}&lt;br /&gt;
* {{AddonSrc|imagery|i.fusion.hpf|version=7}}&lt;br /&gt;
* {{cmd|i.pansharpen}}&lt;br /&gt;
* [https://github.com/NikosAlexandris/i.ikonos.toar i.ikonos.toar]&lt;br /&gt;
* {{cmd|i.vi}}&lt;br /&gt;
* {{cmd|i.segment}}&lt;br /&gt;
&lt;br /&gt;
== Pre-Processing ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
Typically, multispectral satellite data are converted into physical quantities such as ''Radiance'' or ''Reflectance'' before they are subjected in multispectral analysis techniques (image interpretation, band arithmetic, vegetation indices, matrix transformations, etc.). The latter can be differentiated in ''Top of Atmosphere Reflectance'' (ToAR) which does not account for atmospheric effects (absorption or scattering) and in ''Top of Canopy Reflectance'' (ToCR) which introduces a &amp;quot;correction&amp;quot; for atmospheric effects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In order to derive Reflectance values, likewise as with remotely sensed data acquired by other sensors, IKONOS raw image digital numbers (DNs) need to be converted to ''at-sensor spectral Radiance'' values.  At-sensor spectral Radiance values are an important input for the equation to derive Reflectance values. Note, ''Spectal Radiance'' is the measure of the quantity of radiation that hits the sensor and typically expressed in &amp;lt;math&amp;gt;\frac{W}{m^2*sr*nm}&amp;lt;/math&amp;gt;, that is ''watts'' per ''unit source area'', per ''unit solid angle'', and per ''unit wavelength''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* Converting DNs to at-sensor Radiance can be done by using the following equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L\lambda = \frac{10^4 * DN\lambda}{CalCoef\lambda * Bandwidth\lambda}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Converting to Top of Atmosphere Reflectance, also referred to as Planetary Reflectance, can be done by using the following equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\rho_p = \frac{\pi * L\lambda * d^2}{ESUN\lambda * cos(\Theta_S)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;where:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\rho&amp;lt;/math&amp;gt; - Unitless Planetary Reflectance&lt;br /&gt;
* &amp;lt;math&amp;gt;\pi&amp;lt;/math&amp;gt; - mathematical constant (3.14159265358)&lt;br /&gt;
* &amp;lt;math&amp;gt;L\lambda&amp;lt;/math&amp;gt; spectral Radiance at the sensor's aperture, from equation... '''''ToADD'''''&lt;br /&gt;
* &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; - Earth-Sun distance in astronomical units, interpolated values&lt;br /&gt;
* &amp;lt;math&amp;gt;Esun&amp;lt;/math&amp;gt; - Mean solar exoatmospheric irradiance(s) (W/m2/μm), interpolated values&lt;br /&gt;
* &amp;lt;math&amp;gt;cos(\theta_s)&amp;lt;/math&amp;gt; - {{wikipedia||Solar_zenith_angle}} from the image acquisition's metadata&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Importing data ===&lt;br /&gt;
&lt;br /&gt;
==== File Formats &amp;amp; Metadata ====&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
==== Importing ====&lt;br /&gt;
&lt;br /&gt;
In the following example the publicly available IKONOS acqisition [ftp://ftp.glcf.umd.edu/glcf/China_earthquake_May_2008/IKONOS/po_58204_0000000.20001116.China-Sichuan/ po_58204_0000000.20001116.China-Sichuan] is used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* Location creation based on georeferenced data&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once inside a Location that is defined by the spatial reference system in which the bands of interest are projected, they can be imported with the {{cmd|r.in.gdal}} module.&lt;br /&gt;
&lt;br /&gt;
For example, GeoTIFF files can be imported by looping {{cmd|r.in.gdal}} over all of them&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for TIF in `echo *.tif`; do r.in.gdal in=${TIF} out=${TIF%%.*}; done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To keep the raw material untouched, we create another Mapset inside the same Location and copy over the bands giving, ''optionally'' at the same time, a new name for each.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
g.mapset -c pre-processing&lt;br /&gt;
g.copy rast=po_58204_blu_0000000,Blue_DNs&lt;br /&gt;
g.copy rast=po_58204_grn_0000000,Green_DNs&lt;br /&gt;
g.copy rast=po_58204_red_0000000,Red_DNs&lt;br /&gt;
g.copy rast=po_58204_nir_0000000,NIR_DNs&lt;br /&gt;
g.copy rast=po_58204_pan_0000000,Pan_DNs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Deriving Physical Quantities ===&lt;br /&gt;
&lt;br /&gt;
Conversions are implemented in a GRASS module available at https://github.com/NikosAlexandris/i.ikonos.toar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Details''&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Converting Digital Numbers to Radiance/Reflectance requires knowledge about the sensor's specific spectral band parameters. Those are, as extracted from the document ''IKONOS Planetary Reflectance and Mean Solar Exoatmospheric Irradiance'', by Martin Taylor (see references):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 Pan_CalCoef=161	;	Pan_Width=403		;	Pan_Esun=1375.8&lt;br /&gt;
 Blue_CalCoef=728	;	Blue_Width=71.3		;	Blue_Esun=1930.9&lt;br /&gt;
 Green_CalCoef=720	;	Green_Width=88.6	;	Green_Esun=1854.8&lt;br /&gt;
 Red_CalCoef=949	;	Red_Width=65.8		;	Red_Esun=1556.5&lt;br /&gt;
 NIR_CalCoef=843	;	NIR_Width=95.4		;	NIR_Esun=1156.9&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following examples exemplify the conversion of raw Blue band digital numbers into Radiance and Reflectance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Spectral Radiance ====&lt;br /&gt;
&lt;br /&gt;
Converting a Blue Band (Digital Numbers) in to Spectral at-sensor Radiance in the ''correct'' units to be further used for the conversion in to unitless Reflectance:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# set the region&lt;br /&gt;
g.region rast=Blue_DNs -p&lt;br /&gt;
&lt;br /&gt;
# convert DNs to spectral Radiance values&lt;br /&gt;
r.mapcalc &amp;quot;Blue_Radiance = ( (10000 * IKONOS_Blue_DNs) / (728 * 71.3) )&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Planetary Reflectance ====&lt;br /&gt;
&lt;br /&gt;
The equation to derive Reflectance values incorporates in addition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* The mathematical constant {{wikipedia|Pi}} &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;PI=3.14159265358&amp;lt;/source&amp;gt;.&lt;br /&gt;
* The Earth-Sun distance in astronomical units which depends on the acquisition's day of year (DOY -- also referred to as Julian day, {{wikipedia|Ordinal_date}}) and can be retrieved from the following spreadsheet &amp;lt;http://landsathandbook.gsfc.nasa.gov/excel_docs/d.xls&amp;gt;.&lt;br /&gt;
* The mean solar exoatmospheric irradiance in &amp;lt;math&amp;gt;\frac{W}{m^2*\mu m}&amp;lt;/math&amp;gt;. See 3rd column of (interplated) values given above.&lt;br /&gt;
* The cosine of the ''Solar Zenith Angle'' (SZA) at the time of the acquisition. The SZA can be calculated from its complementary ''Solar Elevation Angle'' (SEA) given in the image acquisition's metadata.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following example we accept as the acquisition's &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;DOY=166&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;SEA=52.78880&amp;lt;/source&amp;gt;. Hence, we get the Earth-Sun distance &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;ESD=1.0157675&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;SZA = 37.21120 deg&amp;lt;/source&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Converting the in-Blue spectral band at-sensor Radiance in to Planerary Reflectance:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;PI=3.14159265358; ESD=1.0157675; BAND_Esun=1930.9; SZA=37.21120&amp;lt;/source&amp;gt;&lt;br /&gt;
 {{cmd|r.mapcalc}} &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;&amp;quot;Blue_Reflectance = ( ${PI} * Blue_Radiance * ${ESD}^2 ) / ( ${BAND_Esun} * cos(${SZA}) )&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Automatising Conversions ====&lt;br /&gt;
&lt;br /&gt;
The conversion process can be scripted to avoid repeating the same steps for each band separately.&lt;br /&gt;
&lt;br /&gt;
===== Python =====&lt;br /&gt;
&lt;br /&gt;
A custom python script, performing the operations of interest, might be like [https://github.com/NikosAlexandris/i.ikonos.toar i.ikonos.toar (for GRASS 7.x)]&lt;br /&gt;
 &lt;br /&gt;
===== Bash =====&lt;br /&gt;
In bash, such a script might be as the following example. '''Note,''' however, in this example script constants, band parameters and acquisition related metadata are hard-coded!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
Pan_CalCoef=161		;	Pan_Width=403		;	Pan_Esun=1375.8&lt;br /&gt;
Blue_CalCoef=728	;	Blue_Width=71.3		;	Blue_Esun=1930.9&lt;br /&gt;
Green_CalCoef=720	;	Green_Width=88.6	;	Green_Esun=1854.8&lt;br /&gt;
Red_CalCoef=949		;	Red_Width=65.8		;	Red_Esun=1556.5&lt;br /&gt;
NIR_CalCoef=843		;	NIR_Width=95.4		;	NIR_Esun=1156.9&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# set constants, band parameters and acquisition related metadata here!&lt;br /&gt;
&lt;br /&gt;
# Pi, first 11 decimals&lt;br /&gt;
PI=3.14159265358&lt;br /&gt;
&lt;br /&gt;
# Acquisition's Day of Year and estimated Earth-Sun Distance&lt;br /&gt;
DOY=166; ESD=1.0157675&lt;br /&gt;
&lt;br /&gt;
# Sun Zenith Angle based on the acquisition's Sun Elevation Angle&lt;br /&gt;
SEA=52.78880; SZA=$(echo &amp;quot;90 - ${SEA}&amp;quot; | bc )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# bands to process&lt;br /&gt;
Spectral_Bands=&amp;quot;Pan Blue Green Red NIR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# loop over all bands&lt;br /&gt;
for BAND in ${Spectral_Bands}; do&lt;br /&gt;
&lt;br /&gt;
  echo &amp;quot;Processing the ${BAND} spectral band&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # set region&lt;br /&gt;
  g.region rast=${BAND}_DNs&lt;br /&gt;
&lt;br /&gt;
  # set band parameters as variables&lt;br /&gt;
  eval BAND_CalCoef=&amp;quot;${BAND}_CalCoef&amp;quot;&lt;br /&gt;
  eval BAND_Width=&amp;quot;${BAND}_Width&amp;quot;;&lt;br /&gt;
  echo &amp;quot;Band Parameters set to CalCoef=${!BAND_CalCoef}, Bandwidth=${!BAND_Width}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # conversion to Radiance&lt;br /&gt;
  r.mapcalc &amp;quot;${BAND}_Radiance = ( ( 10^4 * ${BAND}_DNs ) / ( ${!BAND_CalCoef} * ${!BAND_Width} ) )&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # add info&lt;br /&gt;
  r.support map=${BAND}_Radiance \&lt;br /&gt;
  title=&amp;quot;&amp;quot; \&lt;br /&gt;
  units=&amp;quot;W / m2 / μm / ster&amp;quot; \&lt;br /&gt;
  description=&amp;quot;At-sensor `echo ${BAND}` band spectral Radiance (W/m2/μm/sr)&amp;quot; \&lt;br /&gt;
  source1='&amp;quot;IKONOS Planetary Reflectance and Mean Solar Exoatmospheric Irradiance&amp;quot;, by Martin Taylor, Geoeye'&lt;br /&gt;
&lt;br /&gt;
  # set Earth-Sun distance&lt;br /&gt;
  eval BAND_Esun=&amp;quot;${BAND}_Esun&amp;quot;; echo &amp;quot;Using Esun=${!BAND_Esun}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # calculate ToAR&lt;br /&gt;
  r.mapcalc &amp;quot;${BAND}_ToAR = \&lt;br /&gt;
	( ${PI} * ${BAND}_Radiance * ${ESD}^2 ) / ( ${!BAND_Esun} * cos(${SZA}) )&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # add some metadata&lt;br /&gt;
  r.support map=${BAND}_ToAR \&lt;br /&gt;
  title=&amp;quot;echo ${BAND} band (Top of Atmosphere Reflectance)&amp;quot; \&lt;br /&gt;
  units=&amp;quot;Unitless&amp;quot; \&lt;br /&gt;
  description=&amp;quot;Top of Atmosphere `echo ${BAND}` band spectral Reflectance (unitless)&amp;quot; \&lt;br /&gt;
  source1='&amp;quot;IKONOS Planetary Reflectance and Mean Solar Exoatmospheric Irradiance&amp;quot;, by Martin Taylor, Geoeye' \&lt;br /&gt;
  source2=&amp;quot;e.g., the Image Provider!&amp;quot; \&lt;br /&gt;
  history=&amp;quot;PI=3.14159265358; ESD=1.0157675; BAND_Esun=1930.9; SZA=37.21120&amp;quot;&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Atmospheric correction ===&lt;br /&gt;
&lt;br /&gt;
See [[Atmospheric correction]]&lt;br /&gt;
&lt;br /&gt;
== Post-Processing ==&lt;br /&gt;
&lt;br /&gt;
Having beforehand satellite image data expressed in physical quantities (radiance or reflectance) is preferred to follow-up with digital image analysis techniques. A few common post-processing practices are Contrast-Enhancement, Pan-Sharpening and creating Pseudo- or True-Color Composites. Other well known enhancing manipualtions to support the analyses of satellite imagery, include deriving Vegetation Indices, transforming multi-spectral data based on [[Principal_Components_Analysis | PCA]] and Segmenting images.&lt;br /&gt;
&lt;br /&gt;
=== Contrast Enhancement ===&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
=== Pan-Sharpening ===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Pansharpened_image Pan-Sharpening] / [http://en.wikipedia.org/wiki/Image_fusion Fusion] is the process of merging high-resolution panchromatic and lower resolution multi-spectral imagery. [http://grass.osgeo.org/grass70/ GRASS 7] holds a dedicated pan-sharpening module, {{cmd|i.pansharpen}} which features three techniques for sharpening, namely the [http://wiki.awf.forst.uni-goettingen.de/wiki/index.php/Brovey_Transformation Brovey transformation], the classical IHS method and one that is based on [[Principal Components Analysis]] (PCA). Another algorithm deriving excellent detail and a realistic representation of original multispectral scene colors, is the High-Pass Filter Addition (HPFA) technique. It is available through the add-on {{AddonSrc|imagery|i.fusion.hpf|version=7}} (for GRASS 6, please refer to a bash shell script https://github.com/NikosAlexandris/i.fusion.hpf.sh which is, however, unmaintained).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One approach inside GRASS-GIS to get an acceptable color-balanced composite image after Pan-sharpening 11-bit IKONOS spectral bands comprises the following steps&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
# rescale the 11-bit IKONOS spectral bands to 8-bit ranging in [0, 255] ({{cmd|r.rescale}})&lt;br /&gt;
# pan-sharpen with any of the featured methods (Brovey, IHS, PCA) ({{cmd|i.pansharpen}})&lt;br /&gt;
# color-balance by using the {{cmd|i.landsat.rgb}} module or manually adjusting the color tables of the bands of interest&lt;br /&gt;
# create a composite image by using the {{cmd|r.compose}} module&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example Instructions for {{cmd|i.pansharpen}} ====&lt;br /&gt;
&lt;br /&gt;
{{cmd|i.pansharpen}} works fine with 8-bit raster maps as an input. If the data to be processed are out of this range, that is out of &amp;lt;math&amp;gt;[0, 255]&amp;lt;/math&amp;gt;, they can be rescaled to fit into this range by using GRASS' {{cmd|r.rescale}} module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Given an IKONOS set of 11-bit spectral bands (Blue, Green, Red, NIR and Pan) ranging between &amp;lt;math&amp;gt;[0, 2047]&amp;lt;/math&amp;gt;, and then querying for example the Blue band &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;r.info Blue_DNs -r&amp;lt;/source&amp;gt;, would return&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
min=0&lt;br /&gt;
max=2047&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Rescaling single bands =====&lt;br /&gt;
&lt;br /&gt;
Rescaling the Blue band to range between `[0, 255]`&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
r.rescale in=Blue_DNs out=Blue_DNs_255 from=0,2047 to=0,255&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The same step applies to both the rest of the multi-spectral bands and the Panchromatic band of interest. If working under Bash, To repeat the same command (given, it was the last on used in the GRASS' terminal), one can isntruct&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
!!:gs/Blue/Green&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would substitute everywhere found on the last command the string &amp;quot;Blue&amp;quot; with the string &amp;quot;Green&amp;quot; and re-execute it.  The same can be done for the rest of the bands, namely Red, NIR and Pan. Some attention is required to instruct substitution of the ''last'' used string.&lt;br /&gt;
&lt;br /&gt;
===== Rescaling all bands at once =====&lt;br /&gt;
&lt;br /&gt;
Of course, one can always use a ''for'' loop&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for DN in `g.mlist rast pat=*DNs`; do r.rescale in=${DN} out=${DN}_255 from=0,2047 to=0,255; done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Pan-Sharpening =====&lt;br /&gt;
&lt;br /&gt;
As usual when working with GRASS, it is required to set the region of interest, i.e. &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;g.region rast=Blue_DNs_255&amp;lt;/source&amp;gt; to match the extent of the band(s) or else. The resolution itself is taken care in this particular case by the module and the resulting pan-sharpened raster maps will of the same high(er) resolution as the Panchromatic band.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example command for an IHS-based Pan-Sharpening action might look like&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i.pansharpen pan=Pan_DNs_255 ms1=Blue_DNs_255 ms2=Green_DNs_255 ms3=Red_DNs_255 output=sharptest255 sharpen=ihs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Color Re-Balancnig =====&lt;br /&gt;
&lt;br /&gt;
After the process completion, the module outputs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
The following pan-sharpened output maps have been generated:&lt;br /&gt;
sharptest255_red&lt;br /&gt;
sharptest255_green&lt;br /&gt;
sharptest255_blue&lt;br /&gt;
&lt;br /&gt;
To visualize output, run: g.region -p rast=sharptest255.red&lt;br /&gt;
d.rgb r=sharptest255_red g=sharptest255_green b=sharptest255_blue&lt;br /&gt;
&lt;br /&gt;
If desired, combine channels into a single RGB map with 'r.composite'.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Normally it should be enough to re-balance the colors after the pan-sharpening action by using for example the {{cmd|i.landsat.rgb}} module or manual adjustment of each of the three bands that would compose an RGB image.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i.landsat.rgb r=sharptest255_red g=sharptest255_green b=sharptest255_blue -p&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Automatising Sharpening &amp;amp; RGB Composition =====&lt;br /&gt;
&lt;br /&gt;
An ''experimental'' bash script to automatise the sharpening/fusion and RGB composition process is demonstrated here. The script uses the Spectral Reflectance values (double precision values), gained from previous steps (see above), and produces Pan-sharpened images by applying all of the three methods that {{addon|i.pansharpen}} offers. In addition, it attempts to produce True-Color composite images, without and with re-balancing the color tables by using the {{cmd|i.landsat.rgb}} module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initial tests indicate that at least one of the three sharpening methods, combined with re-balancing, produces very clear and balanced True-Color composites. Note, there is no 100% confidence that it will produce nice looking True-Color composites. Some of the methods might simply work, others might deliver fancy-colored images. As usual, some manual action might be required to get the re-balancing to work as best as possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The script can be expanded in terms of using more inputs by utilising bash's positional parameters.  However, care has to be taken to alter the instruction that concerns the conversion from double precision values to 8-bit integers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bash/sh&lt;br /&gt;
&lt;br /&gt;
# use in G7 only :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Rescaling all images to 8-bit&amp;quot;&lt;br /&gt;
# convert to 8-bit first :-!&lt;br /&gt;
for Method_Input in \&lt;br /&gt;
&amp;quot;Pan ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;Blue ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;Green ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;Red ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;NIR ToAR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
  # parse &amp;quot;${Method_STR}&amp;quot; and set positional parameters&lt;br /&gt;
  set -- $Method_Input ; echo -e &amp;quot;\n&amp;quot; #echo $1 $2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  # input BAND is...&lt;br /&gt;
  eval BAND=&amp;quot;${1}_${2}&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  # set region&lt;br /&gt;
  g.region rast=${BAND}&lt;br /&gt;
&lt;br /&gt;
  # integerise&lt;br /&gt;
  r.mapcalc --v \&lt;br /&gt;
  &amp;quot;${BAND}_integerised = round( 1000000 * ${BAND} )&amp;quot; # how many decimals?&lt;br /&gt;
&lt;br /&gt;
  # integerised BAND is...&lt;br /&gt;
  eval BAND=&amp;quot;${1}_${2}_integerised&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # get ${min} and ${max}&lt;br /&gt;
  eval `r.info -r ${BAND}`&lt;br /&gt;
&lt;br /&gt;
  #&lt;br /&gt;
  r.rescale in=${1}_${2}_integerised out=${1}_${2}_255 from=${min},${max} to=0,255&lt;br /&gt;
&lt;br /&gt;
done ########################################################################&lt;br /&gt;
echo &amp;quot;Rescaling done!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# pan-sharpen High Resolution imagery ---------------------------------------&lt;br /&gt;
# needs setting some naming conventions&lt;br /&gt;
for Method_Input in \&lt;br /&gt;
&amp;quot;ihs ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;brovey ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;pca ToAR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
  # parse &amp;quot;${Method_STR}&amp;quot; and set positional parameters&lt;br /&gt;
  set -- $Method_Input ; echo $1 $2&lt;br /&gt;
&lt;br /&gt;
  # some echo&lt;br /&gt;
  echo &amp;quot;Pan-Sharpening the &amp;lt;${2}&amp;gt; images based on the &amp;lt;${1}&amp;gt; method&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  i.pansharpen \&lt;br /&gt;
  sharpen=${1} \&lt;br /&gt;
  pan=Pan_${2}_255 \&lt;br /&gt;
  ms1=Blue_${2}_255 \&lt;br /&gt;
  ms2=Green_${2}_255 \&lt;br /&gt;
  ms3=Red_${2}_255 \&lt;br /&gt;
  output=sharp_${1}_${2}_255&lt;br /&gt;
&lt;br /&gt;
done ########################################################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# compose BGRs --------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
# loop over Methods and Input Types, compose RGBs&lt;br /&gt;
for Method_Input in \&lt;br /&gt;
&amp;quot;ihs ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;brovey ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;pca ToAR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
  # parse &amp;quot;${Method_STR}&amp;quot; and set positional parameters&lt;br /&gt;
  set -- $Method_Input ; echo $1 $2&lt;br /&gt;
&lt;br /&gt;
  # region&lt;br /&gt;
  g.region rast=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue&lt;br /&gt;
&lt;br /&gt;
  # compose&lt;br /&gt;
  r.composite --o \&lt;br /&gt;
  r=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_red \&lt;br /&gt;
  g=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_green \&lt;br /&gt;
  b=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue \&lt;br /&gt;
  out=rgb_sharpened_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255&lt;br /&gt;
&lt;br /&gt;
done #######################################################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# re-balance &amp;amp; re-compose colors --------------------------------------------&lt;br /&gt;
&lt;br /&gt;
for Method_Input in \&lt;br /&gt;
&amp;quot;ihs ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;brovey ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;pca ToAR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
  # parse &amp;quot;${Method_STR}&amp;quot; and set positional parameters&lt;br /&gt;
  set -- $Method_Input ; echo $1 $2&lt;br /&gt;
&lt;br /&gt;
  # re-balance&lt;br /&gt;
  i.landsat.rgb -p \&lt;br /&gt;
  r=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_red \&lt;br /&gt;
  g=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_green \&lt;br /&gt;
  b=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue&lt;br /&gt;
&lt;br /&gt;
  # region -- Really necessary, again?&lt;br /&gt;
  g.region rast=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue&lt;br /&gt;
&lt;br /&gt;
  # re-compose&lt;br /&gt;
  r.composite --o \&lt;br /&gt;
  r=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_red \&lt;br /&gt;
  g=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_green \&lt;br /&gt;
  b=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue \&lt;br /&gt;
  out=rgb_sharpened_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_rebalanced&lt;br /&gt;
&lt;br /&gt;
done ########################################################################&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Pan-Sharpening based on the HPFA technique ====&lt;br /&gt;
&lt;br /&gt;
The technique, implemented via the GRASS add-on {{AddonSrc|imagery|i.fusion.hpf|version=7}}, as indicated above, involves a convolution using a High Pass Filter (HPF) on the high resolution data, then combining this with the lower resolution multispectral data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Source: &amp;quot;Optimizing the High-Pass Filter Addition Technique for Image Fusion&amp;quot;, Ute G. Gangkofner, Pushkar S. Pradhan, and Derrold W. Holcomb (2008)''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The algorithm's steps are:&lt;br /&gt;
&lt;br /&gt;
# Computing the ratio of the low (Multi-Spectral) to the high (Panchromatic) resolution&lt;br /&gt;
# High Pass Filtering the Panchromatic Image&lt;br /&gt;
# Resampling the Multi-Spectral image to the higher resolution&lt;br /&gt;
# Adding a weighted High-Pass-Filtered image to the upsampled Multi-Spectral image&lt;br /&gt;
# Optionally, matching the histogram of the Pan-Sharpened image to the one of the original Multi-Spectral image&lt;br /&gt;
&lt;br /&gt;
=== Color Composites ===&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== Vegetation Indices ==&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== PCA ==&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== IKONOS Image classification ==&lt;br /&gt;
&lt;br /&gt;
See [[Image classification]]&lt;br /&gt;
&lt;br /&gt;
== References / Sources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.apollomapping.com/wp-content/user_uploads/2011/09/IKONOS_Esun_Calculations.pdf IKONOS Planetary Reflectance and Me an Solar Exoatmospheric Irradiance, by Martin Taylor] &lt;br /&gt;
* [http://web.unicen.edu.ar/crecic/docs/radrefl.pdf Ikonos DN Value Conversion to Planetary Reflectance Values, by David Fleming]&lt;br /&gt;
* [http://landsathandbook.gsfc.nasa.gov/data_prod/prog_sect11_3.html Landsat7 Science Data Users Handbook, Chapter 11, Section 3]&lt;br /&gt;
* [http://igett.delmar.edu/Resources/Remote%20Sensing%20Technology%20Training/Calculation-DN_to_Reflectance_Irish_20June08.pdf Calibrated Landsat Digital Number (DN) to Top of Atmosphere (TOA) Reflectance Conversion, by Richard Irish]&lt;br /&gt;
* from [http://landsat.usgs.gov/tools_access_all_faqs.php FAQs about the Landsat Missions]&lt;br /&gt;
** [http://landsat.usgs.gov/how_is_radiance_calculated.php How is radiance calculated?]&lt;br /&gt;
** [http://landsat.usgs.gov/at_sensor_reflectance_calculated.php How is at-sensor reflectance calculated?]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* GRASS-Wiki page about [http://grasswiki.osgeo.org/wiki/Image_processing Image Processing]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Documentation]]&lt;br /&gt;
[[Category: FAQ]]&lt;br /&gt;
[[Category: IKONOS]]&lt;br /&gt;
[[Category: High Resolution]]&lt;br /&gt;
[[Category: Import]]&lt;br /&gt;
[[Category: Digital Numbers]]&lt;br /&gt;
[[Category: Radiance]]&lt;br /&gt;
[[Category: Reflectance]]&lt;br /&gt;
[[Category: Image processing]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=QuickBird&amp;diff=23381</id>
		<title>QuickBird</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=QuickBird&amp;diff=23381"/>
		<updated>2016-08-14T08:10:09Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: updated link to i.fusion.hpf&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
&lt;br /&gt;
QuickBird is a commercial earth observation satellite. Details about the sensor are provided at Digital Globe's [http://www.digitalglobe.com/sites/default/files/QuickBird-DS-QB-PROD.pdf QuickBird Data Sheet]. Wikipedia's article on {{wikipedia|QuickBird}} provides an informative overview as well.&lt;br /&gt;
&lt;br /&gt;
=== Quick Facts ===&lt;br /&gt;
&lt;br /&gt;
* Panchromatic (black and white) and Multi-Spectral imagery&lt;br /&gt;
* Multi-spectral bands are ordered as&lt;br /&gt;
&lt;br /&gt;
 band 1 = blue&lt;br /&gt;
      2 = green&lt;br /&gt;
      3 = red&lt;br /&gt;
      4 = Near IR&lt;br /&gt;
&lt;br /&gt;
* Scenes are 16.5km x 16.5km.&lt;br /&gt;
&lt;br /&gt;
* Data is 11-bit integers stored in a 16-bit integer field. Thus band minimum = 0, band maximum = 2047. &amp;lt;!--(&amp;lt;math&amp;gt;2^{11}-1&amp;lt;/math&amp;gt;)--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Available pixel resolutions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
! Product&lt;br /&gt;
! Black &amp;amp; White&lt;br /&gt;
! Multispectral&lt;br /&gt;
! Color &amp;amp; Pan-sharpened&lt;br /&gt;
|-&lt;br /&gt;
| Basic&lt;br /&gt;
| 61 cm to 72 cm as collected&lt;br /&gt;
| 2.44 m to 2.88 m as collected&lt;br /&gt;
| not available&lt;br /&gt;
|-&lt;br /&gt;
| Standard&lt;br /&gt;
| 60 cm or 70 cm&lt;br /&gt;
| 2.4 m or 2.8 m&lt;br /&gt;
| 60 cm or 70 cm&lt;br /&gt;
|-&lt;br /&gt;
| Orthorectified&lt;br /&gt;
| 60 cm or 70 cm&lt;br /&gt;
| 2.4 m or 2.8 m&lt;br /&gt;
| 60 cm or 70 cm&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Notes ===&lt;br /&gt;
&lt;br /&gt;
From the whitepaper [http://www.apollomapping.com/wp-content/user_uploads/2011/09/Radiance_Conversion_of_QuickBird_Data.pdf Radiance Conversion of QuickBird Data]:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;blockquote&amp;gt;QuickBird products are delivered to the customer as radiometrically corrected image pixels (qPixel,Band).&lt;br /&gt;
Radiometric correction includes a dark offset subtraction and a non-uniformity correction (detector-to-detector&lt;br /&gt;
relative gain). Corrected counts are specific to the QuickBird instrument and therefore QuickBird imagery MUST be&lt;br /&gt;
converted to spectral radiance before radiometric/spectral analysis or comparison with imagery from other sensors in&lt;br /&gt;
a radiometric/spectral manner.&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Availability (Sample Data) ==&lt;br /&gt;
&lt;br /&gt;
* Search for commercial satellite image providers in the internet.&lt;br /&gt;
* Some sample QuickBird2 data are available at Digital Globe's collection of [http://www.digitalglobe.com/product-samples Imagery Product Samples] &lt;br /&gt;
* [http://www.landcover.org/ The Global Land Cover Facility (GLCF)] provides some [http://glcf.umd.edu/data/quickbird/ QuickBird] acqusitions for education or research purposes only.&lt;br /&gt;
&lt;br /&gt;
== Modules overview ==&lt;br /&gt;
&lt;br /&gt;
=== Outside of GRASS ===&lt;br /&gt;
&lt;br /&gt;
* gdalinfo&lt;br /&gt;
* gdalwarp&lt;br /&gt;
&lt;br /&gt;
=== Inside GRASS GIS ===&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.in.gdal}}&lt;br /&gt;
* {{cmd|r.mapcalc}}&lt;br /&gt;
* {{cmd|r.colors}}&lt;br /&gt;
* {{cmd|i.landsat.rgb}} (GRASS 6.x) | {{cmd|i.colors.enhance|version=70}} (GRASS 7.x) &lt;br /&gt;
* {{cmd|i.pansharpen|version=70}} (GRASS 7.x) &lt;br /&gt;
* {{cmd|i.vi|version=70}} (GRASS 7.x) &lt;br /&gt;
* {{cmd|i.segment|version=70}} (GRASS 7.x) &lt;br /&gt;
* and more&lt;br /&gt;
&lt;br /&gt;
== Pre-Processing ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
Typically, multispectral satellite data are converted into physical quantities such as ''Radiance'' or ''Reflectance'' before they are subjected in multispectral analysis techniques (image interpretation, band arithmetic, vegetation indices, matrix transformations, etc.). The latter can be differentiated in ''Top of Atmosphere Reflectance'' (ToAR) which does not account for atmospheric effects (absorption or scattering) and in ''Top of Canopy Reflectance'' (ToCR) which introduces a &amp;quot;correction&amp;quot; for atmospheric effects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In order to derive Reflectance values, likewise as with remotely sensed data acquired by other sensors, QuickBird raw image digital numbers (DNs), also referred to as ''radiometrically corrected image pixels'' need to be converted to ''Top of Atmosphere Radiance'' values.  Spectral Radiance values are then converted to Reflectance values based on various acquisition related parameters. Note, ''Spectal Radiance'' is the measure of the quantity of radiation that hits the sensor and typically expressed in &amp;lt;math&amp;gt;\frac{W}{m^2*sr*nm}&amp;lt;/math&amp;gt;, that is ''watts'' per ''unit source area'', per ''unit solid angle'', and per ''unit wavelength''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Converting QuickBird DNs to ''Top of Atmosphere'' Radiance, as described by Keith Krause (2005) in ''Radiometric Use of QuickBird Imagery, Technical Note'', can be done by using the following equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L_{\lambda\text{Pixel, Band}} = \frac{K_{\text{Band}} * q_{\text{Pixel, Band}}}{\Delta\lambda_{\text{Band}}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;where:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;L_{\lambda\text{Pixel,Band}}&amp;lt;/math&amp;gt;:  Top-of-Atmosphere Spectral Radiance image pixels [W-m-2-sr-1-μm-1]&lt;br /&gt;
* &amp;lt;math&amp;gt;K_{\text{Band}}&amp;lt;/math&amp;gt;:  the absolute radiometric calibration factor [W-m-2-sr-1-count-1] for a given band&lt;br /&gt;
* &amp;lt;math&amp;gt;q_{\text{Pixel,Band}}&amp;lt;/math&amp;gt;:  radiometrically corrected image pixels [counts  or  Digital Numbers]&lt;br /&gt;
* &amp;lt;math&amp;gt;\Delta_{\lambda_{\text{Band}}}&amp;lt;/math&amp;gt;:  the effective bandwidth [μm] for a given band&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Converting to Top of Atmosphere Reflectance, also referred to as Planetary Reflectance, can be done by using the following equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\rho_p = \frac{\pi * L\lambda * d^2}{ESUN\lambda * cos(\Theta_S)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;where:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\rho&amp;lt;/math&amp;gt; - Unitless Planetary Reflectance&lt;br /&gt;
* &amp;lt;math&amp;gt;\pi&amp;lt;/math&amp;gt; - mathematical constant (3.14159265358)&lt;br /&gt;
* &amp;lt;math&amp;gt;L\lambda&amp;lt;/math&amp;gt; spectral Radiance at the sensor's aperture, from equation... '''''ToADD'''''&lt;br /&gt;
* &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; - Earth-Sun distance in astronomical units, interpolated values&lt;br /&gt;
* &amp;lt;math&amp;gt;Esun&amp;lt;/math&amp;gt; - Mean solar exoatmospheric irradiance(s) (W/m2/μm), interpolated values&lt;br /&gt;
* &amp;lt;math&amp;gt;cos(\theta_s)&amp;lt;/math&amp;gt; - {{wikipedia||Solar_zenith_angle}} from the image acquisition's metadata&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Importing data ===&lt;br /&gt;
&lt;br /&gt;
==== File Formats &amp;amp; Metadata ====&lt;br /&gt;
&lt;br /&gt;
* GeoTIFF, NITF 2.1, NITF 2.0&lt;br /&gt;
* Image bits / pixel: 8 or 16 bits&lt;br /&gt;
&lt;br /&gt;
Setting up a Location in GRASS GIS requires to know the Spatial Reference System in which the data of interest are projected. Retrieving the projection parameters of QuickBird imagery, can be done by using the `gdalinfo` program.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* Various ways of Location creation based on georeferenced data&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Importing ====&lt;br /&gt;
&lt;br /&gt;
Once inside an appropriate Location, importing the data is done with the {{cmd|r.in.gdal}} module.&lt;br /&gt;
&lt;br /&gt;
For example, GeoTIFF files/bands, can be imported in one go by looping {{cmd|r.in.gdal}} over all of them&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for TIF in `echo *.tif`; do r.in.gdal in=${TIF} out=${TIF%%.*}; done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Cleanup ===&lt;br /&gt;
Rename the NIR band&lt;br /&gt;
 {{cmd|g.rename}} QBird_Multichrom.4,QBird_Multichrom.NIR&lt;br /&gt;
&lt;br /&gt;
It is very likely that the Red and Blue bands are swapped (in older datasets), so fix that by renaming them. (see [http://osdir.com/ml/gis.gdal.devel/2004-03/msg00025.html])&lt;br /&gt;
 g.rename QBird_Multichrom.blue,QBird_Multichrom.realred&lt;br /&gt;
 g.rename QBird_Multichrom.red,QBird_Multichrom.blue&lt;br /&gt;
 g.rename QBird_Multichrom.realred,QBird_Multichrom.red&lt;br /&gt;
&lt;br /&gt;
No data is set to 0, so convert that to NULL with {{cmd|r.null}}:&lt;br /&gt;
 for BAND in red green blue NIR ; do&lt;br /&gt;
   r.null QBird_Multichrom.$BAND setnull=0&lt;br /&gt;
   echo $BAND:&lt;br /&gt;
   r.info -r QBird_Multichrom.$BAND&lt;br /&gt;
   echo&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
Set color tables appropriately for 11-bit data:&lt;br /&gt;
 for BAND in red green blue NIR ; do&lt;br /&gt;
   {{cmd|r.colors}} QBird_Multichrom.$BAND color=rules &amp;lt;&amp;lt; EOF&lt;br /&gt;
     0 black&lt;br /&gt;
     2047 white&lt;br /&gt;
 EOF&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is not necessarily needed, but if you wish to rescale to 8-bit data you can use {{cmd|r.rescale}} as follows:&lt;br /&gt;
 for BAND in red green blue NIR ; do&lt;br /&gt;
   r.rescale in=QBird_Multichrom.$BAND from=0,2047 \&lt;br /&gt;
      out=QBird_Multichrom255.$BAND to=0,255&lt;br /&gt;
 done&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Display the 3-band RGB image:&lt;br /&gt;
 {{cmd|d.rgb}} r=QBird_Multichrom.red g=QBird_Multichrom.green b=QBird_Multichrom.blue&lt;br /&gt;
&lt;br /&gt;
If the image is excessively dark you might try using the {{cmd|i.landsat.rgb}} module to auto-balance the colors and redraw:&lt;br /&gt;
 i.landsat.rgb r=QBird_Multichrom.red g=QBird_Multichrom.green b=QBird_Multichrom.blue&lt;br /&gt;
 d.redraw&lt;br /&gt;
&lt;br /&gt;
=== Deriving Physical Quantities ===&lt;br /&gt;
&lt;br /&gt;
Converting Digital Numbers to Radiance/Reflectance requires knowledge about the sensor's specific spectral band parameters. These are, as extracted from the document ''Radiometric Use of QuickBird Imagery, Technical Note. 2005-11-07, by Keith Krause.''&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
# Band-Averaged Solar Spectral Irradiance [W/sq.m./μm]&lt;br /&gt;
Pan_Esun=1381.79&lt;br /&gt;
Blue_Esun=1924.59&lt;br /&gt;
Green_Esun=1843.08&lt;br /&gt;
Red_Esun=1574.77&lt;br /&gt;
NIR_Esun=1113.71&lt;br /&gt;
&lt;br /&gt;
# Revised K Factors &amp;amp; Effective Bandwidths&lt;br /&gt;
&lt;br /&gt;
# 1st column: K Conversion Factors (&amp;amp; Pan TDI Level) for  16-Bit  products [W/sq.m./sr/count]&lt;br /&gt;
# 2nd column: Effective Bandwidth [μm] per Spectral Band&lt;br /&gt;
&lt;br /&gt;
K16_Pan10=0.08381880	;	Pan10_Width=0.398&lt;br /&gt;
K16_Pan13=0.06447600	;	Pan13_Width=0.398&lt;br /&gt;
K16_Pan18=0.04656600	;	Pan18_Width=0.398&lt;br /&gt;
K16_Pan24=0.03494440	;	Pan24_Width=0.398&lt;br /&gt;
K16_Pan32=0.02618840	;	Pan32_Width=0.398&lt;br /&gt;
K16_Blue=0.01604120	;	Blue_Width=0.068&lt;br /&gt;
K16_Green=0.01438470	;	Green_Width=0.099&lt;br /&gt;
K16_Red=0.01267350	;	Red_Width=0.071&lt;br /&gt;
K16_NIR=0.01542420	;	NIR_Width=0.114&lt;br /&gt;
&lt;br /&gt;
# 1st column: k′ Conversion Factors for  8-Bit  products&lt;br /&gt;
# 2nd column being identical (as above) not repeated!&lt;br /&gt;
&lt;br /&gt;
K8_Pan10=1.02681367&lt;br /&gt;
K8_Pan13=1.02848939&lt;br /&gt;
K8_Pan18=1.02794702&lt;br /&gt;
K8_Pan24=1.02989685&lt;br /&gt;
K8_Pan32=1.02739898&lt;br /&gt;
K8_Blue=1.12097834&lt;br /&gt;
K8_Green=1.37652632&lt;br /&gt;
K8_Red=1.30924587&lt;br /&gt;
K8_NIR=0.98368622&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Attention for 32-bit floating point calculations is requried. As stated, in the same document,&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''NOTE: conversion equations are to be performed on all pixels in a given band of a QuickBird image and should use 32-bit floating point calculations.''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Spectral Radiance ====&lt;br /&gt;
&lt;br /&gt;
Converting a Blue Band (Digital Numbers) in to Spectral Radiance in the ''correct'' units to be further used for the conversion in to unitless Reflectance:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# set the region&lt;br /&gt;
g.region rast=Blue_DNs -p&lt;br /&gt;
&lt;br /&gt;
# convert DNs to spectral Radiance values&lt;br /&gt;
r.mapcalc &amp;quot;Blue_Radiance = '''ToAdd''' &amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Planetary Reflectance ====&lt;br /&gt;
&lt;br /&gt;
The equation to derive Reflectance values incorporates in addition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* The mathematical constant {{wikipedia|Pi}} &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;PI=3.14159265358&amp;lt;/source&amp;gt;.&lt;br /&gt;
* The Earth-Sun distance in astronomical units which depends on the acquisition's day of year (DOY -- also referred to as Julian day, {{wikipedia|Ordinal_date}}) and can be retrieved from the following spreadsheet &amp;lt;http://landsathandbook.gsfc.nasa.gov/excel_docs/d.xls&amp;gt;.&lt;br /&gt;
* The mean solar exoatmospheric irradiance in &amp;lt;math&amp;gt;\frac{W}{m^2*\mu m}&amp;lt;/math&amp;gt;. See 3rd column of (interplated) values given above.&lt;br /&gt;
* The cosine of the ''Solar Zenith Angle'' (SZA) at the time of the acquisition. The SZA can be calculated from its complementary ''Solar Elevation Angle'' (SEA) given in the image acquisition's metadata.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following example we accept as the acquisition's &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;DOY=...&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;SEA=...&amp;lt;/source&amp;gt;. Hence, we get the Earth-Sun distance &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;ESD=...&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;SZA = ... deg&amp;lt;/source&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Converting the in-Blue spectral band at-sensor Radiance in to Planerary Reflectance:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;PI=3.14159265358; ESD=...; BAND_Esun=...; SZA=...&amp;lt;/source&amp;gt;&lt;br /&gt;
 {{cmd|r.mapcalc}} &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;&amp;quot;Blue_Reflectance = ( ${PI} * Blue_Radiance * ${ESD}^2 ) / ( ${BAND_Esun} * cos(${SZA}) )&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Automatising Conversions ====&lt;br /&gt;
&lt;br /&gt;
Scripting the conversion process avoids repeating the same steps for each band separately.&lt;br /&gt;
&lt;br /&gt;
===== in Python =====&lt;br /&gt;
&lt;br /&gt;
A custom python script, performing the operations of interest, might be like [https://github.com/NikosAlexandris/i.quickbird.toar i.quickbird.toar (for GRASS 7.x)]&lt;br /&gt;
&lt;br /&gt;
===== in bash =====&lt;br /&gt;
&lt;br /&gt;
Am example bash shell script, might look like the one that follows. '''Note,''' however, constants, band parameters and acquisition related metadata are hard-coded! Reviewing the code and altering appropriately is required, i.e. checking for the parameters &amp;lt;code&amp;gt;ESD&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;SEA&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;PanTDI&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;K_BAND&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!bin/bash&lt;br /&gt;
&lt;br /&gt;
# Pi, first 11 decimals&lt;br /&gt;
PI=3.14159265358&lt;br /&gt;
&lt;br /&gt;
# HardCoded MetaData!&lt;br /&gt;
&lt;br /&gt;
  # Acquisition's Day of Year and estimated Earth-Sun Distance&lt;br /&gt;
  DOY=274; ESD=1.001190 &lt;br /&gt;
&lt;br /&gt;
  # Sun Zenith Angle based on the acquisition's Sun Elevation Angle&lt;br /&gt;
  SEA=67.8; SZA=$(echo &amp;quot;90 - ${SEA}&amp;quot; | bc )&lt;br /&gt;
&lt;br /&gt;
  # which Pan TDI level?&lt;br /&gt;
  PanTDI=&amp;quot;10&amp;quot;  # evaluate below...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Spectral Irradiance [W-m-2-μm-1] 	&lt;br /&gt;
&lt;br /&gt;
Pan_Esun=1381.79&lt;br /&gt;
Blue_Esun=1924.59&lt;br /&gt;
Green_Esun=1843.08&lt;br /&gt;
Red_Esun=1574.77&lt;br /&gt;
NIR_Esun=1113.71&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# 1st column: K Conversion Factors for   16-Bit   products&lt;br /&gt;
# 2nd column: Effective Bandwidth [μm] per Spectral Band&lt;br /&gt;
&lt;br /&gt;
K16_Pan10=0.08381880;	Pan10_Width=0.398&lt;br /&gt;
K16_Pan13=0.06447600;	Pan13_Width=0.398&lt;br /&gt;
K16_Pan18=0.04656600;	Pan18_Width=0.398&lt;br /&gt;
K16_Pan24=0.03494440;	Pan24_Width=0.398&lt;br /&gt;
K16_Pan32=0.02618840;	Pan32_Width=0.398&lt;br /&gt;
K16_Blue=0.01604120 ;	Blue_Width=0.068&lt;br /&gt;
K16_Green=0.01438470;	Green_Width=0.099&lt;br /&gt;
K16_Red=0.01267350  ;	Red_Width=0.071&lt;br /&gt;
K16_NIR=0.01542420  ;	NIR_Width=0.114&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# 1st column: k′ Conversion Factors for   8-Bit   products&lt;br /&gt;
# Effective Bandwidths [μm] per Spectral Band: as above&lt;br /&gt;
&lt;br /&gt;
K8_Pan10=1.02681367&lt;br /&gt;
K8_Pan13=1.02848939&lt;br /&gt;
K8_Pan18=1.02794702&lt;br /&gt;
K8_Pan24=1.02989685&lt;br /&gt;
K8_Pan32=1.02739898&lt;br /&gt;
K8_Blue=1.12097834&lt;br /&gt;
K8_Green=1.37652632&lt;br /&gt;
K8_Red=1.30924587&lt;br /&gt;
K8_NIR=0.98368622&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Bands&lt;br /&gt;
Spectral_Bands=&amp;quot;Pan Blue Green Red NIR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# loop over all bands&lt;br /&gt;
for BAND in ${Spectral_Bands}; do&lt;br /&gt;
&lt;br /&gt;
  # which Pan TDI level?&lt;br /&gt;
  if [[ ${BAND} == Pan ]]&lt;br /&gt;
  then&lt;br /&gt;
    eval Pan=&amp;quot;Pan${PanTDI}&amp;quot;; echo &amp;quot;Note, processing for ${Pan}&amp;quot;&lt;br /&gt;
    eval BAND=&amp;quot;${Pan}&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
  # some echo...&lt;br /&gt;
  echo &amp;quot;Processing the ${BAND} spectral band&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # set band parameters as variables  -- using  K16  for 16-bit data!&lt;br /&gt;
  eval K_BAND=&amp;quot;K16_${BAND}&amp;quot;&lt;br /&gt;
  eval BAND_Width=&amp;quot;${BAND}_Width&amp;quot;&lt;br /&gt;
  echo &amp;quot;Band Parameters set to K=${!K_BAND}, Bandwidth=${!BAND_Width}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  if [[ ${BAND} == Pan* ]]&lt;br /&gt;
  then&lt;br /&gt;
    BAND=&amp;quot;Pan&amp;quot; ; echo &amp;quot;Processing the ${BAND} spectral band&amp;quot;&lt;br /&gt;
  fi&lt;br /&gt;
&lt;br /&gt;
  # set region&lt;br /&gt;
  g.region rast=${BAND}_DNs #-pg&lt;br /&gt;
  echo &amp;quot;Region matching the ${BAND} spectral band&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # conversion to Radiance based on (1) -- attention: 32-bit calculations required&lt;br /&gt;
  r.mapcalc &amp;quot;${BAND}_Radiance = ( double(${!K_BAND}) * ${BAND}_DNs ) / ${!BAND_Width}&amp;quot;&lt;br /&gt;
  r.info -r &amp;quot;${BAND}_Radiance&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # add info&lt;br /&gt;
  r.support map=${BAND}_Radiance \&lt;br /&gt;
  title=&amp;quot;&amp;quot; \&lt;br /&gt;
  units=&amp;quot;W / sq.m. / μm / ster&amp;quot; \&lt;br /&gt;
  description=&amp;quot;Top-of-Atmosphere `echo ${BAND}` band spectral Radiance [W/m^2/sr/μm]&amp;quot; \&lt;br /&gt;
  source1='&amp;quot;Radiometric Use of QuickBird Imagery, Technical Note (2005),&amp;quot; by Keith Krause, Digital Globe'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  eval BAND_Esun=&amp;quot;${BAND}_Esun&amp;quot;; echo &amp;quot;Using Esun=${!BAND_Esun}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # calculate ToAR  -- ${BAND}_Radiance is already 32-bit -- see above!&lt;br /&gt;
  r.mapcalc &amp;quot;${BAND}_ToAR = \&lt;br /&gt;
	( ${PI} * ${BAND}_Radiance * ${ESD}^2 ) / ( ${!BAND_Esun} * cos(${SZA}) )&amp;quot;&lt;br /&gt;
  r.info -r ${BAND}_ToAR&lt;br /&gt;
&lt;br /&gt;
  # add some metadata&lt;br /&gt;
  r.support map=${BAND}_ToAR \&lt;br /&gt;
  title=&amp;quot;echo ${BAND} band (Top of Atmosphere Reflectance)&amp;quot; \&lt;br /&gt;
  units=&amp;quot;Unitless planetary reflectance&amp;quot; \&lt;br /&gt;
  description=&amp;quot;Top of Atmosphere `echo ${BAND}` band spectral Reflectance (unitless)&amp;quot; \&lt;br /&gt;
  source1='&amp;quot;Radiometric Use of QuickBird Imagery, Technical Note (2005),&amp;quot; by Keith Krause, Digital Globe' \&lt;br /&gt;
  source2=&amp;quot;Digital Globe&amp;quot; \&lt;br /&gt;
  history=&amp;quot;PI=3.14159265358; K=${!K_BAND}; Bandwidth=${!BAND_Width}; ESD=${ESD}; Esun=${!BAND_Esun}; SZA=${SZA}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Atmospheric correction ===&lt;br /&gt;
&lt;br /&gt;
See [[Atmospheric correction]]&lt;br /&gt;
&lt;br /&gt;
== Post-Processing ==&lt;br /&gt;
&lt;br /&gt;
Having beforehand satellite image data expressed in physical quantities (radiance or reflectance) is preferred to follow-up with digital image analysis techniques.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pan Sharpening ==&lt;br /&gt;
&lt;br /&gt;
In GRASS ver. 6.x, one can use the {{cmd|i.fusion.brovey}} module.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i.fusion.brovey -q ms1=qbird_green ms2=qbird_nir ms3=qbird_red pan=qbird_pan outputprefix=brov&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Documentation]]&lt;br /&gt;
[[Category: Geodata]]&lt;br /&gt;
[[Category: High Resolution]]&lt;br /&gt;
[[Category: QuikBird]]&lt;br /&gt;
[[Category: Import]]&lt;br /&gt;
[[Category: Digital Numbers]]&lt;br /&gt;
[[Category: Radiance]]&lt;br /&gt;
[[Category: Reflectance]]&lt;br /&gt;
[[Category: Image processing]]&lt;br /&gt;
&lt;br /&gt;
=== HPFA based sharpening ===&lt;br /&gt;
&lt;br /&gt;
The following screenshots exemplify the High Pass Filtering Addition fusion technique applied in a fragment of the QuickBird acquisition &amp;quot;04APR05050541-X2AS_R1C1-000000186011_01_P001-Sri_Lanka-Kokilai_Lagoon&amp;quot; which is publicly available via the GLCF. An implementation of this technique for GRASS-GIS is available as a grass-addon {{AddonSrc|imagery|i.fusion.hpf|version=7}}.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[File:Pan_04APR05050541-M2AS-000000186011_01_P001.jpg|thumb|400px|border|center|Fragment from the high resolution (0.7m) panchromatic image]]&lt;br /&gt;
|[[File:RGB_04APR05050541-M2AS-000000186011_01_P001.jpg|thumb|400px|border|center|Fragment from the low resolution (2.8m) multi-spectral RGB composite image]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[File:RGB_HPF_Sharpened_Default_Parameters.jpg|thumb|400px|border|center|Fragment from the HPFA Pan-Sharpened RGB composite image. Sharpening performed with default parameters.]]&lt;br /&gt;
|[[File:RGB_HPF_Sharpened_Center_Low_Modulator_Min.jpg|thumb|400px|border|center|Fragment from another HPFA Pan-Sharpened RGB composite image. Sharpening performed with ''center=low'' and ''modulator=min'' parameters.]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=WorldView&amp;diff=23378</id>
		<title>WorldView</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=WorldView&amp;diff=23378"/>
		<updated>2016-08-14T05:11:28Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: /* Pan-Sharpening */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= This page is under construction =&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
&lt;br /&gt;
WorldView-1, WorldView-2 and WorldView-3 are commercial earth observation satellites. Details about the sensors are provided at Digital Globe's collection of [http://www.digitalglobe.com/resources/satellite-information Spacecraft Data Sheets].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is recommended -- actually it is a necessity! -- to have a look at the documentation explaining [http://www.digitalglobe.com/sites/default/files/Imagery_Support_Data_Documentation%20%281%29.pdf Digital Globe's products metadata]. Note, all of DigitalGlobe’s satellites collect data using an 11 bit dynamic range. For technical reasons, products are delivered as either 16-bit or 8-bit data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Availability (Sample Data) ==&lt;br /&gt;
&lt;br /&gt;
* Search for commercial satellite image providers in the internet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modules overview ==&lt;br /&gt;
&lt;br /&gt;
=== Outside of GRASS ===&lt;br /&gt;
&lt;br /&gt;
Satellite imagery can be managed and, at some extent, pre-processed with various [http://www.gdal.org/gdal_utilities.html GDAL utilities].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.gdal.org/gdalmanage.html gdalmanage]&lt;br /&gt;
* [http://www.gdal.org/gdalinfo.html gdalinfo]&lt;br /&gt;
* [http://www.gdal.org/gdal_translate.html gdal_translate]&lt;br /&gt;
* [http://www.gdal.org/gdalbuildvrt.html gdalbuildvrt]&lt;br /&gt;
* [http://www.gdal.org/gdalwarp.html gdalwarp]&lt;br /&gt;
&lt;br /&gt;
=== Inside GRASS GIS ===&lt;br /&gt;
&lt;br /&gt;
GRASS GIS features a complete set of modules and various add-ons enabling pre- and post-processing of WorldView satellite imagery. The following lists offer an overview of related modules and add-ons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.in.gdal}}&lt;br /&gt;
* {{cmd|r.mapcalc}}&lt;br /&gt;
* {{cmd|r.colors}}&lt;br /&gt;
* {{cmd|i.landsat.rgb}}&lt;br /&gt;
* {{AddonSrc|imagery|i.fusion.hpf|version=7}}&lt;br /&gt;
* {{cmd|i.pansharpen}}&lt;br /&gt;
* [https://github.com/NikosAlexandris/i.worldview.toar i.worldview.toar]&lt;br /&gt;
* {{cmd|i.vi}}&lt;br /&gt;
* {{cmd|i.segment}}&lt;br /&gt;
* ...''more to add''&lt;br /&gt;
&lt;br /&gt;
== Pre-Processing ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
Typically, multispectral satellite data are converted into physical quantities such as ''Radiance'' or ''Reflectance'' before they are subjected in multispectral analysis techniques (image interpretation, band arithmetic, vegetation indices, matrix transformations, etc.). The latter can be differentiated in ''Top of Atmosphere Reflectance'' (ToAR) which does not account for atmospheric effects (absorption or scattering) and in ''Top of Canopy Reflectance'' (ToCR) which introduces a &amp;quot;correction&amp;quot; for atmospheric effects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In order to derive Reflectance values, likewise as with remotely sensed data acquired by other sensors, WorldView raw image digital numbers (DNs) need to be converted to ''at-sensor spectral Radiance'' values.  At-sensor spectral Radiance values are an important input for the equation to derive Reflectance values. Note, ''Spectal Radiance'' is the measure of the quantity of radiation that hits the sensor and typically expressed in &amp;lt;math&amp;gt;\frac{W}{m^2*sr*nm}&amp;lt;/math&amp;gt;, that is ''watts'' per ''unit source area'', per ''unit solid angle'', and per ''unit wavelength''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Converting WorldView DNs to ''Top of Atmosphere'' Radiance, as described in [http://www.digitalglobe.com/downloads/Radiometric_Use_of_WorldView-2_Imagery.pdf Radiometric Use of WorldView-2 Imagery, Technical Note (2010)] by Todd Updike and Chris Comp, can be done by using the following equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L_{\lambda\text{Pixel, Band}} = \frac{K_{\text{Band}} * q_{\text{Pixel, Band}}}{\Delta\lambda_{\text{Band}}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;where:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;L_{\lambda\text{Pixel,Band}}&amp;lt;/math&amp;gt;:  Top-of-Atmosphere Spectral Radiance image pixels [W-m-2-sr-1-μm-1]&lt;br /&gt;
* &amp;lt;math&amp;gt;K_{\text{Band}}&amp;lt;/math&amp;gt;:  the absolute radiometric calibration factor [W-m-2-sr-1-count-1] for a given band&lt;br /&gt;
* &amp;lt;math&amp;gt;q_{\text{Pixel,Band}}&amp;lt;/math&amp;gt;:  radiometrically corrected image pixels [counts  or  Digital Numbers]&lt;br /&gt;
* &amp;lt;math&amp;gt;\Delta_{\lambda_{\text{Band}}}&amp;lt;/math&amp;gt;:  the effective bandwidth [μm] for a given band&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Converting to Top of Atmosphere Reflectance, also referred to as Planetary Reflectance, can be done by using the following equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\rho_p = \frac{\pi * L\lambda * d^2}{ESUN\lambda * cos(\Theta_S)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;where:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\rho&amp;lt;/math&amp;gt; - Unitless Planetary Reflectance&lt;br /&gt;
* &amp;lt;math&amp;gt;\pi&amp;lt;/math&amp;gt; - mathematical constant (3.14159265358)&lt;br /&gt;
* &amp;lt;math&amp;gt;L\lambda&amp;lt;/math&amp;gt; spectral Radiance at the sensor's aperture, from equation... '''''ToADD'''''&lt;br /&gt;
* &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; - Earth-Sun distance in astronomical units, interpolated values&lt;br /&gt;
* &amp;lt;math&amp;gt;Esun&amp;lt;/math&amp;gt; - Mean solar exoatmospheric irradiance(s) (W/m2/μm), interpolated values&lt;br /&gt;
* &amp;lt;math&amp;gt;cos(\theta_s)&amp;lt;/math&amp;gt; - {{wikipedia||Solar_zenith_angle}} from the image acquisition's metadata&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Importing data ===&lt;br /&gt;
&lt;br /&gt;
==== File Formats &amp;amp; Metadata ====&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
==== Importing ====&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* Location creation based on georeferenced data&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once inside a Location that is defined by the spatial reference system in which the bands of interest are projected, they can be imported with the {{cmd|r.in.gdal}} module.&lt;br /&gt;
&lt;br /&gt;
For example, GeoTIFF files can be imported by looping {{cmd|r.in.gdal}} over all of them&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for TIF in `echo *.tif`; do r.in.gdal in=${TIF} out=${TIF%%.*}; done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To keep the raw material untouched, we create another Mapset inside the same Location and copy over the bands giving, ''optionally'' at the same time, a new name for each.&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
=== Deriving Physical Quantities ===&lt;br /&gt;
&lt;br /&gt;
Conversions implemented in the GRASS module [https://github.com/NikosAlexandris/i.worldview.toar i.worldview.toar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''ToCleanUp''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Converting Digital Numbers to Radiance/Reflectance requires knowledge about the sensor's specific spectral band parameters. In the following listed parameters (see below), the ''Effective Bandwidth''s and the ''Band-Averaged Solar Spectral Irradiance''s are extracted from the document [http://www.digitalglobe.com/downloads/Radiometric_Use_of_WorldView-2_Imagery.pdf Radiometric Use of WorldView-2 Imagery, Technical Note (2010)] by Todd Updike and Chris Comp. The Absolute Calibration Factors are extracted from a WorldView-2 product, specifically from an image metadata file (extension .IMD).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note,''' however, as stated in the above document,&lt;br /&gt;
&lt;br /&gt;
   The absolute radiometric calibration factor is dependent on the specific band, &lt;br /&gt;
   as well as the TDI exposure level, line rate, pixel aggregation, and bit depth &lt;br /&gt;
   of the product. Based on these parameters, the appropriate value is provided in &lt;br /&gt;
   the .IMD file. For this reason, care should be taken not to mix absolute radiometric &lt;br /&gt;
   calibration factors between products that might have different collection conditions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
Pan_CalCoef=0.05678345		;	Pan_Width=0.2846000		;	Pan_Esun=1580.8140&lt;br /&gt;
Coastal_CalCoef=0.009295654	;	Coastal_CalCoef=0.04730000	;	Coastal_Esun=1758.2229&lt;br /&gt;
Blue_CalCoef=0.01260825		;	Blue_Width=0.05430000		;	Blue_Esun=1974.2416&lt;br /&gt;
Green_CalCoef=0.009713071	;	Green_Width=0.06300000		;	Green_Esun=1856.4104&lt;br /&gt;
Yellow_CalCoef=0.005829815	;	Yellow_Width=0.03740000		;	Yellow_Esun=1738.4791&lt;br /&gt;
Red_CalCoef=0.01103623		;	Red_Width=0.05740000		;	Red_Esun=1559.4555&lt;br /&gt;
RedEdge_CalCoef=0.005188136	;	RedEdge_Width=0.03930000	;	Red_Edge_Esun=1342.0695&lt;br /&gt;
NIR1_CalCoef=0.01224380		;	NIR1_Width=0.09890000		;	NIR_Esun=1069.7302&lt;br /&gt;
NIR2_CalCoef=0.009042234	;	NIR2_Width=0.09960000		;	NIR2_Esun=861.2866&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following examples exemplify the conversion of raw Blue band digital numbers into Radiance and Reflectance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Spectral Radiance ====&lt;br /&gt;
&lt;br /&gt;
Converting a Blue Band (Digital Numbers) in to Spectral at-sensor Radiance in the ''correct'' units to be further used for the conversion in to unitless Reflectance:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# set the region&lt;br /&gt;
g.region rast=Blue_DNs -p&lt;br /&gt;
&lt;br /&gt;
# convert DNs to spectral Radiance values&lt;br /&gt;
r.mapcalc &amp;quot;Blue_Radiance = ( (10000 * WorldView_Blue_DNs) / (... * ...) )&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Planetary Reflectance ====&lt;br /&gt;
&lt;br /&gt;
The equation to derive Reflectance values incorporates in addition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* The mathematical constant {{wikipedia|Pi}} &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;PI=3.14159265358&amp;lt;/source&amp;gt;.&lt;br /&gt;
* The Earth-Sun distance in astronomical units which depends on the acquisition's day of year (DOY -- also referred to as Julian day, {{wikipedia|Ordinal_date}}) and can be retrieved from the following spreadsheet &amp;lt;http://landsathandbook.gsfc.nasa.gov/excel_docs/d.xls&amp;gt;.&lt;br /&gt;
* The mean solar exoatmospheric irradiance in &amp;lt;math&amp;gt;\frac{W}{m^2*\mu m}&amp;lt;/math&amp;gt;. See 3rd column of (interplated) values given above.&lt;br /&gt;
* The cosine of the ''Solar Zenith Angle'' (SZA) at the time of the acquisition. The SZA can be calculated from its complementary ''Solar Elevation Angle'' (SEA) given in the image acquisition's metadata.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following example we accept as the acquisition's &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;DOY=...&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;SEA=...&amp;lt;/source&amp;gt;. Hence, we get the Earth-Sun distance &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;ESD=...&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;SZA = ... deg&amp;lt;/source&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In any case, '''note''' that Top-of-Atmosphere Reflectance does not account for topographic, atmospheric, or BRDF differences.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Converting the in-Blue spectral band at-sensor Radiance in to Planerary Reflectance:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;PI=...; ESD=...; BAND_Esun=...; SZA=...&amp;lt;/source&amp;gt;&lt;br /&gt;
 {{cmd|r.mapcalc}} &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;&amp;quot;Blue_Reflectance = ( ${PI} * Blue_Radiance * ${ESD}^2 ) / ( ${BAND_Esun} * cos(${SZA}) )&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Automatising Conversions ====&lt;br /&gt;
&lt;br /&gt;
The conversion process can be scripted to avoid repeating the same steps for each band separately.&lt;br /&gt;
&lt;br /&gt;
===== Python =====&lt;br /&gt;
&lt;br /&gt;
A custom python script, performing the operations of interest, might be like [https://github.com/NikosAlexandris/i.worldview.toar i.worldview.toar (for GRASS 7.x)]&lt;br /&gt;
 &lt;br /&gt;
===== Bash =====&lt;br /&gt;
In bash, such a script might be as the following example. '''Note,''' however, in this example script constants, band parameters and acquisition related metadata are hard-coded!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# π, first 11 decimals&lt;br /&gt;
PI=3.14159265358&lt;br /&gt;
&lt;br /&gt;
# HardCoded MetaData!&lt;br /&gt;
&lt;br /&gt;
  # Acquisition's Day of Year and estimated Earth-Sun Distance&lt;br /&gt;
  DOY=100; ESD=1.00184&lt;br /&gt;
&lt;br /&gt;
  # Sun Zenith Angle based on the acquisition's Sun Elevation Angle&lt;br /&gt;
  SEA=53.8; SZA=$(echo &amp;quot;90 - ${SEA}&amp;quot; | bc )&lt;br /&gt;
&lt;br /&gt;
  # some echo&lt;br /&gt;
  echo &amp;quot;Acquisition-specific parameters&amp;quot;&lt;br /&gt;
  echo &amp;quot;Day of Year: ${DOY}, Earth-Sun Distance: ${ESD}, Sun Zenith Angle: ${SZA}&amp;quot;&lt;br /&gt;
  echo -e &amp;quot;\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# 1st column: Absolute Calibration Factors&lt;br /&gt;
# 2nd column: Spectral Band Effective Bandwidth, Δλ&lt;br /&gt;
# 3rd column: Band-Averaged Solar Spectral Irradiance [W/sq.m./micro-m]&lt;br /&gt;
&lt;br /&gt;
K_Pan=0.05678345	;	Pan_Width=0.2846000		;	Pan_Esun=1580.8140&lt;br /&gt;
K_Coastal=0.009295654	;	Coastal_Width=0.04730000	;	Coastal_Esun=1758.2229&lt;br /&gt;
K_Blue=0.01260825	;	Blue_Width=0.05430000		;	Blue_Esun=1974.2416&lt;br /&gt;
K_Green=0.009713071	;	Green_Width=0.06300000		;	Green_Esun=1856.4104&lt;br /&gt;
K_Yellow=0.005829815	;	Yellow_Width=0.03740000		;	Yellow_Esun=1738.4791&lt;br /&gt;
K_Red=0.01103623	;	Red_Width=0.05740000		;	Red_Esun=1559.4555&lt;br /&gt;
K_RedEdge=0.005188136	;	RedEdge_Width=0.03930000	;	RedEdge_Esun=1342.0695&lt;br /&gt;
K_NIR1=0.01224380	;	NIR1_Width=0.09890000		;	NIR1_Esun=1069.7302&lt;br /&gt;
K_NIR2=0.009042234	;	NIR2_Width=0.09960000		;	NIR2_Esun=861.2866&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Bands&lt;br /&gt;
Spectral_Bands=&amp;quot;Pan Coastal Blue Green Yellow Red RedEdge NIR1 NIR2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# loop over all bands&lt;br /&gt;
for BAND in ${Spectral_Bands}; do&lt;br /&gt;
&lt;br /&gt;
  # some echo&lt;br /&gt;
  echo -e &amp;quot;Processing the \&amp;quot;${BAND}\&amp;quot; spectral band&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # set band parameters as variables&lt;br /&gt;
  eval BAND_Width=&amp;quot;${BAND}_Width&amp;quot;&lt;br /&gt;
  echo &amp;quot;* Band-specific radiometric parameters set to K=${!K_BAND}, Bandwidth=${!BAND_Width}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # set region&lt;br /&gt;
  g.region rast=${BAND}_DNs&lt;br /&gt;
&lt;br /&gt;
  # conversion to Radiance based on (1) -- attention: 32-bit calculations required&lt;br /&gt;
  echo &amp;quot;* Converting ${BAND} Digital Numebrs to Radiance...&amp;quot; | tr -d &amp;quot;\n&amp;quot;&lt;br /&gt;
  r.mapcalc &amp;quot;${BAND}_Radiance = ( double(${!K_BAND}) * ${BAND}_DNs ) / ${!BAND_Width}&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  # report range&lt;br /&gt;
  echo &amp;quot;* Reporting range of the ${BAND} spectral radiance: &amp;quot; | tr -d &amp;quot;\n&amp;quot;&lt;br /&gt;
  # r.info -r &amp;quot;${BAND}_Radiance&amp;quot;&lt;br /&gt;
  r.info -r &amp;quot;${BAND}_Radiance&amp;quot; | tr &amp;quot;\n&amp;quot; &amp;quot;,&amp;quot; | cut -d&amp;quot;,&amp;quot; -f1,2 | sed 's/,/,\ /'&lt;br /&gt;
&lt;br /&gt;
  # add info&lt;br /&gt;
  r.support map=${BAND}_Radiance \&lt;br /&gt;
  title=&amp;quot;&amp;quot; \&lt;br /&gt;
  units=&amp;quot;W / sq.m. / μm / ster&amp;quot; \&lt;br /&gt;
  description=&amp;quot;Top-of-Atmosphere `echo ${BAND}` band spectral Radiance [W/m^2/sr/μm]&amp;quot; \&lt;br /&gt;
  source1='&amp;quot;Radiometric Use of WorldView-2 Imagery, Technical Note (2010)&amp;quot;, by Todd Updike &amp;amp; Chris Comp'&lt;br /&gt;
&lt;br /&gt;
  # Esun&lt;br /&gt;
  eval BAND_Esun=&amp;quot;${BAND}_Esun&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # some echo&lt;br /&gt;
  echo &amp;quot;* Parameters required for the conversion: Esun= ${!BAND_Esun}, ESD= ${ESD}, ${SZA}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # calculate ToAR&lt;br /&gt;
  echo &amp;quot;* Converting ${BAND}_Radiance to Top of Atmosphere Reflectance...&amp;quot; | tr -d &amp;quot;\n&amp;quot;&lt;br /&gt;
  r.mapcalc &amp;quot;${BAND}_ToAR = \&lt;br /&gt;
	( ${PI} * ${BAND}_Radiance * ${ESD}^2 ) / ( ${!BAND_Esun} * cos(${SZA}) )&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # report range&lt;br /&gt;
  echo &amp;quot;* Reporting range of the ${BAND} spectral radiance: &amp;quot; | tr -d &amp;quot;\n&amp;quot;&lt;br /&gt;
  r.info -r ${BAND}_ToAR | tr &amp;quot;\n&amp;quot; &amp;quot;,&amp;quot; | cut -d&amp;quot;,&amp;quot; -f1,2 | sed 's/,/,\ /'&lt;br /&gt;
&lt;br /&gt;
  # add some metadata&lt;br /&gt;
  r.support map=${BAND}_ToAR \&lt;br /&gt;
  title=&amp;quot;echo ${BAND} band (Top of Atmosphere Reflectance)&amp;quot; \&lt;br /&gt;
  units=&amp;quot;Unitless planetary reflectance&amp;quot; \&lt;br /&gt;
  description=&amp;quot;Top of Atmosphere `echo ${BAND}` band spectral Reflectance (unitless)&amp;quot; \&lt;br /&gt;
  source1='&amp;quot;Radiometric Use of WorldView-2 Imagery, Technical Note (2010)&amp;quot;, by Todd Updike &amp;amp; Chris Comp, Digital Globe' \&lt;br /&gt;
  source2=&amp;quot;Digital Globe&amp;quot; \&lt;br /&gt;
  history=&amp;quot;PI=3.14159265358; K=${!K_BAND}; Bandwidth=${!BAND_Width}; ESD=${ESD}; Esun=${!BAND_Esun}; SZA=${SZA}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  echo -e &amp;quot;\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Atmospheric correction ===&lt;br /&gt;
&lt;br /&gt;
See [[Atmospheric correction]]&lt;br /&gt;
&lt;br /&gt;
== Post-Processing ==&lt;br /&gt;
&lt;br /&gt;
Having beforehand satellite image data expressed in physical quantities (radiance or reflectance) is preferred to follow-up with digital image analysis techniques. A few common post-processing practices are Contrast-Enhancement, Pan-Sharpening and creating Pseudo- or True-Color Composites. Other well known enhancing manipualtions to support the analyses of satellite imagery, include deriving Vegetation Indices, transforming multi-spectral data based on [[Principal_Components_Analysis | PCA]] and Segmenting images.&lt;br /&gt;
&lt;br /&gt;
=== Contrast Enhancement ===&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
=== Pan-Sharpening ===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Pansharpened_image Pan-Sharpening] / [http://en.wikipedia.org/wiki/Image_fusion Fusion] is the process of merging high-resolution panchromatic and lower resolution multi-spectral imagery. [http://grass.osgeo.org/grass70/ GRASS 7] holds a dedicated pan-sharpening module, {{cmd|i.pansharpen}} which features three techniques for sharpening, namely the [http://wiki.awf.forst.uni-goettingen.de/wiki/index.php/Brovey_Transformation Brovey transformation], the classical IHS method and one that is based on [[Principal Components Analysis]] (PCA).&lt;br /&gt;
Another algorithm deriving excellent detail and a realistic representation of original multispectral scene colors, is the High-Pass Filter Addition (HPFA) technique. It is implemented via the {{AddonSrc|imagery|i.fusion.hpf|version=7}} add-on (for GRASS 6, please refer to a bash shell script https://github.com/NikosAlexandris/i.fusion.hpf.sh which is, however, unmaintained). &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One approach inside GRASS-GIS to get an acceptable color-balanced composite image after Pan-sharpening 11-bit IKONOS spectral bands comprises the following steps&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
# rescale the 11-bit WorldView spectral bands to 8-bit ranging in [0, 255] ({{cmd|r.rescale}})&lt;br /&gt;
# pan-sharpen with any of the featured methods (Brovey, IHS, PCA) ({{cmd|i.pansharpen}})&lt;br /&gt;
# color-balance by using the {{cmd|i.landsat.rgb}} module or manually adjusting the color tables of the bands of interest&lt;br /&gt;
# create a composite image by using the {{cmd|r.compose}} module&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
==== Automatising Sharpening &amp;amp; RGB Composition ====&lt;br /&gt;
&lt;br /&gt;
An ''experimental'' bash script to automatise the sharpening/fusion and RGB composition process is demonstrated here. The script uses the Spectral Reflectance values (double precision values), gained from previous steps (see above), and produces Pan-sharpened images by applying all of the three methods that {{cmd|i.pansharpen}} offers. In addition, it attempts to produce True-Color composite images, without and with re-balancing the color tables by using the {{cmd|i.landsat.rgb}} module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initial tests indicate that at least one of the three sharpening methods, combined with re-balancing, produces very clear and balanced True-Color composites. Note, there is no 100% confidence that it will produce nice looking True-Color composites. Some of the methods might simply work, others might deliver fancy-colored images. As usual, some manual action might be required to get the re-balancing to work as best as possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The script can be expanded in terms of using more inputs by utilising bash's positional parameters.  However, care has to be taken to alter the instruction that concerns the conversion from double precision values to 8-bit integers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Color Composites ===&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== Vegetation Indices ==&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== PCA ==&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== WordView Image classification ==&lt;br /&gt;
&lt;br /&gt;
See [[Image classification]]&lt;br /&gt;
&lt;br /&gt;
== References / Sources ==&lt;br /&gt;
&lt;br /&gt;
* ...&lt;br /&gt;
* [http://landsathandbook.gsfc.nasa.gov/data_prod/prog_sect11_3.html Landsat7 Science Data Users Handbook, Chapter 11, Section 3]&lt;br /&gt;
* [http://igett.delmar.edu/Resources/Remote%20Sensing%20Technology%20Training/Calculation-DN_to_Reflectance_Irish_20June08.pdf Calibrated Landsat Digital Number (DN) to Top of Atmosphere (TOA) Reflectance Conversion, by Richard Irish]&lt;br /&gt;
* from [http://landsat.usgs.gov/tools_access_all_faqs.php FAQs about the Landsat Missions]&lt;br /&gt;
** [http://landsat.usgs.gov/how_is_radiance_calculated.php How is radiance calculated?]&lt;br /&gt;
** [http://landsat.usgs.gov/at_sensor_reflectance_calculated.php How is at-sensor reflectance calculated?]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* GRASS-Wiki page about [http://grasswiki.osgeo.org/wiki/Image_processing Image Processing]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Documentation]]&lt;br /&gt;
[[Category: FAQ]]&lt;br /&gt;
[[Category: WorldView]]&lt;br /&gt;
[[Category: High Resolution]]&lt;br /&gt;
[[Category: Import]]&lt;br /&gt;
[[Category: Digital Numbers]]&lt;br /&gt;
[[Category: Radiance]]&lt;br /&gt;
[[Category: Reflectance]]&lt;br /&gt;
[[Category: Image processing]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=WorldView&amp;diff=23377</id>
		<title>WorldView</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=WorldView&amp;diff=23377"/>
		<updated>2016-08-14T05:10:22Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: added link to https://github.com/NikosAlexandris/i.worldview.toar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= This page is under construction =&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
&lt;br /&gt;
WorldView-1, WorldView-2 and WorldView-3 are commercial earth observation satellites. Details about the sensors are provided at Digital Globe's collection of [http://www.digitalglobe.com/resources/satellite-information Spacecraft Data Sheets].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is recommended -- actually it is a necessity! -- to have a look at the documentation explaining [http://www.digitalglobe.com/sites/default/files/Imagery_Support_Data_Documentation%20%281%29.pdf Digital Globe's products metadata]. Note, all of DigitalGlobe’s satellites collect data using an 11 bit dynamic range. For technical reasons, products are delivered as either 16-bit or 8-bit data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Availability (Sample Data) ==&lt;br /&gt;
&lt;br /&gt;
* Search for commercial satellite image providers in the internet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modules overview ==&lt;br /&gt;
&lt;br /&gt;
=== Outside of GRASS ===&lt;br /&gt;
&lt;br /&gt;
Satellite imagery can be managed and, at some extent, pre-processed with various [http://www.gdal.org/gdal_utilities.html GDAL utilities].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.gdal.org/gdalmanage.html gdalmanage]&lt;br /&gt;
* [http://www.gdal.org/gdalinfo.html gdalinfo]&lt;br /&gt;
* [http://www.gdal.org/gdal_translate.html gdal_translate]&lt;br /&gt;
* [http://www.gdal.org/gdalbuildvrt.html gdalbuildvrt]&lt;br /&gt;
* [http://www.gdal.org/gdalwarp.html gdalwarp]&lt;br /&gt;
&lt;br /&gt;
=== Inside GRASS GIS ===&lt;br /&gt;
&lt;br /&gt;
GRASS GIS features a complete set of modules and various add-ons enabling pre- and post-processing of WorldView satellite imagery. The following lists offer an overview of related modules and add-ons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.in.gdal}}&lt;br /&gt;
* {{cmd|r.mapcalc}}&lt;br /&gt;
* {{cmd|r.colors}}&lt;br /&gt;
* {{cmd|i.landsat.rgb}}&lt;br /&gt;
* {{AddonSrc|imagery|i.fusion.hpf|version=7}}&lt;br /&gt;
* {{cmd|i.pansharpen}}&lt;br /&gt;
* [https://github.com/NikosAlexandris/i.worldview.toar i.worldview.toar]&lt;br /&gt;
* {{cmd|i.vi}}&lt;br /&gt;
* {{cmd|i.segment}}&lt;br /&gt;
* ...''more to add''&lt;br /&gt;
&lt;br /&gt;
== Pre-Processing ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
Typically, multispectral satellite data are converted into physical quantities such as ''Radiance'' or ''Reflectance'' before they are subjected in multispectral analysis techniques (image interpretation, band arithmetic, vegetation indices, matrix transformations, etc.). The latter can be differentiated in ''Top of Atmosphere Reflectance'' (ToAR) which does not account for atmospheric effects (absorption or scattering) and in ''Top of Canopy Reflectance'' (ToCR) which introduces a &amp;quot;correction&amp;quot; for atmospheric effects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In order to derive Reflectance values, likewise as with remotely sensed data acquired by other sensors, WorldView raw image digital numbers (DNs) need to be converted to ''at-sensor spectral Radiance'' values.  At-sensor spectral Radiance values are an important input for the equation to derive Reflectance values. Note, ''Spectal Radiance'' is the measure of the quantity of radiation that hits the sensor and typically expressed in &amp;lt;math&amp;gt;\frac{W}{m^2*sr*nm}&amp;lt;/math&amp;gt;, that is ''watts'' per ''unit source area'', per ''unit solid angle'', and per ''unit wavelength''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Converting WorldView DNs to ''Top of Atmosphere'' Radiance, as described in [http://www.digitalglobe.com/downloads/Radiometric_Use_of_WorldView-2_Imagery.pdf Radiometric Use of WorldView-2 Imagery, Technical Note (2010)] by Todd Updike and Chris Comp, can be done by using the following equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L_{\lambda\text{Pixel, Band}} = \frac{K_{\text{Band}} * q_{\text{Pixel, Band}}}{\Delta\lambda_{\text{Band}}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;where:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;L_{\lambda\text{Pixel,Band}}&amp;lt;/math&amp;gt;:  Top-of-Atmosphere Spectral Radiance image pixels [W-m-2-sr-1-μm-1]&lt;br /&gt;
* &amp;lt;math&amp;gt;K_{\text{Band}}&amp;lt;/math&amp;gt;:  the absolute radiometric calibration factor [W-m-2-sr-1-count-1] for a given band&lt;br /&gt;
* &amp;lt;math&amp;gt;q_{\text{Pixel,Band}}&amp;lt;/math&amp;gt;:  radiometrically corrected image pixels [counts  or  Digital Numbers]&lt;br /&gt;
* &amp;lt;math&amp;gt;\Delta_{\lambda_{\text{Band}}}&amp;lt;/math&amp;gt;:  the effective bandwidth [μm] for a given band&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Converting to Top of Atmosphere Reflectance, also referred to as Planetary Reflectance, can be done by using the following equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\rho_p = \frac{\pi * L\lambda * d^2}{ESUN\lambda * cos(\Theta_S)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;where:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\rho&amp;lt;/math&amp;gt; - Unitless Planetary Reflectance&lt;br /&gt;
* &amp;lt;math&amp;gt;\pi&amp;lt;/math&amp;gt; - mathematical constant (3.14159265358)&lt;br /&gt;
* &amp;lt;math&amp;gt;L\lambda&amp;lt;/math&amp;gt; spectral Radiance at the sensor's aperture, from equation... '''''ToADD'''''&lt;br /&gt;
* &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; - Earth-Sun distance in astronomical units, interpolated values&lt;br /&gt;
* &amp;lt;math&amp;gt;Esun&amp;lt;/math&amp;gt; - Mean solar exoatmospheric irradiance(s) (W/m2/μm), interpolated values&lt;br /&gt;
* &amp;lt;math&amp;gt;cos(\theta_s)&amp;lt;/math&amp;gt; - {{wikipedia||Solar_zenith_angle}} from the image acquisition's metadata&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Importing data ===&lt;br /&gt;
&lt;br /&gt;
==== File Formats &amp;amp; Metadata ====&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
==== Importing ====&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* Location creation based on georeferenced data&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once inside a Location that is defined by the spatial reference system in which the bands of interest are projected, they can be imported with the {{cmd|r.in.gdal}} module.&lt;br /&gt;
&lt;br /&gt;
For example, GeoTIFF files can be imported by looping {{cmd|r.in.gdal}} over all of them&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for TIF in `echo *.tif`; do r.in.gdal in=${TIF} out=${TIF%%.*}; done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To keep the raw material untouched, we create another Mapset inside the same Location and copy over the bands giving, ''optionally'' at the same time, a new name for each.&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
=== Deriving Physical Quantities ===&lt;br /&gt;
&lt;br /&gt;
Conversions implemented in the GRASS module [https://github.com/NikosAlexandris/i.worldview.toar i.worldview.toar]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''ToCleanUp''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Converting Digital Numbers to Radiance/Reflectance requires knowledge about the sensor's specific spectral band parameters. In the following listed parameters (see below), the ''Effective Bandwidth''s and the ''Band-Averaged Solar Spectral Irradiance''s are extracted from the document [http://www.digitalglobe.com/downloads/Radiometric_Use_of_WorldView-2_Imagery.pdf Radiometric Use of WorldView-2 Imagery, Technical Note (2010)] by Todd Updike and Chris Comp. The Absolute Calibration Factors are extracted from a WorldView-2 product, specifically from an image metadata file (extension .IMD).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note,''' however, as stated in the above document,&lt;br /&gt;
&lt;br /&gt;
   The absolute radiometric calibration factor is dependent on the specific band, &lt;br /&gt;
   as well as the TDI exposure level, line rate, pixel aggregation, and bit depth &lt;br /&gt;
   of the product. Based on these parameters, the appropriate value is provided in &lt;br /&gt;
   the .IMD file. For this reason, care should be taken not to mix absolute radiometric &lt;br /&gt;
   calibration factors between products that might have different collection conditions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
Pan_CalCoef=0.05678345		;	Pan_Width=0.2846000		;	Pan_Esun=1580.8140&lt;br /&gt;
Coastal_CalCoef=0.009295654	;	Coastal_CalCoef=0.04730000	;	Coastal_Esun=1758.2229&lt;br /&gt;
Blue_CalCoef=0.01260825		;	Blue_Width=0.05430000		;	Blue_Esun=1974.2416&lt;br /&gt;
Green_CalCoef=0.009713071	;	Green_Width=0.06300000		;	Green_Esun=1856.4104&lt;br /&gt;
Yellow_CalCoef=0.005829815	;	Yellow_Width=0.03740000		;	Yellow_Esun=1738.4791&lt;br /&gt;
Red_CalCoef=0.01103623		;	Red_Width=0.05740000		;	Red_Esun=1559.4555&lt;br /&gt;
RedEdge_CalCoef=0.005188136	;	RedEdge_Width=0.03930000	;	Red_Edge_Esun=1342.0695&lt;br /&gt;
NIR1_CalCoef=0.01224380		;	NIR1_Width=0.09890000		;	NIR_Esun=1069.7302&lt;br /&gt;
NIR2_CalCoef=0.009042234	;	NIR2_Width=0.09960000		;	NIR2_Esun=861.2866&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following examples exemplify the conversion of raw Blue band digital numbers into Radiance and Reflectance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Spectral Radiance ====&lt;br /&gt;
&lt;br /&gt;
Converting a Blue Band (Digital Numbers) in to Spectral at-sensor Radiance in the ''correct'' units to be further used for the conversion in to unitless Reflectance:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# set the region&lt;br /&gt;
g.region rast=Blue_DNs -p&lt;br /&gt;
&lt;br /&gt;
# convert DNs to spectral Radiance values&lt;br /&gt;
r.mapcalc &amp;quot;Blue_Radiance = ( (10000 * WorldView_Blue_DNs) / (... * ...) )&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Planetary Reflectance ====&lt;br /&gt;
&lt;br /&gt;
The equation to derive Reflectance values incorporates in addition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* The mathematical constant {{wikipedia|Pi}} &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;PI=3.14159265358&amp;lt;/source&amp;gt;.&lt;br /&gt;
* The Earth-Sun distance in astronomical units which depends on the acquisition's day of year (DOY -- also referred to as Julian day, {{wikipedia|Ordinal_date}}) and can be retrieved from the following spreadsheet &amp;lt;http://landsathandbook.gsfc.nasa.gov/excel_docs/d.xls&amp;gt;.&lt;br /&gt;
* The mean solar exoatmospheric irradiance in &amp;lt;math&amp;gt;\frac{W}{m^2*\mu m}&amp;lt;/math&amp;gt;. See 3rd column of (interplated) values given above.&lt;br /&gt;
* The cosine of the ''Solar Zenith Angle'' (SZA) at the time of the acquisition. The SZA can be calculated from its complementary ''Solar Elevation Angle'' (SEA) given in the image acquisition's metadata.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following example we accept as the acquisition's &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;DOY=...&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;SEA=...&amp;lt;/source&amp;gt;. Hence, we get the Earth-Sun distance &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;ESD=...&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;SZA = ... deg&amp;lt;/source&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In any case, '''note''' that Top-of-Atmosphere Reflectance does not account for topographic, atmospheric, or BRDF differences.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Converting the in-Blue spectral band at-sensor Radiance in to Planerary Reflectance:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;PI=...; ESD=...; BAND_Esun=...; SZA=...&amp;lt;/source&amp;gt;&lt;br /&gt;
 {{cmd|r.mapcalc}} &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;&amp;quot;Blue_Reflectance = ( ${PI} * Blue_Radiance * ${ESD}^2 ) / ( ${BAND_Esun} * cos(${SZA}) )&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Automatising Conversions ====&lt;br /&gt;
&lt;br /&gt;
The conversion process can be scripted to avoid repeating the same steps for each band separately.&lt;br /&gt;
&lt;br /&gt;
===== Python =====&lt;br /&gt;
&lt;br /&gt;
A custom python script, performing the operations of interest, might be like [https://github.com/NikosAlexandris/i.worldview.toar i.worldview.toar (for GRASS 7.x)]&lt;br /&gt;
 &lt;br /&gt;
===== Bash =====&lt;br /&gt;
In bash, such a script might be as the following example. '''Note,''' however, in this example script constants, band parameters and acquisition related metadata are hard-coded!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# π, first 11 decimals&lt;br /&gt;
PI=3.14159265358&lt;br /&gt;
&lt;br /&gt;
# HardCoded MetaData!&lt;br /&gt;
&lt;br /&gt;
  # Acquisition's Day of Year and estimated Earth-Sun Distance&lt;br /&gt;
  DOY=100; ESD=1.00184&lt;br /&gt;
&lt;br /&gt;
  # Sun Zenith Angle based on the acquisition's Sun Elevation Angle&lt;br /&gt;
  SEA=53.8; SZA=$(echo &amp;quot;90 - ${SEA}&amp;quot; | bc )&lt;br /&gt;
&lt;br /&gt;
  # some echo&lt;br /&gt;
  echo &amp;quot;Acquisition-specific parameters&amp;quot;&lt;br /&gt;
  echo &amp;quot;Day of Year: ${DOY}, Earth-Sun Distance: ${ESD}, Sun Zenith Angle: ${SZA}&amp;quot;&lt;br /&gt;
  echo -e &amp;quot;\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# 1st column: Absolute Calibration Factors&lt;br /&gt;
# 2nd column: Spectral Band Effective Bandwidth, Δλ&lt;br /&gt;
# 3rd column: Band-Averaged Solar Spectral Irradiance [W/sq.m./micro-m]&lt;br /&gt;
&lt;br /&gt;
K_Pan=0.05678345	;	Pan_Width=0.2846000		;	Pan_Esun=1580.8140&lt;br /&gt;
K_Coastal=0.009295654	;	Coastal_Width=0.04730000	;	Coastal_Esun=1758.2229&lt;br /&gt;
K_Blue=0.01260825	;	Blue_Width=0.05430000		;	Blue_Esun=1974.2416&lt;br /&gt;
K_Green=0.009713071	;	Green_Width=0.06300000		;	Green_Esun=1856.4104&lt;br /&gt;
K_Yellow=0.005829815	;	Yellow_Width=0.03740000		;	Yellow_Esun=1738.4791&lt;br /&gt;
K_Red=0.01103623	;	Red_Width=0.05740000		;	Red_Esun=1559.4555&lt;br /&gt;
K_RedEdge=0.005188136	;	RedEdge_Width=0.03930000	;	RedEdge_Esun=1342.0695&lt;br /&gt;
K_NIR1=0.01224380	;	NIR1_Width=0.09890000		;	NIR1_Esun=1069.7302&lt;br /&gt;
K_NIR2=0.009042234	;	NIR2_Width=0.09960000		;	NIR2_Esun=861.2866&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Bands&lt;br /&gt;
Spectral_Bands=&amp;quot;Pan Coastal Blue Green Yellow Red RedEdge NIR1 NIR2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# loop over all bands&lt;br /&gt;
for BAND in ${Spectral_Bands}; do&lt;br /&gt;
&lt;br /&gt;
  # some echo&lt;br /&gt;
  echo -e &amp;quot;Processing the \&amp;quot;${BAND}\&amp;quot; spectral band&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # set band parameters as variables&lt;br /&gt;
  eval BAND_Width=&amp;quot;${BAND}_Width&amp;quot;&lt;br /&gt;
  echo &amp;quot;* Band-specific radiometric parameters set to K=${!K_BAND}, Bandwidth=${!BAND_Width}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # set region&lt;br /&gt;
  g.region rast=${BAND}_DNs&lt;br /&gt;
&lt;br /&gt;
  # conversion to Radiance based on (1) -- attention: 32-bit calculations required&lt;br /&gt;
  echo &amp;quot;* Converting ${BAND} Digital Numebrs to Radiance...&amp;quot; | tr -d &amp;quot;\n&amp;quot;&lt;br /&gt;
  r.mapcalc &amp;quot;${BAND}_Radiance = ( double(${!K_BAND}) * ${BAND}_DNs ) / ${!BAND_Width}&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  # report range&lt;br /&gt;
  echo &amp;quot;* Reporting range of the ${BAND} spectral radiance: &amp;quot; | tr -d &amp;quot;\n&amp;quot;&lt;br /&gt;
  # r.info -r &amp;quot;${BAND}_Radiance&amp;quot;&lt;br /&gt;
  r.info -r &amp;quot;${BAND}_Radiance&amp;quot; | tr &amp;quot;\n&amp;quot; &amp;quot;,&amp;quot; | cut -d&amp;quot;,&amp;quot; -f1,2 | sed 's/,/,\ /'&lt;br /&gt;
&lt;br /&gt;
  # add info&lt;br /&gt;
  r.support map=${BAND}_Radiance \&lt;br /&gt;
  title=&amp;quot;&amp;quot; \&lt;br /&gt;
  units=&amp;quot;W / sq.m. / μm / ster&amp;quot; \&lt;br /&gt;
  description=&amp;quot;Top-of-Atmosphere `echo ${BAND}` band spectral Radiance [W/m^2/sr/μm]&amp;quot; \&lt;br /&gt;
  source1='&amp;quot;Radiometric Use of WorldView-2 Imagery, Technical Note (2010)&amp;quot;, by Todd Updike &amp;amp; Chris Comp'&lt;br /&gt;
&lt;br /&gt;
  # Esun&lt;br /&gt;
  eval BAND_Esun=&amp;quot;${BAND}_Esun&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # some echo&lt;br /&gt;
  echo &amp;quot;* Parameters required for the conversion: Esun= ${!BAND_Esun}, ESD= ${ESD}, ${SZA}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # calculate ToAR&lt;br /&gt;
  echo &amp;quot;* Converting ${BAND}_Radiance to Top of Atmosphere Reflectance...&amp;quot; | tr -d &amp;quot;\n&amp;quot;&lt;br /&gt;
  r.mapcalc &amp;quot;${BAND}_ToAR = \&lt;br /&gt;
	( ${PI} * ${BAND}_Radiance * ${ESD}^2 ) / ( ${!BAND_Esun} * cos(${SZA}) )&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # report range&lt;br /&gt;
  echo &amp;quot;* Reporting range of the ${BAND} spectral radiance: &amp;quot; | tr -d &amp;quot;\n&amp;quot;&lt;br /&gt;
  r.info -r ${BAND}_ToAR | tr &amp;quot;\n&amp;quot; &amp;quot;,&amp;quot; | cut -d&amp;quot;,&amp;quot; -f1,2 | sed 's/,/,\ /'&lt;br /&gt;
&lt;br /&gt;
  # add some metadata&lt;br /&gt;
  r.support map=${BAND}_ToAR \&lt;br /&gt;
  title=&amp;quot;echo ${BAND} band (Top of Atmosphere Reflectance)&amp;quot; \&lt;br /&gt;
  units=&amp;quot;Unitless planetary reflectance&amp;quot; \&lt;br /&gt;
  description=&amp;quot;Top of Atmosphere `echo ${BAND}` band spectral Reflectance (unitless)&amp;quot; \&lt;br /&gt;
  source1='&amp;quot;Radiometric Use of WorldView-2 Imagery, Technical Note (2010)&amp;quot;, by Todd Updike &amp;amp; Chris Comp, Digital Globe' \&lt;br /&gt;
  source2=&amp;quot;Digital Globe&amp;quot; \&lt;br /&gt;
  history=&amp;quot;PI=3.14159265358; K=${!K_BAND}; Bandwidth=${!BAND_Width}; ESD=${ESD}; Esun=${!BAND_Esun}; SZA=${SZA}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  echo -e &amp;quot;\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Atmospheric correction ===&lt;br /&gt;
&lt;br /&gt;
See [[Atmospheric correction]]&lt;br /&gt;
&lt;br /&gt;
== Post-Processing ==&lt;br /&gt;
&lt;br /&gt;
Having beforehand satellite image data expressed in physical quantities (radiance or reflectance) is preferred to follow-up with digital image analysis techniques. A few common post-processing practices are Contrast-Enhancement, Pan-Sharpening and creating Pseudo- or True-Color Composites. Other well known enhancing manipualtions to support the analyses of satellite imagery, include deriving Vegetation Indices, transforming multi-spectral data based on [[Principal_Components_Analysis | PCA]] and Segmenting images.&lt;br /&gt;
&lt;br /&gt;
=== Contrast Enhancement ===&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
=== Pan-Sharpening ===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Pansharpened_image Pan-Sharpening] / [http://en.wikipedia.org/wiki/Image_fusion Fusion] is the process of merging high-resolution panchromatic and lower resolution multi-spectral imagery. [http://grass.osgeo.org/grass70/ GRASS 7] holds a dedicated pan-sharpening module, {{cmd|i.pansharpen}} which features three techniques for sharpening, namely the [http://wiki.awf.forst.uni-goettingen.de/wiki/index.php/Brovey_Transformation Brovey transformation], the classical IHS method and one that is based on [[Principal Components Analysis]] (PCA).&lt;br /&gt;
Another algorithm deriving excellent detail and a realistic representation of original multispectral scene colors, is the High-Pass Filter Addition (HPFA) technique. It is implemented via the {{AddonSrc|imagery|i.fusion.hpf|version=7}} add-on (for GRASS 6, please refer to a bash shell script https://github.com/NikosAlexandris/i.fusion.hpf.sh which is, however, unmaintained). &lt;br /&gt;
&lt;br /&gt;
One approach inside GRASS-GIS to get an acceptable color-balanced composite image after Pan-sharpening 11-bit IKONOS spectral bands comprises the following steps&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
# rescale the 11-bit WorldView spectral bands to 8-bit ranging in [0, 255] ({{cmd|r.rescale}})&lt;br /&gt;
# pan-sharpen with any of the featured methods (Brovey, IHS, PCA) ({{cmd|i.pansharpen}})&lt;br /&gt;
# color-balance by using the {{cmd|i.landsat.rgb}} module or manually adjusting the color tables of the bands of interest&lt;br /&gt;
# create a composite image by using the {{cmd|r.compose}} module&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
==== Automatising Sharpening &amp;amp; RGB Composition ====&lt;br /&gt;
&lt;br /&gt;
An ''experimental'' bash script to automatise the sharpening/fusion and RGB composition process is demonstrated here. The script uses the Spectral Reflectance values (double precision values), gained from previous steps (see above), and produces Pan-sharpened images by applying all of the three methods that {{cmd|i.pansharpen}} offers. In addition, it attempts to produce True-Color composite images, without and with re-balancing the color tables by using the {{cmd|i.landsat.rgb}} module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initial tests indicate that at least one of the three sharpening methods, combined with re-balancing, produces very clear and balanced True-Color composites. Note, there is no 100% confidence that it will produce nice looking True-Color composites. Some of the methods might simply work, others might deliver fancy-colored images. As usual, some manual action might be required to get the re-balancing to work as best as possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The script can be expanded in terms of using more inputs by utilising bash's positional parameters.  However, care has to be taken to alter the instruction that concerns the conversion from double precision values to 8-bit integers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Color Composites ===&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== Vegetation Indices ==&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== PCA ==&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== WordView Image classification ==&lt;br /&gt;
&lt;br /&gt;
See [[Image classification]]&lt;br /&gt;
&lt;br /&gt;
== References / Sources ==&lt;br /&gt;
&lt;br /&gt;
* ...&lt;br /&gt;
* [http://landsathandbook.gsfc.nasa.gov/data_prod/prog_sect11_3.html Landsat7 Science Data Users Handbook, Chapter 11, Section 3]&lt;br /&gt;
* [http://igett.delmar.edu/Resources/Remote%20Sensing%20Technology%20Training/Calculation-DN_to_Reflectance_Irish_20June08.pdf Calibrated Landsat Digital Number (DN) to Top of Atmosphere (TOA) Reflectance Conversion, by Richard Irish]&lt;br /&gt;
* from [http://landsat.usgs.gov/tools_access_all_faqs.php FAQs about the Landsat Missions]&lt;br /&gt;
** [http://landsat.usgs.gov/how_is_radiance_calculated.php How is radiance calculated?]&lt;br /&gt;
** [http://landsat.usgs.gov/at_sensor_reflectance_calculated.php How is at-sensor reflectance calculated?]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* GRASS-Wiki page about [http://grasswiki.osgeo.org/wiki/Image_processing Image Processing]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Documentation]]&lt;br /&gt;
[[Category: FAQ]]&lt;br /&gt;
[[Category: WorldView]]&lt;br /&gt;
[[Category: High Resolution]]&lt;br /&gt;
[[Category: Import]]&lt;br /&gt;
[[Category: Digital Numbers]]&lt;br /&gt;
[[Category: Radiance]]&lt;br /&gt;
[[Category: Reflectance]]&lt;br /&gt;
[[Category: Image processing]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=WorldView&amp;diff=23376</id>
		<title>WorldView</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=WorldView&amp;diff=23376"/>
		<updated>2016-08-14T05:08:29Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: /* Inside GRASS GIS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= This page is under construction =&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
&lt;br /&gt;
WorldView-1, WorldView-2 and WorldView-3 are commercial earth observation satellites. Details about the sensors are provided at Digital Globe's collection of [http://www.digitalglobe.com/resources/satellite-information Spacecraft Data Sheets].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is recommended -- actually it is a necessity! -- to have a look at the documentation explaining [http://www.digitalglobe.com/sites/default/files/Imagery_Support_Data_Documentation%20%281%29.pdf Digital Globe's products metadata]. Note, all of DigitalGlobe’s satellites collect data using an 11 bit dynamic range. For technical reasons, products are delivered as either 16-bit or 8-bit data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Availability (Sample Data) ==&lt;br /&gt;
&lt;br /&gt;
* Search for commercial satellite image providers in the internet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modules overview ==&lt;br /&gt;
&lt;br /&gt;
=== Outside of GRASS ===&lt;br /&gt;
&lt;br /&gt;
Satellite imagery can be managed and, at some extent, pre-processed with various [http://www.gdal.org/gdal_utilities.html GDAL utilities].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.gdal.org/gdalmanage.html gdalmanage]&lt;br /&gt;
* [http://www.gdal.org/gdalinfo.html gdalinfo]&lt;br /&gt;
* [http://www.gdal.org/gdal_translate.html gdal_translate]&lt;br /&gt;
* [http://www.gdal.org/gdalbuildvrt.html gdalbuildvrt]&lt;br /&gt;
* [http://www.gdal.org/gdalwarp.html gdalwarp]&lt;br /&gt;
&lt;br /&gt;
=== Inside GRASS GIS ===&lt;br /&gt;
&lt;br /&gt;
GRASS GIS features a complete set of modules and various add-ons enabling pre- and post-processing of WorldView satellite imagery. The following lists offer an overview of related modules and add-ons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.in.gdal}}&lt;br /&gt;
* {{cmd|r.mapcalc}}&lt;br /&gt;
* {{cmd|r.colors}}&lt;br /&gt;
* {{cmd|i.landsat.rgb}}&lt;br /&gt;
* {{AddonSrc|imagery|i.fusion.hpf|version=7}}&lt;br /&gt;
* {{cmd|i.pansharpen}}&lt;br /&gt;
* [https://github.com/NikosAlexandris/i.worldview.toar i.worldview.toar]&lt;br /&gt;
* {{cmd|i.vi}}&lt;br /&gt;
* {{cmd|i.segment}}&lt;br /&gt;
* ...''more to add''&lt;br /&gt;
&lt;br /&gt;
== Pre-Processing ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
Typically, multispectral satellite data are converted into physical quantities such as ''Radiance'' or ''Reflectance'' before they are subjected in multispectral analysis techniques (image interpretation, band arithmetic, vegetation indices, matrix transformations, etc.). The latter can be differentiated in ''Top of Atmosphere Reflectance'' (ToAR) which does not account for atmospheric effects (absorption or scattering) and in ''Top of Canopy Reflectance'' (ToCR) which introduces a &amp;quot;correction&amp;quot; for atmospheric effects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In order to derive Reflectance values, likewise as with remotely sensed data acquired by other sensors, WorldView raw image digital numbers (DNs) need to be converted to ''at-sensor spectral Radiance'' values.  At-sensor spectral Radiance values are an important input for the equation to derive Reflectance values. Note, ''Spectal Radiance'' is the measure of the quantity of radiation that hits the sensor and typically expressed in &amp;lt;math&amp;gt;\frac{W}{m^2*sr*nm}&amp;lt;/math&amp;gt;, that is ''watts'' per ''unit source area'', per ''unit solid angle'', and per ''unit wavelength''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Converting WorldView DNs to ''Top of Atmosphere'' Radiance, as described in [http://www.digitalglobe.com/downloads/Radiometric_Use_of_WorldView-2_Imagery.pdf Radiometric Use of WorldView-2 Imagery, Technical Note (2010)] by Todd Updike and Chris Comp, can be done by using the following equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L_{\lambda\text{Pixel, Band}} = \frac{K_{\text{Band}} * q_{\text{Pixel, Band}}}{\Delta\lambda_{\text{Band}}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;where:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;L_{\lambda\text{Pixel,Band}}&amp;lt;/math&amp;gt;:  Top-of-Atmosphere Spectral Radiance image pixels [W-m-2-sr-1-μm-1]&lt;br /&gt;
* &amp;lt;math&amp;gt;K_{\text{Band}}&amp;lt;/math&amp;gt;:  the absolute radiometric calibration factor [W-m-2-sr-1-count-1] for a given band&lt;br /&gt;
* &amp;lt;math&amp;gt;q_{\text{Pixel,Band}}&amp;lt;/math&amp;gt;:  radiometrically corrected image pixels [counts  or  Digital Numbers]&lt;br /&gt;
* &amp;lt;math&amp;gt;\Delta_{\lambda_{\text{Band}}}&amp;lt;/math&amp;gt;:  the effective bandwidth [μm] for a given band&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Converting to Top of Atmosphere Reflectance, also referred to as Planetary Reflectance, can be done by using the following equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\rho_p = \frac{\pi * L\lambda * d^2}{ESUN\lambda * cos(\Theta_S)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;where:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\rho&amp;lt;/math&amp;gt; - Unitless Planetary Reflectance&lt;br /&gt;
* &amp;lt;math&amp;gt;\pi&amp;lt;/math&amp;gt; - mathematical constant (3.14159265358)&lt;br /&gt;
* &amp;lt;math&amp;gt;L\lambda&amp;lt;/math&amp;gt; spectral Radiance at the sensor's aperture, from equation... '''''ToADD'''''&lt;br /&gt;
* &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; - Earth-Sun distance in astronomical units, interpolated values&lt;br /&gt;
* &amp;lt;math&amp;gt;Esun&amp;lt;/math&amp;gt; - Mean solar exoatmospheric irradiance(s) (W/m2/μm), interpolated values&lt;br /&gt;
* &amp;lt;math&amp;gt;cos(\theta_s)&amp;lt;/math&amp;gt; - {{wikipedia||Solar_zenith_angle}} from the image acquisition's metadata&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Importing data ===&lt;br /&gt;
&lt;br /&gt;
==== File Formats &amp;amp; Metadata ====&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
==== Importing ====&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* Location creation based on georeferenced data&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once inside a Location that is defined by the spatial reference system in which the bands of interest are projected, they can be imported with the {{cmd|r.in.gdal}} module.&lt;br /&gt;
&lt;br /&gt;
For example, GeoTIFF files can be imported by looping {{cmd|r.in.gdal}} over all of them&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for TIF in `echo *.tif`; do r.in.gdal in=${TIF} out=${TIF%%.*}; done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To keep the raw material untouched, we create another Mapset inside the same Location and copy over the bands giving, ''optionally'' at the same time, a new name for each.&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
=== Deriving Physical Quantities ===&lt;br /&gt;
&lt;br /&gt;
''ToCleanUp''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Converting Digital Numbers to Radiance/Reflectance requires knowledge about the sensor's specific spectral band parameters. In the following listed parameters (see below), the ''Effective Bandwidth''s and the ''Band-Averaged Solar Spectral Irradiance''s are extracted from the document [http://www.digitalglobe.com/downloads/Radiometric_Use_of_WorldView-2_Imagery.pdf Radiometric Use of WorldView-2 Imagery, Technical Note (2010)] by Todd Updike and Chris Comp. The Absolute Calibration Factors are extracted from a WorldView-2 product, specifically from an image metadata file (extension .IMD).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note,''' however, as stated in the above document,&lt;br /&gt;
&lt;br /&gt;
   The absolute radiometric calibration factor is dependent on the specific band, &lt;br /&gt;
   as well as the TDI exposure level, line rate, pixel aggregation, and bit depth &lt;br /&gt;
   of the product. Based on these parameters, the appropriate value is provided in &lt;br /&gt;
   the .IMD file. For this reason, care should be taken not to mix absolute radiometric &lt;br /&gt;
   calibration factors between products that might have different collection conditions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
Pan_CalCoef=0.05678345		;	Pan_Width=0.2846000		;	Pan_Esun=1580.8140&lt;br /&gt;
Coastal_CalCoef=0.009295654	;	Coastal_CalCoef=0.04730000	;	Coastal_Esun=1758.2229&lt;br /&gt;
Blue_CalCoef=0.01260825		;	Blue_Width=0.05430000		;	Blue_Esun=1974.2416&lt;br /&gt;
Green_CalCoef=0.009713071	;	Green_Width=0.06300000		;	Green_Esun=1856.4104&lt;br /&gt;
Yellow_CalCoef=0.005829815	;	Yellow_Width=0.03740000		;	Yellow_Esun=1738.4791&lt;br /&gt;
Red_CalCoef=0.01103623		;	Red_Width=0.05740000		;	Red_Esun=1559.4555&lt;br /&gt;
RedEdge_CalCoef=0.005188136	;	RedEdge_Width=0.03930000	;	Red_Edge_Esun=1342.0695&lt;br /&gt;
NIR1_CalCoef=0.01224380		;	NIR1_Width=0.09890000		;	NIR_Esun=1069.7302&lt;br /&gt;
NIR2_CalCoef=0.009042234	;	NIR2_Width=0.09960000		;	NIR2_Esun=861.2866&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following examples exemplify the conversion of raw Blue band digital numbers into Radiance and Reflectance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Spectral Radiance ====&lt;br /&gt;
&lt;br /&gt;
Converting a Blue Band (Digital Numbers) in to Spectral at-sensor Radiance in the ''correct'' units to be further used for the conversion in to unitless Reflectance:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# set the region&lt;br /&gt;
g.region rast=Blue_DNs -p&lt;br /&gt;
&lt;br /&gt;
# convert DNs to spectral Radiance values&lt;br /&gt;
r.mapcalc &amp;quot;Blue_Radiance = ( (10000 * WorldView_Blue_DNs) / (... * ...) )&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Planetary Reflectance ====&lt;br /&gt;
&lt;br /&gt;
The equation to derive Reflectance values incorporates in addition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* The mathematical constant {{wikipedia|Pi}} &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;PI=3.14159265358&amp;lt;/source&amp;gt;.&lt;br /&gt;
* The Earth-Sun distance in astronomical units which depends on the acquisition's day of year (DOY -- also referred to as Julian day, {{wikipedia|Ordinal_date}}) and can be retrieved from the following spreadsheet &amp;lt;http://landsathandbook.gsfc.nasa.gov/excel_docs/d.xls&amp;gt;.&lt;br /&gt;
* The mean solar exoatmospheric irradiance in &amp;lt;math&amp;gt;\frac{W}{m^2*\mu m}&amp;lt;/math&amp;gt;. See 3rd column of (interplated) values given above.&lt;br /&gt;
* The cosine of the ''Solar Zenith Angle'' (SZA) at the time of the acquisition. The SZA can be calculated from its complementary ''Solar Elevation Angle'' (SEA) given in the image acquisition's metadata.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following example we accept as the acquisition's &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;DOY=...&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;SEA=...&amp;lt;/source&amp;gt;. Hence, we get the Earth-Sun distance &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;ESD=...&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;SZA = ... deg&amp;lt;/source&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In any case, '''note''' that Top-of-Atmosphere Reflectance does not account for topographic, atmospheric, or BRDF differences.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Converting the in-Blue spectral band at-sensor Radiance in to Planerary Reflectance:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;PI=...; ESD=...; BAND_Esun=...; SZA=...&amp;lt;/source&amp;gt;&lt;br /&gt;
 {{cmd|r.mapcalc}} &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;&amp;quot;Blue_Reflectance = ( ${PI} * Blue_Radiance * ${ESD}^2 ) / ( ${BAND_Esun} * cos(${SZA}) )&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Automatising Conversions ====&lt;br /&gt;
&lt;br /&gt;
The conversion process can be scripted to avoid repeating the same steps for each band separately.&lt;br /&gt;
&lt;br /&gt;
===== Python =====&lt;br /&gt;
&lt;br /&gt;
A custom python script, performing the operations of interest, might be like [https://github.com/NikosAlexandris/i.worldview.toar i.worldview.toar (for GRASS 7.x)]&lt;br /&gt;
 &lt;br /&gt;
===== Bash =====&lt;br /&gt;
In bash, such a script might be as the following example. '''Note,''' however, in this example script constants, band parameters and acquisition related metadata are hard-coded!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# π, first 11 decimals&lt;br /&gt;
PI=3.14159265358&lt;br /&gt;
&lt;br /&gt;
# HardCoded MetaData!&lt;br /&gt;
&lt;br /&gt;
  # Acquisition's Day of Year and estimated Earth-Sun Distance&lt;br /&gt;
  DOY=100; ESD=1.00184&lt;br /&gt;
&lt;br /&gt;
  # Sun Zenith Angle based on the acquisition's Sun Elevation Angle&lt;br /&gt;
  SEA=53.8; SZA=$(echo &amp;quot;90 - ${SEA}&amp;quot; | bc )&lt;br /&gt;
&lt;br /&gt;
  # some echo&lt;br /&gt;
  echo &amp;quot;Acquisition-specific parameters&amp;quot;&lt;br /&gt;
  echo &amp;quot;Day of Year: ${DOY}, Earth-Sun Distance: ${ESD}, Sun Zenith Angle: ${SZA}&amp;quot;&lt;br /&gt;
  echo -e &amp;quot;\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# 1st column: Absolute Calibration Factors&lt;br /&gt;
# 2nd column: Spectral Band Effective Bandwidth, Δλ&lt;br /&gt;
# 3rd column: Band-Averaged Solar Spectral Irradiance [W/sq.m./micro-m]&lt;br /&gt;
&lt;br /&gt;
K_Pan=0.05678345	;	Pan_Width=0.2846000		;	Pan_Esun=1580.8140&lt;br /&gt;
K_Coastal=0.009295654	;	Coastal_Width=0.04730000	;	Coastal_Esun=1758.2229&lt;br /&gt;
K_Blue=0.01260825	;	Blue_Width=0.05430000		;	Blue_Esun=1974.2416&lt;br /&gt;
K_Green=0.009713071	;	Green_Width=0.06300000		;	Green_Esun=1856.4104&lt;br /&gt;
K_Yellow=0.005829815	;	Yellow_Width=0.03740000		;	Yellow_Esun=1738.4791&lt;br /&gt;
K_Red=0.01103623	;	Red_Width=0.05740000		;	Red_Esun=1559.4555&lt;br /&gt;
K_RedEdge=0.005188136	;	RedEdge_Width=0.03930000	;	RedEdge_Esun=1342.0695&lt;br /&gt;
K_NIR1=0.01224380	;	NIR1_Width=0.09890000		;	NIR1_Esun=1069.7302&lt;br /&gt;
K_NIR2=0.009042234	;	NIR2_Width=0.09960000		;	NIR2_Esun=861.2866&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Bands&lt;br /&gt;
Spectral_Bands=&amp;quot;Pan Coastal Blue Green Yellow Red RedEdge NIR1 NIR2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# loop over all bands&lt;br /&gt;
for BAND in ${Spectral_Bands}; do&lt;br /&gt;
&lt;br /&gt;
  # some echo&lt;br /&gt;
  echo -e &amp;quot;Processing the \&amp;quot;${BAND}\&amp;quot; spectral band&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # set band parameters as variables&lt;br /&gt;
  eval BAND_Width=&amp;quot;${BAND}_Width&amp;quot;&lt;br /&gt;
  echo &amp;quot;* Band-specific radiometric parameters set to K=${!K_BAND}, Bandwidth=${!BAND_Width}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # set region&lt;br /&gt;
  g.region rast=${BAND}_DNs&lt;br /&gt;
&lt;br /&gt;
  # conversion to Radiance based on (1) -- attention: 32-bit calculations required&lt;br /&gt;
  echo &amp;quot;* Converting ${BAND} Digital Numebrs to Radiance...&amp;quot; | tr -d &amp;quot;\n&amp;quot;&lt;br /&gt;
  r.mapcalc &amp;quot;${BAND}_Radiance = ( double(${!K_BAND}) * ${BAND}_DNs ) / ${!BAND_Width}&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  # report range&lt;br /&gt;
  echo &amp;quot;* Reporting range of the ${BAND} spectral radiance: &amp;quot; | tr -d &amp;quot;\n&amp;quot;&lt;br /&gt;
  # r.info -r &amp;quot;${BAND}_Radiance&amp;quot;&lt;br /&gt;
  r.info -r &amp;quot;${BAND}_Radiance&amp;quot; | tr &amp;quot;\n&amp;quot; &amp;quot;,&amp;quot; | cut -d&amp;quot;,&amp;quot; -f1,2 | sed 's/,/,\ /'&lt;br /&gt;
&lt;br /&gt;
  # add info&lt;br /&gt;
  r.support map=${BAND}_Radiance \&lt;br /&gt;
  title=&amp;quot;&amp;quot; \&lt;br /&gt;
  units=&amp;quot;W / sq.m. / μm / ster&amp;quot; \&lt;br /&gt;
  description=&amp;quot;Top-of-Atmosphere `echo ${BAND}` band spectral Radiance [W/m^2/sr/μm]&amp;quot; \&lt;br /&gt;
  source1='&amp;quot;Radiometric Use of WorldView-2 Imagery, Technical Note (2010)&amp;quot;, by Todd Updike &amp;amp; Chris Comp'&lt;br /&gt;
&lt;br /&gt;
  # Esun&lt;br /&gt;
  eval BAND_Esun=&amp;quot;${BAND}_Esun&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # some echo&lt;br /&gt;
  echo &amp;quot;* Parameters required for the conversion: Esun= ${!BAND_Esun}, ESD= ${ESD}, ${SZA}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # calculate ToAR&lt;br /&gt;
  echo &amp;quot;* Converting ${BAND}_Radiance to Top of Atmosphere Reflectance...&amp;quot; | tr -d &amp;quot;\n&amp;quot;&lt;br /&gt;
  r.mapcalc &amp;quot;${BAND}_ToAR = \&lt;br /&gt;
	( ${PI} * ${BAND}_Radiance * ${ESD}^2 ) / ( ${!BAND_Esun} * cos(${SZA}) )&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # report range&lt;br /&gt;
  echo &amp;quot;* Reporting range of the ${BAND} spectral radiance: &amp;quot; | tr -d &amp;quot;\n&amp;quot;&lt;br /&gt;
  r.info -r ${BAND}_ToAR | tr &amp;quot;\n&amp;quot; &amp;quot;,&amp;quot; | cut -d&amp;quot;,&amp;quot; -f1,2 | sed 's/,/,\ /'&lt;br /&gt;
&lt;br /&gt;
  # add some metadata&lt;br /&gt;
  r.support map=${BAND}_ToAR \&lt;br /&gt;
  title=&amp;quot;echo ${BAND} band (Top of Atmosphere Reflectance)&amp;quot; \&lt;br /&gt;
  units=&amp;quot;Unitless planetary reflectance&amp;quot; \&lt;br /&gt;
  description=&amp;quot;Top of Atmosphere `echo ${BAND}` band spectral Reflectance (unitless)&amp;quot; \&lt;br /&gt;
  source1='&amp;quot;Radiometric Use of WorldView-2 Imagery, Technical Note (2010)&amp;quot;, by Todd Updike &amp;amp; Chris Comp, Digital Globe' \&lt;br /&gt;
  source2=&amp;quot;Digital Globe&amp;quot; \&lt;br /&gt;
  history=&amp;quot;PI=3.14159265358; K=${!K_BAND}; Bandwidth=${!BAND_Width}; ESD=${ESD}; Esun=${!BAND_Esun}; SZA=${SZA}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  echo -e &amp;quot;\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Atmospheric correction ===&lt;br /&gt;
&lt;br /&gt;
See [[Atmospheric correction]]&lt;br /&gt;
&lt;br /&gt;
== Post-Processing ==&lt;br /&gt;
&lt;br /&gt;
Having beforehand satellite image data expressed in physical quantities (radiance or reflectance) is preferred to follow-up with digital image analysis techniques. A few common post-processing practices are Contrast-Enhancement, Pan-Sharpening and creating Pseudo- or True-Color Composites. Other well known enhancing manipualtions to support the analyses of satellite imagery, include deriving Vegetation Indices, transforming multi-spectral data based on [[Principal_Components_Analysis | PCA]] and Segmenting images.&lt;br /&gt;
&lt;br /&gt;
=== Contrast Enhancement ===&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
=== Pan-Sharpening ===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Pansharpened_image Pan-Sharpening] / [http://en.wikipedia.org/wiki/Image_fusion Fusion] is the process of merging high-resolution panchromatic and lower resolution multi-spectral imagery. [http://grass.osgeo.org/grass70/ GRASS 7] holds a dedicated pan-sharpening module, {{cmd|i.pansharpen}} which features three techniques for sharpening, namely the [http://wiki.awf.forst.uni-goettingen.de/wiki/index.php/Brovey_Transformation Brovey transformation], the classical IHS method and one that is based on [[Principal Components Analysis]] (PCA).&lt;br /&gt;
Another algorithm deriving excellent detail and a realistic representation of original multispectral scene colors, is the High-Pass Filter Addition (HPFA) technique. It is implemented via the {{AddonSrc|imagery|i.fusion.hpf|version=7}} add-on (for GRASS 6, please refer to a bash shell script https://github.com/NikosAlexandris/i.fusion.hpf.sh which is, however, unmaintained). &lt;br /&gt;
&lt;br /&gt;
One approach inside GRASS-GIS to get an acceptable color-balanced composite image after Pan-sharpening 11-bit IKONOS spectral bands comprises the following steps&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
# rescale the 11-bit WorldView spectral bands to 8-bit ranging in [0, 255] ({{cmd|r.rescale}})&lt;br /&gt;
# pan-sharpen with any of the featured methods (Brovey, IHS, PCA) ({{cmd|i.pansharpen}})&lt;br /&gt;
# color-balance by using the {{cmd|i.landsat.rgb}} module or manually adjusting the color tables of the bands of interest&lt;br /&gt;
# create a composite image by using the {{cmd|r.compose}} module&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
==== Automatising Sharpening &amp;amp; RGB Composition ====&lt;br /&gt;
&lt;br /&gt;
An ''experimental'' bash script to automatise the sharpening/fusion and RGB composition process is demonstrated here. The script uses the Spectral Reflectance values (double precision values), gained from previous steps (see above), and produces Pan-sharpened images by applying all of the three methods that {{cmd|i.pansharpen}} offers. In addition, it attempts to produce True-Color composite images, without and with re-balancing the color tables by using the {{cmd|i.landsat.rgb}} module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initial tests indicate that at least one of the three sharpening methods, combined with re-balancing, produces very clear and balanced True-Color composites. Note, there is no 100% confidence that it will produce nice looking True-Color composites. Some of the methods might simply work, others might deliver fancy-colored images. As usual, some manual action might be required to get the re-balancing to work as best as possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The script can be expanded in terms of using more inputs by utilising bash's positional parameters.  However, care has to be taken to alter the instruction that concerns the conversion from double precision values to 8-bit integers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Color Composites ===&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== Vegetation Indices ==&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== PCA ==&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== WordView Image classification ==&lt;br /&gt;
&lt;br /&gt;
See [[Image classification]]&lt;br /&gt;
&lt;br /&gt;
== References / Sources ==&lt;br /&gt;
&lt;br /&gt;
* ...&lt;br /&gt;
* [http://landsathandbook.gsfc.nasa.gov/data_prod/prog_sect11_3.html Landsat7 Science Data Users Handbook, Chapter 11, Section 3]&lt;br /&gt;
* [http://igett.delmar.edu/Resources/Remote%20Sensing%20Technology%20Training/Calculation-DN_to_Reflectance_Irish_20June08.pdf Calibrated Landsat Digital Number (DN) to Top of Atmosphere (TOA) Reflectance Conversion, by Richard Irish]&lt;br /&gt;
* from [http://landsat.usgs.gov/tools_access_all_faqs.php FAQs about the Landsat Missions]&lt;br /&gt;
** [http://landsat.usgs.gov/how_is_radiance_calculated.php How is radiance calculated?]&lt;br /&gt;
** [http://landsat.usgs.gov/at_sensor_reflectance_calculated.php How is at-sensor reflectance calculated?]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* GRASS-Wiki page about [http://grasswiki.osgeo.org/wiki/Image_processing Image Processing]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Documentation]]&lt;br /&gt;
[[Category: FAQ]]&lt;br /&gt;
[[Category: WorldView]]&lt;br /&gt;
[[Category: High Resolution]]&lt;br /&gt;
[[Category: Import]]&lt;br /&gt;
[[Category: Digital Numbers]]&lt;br /&gt;
[[Category: Radiance]]&lt;br /&gt;
[[Category: Reflectance]]&lt;br /&gt;
[[Category: Image processing]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=WorldView&amp;diff=23375</id>
		<title>WorldView</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=WorldView&amp;diff=23375"/>
		<updated>2016-08-14T05:07:32Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: added i.fusion.hpf&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= This page is under construction =&lt;br /&gt;
&lt;br /&gt;
= Overview =&lt;br /&gt;
&lt;br /&gt;
WorldView-1, WorldView-2 and WorldView-3 are commercial earth observation satellites. Details about the sensors are provided at Digital Globe's collection of [http://www.digitalglobe.com/resources/satellite-information Spacecraft Data Sheets].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is recommended -- actually it is a necessity! -- to have a look at the documentation explaining [http://www.digitalglobe.com/sites/default/files/Imagery_Support_Data_Documentation%20%281%29.pdf Digital Globe's products metadata]. Note, all of DigitalGlobe’s satellites collect data using an 11 bit dynamic range. For technical reasons, products are delivered as either 16-bit or 8-bit data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Availability (Sample Data) ==&lt;br /&gt;
&lt;br /&gt;
* Search for commercial satellite image providers in the internet.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modules overview ==&lt;br /&gt;
&lt;br /&gt;
=== Outside of GRASS ===&lt;br /&gt;
&lt;br /&gt;
Satellite imagery can be managed and, at some extent, pre-processed with various [http://www.gdal.org/gdal_utilities.html GDAL utilities].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.gdal.org/gdalmanage.html gdalmanage]&lt;br /&gt;
* [http://www.gdal.org/gdalinfo.html gdalinfo]&lt;br /&gt;
* [http://www.gdal.org/gdal_translate.html gdal_translate]&lt;br /&gt;
* [http://www.gdal.org/gdalbuildvrt.html gdalbuildvrt]&lt;br /&gt;
* [http://www.gdal.org/gdalwarp.html gdalwarp]&lt;br /&gt;
&lt;br /&gt;
=== Inside GRASS GIS ===&lt;br /&gt;
&lt;br /&gt;
GRASS GIS features a complete set of modules and various add-ons enabling pre- and post-processing of WorldView satellite imagery. The following lists offer an overview of related modules and add-ons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.in.gdal}}&lt;br /&gt;
* {{cmd|r.mapcalc}}&lt;br /&gt;
* {{cmd|r.colors}}&lt;br /&gt;
* {{cmd|i.landsat.rgb}}&lt;br /&gt;
* {{cmd|i.pansharpen}}&lt;br /&gt;
* {{cmd|i.vi}}&lt;br /&gt;
* {{cmd|i.segment}}&lt;br /&gt;
* ...''more to add''&lt;br /&gt;
&lt;br /&gt;
== Pre-Processing ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
Typically, multispectral satellite data are converted into physical quantities such as ''Radiance'' or ''Reflectance'' before they are subjected in multispectral analysis techniques (image interpretation, band arithmetic, vegetation indices, matrix transformations, etc.). The latter can be differentiated in ''Top of Atmosphere Reflectance'' (ToAR) which does not account for atmospheric effects (absorption or scattering) and in ''Top of Canopy Reflectance'' (ToCR) which introduces a &amp;quot;correction&amp;quot; for atmospheric effects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In order to derive Reflectance values, likewise as with remotely sensed data acquired by other sensors, WorldView raw image digital numbers (DNs) need to be converted to ''at-sensor spectral Radiance'' values.  At-sensor spectral Radiance values are an important input for the equation to derive Reflectance values. Note, ''Spectal Radiance'' is the measure of the quantity of radiation that hits the sensor and typically expressed in &amp;lt;math&amp;gt;\frac{W}{m^2*sr*nm}&amp;lt;/math&amp;gt;, that is ''watts'' per ''unit source area'', per ''unit solid angle'', and per ''unit wavelength''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* Converting WorldView DNs to ''Top of Atmosphere'' Radiance, as described in [http://www.digitalglobe.com/downloads/Radiometric_Use_of_WorldView-2_Imagery.pdf Radiometric Use of WorldView-2 Imagery, Technical Note (2010)] by Todd Updike and Chris Comp, can be done by using the following equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L_{\lambda\text{Pixel, Band}} = \frac{K_{\text{Band}} * q_{\text{Pixel, Band}}}{\Delta\lambda_{\text{Band}}}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;where:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;L_{\lambda\text{Pixel,Band}}&amp;lt;/math&amp;gt;:  Top-of-Atmosphere Spectral Radiance image pixels [W-m-2-sr-1-μm-1]&lt;br /&gt;
* &amp;lt;math&amp;gt;K_{\text{Band}}&amp;lt;/math&amp;gt;:  the absolute radiometric calibration factor [W-m-2-sr-1-count-1] for a given band&lt;br /&gt;
* &amp;lt;math&amp;gt;q_{\text{Pixel,Band}}&amp;lt;/math&amp;gt;:  radiometrically corrected image pixels [counts  or  Digital Numbers]&lt;br /&gt;
* &amp;lt;math&amp;gt;\Delta_{\lambda_{\text{Band}}}&amp;lt;/math&amp;gt;:  the effective bandwidth [μm] for a given band&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Converting to Top of Atmosphere Reflectance, also referred to as Planetary Reflectance, can be done by using the following equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\rho_p = \frac{\pi * L\lambda * d^2}{ESUN\lambda * cos(\Theta_S)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;where:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\rho&amp;lt;/math&amp;gt; - Unitless Planetary Reflectance&lt;br /&gt;
* &amp;lt;math&amp;gt;\pi&amp;lt;/math&amp;gt; - mathematical constant (3.14159265358)&lt;br /&gt;
* &amp;lt;math&amp;gt;L\lambda&amp;lt;/math&amp;gt; spectral Radiance at the sensor's aperture, from equation... '''''ToADD'''''&lt;br /&gt;
* &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; - Earth-Sun distance in astronomical units, interpolated values&lt;br /&gt;
* &amp;lt;math&amp;gt;Esun&amp;lt;/math&amp;gt; - Mean solar exoatmospheric irradiance(s) (W/m2/μm), interpolated values&lt;br /&gt;
* &amp;lt;math&amp;gt;cos(\theta_s)&amp;lt;/math&amp;gt; - {{wikipedia||Solar_zenith_angle}} from the image acquisition's metadata&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Importing data ===&lt;br /&gt;
&lt;br /&gt;
==== File Formats &amp;amp; Metadata ====&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
==== Importing ====&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* Location creation based on georeferenced data&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once inside a Location that is defined by the spatial reference system in which the bands of interest are projected, they can be imported with the {{cmd|r.in.gdal}} module.&lt;br /&gt;
&lt;br /&gt;
For example, GeoTIFF files can be imported by looping {{cmd|r.in.gdal}} over all of them&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for TIF in `echo *.tif`; do r.in.gdal in=${TIF} out=${TIF%%.*}; done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To keep the raw material untouched, we create another Mapset inside the same Location and copy over the bands giving, ''optionally'' at the same time, a new name for each.&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
=== Deriving Physical Quantities ===&lt;br /&gt;
&lt;br /&gt;
''ToCleanUp''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Converting Digital Numbers to Radiance/Reflectance requires knowledge about the sensor's specific spectral band parameters. In the following listed parameters (see below), the ''Effective Bandwidth''s and the ''Band-Averaged Solar Spectral Irradiance''s are extracted from the document [http://www.digitalglobe.com/downloads/Radiometric_Use_of_WorldView-2_Imagery.pdf Radiometric Use of WorldView-2 Imagery, Technical Note (2010)] by Todd Updike and Chris Comp. The Absolute Calibration Factors are extracted from a WorldView-2 product, specifically from an image metadata file (extension .IMD).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Note,''' however, as stated in the above document,&lt;br /&gt;
&lt;br /&gt;
   The absolute radiometric calibration factor is dependent on the specific band, &lt;br /&gt;
   as well as the TDI exposure level, line rate, pixel aggregation, and bit depth &lt;br /&gt;
   of the product. Based on these parameters, the appropriate value is provided in &lt;br /&gt;
   the .IMD file. For this reason, care should be taken not to mix absolute radiometric &lt;br /&gt;
   calibration factors between products that might have different collection conditions.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
Pan_CalCoef=0.05678345		;	Pan_Width=0.2846000		;	Pan_Esun=1580.8140&lt;br /&gt;
Coastal_CalCoef=0.009295654	;	Coastal_CalCoef=0.04730000	;	Coastal_Esun=1758.2229&lt;br /&gt;
Blue_CalCoef=0.01260825		;	Blue_Width=0.05430000		;	Blue_Esun=1974.2416&lt;br /&gt;
Green_CalCoef=0.009713071	;	Green_Width=0.06300000		;	Green_Esun=1856.4104&lt;br /&gt;
Yellow_CalCoef=0.005829815	;	Yellow_Width=0.03740000		;	Yellow_Esun=1738.4791&lt;br /&gt;
Red_CalCoef=0.01103623		;	Red_Width=0.05740000		;	Red_Esun=1559.4555&lt;br /&gt;
RedEdge_CalCoef=0.005188136	;	RedEdge_Width=0.03930000	;	Red_Edge_Esun=1342.0695&lt;br /&gt;
NIR1_CalCoef=0.01224380		;	NIR1_Width=0.09890000		;	NIR_Esun=1069.7302&lt;br /&gt;
NIR2_CalCoef=0.009042234	;	NIR2_Width=0.09960000		;	NIR2_Esun=861.2866&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following examples exemplify the conversion of raw Blue band digital numbers into Radiance and Reflectance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Spectral Radiance ====&lt;br /&gt;
&lt;br /&gt;
Converting a Blue Band (Digital Numbers) in to Spectral at-sensor Radiance in the ''correct'' units to be further used for the conversion in to unitless Reflectance:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# set the region&lt;br /&gt;
g.region rast=Blue_DNs -p&lt;br /&gt;
&lt;br /&gt;
# convert DNs to spectral Radiance values&lt;br /&gt;
r.mapcalc &amp;quot;Blue_Radiance = ( (10000 * WorldView_Blue_DNs) / (... * ...) )&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Planetary Reflectance ====&lt;br /&gt;
&lt;br /&gt;
The equation to derive Reflectance values incorporates in addition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* The mathematical constant {{wikipedia|Pi}} &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;PI=3.14159265358&amp;lt;/source&amp;gt;.&lt;br /&gt;
* The Earth-Sun distance in astronomical units which depends on the acquisition's day of year (DOY -- also referred to as Julian day, {{wikipedia|Ordinal_date}}) and can be retrieved from the following spreadsheet &amp;lt;http://landsathandbook.gsfc.nasa.gov/excel_docs/d.xls&amp;gt;.&lt;br /&gt;
* The mean solar exoatmospheric irradiance in &amp;lt;math&amp;gt;\frac{W}{m^2*\mu m}&amp;lt;/math&amp;gt;. See 3rd column of (interplated) values given above.&lt;br /&gt;
* The cosine of the ''Solar Zenith Angle'' (SZA) at the time of the acquisition. The SZA can be calculated from its complementary ''Solar Elevation Angle'' (SEA) given in the image acquisition's metadata.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following example we accept as the acquisition's &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;DOY=...&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;SEA=...&amp;lt;/source&amp;gt;. Hence, we get the Earth-Sun distance &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;ESD=...&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;SZA = ... deg&amp;lt;/source&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In any case, '''note''' that Top-of-Atmosphere Reflectance does not account for topographic, atmospheric, or BRDF differences.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Converting the in-Blue spectral band at-sensor Radiance in to Planerary Reflectance:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;PI=...; ESD=...; BAND_Esun=...; SZA=...&amp;lt;/source&amp;gt;&lt;br /&gt;
 {{cmd|r.mapcalc}} &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;&amp;quot;Blue_Reflectance = ( ${PI} * Blue_Radiance * ${ESD}^2 ) / ( ${BAND_Esun} * cos(${SZA}) )&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Automatising Conversions ====&lt;br /&gt;
&lt;br /&gt;
The conversion process can be scripted to avoid repeating the same steps for each band separately.&lt;br /&gt;
&lt;br /&gt;
===== Python =====&lt;br /&gt;
&lt;br /&gt;
A custom python script, performing the operations of interest, might be like [https://github.com/NikosAlexandris/i.worldview.toar i.worldview.toar (for GRASS 7.x)]&lt;br /&gt;
 &lt;br /&gt;
===== Bash =====&lt;br /&gt;
In bash, such a script might be as the following example. '''Note,''' however, in this example script constants, band parameters and acquisition related metadata are hard-coded!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
# π, first 11 decimals&lt;br /&gt;
PI=3.14159265358&lt;br /&gt;
&lt;br /&gt;
# HardCoded MetaData!&lt;br /&gt;
&lt;br /&gt;
  # Acquisition's Day of Year and estimated Earth-Sun Distance&lt;br /&gt;
  DOY=100; ESD=1.00184&lt;br /&gt;
&lt;br /&gt;
  # Sun Zenith Angle based on the acquisition's Sun Elevation Angle&lt;br /&gt;
  SEA=53.8; SZA=$(echo &amp;quot;90 - ${SEA}&amp;quot; | bc )&lt;br /&gt;
&lt;br /&gt;
  # some echo&lt;br /&gt;
  echo &amp;quot;Acquisition-specific parameters&amp;quot;&lt;br /&gt;
  echo &amp;quot;Day of Year: ${DOY}, Earth-Sun Distance: ${ESD}, Sun Zenith Angle: ${SZA}&amp;quot;&lt;br /&gt;
  echo -e &amp;quot;\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# 1st column: Absolute Calibration Factors&lt;br /&gt;
# 2nd column: Spectral Band Effective Bandwidth, Δλ&lt;br /&gt;
# 3rd column: Band-Averaged Solar Spectral Irradiance [W/sq.m./micro-m]&lt;br /&gt;
&lt;br /&gt;
K_Pan=0.05678345	;	Pan_Width=0.2846000		;	Pan_Esun=1580.8140&lt;br /&gt;
K_Coastal=0.009295654	;	Coastal_Width=0.04730000	;	Coastal_Esun=1758.2229&lt;br /&gt;
K_Blue=0.01260825	;	Blue_Width=0.05430000		;	Blue_Esun=1974.2416&lt;br /&gt;
K_Green=0.009713071	;	Green_Width=0.06300000		;	Green_Esun=1856.4104&lt;br /&gt;
K_Yellow=0.005829815	;	Yellow_Width=0.03740000		;	Yellow_Esun=1738.4791&lt;br /&gt;
K_Red=0.01103623	;	Red_Width=0.05740000		;	Red_Esun=1559.4555&lt;br /&gt;
K_RedEdge=0.005188136	;	RedEdge_Width=0.03930000	;	RedEdge_Esun=1342.0695&lt;br /&gt;
K_NIR1=0.01224380	;	NIR1_Width=0.09890000		;	NIR1_Esun=1069.7302&lt;br /&gt;
K_NIR2=0.009042234	;	NIR2_Width=0.09960000		;	NIR2_Esun=861.2866&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# Bands&lt;br /&gt;
Spectral_Bands=&amp;quot;Pan Coastal Blue Green Yellow Red RedEdge NIR1 NIR2&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# loop over all bands&lt;br /&gt;
for BAND in ${Spectral_Bands}; do&lt;br /&gt;
&lt;br /&gt;
  # some echo&lt;br /&gt;
  echo -e &amp;quot;Processing the \&amp;quot;${BAND}\&amp;quot; spectral band&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # set band parameters as variables&lt;br /&gt;
  eval BAND_Width=&amp;quot;${BAND}_Width&amp;quot;&lt;br /&gt;
  echo &amp;quot;* Band-specific radiometric parameters set to K=${!K_BAND}, Bandwidth=${!BAND_Width}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # set region&lt;br /&gt;
  g.region rast=${BAND}_DNs&lt;br /&gt;
&lt;br /&gt;
  # conversion to Radiance based on (1) -- attention: 32-bit calculations required&lt;br /&gt;
  echo &amp;quot;* Converting ${BAND} Digital Numebrs to Radiance...&amp;quot; | tr -d &amp;quot;\n&amp;quot;&lt;br /&gt;
  r.mapcalc &amp;quot;${BAND}_Radiance = ( double(${!K_BAND}) * ${BAND}_DNs ) / ${!BAND_Width}&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
&lt;br /&gt;
  # report range&lt;br /&gt;
  echo &amp;quot;* Reporting range of the ${BAND} spectral radiance: &amp;quot; | tr -d &amp;quot;\n&amp;quot;&lt;br /&gt;
  # r.info -r &amp;quot;${BAND}_Radiance&amp;quot;&lt;br /&gt;
  r.info -r &amp;quot;${BAND}_Radiance&amp;quot; | tr &amp;quot;\n&amp;quot; &amp;quot;,&amp;quot; | cut -d&amp;quot;,&amp;quot; -f1,2 | sed 's/,/,\ /'&lt;br /&gt;
&lt;br /&gt;
  # add info&lt;br /&gt;
  r.support map=${BAND}_Radiance \&lt;br /&gt;
  title=&amp;quot;&amp;quot; \&lt;br /&gt;
  units=&amp;quot;W / sq.m. / μm / ster&amp;quot; \&lt;br /&gt;
  description=&amp;quot;Top-of-Atmosphere `echo ${BAND}` band spectral Radiance [W/m^2/sr/μm]&amp;quot; \&lt;br /&gt;
  source1='&amp;quot;Radiometric Use of WorldView-2 Imagery, Technical Note (2010)&amp;quot;, by Todd Updike &amp;amp; Chris Comp'&lt;br /&gt;
&lt;br /&gt;
  # Esun&lt;br /&gt;
  eval BAND_Esun=&amp;quot;${BAND}_Esun&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # some echo&lt;br /&gt;
  echo &amp;quot;* Parameters required for the conversion: Esun= ${!BAND_Esun}, ESD= ${ESD}, ${SZA}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # calculate ToAR&lt;br /&gt;
  echo &amp;quot;* Converting ${BAND}_Radiance to Top of Atmosphere Reflectance...&amp;quot; | tr -d &amp;quot;\n&amp;quot;&lt;br /&gt;
  r.mapcalc &amp;quot;${BAND}_ToAR = \&lt;br /&gt;
	( ${PI} * ${BAND}_Radiance * ${ESD}^2 ) / ( ${!BAND_Esun} * cos(${SZA}) )&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # report range&lt;br /&gt;
  echo &amp;quot;* Reporting range of the ${BAND} spectral radiance: &amp;quot; | tr -d &amp;quot;\n&amp;quot;&lt;br /&gt;
  r.info -r ${BAND}_ToAR | tr &amp;quot;\n&amp;quot; &amp;quot;,&amp;quot; | cut -d&amp;quot;,&amp;quot; -f1,2 | sed 's/,/,\ /'&lt;br /&gt;
&lt;br /&gt;
  # add some metadata&lt;br /&gt;
  r.support map=${BAND}_ToAR \&lt;br /&gt;
  title=&amp;quot;echo ${BAND} band (Top of Atmosphere Reflectance)&amp;quot; \&lt;br /&gt;
  units=&amp;quot;Unitless planetary reflectance&amp;quot; \&lt;br /&gt;
  description=&amp;quot;Top of Atmosphere `echo ${BAND}` band spectral Reflectance (unitless)&amp;quot; \&lt;br /&gt;
  source1='&amp;quot;Radiometric Use of WorldView-2 Imagery, Technical Note (2010)&amp;quot;, by Todd Updike &amp;amp; Chris Comp, Digital Globe' \&lt;br /&gt;
  source2=&amp;quot;Digital Globe&amp;quot; \&lt;br /&gt;
  history=&amp;quot;PI=3.14159265358; K=${!K_BAND}; Bandwidth=${!BAND_Width}; ESD=${ESD}; Esun=${!BAND_Esun}; SZA=${SZA}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  echo -e &amp;quot;\n&amp;quot;&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Atmospheric correction ===&lt;br /&gt;
&lt;br /&gt;
See [[Atmospheric correction]]&lt;br /&gt;
&lt;br /&gt;
== Post-Processing ==&lt;br /&gt;
&lt;br /&gt;
Having beforehand satellite image data expressed in physical quantities (radiance or reflectance) is preferred to follow-up with digital image analysis techniques. A few common post-processing practices are Contrast-Enhancement, Pan-Sharpening and creating Pseudo- or True-Color Composites. Other well known enhancing manipualtions to support the analyses of satellite imagery, include deriving Vegetation Indices, transforming multi-spectral data based on [[Principal_Components_Analysis | PCA]] and Segmenting images.&lt;br /&gt;
&lt;br /&gt;
=== Contrast Enhancement ===&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
=== Pan-Sharpening ===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Pansharpened_image Pan-Sharpening] / [http://en.wikipedia.org/wiki/Image_fusion Fusion] is the process of merging high-resolution panchromatic and lower resolution multi-spectral imagery. [http://grass.osgeo.org/grass70/ GRASS 7] holds a dedicated pan-sharpening module, {{cmd|i.pansharpen}} which features three techniques for sharpening, namely the [http://wiki.awf.forst.uni-goettingen.de/wiki/index.php/Brovey_Transformation Brovey transformation], the classical IHS method and one that is based on [[Principal Components Analysis]] (PCA).&lt;br /&gt;
Another algorithm deriving excellent detail and a realistic representation of original multispectral scene colors, is the High-Pass Filter Addition (HPFA) technique. It is implemented via the {{AddonSrc|imagery|i.fusion.hpf|version=7}} add-on (for GRASS 6, please refer to a bash shell script https://github.com/NikosAlexandris/i.fusion.hpf.sh which is, however, unmaintained). &lt;br /&gt;
&lt;br /&gt;
One approach inside GRASS-GIS to get an acceptable color-balanced composite image after Pan-sharpening 11-bit IKONOS spectral bands comprises the following steps&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
# rescale the 11-bit WorldView spectral bands to 8-bit ranging in [0, 255] ({{cmd|r.rescale}})&lt;br /&gt;
# pan-sharpen with any of the featured methods (Brovey, IHS, PCA) ({{cmd|i.pansharpen}})&lt;br /&gt;
# color-balance by using the {{cmd|i.landsat.rgb}} module or manually adjusting the color tables of the bands of interest&lt;br /&gt;
# create a composite image by using the {{cmd|r.compose}} module&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
==== Automatising Sharpening &amp;amp; RGB Composition ====&lt;br /&gt;
&lt;br /&gt;
An ''experimental'' bash script to automatise the sharpening/fusion and RGB composition process is demonstrated here. The script uses the Spectral Reflectance values (double precision values), gained from previous steps (see above), and produces Pan-sharpened images by applying all of the three methods that {{cmd|i.pansharpen}} offers. In addition, it attempts to produce True-Color composite images, without and with re-balancing the color tables by using the {{cmd|i.landsat.rgb}} module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initial tests indicate that at least one of the three sharpening methods, combined with re-balancing, produces very clear and balanced True-Color composites. Note, there is no 100% confidence that it will produce nice looking True-Color composites. Some of the methods might simply work, others might deliver fancy-colored images. As usual, some manual action might be required to get the re-balancing to work as best as possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The script can be expanded in terms of using more inputs by utilising bash's positional parameters.  However, care has to be taken to alter the instruction that concerns the conversion from double precision values to 8-bit integers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Color Composites ===&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== Vegetation Indices ==&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== PCA ==&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== WordView Image classification ==&lt;br /&gt;
&lt;br /&gt;
See [[Image classification]]&lt;br /&gt;
&lt;br /&gt;
== References / Sources ==&lt;br /&gt;
&lt;br /&gt;
* ...&lt;br /&gt;
* [http://landsathandbook.gsfc.nasa.gov/data_prod/prog_sect11_3.html Landsat7 Science Data Users Handbook, Chapter 11, Section 3]&lt;br /&gt;
* [http://igett.delmar.edu/Resources/Remote%20Sensing%20Technology%20Training/Calculation-DN_to_Reflectance_Irish_20June08.pdf Calibrated Landsat Digital Number (DN) to Top of Atmosphere (TOA) Reflectance Conversion, by Richard Irish]&lt;br /&gt;
* from [http://landsat.usgs.gov/tools_access_all_faqs.php FAQs about the Landsat Missions]&lt;br /&gt;
** [http://landsat.usgs.gov/how_is_radiance_calculated.php How is radiance calculated?]&lt;br /&gt;
** [http://landsat.usgs.gov/at_sensor_reflectance_calculated.php How is at-sensor reflectance calculated?]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* GRASS-Wiki page about [http://grasswiki.osgeo.org/wiki/Image_processing Image Processing]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Documentation]]&lt;br /&gt;
[[Category: FAQ]]&lt;br /&gt;
[[Category: WorldView]]&lt;br /&gt;
[[Category: High Resolution]]&lt;br /&gt;
[[Category: Import]]&lt;br /&gt;
[[Category: Digital Numbers]]&lt;br /&gt;
[[Category: Radiance]]&lt;br /&gt;
[[Category: Reflectance]]&lt;br /&gt;
[[Category: Image processing]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=IKONOS&amp;diff=23374</id>
		<title>IKONOS</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=IKONOS&amp;diff=23374"/>
		<updated>2016-08-14T05:05:13Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: updated link to i.ikonos.toar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
IKONOS is a commercial earth observation satellite. Details about the sensor are provided at Digital Globe's [http://www.digitalglobe.com/sites/default/files/DG_IKONOS_DS.pdf IKONOS Data Sheet]. [http://en.wikipedia.org/wiki/Ikonos Wikipedia's article on IKONOS] provides a nice overview as well.&lt;br /&gt;
&lt;br /&gt;
== Availability (Sample Data) ==&lt;br /&gt;
&lt;br /&gt;
* Search for commercial satellite image providers in the internet.&lt;br /&gt;
* [http://www.landcover.org/ The Global Land Cover Facility (GLCF)] provides [ftp://ftp.glcf.umd.edu/glcf/China_earthquake_May_2008/IKONOS/ four openly available IKONOS scenes of western Sichuan].&lt;br /&gt;
* ISPRS provides a small [http://www.isprs.org/data/ikonos/ IKONOS data set], fragments from a Panchromatic image as well as from a Stereo product.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modules overview ==&lt;br /&gt;
&lt;br /&gt;
=== Outside of GRASS ===&lt;br /&gt;
&lt;br /&gt;
Satellite imagery can be managed and, at some extent, pre-processed with various [http://www.gdal.org/gdal_utilities.html GDAL utilities].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.gdal.org/gdalmanage.html gdalmanage]&lt;br /&gt;
* [http://www.gdal.org/gdalinfo.html gdalinfo]&lt;br /&gt;
* [http://www.gdal.org/gdal_translate.html gdal_translate]&lt;br /&gt;
* [http://www.gdal.org/gdalbuildvrt.html gdalbuildvrt]&lt;br /&gt;
* [http://www.gdal.org/gdalwarp.html gdalwarp]&lt;br /&gt;
&lt;br /&gt;
=== Inside GRASS GIS ===&lt;br /&gt;
&lt;br /&gt;
GRASS GIS features a complete set of modules and various add-ons enabling pre- and post-processing of IKONOS satellite imagery. The following lists offer an overview of related modules and add-ons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.in.gdal}}&lt;br /&gt;
* {{cmd|r.mapcalc}}&lt;br /&gt;
* {{cmd|r.colors}}&lt;br /&gt;
* {{cmd|i.landsat.rgb}}&lt;br /&gt;
* {{AddonSrc|imagery|i.fusion.hpf|version=7}}&lt;br /&gt;
* {{cmd|i.pansharpen}}&lt;br /&gt;
* [https://github.com/NikosAlexandris/i.ikonos.toar i.ikonos.toar]&lt;br /&gt;
* {{cmd|i.vi}}&lt;br /&gt;
* {{cmd|i.segment}}&lt;br /&gt;
&lt;br /&gt;
== Pre-Processing ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
Typically, multispectral satellite data are converted into physical quantities such as ''Radiance'' or ''Reflectance'' before they are subjected in multispectral analysis techniques (image interpretation, band arithmetic, vegetation indices, matrix transformations, etc.). The latter can be differentiated in ''Top of Atmosphere Reflectance'' (ToAR) which does not account for atmospheric effects (absorption or scattering) and in ''Top of Canopy Reflectance'' (ToCR) which introduces a &amp;quot;correction&amp;quot; for atmospheric effects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In order to derive Reflectance values, likewise as with remotely sensed data acquired by other sensors, IKONOS raw image digital numbers (DNs) need to be converted to ''at-sensor spectral Radiance'' values.  At-sensor spectral Radiance values are an important input for the equation to derive Reflectance values. Note, ''Spectal Radiance'' is the measure of the quantity of radiation that hits the sensor and typically expressed in &amp;lt;math&amp;gt;\frac{W}{m^2*sr*nm}&amp;lt;/math&amp;gt;, that is ''watts'' per ''unit source area'', per ''unit solid angle'', and per ''unit wavelength''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* Converting DNs to at-sensor Radiance can be done by using the following equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L\lambda = \frac{10^4 * DN\lambda}{CalCoef\lambda * Bandwidth\lambda}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Converting to Top of Atmosphere Reflectance, also referred to as Planetary Reflectance, can be done by using the following equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\rho_p = \frac{\pi * L\lambda * d^2}{ESUN\lambda * cos(\Theta_S)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;where:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\rho&amp;lt;/math&amp;gt; - Unitless Planetary Reflectance&lt;br /&gt;
* &amp;lt;math&amp;gt;\pi&amp;lt;/math&amp;gt; - mathematical constant (3.14159265358)&lt;br /&gt;
* &amp;lt;math&amp;gt;L\lambda&amp;lt;/math&amp;gt; spectral Radiance at the sensor's aperture, from equation... '''''ToADD'''''&lt;br /&gt;
* &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; - Earth-Sun distance in astronomical units, interpolated values&lt;br /&gt;
* &amp;lt;math&amp;gt;Esun&amp;lt;/math&amp;gt; - Mean solar exoatmospheric irradiance(s) (W/m2/μm), interpolated values&lt;br /&gt;
* &amp;lt;math&amp;gt;cos(\theta_s)&amp;lt;/math&amp;gt; - {{wikipedia||Solar_zenith_angle}} from the image acquisition's metadata&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Importing data ===&lt;br /&gt;
&lt;br /&gt;
==== File Formats &amp;amp; Metadata ====&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
==== Importing ====&lt;br /&gt;
&lt;br /&gt;
In the following example the publicly available IKONOS acqisition [ftp://ftp.glcf.umd.edu/glcf/China_earthquake_May_2008/IKONOS/po_58204_0000000.20001116.China-Sichuan/ po_58204_0000000.20001116.China-Sichuan] is used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* Location creation based on georeferenced data&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once inside a Location that is defined by the spatial reference system in which the bands of interest are projected, they can be imported with the {{cmd|r.in.gdal}} module.&lt;br /&gt;
&lt;br /&gt;
For example, GeoTIFF files can be imported by looping {{cmd|r.in.gdal}} over all of them&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for TIF in `echo *.tif`; do r.in.gdal in=${TIF} out=${TIF%%.*}; done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To keep the raw material untouched, we create another Mapset inside the same Location and copy over the bands giving, ''optionally'' at the same time, a new name for each.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
g.mapset -c pre-processing&lt;br /&gt;
g.copy rast=po_58204_blu_0000000,Blue_DNs&lt;br /&gt;
g.copy rast=po_58204_grn_0000000,Green_DNs&lt;br /&gt;
g.copy rast=po_58204_red_0000000,Red_DNs&lt;br /&gt;
g.copy rast=po_58204_nir_0000000,NIR_DNs&lt;br /&gt;
g.copy rast=po_58204_pan_0000000,Pan_DNs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Deriving Physical Quantities ===&lt;br /&gt;
&lt;br /&gt;
Conversions are implemented in a GRASS module available at https://github.com/NikosAlexandris/i.ikonos.toar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Details''&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Converting Digital Numbers to Radiance/Reflectance requires knowledge about the sensor's specific spectral band parameters. Those are, as extracted from the document ''IKONOS Planetary Reflectance and Mean Solar Exoatmospheric Irradiance'', by Martin Taylor (see references):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 Pan_CalCoef=161	;	Pan_Width=403		;	Pan_Esun=1375.8&lt;br /&gt;
 Blue_CalCoef=728	;	Blue_Width=71.3		;	Blue_Esun=1930.9&lt;br /&gt;
 Green_CalCoef=720	;	Green_Width=88.6	;	Green_Esun=1854.8&lt;br /&gt;
 Red_CalCoef=949	;	Red_Width=65.8		;	Red_Esun=1556.5&lt;br /&gt;
 NIR_CalCoef=843	;	NIR_Width=95.4		;	NIR_Esun=1156.9&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following examples exemplify the conversion of raw Blue band digital numbers into Radiance and Reflectance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Spectral Radiance ====&lt;br /&gt;
&lt;br /&gt;
Converting a Blue Band (Digital Numbers) in to Spectral at-sensor Radiance in the ''correct'' units to be further used for the conversion in to unitless Reflectance:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# set the region&lt;br /&gt;
g.region rast=Blue_DNs -p&lt;br /&gt;
&lt;br /&gt;
# convert DNs to spectral Radiance values&lt;br /&gt;
r.mapcalc &amp;quot;Blue_Radiance = ( (10000 * IKONOS_Blue_DNs) / (728 * 71.3) )&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Planetary Reflectance ====&lt;br /&gt;
&lt;br /&gt;
The equation to derive Reflectance values incorporates in addition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* The mathematical constant {{wikipedia|Pi}} &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;PI=3.14159265358&amp;lt;/source&amp;gt;.&lt;br /&gt;
* The Earth-Sun distance in astronomical units which depends on the acquisition's day of year (DOY -- also referred to as Julian day, {{wikipedia|Ordinal_date}}) and can be retrieved from the following spreadsheet &amp;lt;http://landsathandbook.gsfc.nasa.gov/excel_docs/d.xls&amp;gt;.&lt;br /&gt;
* The mean solar exoatmospheric irradiance in &amp;lt;math&amp;gt;\frac{W}{m^2*\mu m}&amp;lt;/math&amp;gt;. See 3rd column of (interplated) values given above.&lt;br /&gt;
* The cosine of the ''Solar Zenith Angle'' (SZA) at the time of the acquisition. The SZA can be calculated from its complementary ''Solar Elevation Angle'' (SEA) given in the image acquisition's metadata.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following example we accept as the acquisition's &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;DOY=166&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;SEA=52.78880&amp;lt;/source&amp;gt;. Hence, we get the Earth-Sun distance &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;ESD=1.0157675&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;SZA = 37.21120 deg&amp;lt;/source&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Converting the in-Blue spectral band at-sensor Radiance in to Planerary Reflectance:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;PI=3.14159265358; ESD=1.0157675; BAND_Esun=1930.9; SZA=37.21120&amp;lt;/source&amp;gt;&lt;br /&gt;
 {{cmd|r.mapcalc}} &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;&amp;quot;Blue_Reflectance = ( ${PI} * Blue_Radiance * ${ESD}^2 ) / ( ${BAND_Esun} * cos(${SZA}) )&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Automatising Conversions ====&lt;br /&gt;
&lt;br /&gt;
The conversion process can be scripted to avoid repeating the same steps for each band separately.&lt;br /&gt;
&lt;br /&gt;
===== Python =====&lt;br /&gt;
&lt;br /&gt;
A custom python script, performing the operations of interest, might be like [https://github.com/NikosAlexandris/i.ikonos.toar i.ikonos.toar (for GRASS 7.x)]&lt;br /&gt;
 &lt;br /&gt;
===== Bash =====&lt;br /&gt;
In bash, such a script might be as the following example. '''Note,''' however, in this example script constants, band parameters and acquisition related metadata are hard-coded!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
Pan_CalCoef=161		;	Pan_Width=403		;	Pan_Esun=1375.8&lt;br /&gt;
Blue_CalCoef=728	;	Blue_Width=71.3		;	Blue_Esun=1930.9&lt;br /&gt;
Green_CalCoef=720	;	Green_Width=88.6	;	Green_Esun=1854.8&lt;br /&gt;
Red_CalCoef=949		;	Red_Width=65.8		;	Red_Esun=1556.5&lt;br /&gt;
NIR_CalCoef=843		;	NIR_Width=95.4		;	NIR_Esun=1156.9&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# set constants, band parameters and acquisition related metadata here!&lt;br /&gt;
&lt;br /&gt;
# Pi, first 11 decimals&lt;br /&gt;
PI=3.14159265358&lt;br /&gt;
&lt;br /&gt;
# Acquisition's Day of Year and estimated Earth-Sun Distance&lt;br /&gt;
DOY=166; ESD=1.0157675&lt;br /&gt;
&lt;br /&gt;
# Sun Zenith Angle based on the acquisition's Sun Elevation Angle&lt;br /&gt;
SEA=52.78880; SZA=$(echo &amp;quot;90 - ${SEA}&amp;quot; | bc )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# bands to process&lt;br /&gt;
Spectral_Bands=&amp;quot;Pan Blue Green Red NIR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# loop over all bands&lt;br /&gt;
for BAND in ${Spectral_Bands}; do&lt;br /&gt;
&lt;br /&gt;
  echo &amp;quot;Processing the ${BAND} spectral band&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # set region&lt;br /&gt;
  g.region rast=${BAND}_DNs&lt;br /&gt;
&lt;br /&gt;
  # set band parameters as variables&lt;br /&gt;
  eval BAND_CalCoef=&amp;quot;${BAND}_CalCoef&amp;quot;&lt;br /&gt;
  eval BAND_Width=&amp;quot;${BAND}_Width&amp;quot;;&lt;br /&gt;
  echo &amp;quot;Band Parameters set to CalCoef=${!BAND_CalCoef}, Bandwidth=${!BAND_Width}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # conversion to Radiance&lt;br /&gt;
  r.mapcalc &amp;quot;${BAND}_Radiance = ( ( 10^4 * ${BAND}_DNs ) / ( ${!BAND_CalCoef} * ${!BAND_Width} ) )&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # add info&lt;br /&gt;
  r.support map=${BAND}_Radiance \&lt;br /&gt;
  title=&amp;quot;&amp;quot; \&lt;br /&gt;
  units=&amp;quot;W / m2 / μm / ster&amp;quot; \&lt;br /&gt;
  description=&amp;quot;At-sensor `echo ${BAND}` band spectral Radiance (W/m2/μm/sr)&amp;quot; \&lt;br /&gt;
  source1='&amp;quot;IKONOS Planetary Reflectance and Mean Solar Exoatmospheric Irradiance&amp;quot;, by Martin Taylor, Geoeye'&lt;br /&gt;
&lt;br /&gt;
  # set Earth-Sun distance&lt;br /&gt;
  eval BAND_Esun=&amp;quot;${BAND}_Esun&amp;quot;; echo &amp;quot;Using Esun=${!BAND_Esun}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # calculate ToAR&lt;br /&gt;
  r.mapcalc &amp;quot;${BAND}_ToAR = \&lt;br /&gt;
	( ${PI} * ${BAND}_Radiance * ${ESD}^2 ) / ( ${!BAND_Esun} * cos(${SZA}) )&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # add some metadata&lt;br /&gt;
  r.support map=${BAND}_ToAR \&lt;br /&gt;
  title=&amp;quot;echo ${BAND} band (Top of Atmosphere Reflectance)&amp;quot; \&lt;br /&gt;
  units=&amp;quot;Unitless&amp;quot; \&lt;br /&gt;
  description=&amp;quot;Top of Atmosphere `echo ${BAND}` band spectral Reflectance (unitless)&amp;quot; \&lt;br /&gt;
  source1='&amp;quot;IKONOS Planetary Reflectance and Mean Solar Exoatmospheric Irradiance&amp;quot;, by Martin Taylor, Geoeye' \&lt;br /&gt;
  source2=&amp;quot;e.g., the Image Provider!&amp;quot; \&lt;br /&gt;
  history=&amp;quot;PI=3.14159265358; ESD=1.0157675; BAND_Esun=1930.9; SZA=37.21120&amp;quot;&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Atmospheric correction ===&lt;br /&gt;
&lt;br /&gt;
See [[Atmospheric correction]]&lt;br /&gt;
&lt;br /&gt;
== Post-Processing ==&lt;br /&gt;
&lt;br /&gt;
Having beforehand satellite image data expressed in physical quantities (radiance or reflectance) is preferred to follow-up with digital image analysis techniques. A few common post-processing practices are Contrast-Enhancement, Pan-Sharpening and creating Pseudo- or True-Color Composites. Other well known enhancing manipualtions to support the analyses of satellite imagery, include deriving Vegetation Indices, transforming multi-spectral data based on [[Principal_Components_Analysis | PCA]] and Segmenting images.&lt;br /&gt;
&lt;br /&gt;
=== Contrast Enhancement ===&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
=== Pan-Sharpening ===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Pansharpened_image Pan-Sharpening] / [http://en.wikipedia.org/wiki/Image_fusion Fusion] is the process of merging high-resolution panchromatic and lower resolution multi-spectral imagery. [http://grass.osgeo.org/grass70/ GRASS 7] holds a dedicated pan-sharpening module, {{cmd|i.pansharpen}} which features three techniques for sharpening, namely the [http://wiki.awf.forst.uni-goettingen.de/wiki/index.php/Brovey_Transformation Brovey transformation], the classical IHS method and one that is based on [[Principal Components Analysis]] (PCA). Another algorithm deriving excellent detail and a realistic representation of original multispectral scene colors, is the High-Pass Filter Addition (HPFA) technique. It is available through the add-on {{AddonSrc|imagery|i.fusion.hpf|version=7}} (for GRASS 6, please refer to a bash shell script https://github.com/NikosAlexandris/i.fusion.hpf.sh which is, however, unmaintained).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One approach inside GRASS-GIS to get an acceptable color-balanced composite image after Pan-sharpening 11-bit IKONOS spectral bands comprises the following steps&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
# rescale the 11-bit IKONOS spectral bands to 8-bit ranging in [0, 255] ({{cmd|r.rescale}})&lt;br /&gt;
# pan-sharpen with any of the featured methods (Brovey, IHS, PCA) ({{cmd|i.pansharpen}})&lt;br /&gt;
# color-balance by using the {{cmd|i.landsat.rgb}} module or manually adjusting the color tables of the bands of interest&lt;br /&gt;
# create a composite image by using the {{cmd|r.compose}} module&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example Instructions for {{cmd|i.pansharpen}} ====&lt;br /&gt;
&lt;br /&gt;
{{cmd|i.pansharpen}} works fine with 8-bit raster maps as an input. If the data to be processed are out of this range, that is out of &amp;lt;math&amp;gt;[0, 255]&amp;lt;/math&amp;gt;, they can be rescaled to fit into this range by using GRASS' {{cmd|r.rescale}} module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Given an IKONOS set of 11-bit spectral bands (Blue, Green, Red, NIR and Pan) ranging between &amp;lt;math&amp;gt;[0, 2047]&amp;lt;/math&amp;gt;, and then querying for example the Blue band &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;r.info Blue_DNs -r&amp;lt;/source&amp;gt;, would return&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
min=0&lt;br /&gt;
max=2047&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Rescaling single bands =====&lt;br /&gt;
&lt;br /&gt;
Rescaling the Blue band to range between `[0, 255]`&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
r.rescale in=Blue_DNs out=Blue_DNs_255 from=0,2047 to=0,255&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The same step applies to both the rest of the multi-spectral bands and the Panchromatic band of interest. If working under Bash, To repeat the same command (given, it was the last on used in the GRASS' terminal), one can isntruct&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
!!:gs/Blue/Green&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would substitute everywhere found on the last command the string &amp;quot;Blue&amp;quot; with the string &amp;quot;Green&amp;quot; and re-execute it.  The same can be done for the rest of the bands, namely Red, NIR and Pan. Some attention is required to instruct substitution of the ''last'' used string.&lt;br /&gt;
&lt;br /&gt;
===== Rescaling all bands at once =====&lt;br /&gt;
&lt;br /&gt;
Of course, one can always use a ''for'' loop&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for DN in `g.mlist rast pat=*DNs`; do r.rescale in=${DN} out=${DN}_255 from=0,2047 to=0,255; done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Pan-Sharpening =====&lt;br /&gt;
&lt;br /&gt;
As usual when working with GRASS, it is required to set the region of interest, i.e. &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;g.region rast=Blue_DNs_255&amp;lt;/source&amp;gt; to match the extent of the band(s) or else. The resolution itself is taken care in this particular case by the module and the resulting pan-sharpened raster maps will of the same high(er) resolution as the Panchromatic band.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example command for an IHS-based Pan-Sharpening action might look like&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i.pansharpen pan=Pan_DNs_255 ms1=Blue_DNs_255 ms2=Green_DNs_255 ms3=Red_DNs_255 output=sharptest255 sharpen=ihs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Color Re-Balancnig =====&lt;br /&gt;
&lt;br /&gt;
After the process completion, the module outputs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
The following pan-sharpened output maps have been generated:&lt;br /&gt;
sharptest255_red&lt;br /&gt;
sharptest255_green&lt;br /&gt;
sharptest255_blue&lt;br /&gt;
&lt;br /&gt;
To visualize output, run: g.region -p rast=sharptest255.red&lt;br /&gt;
d.rgb r=sharptest255_red g=sharptest255_green b=sharptest255_blue&lt;br /&gt;
&lt;br /&gt;
If desired, combine channels into a single RGB map with 'r.composite'.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Normally it should be enough to re-balance the colors after the pan-sharpening action by using for example the {{cmd|i.landsat.rgb}} module or manual adjustment of each of the three bands that would compose an RGB image.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i.landsat.rgb r=sharptest255_red g=sharptest255_green b=sharptest255_blue -p&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Automatising Sharpening &amp;amp; RGB Composition =====&lt;br /&gt;
&lt;br /&gt;
An ''experimental'' bash script to automatise the sharpening/fusion and RGB composition process is demonstrated here. The script uses the Spectral Reflectance values (double precision values), gained from previous steps (see above), and produces Pan-sharpened images by applying all of the three methods that {{addon|i.pansharpen}} offers. In addition, it attempts to produce True-Color composite images, without and with re-balancing the color tables by using the {{cmd|i.landsat.rgb}} module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initial tests indicate that at least one of the three sharpening methods, combined with re-balancing, produces very clear and balanced True-Color composites. Note, there is no 100% confidence that it will produce nice looking True-Color composites. Some of the methods might simply work, others might deliver fancy-colored images. As usual, some manual action might be required to get the re-balancing to work as best as possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The script can be expanded in terms of using more inputs by utilising bash's positional parameters.  However, care has to be taken to alter the instruction that concerns the conversion from double precision values to 8-bit integers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bash/sh&lt;br /&gt;
&lt;br /&gt;
# use in G7 only :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Rescaling all images to 8-bit&amp;quot;&lt;br /&gt;
# convert to 8-bit first :-!&lt;br /&gt;
for Method_Input in \&lt;br /&gt;
&amp;quot;Pan ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;Blue ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;Green ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;Red ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;NIR ToAR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
  # parse &amp;quot;${Method_STR}&amp;quot; and set positional parameters&lt;br /&gt;
  set -- $Method_Input ; echo -e &amp;quot;\n&amp;quot; #echo $1 $2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  # input BAND is...&lt;br /&gt;
  eval BAND=&amp;quot;${1}_${2}&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  # set region&lt;br /&gt;
  g.region rast=${BAND}&lt;br /&gt;
&lt;br /&gt;
  # integerise&lt;br /&gt;
  r.mapcalc --v \&lt;br /&gt;
  &amp;quot;${BAND}_integerised = round( 1000000 * ${BAND} )&amp;quot; # how many decimals?&lt;br /&gt;
&lt;br /&gt;
  # integerised BAND is...&lt;br /&gt;
  eval BAND=&amp;quot;${1}_${2}_integerised&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # get ${min} and ${max}&lt;br /&gt;
  eval `r.info -r ${BAND}`&lt;br /&gt;
&lt;br /&gt;
  #&lt;br /&gt;
  r.rescale in=${1}_${2}_integerised out=${1}_${2}_255 from=${min},${max} to=0,255&lt;br /&gt;
&lt;br /&gt;
done ########################################################################&lt;br /&gt;
echo &amp;quot;Rescaling done!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# pan-sharpen High Resolution imagery ---------------------------------------&lt;br /&gt;
# needs setting some naming conventions&lt;br /&gt;
for Method_Input in \&lt;br /&gt;
&amp;quot;ihs ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;brovey ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;pca ToAR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
  # parse &amp;quot;${Method_STR}&amp;quot; and set positional parameters&lt;br /&gt;
  set -- $Method_Input ; echo $1 $2&lt;br /&gt;
&lt;br /&gt;
  # some echo&lt;br /&gt;
  echo &amp;quot;Pan-Sharpening the &amp;lt;${2}&amp;gt; images based on the &amp;lt;${1}&amp;gt; method&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  i.pansharpen \&lt;br /&gt;
  sharpen=${1} \&lt;br /&gt;
  pan=Pan_${2}_255 \&lt;br /&gt;
  ms1=Blue_${2}_255 \&lt;br /&gt;
  ms2=Green_${2}_255 \&lt;br /&gt;
  ms3=Red_${2}_255 \&lt;br /&gt;
  output=sharp_${1}_${2}_255&lt;br /&gt;
&lt;br /&gt;
done ########################################################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# compose BGRs --------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
# loop over Methods and Input Types, compose RGBs&lt;br /&gt;
for Method_Input in \&lt;br /&gt;
&amp;quot;ihs ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;brovey ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;pca ToAR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
  # parse &amp;quot;${Method_STR}&amp;quot; and set positional parameters&lt;br /&gt;
  set -- $Method_Input ; echo $1 $2&lt;br /&gt;
&lt;br /&gt;
  # region&lt;br /&gt;
  g.region rast=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue&lt;br /&gt;
&lt;br /&gt;
  # compose&lt;br /&gt;
  r.composite --o \&lt;br /&gt;
  r=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_red \&lt;br /&gt;
  g=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_green \&lt;br /&gt;
  b=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue \&lt;br /&gt;
  out=rgb_sharpened_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255&lt;br /&gt;
&lt;br /&gt;
done #######################################################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# re-balance &amp;amp; re-compose colors --------------------------------------------&lt;br /&gt;
&lt;br /&gt;
for Method_Input in \&lt;br /&gt;
&amp;quot;ihs ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;brovey ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;pca ToAR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
  # parse &amp;quot;${Method_STR}&amp;quot; and set positional parameters&lt;br /&gt;
  set -- $Method_Input ; echo $1 $2&lt;br /&gt;
&lt;br /&gt;
  # re-balance&lt;br /&gt;
  i.landsat.rgb -p \&lt;br /&gt;
  r=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_red \&lt;br /&gt;
  g=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_green \&lt;br /&gt;
  b=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue&lt;br /&gt;
&lt;br /&gt;
  # region -- Really necessary, again?&lt;br /&gt;
  g.region rast=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue&lt;br /&gt;
&lt;br /&gt;
  # re-compose&lt;br /&gt;
  r.composite --o \&lt;br /&gt;
  r=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_red \&lt;br /&gt;
  g=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_green \&lt;br /&gt;
  b=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue \&lt;br /&gt;
  out=rgb_sharpened_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_rebalanced&lt;br /&gt;
&lt;br /&gt;
done ########################################################################&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Pan-Sharpening based on the HPFA technique ====&lt;br /&gt;
&lt;br /&gt;
The technique, implemented via the GRASS add-on {{AddonSrc|imagery|i.fusion.hpf|version=7}}, as indicated above, involves a convolution using a High Pass Filter (HPF) on the high resolution data, then combining this with the lower resolution multispectral data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Source: &amp;quot;Optimizing the High-Pass Filter Addition Technique for Image Fusion&amp;quot;, Ute G. Gangkofner, Pushkar S. Pradhan, and Derrold W. Holcomb (2008)''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The algorithm's steps are:&lt;br /&gt;
&lt;br /&gt;
# Computing the ratio of the low (Multi-Spectral) to the high (Panchromatic) resolution&lt;br /&gt;
# High Pass Filtering the Panchromatic Image&lt;br /&gt;
# Resampling the Multi-Spectral image to the higher resolution&lt;br /&gt;
# Adding a weighted High-Pass-Filtered image to the upsampled Multi-Spectral image&lt;br /&gt;
# Optionally, matching the histogram of the Pan-Sharpened image to the one of the original Multi-Spectral image&lt;br /&gt;
&lt;br /&gt;
=== Color Composites ===&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== Vegetation Indices ==&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== PCA ==&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== IKONOS Image classification ==&lt;br /&gt;
&lt;br /&gt;
See [[Image classification]]&lt;br /&gt;
&lt;br /&gt;
== References / Sources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.apollomapping.com/wp-content/user_uploads/2011/09/IKONOS_Esun_Calculations.pdf IKONOS Planetary Reflectance and Me an Solar Exoatmospheric Irradiance, by Martin Taylor] &lt;br /&gt;
* [http://web.unicen.edu.ar/crecic/docs/radrefl.pdf Ikonos DN Value Conversion to Planetary Reflectance Values, by David Fleming]&lt;br /&gt;
* [http://landsathandbook.gsfc.nasa.gov/data_prod/prog_sect11_3.html Landsat7 Science Data Users Handbook, Chapter 11, Section 3]&lt;br /&gt;
* [http://igett.delmar.edu/Resources/Remote%20Sensing%20Technology%20Training/Calculation-DN_to_Reflectance_Irish_20June08.pdf Calibrated Landsat Digital Number (DN) to Top of Atmosphere (TOA) Reflectance Conversion, by Richard Irish]&lt;br /&gt;
* from [http://landsat.usgs.gov/tools_access_all_faqs.php FAQs about the Landsat Missions]&lt;br /&gt;
** [http://landsat.usgs.gov/how_is_radiance_calculated.php How is radiance calculated?]&lt;br /&gt;
** [http://landsat.usgs.gov/at_sensor_reflectance_calculated.php How is at-sensor reflectance calculated?]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* GRASS-Wiki page about [http://grasswiki.osgeo.org/wiki/Image_processing Image Processing]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Documentation]]&lt;br /&gt;
[[Category: FAQ]]&lt;br /&gt;
[[Category: IKONOS]]&lt;br /&gt;
[[Category: High Resolution]]&lt;br /&gt;
[[Category: Import]]&lt;br /&gt;
[[Category: Digital Numbers]]&lt;br /&gt;
[[Category: Radiance]]&lt;br /&gt;
[[Category: Reflectance]]&lt;br /&gt;
[[Category: Image processing]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=IKONOS&amp;diff=23373</id>
		<title>IKONOS</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=IKONOS&amp;diff=23373"/>
		<updated>2016-08-14T05:04:25Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: updated list of related GRASS modules&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
IKONOS is a commercial earth observation satellite. Details about the sensor are provided at Digital Globe's [http://www.digitalglobe.com/sites/default/files/DG_IKONOS_DS.pdf IKONOS Data Sheet]. [http://en.wikipedia.org/wiki/Ikonos Wikipedia's article on IKONOS] provides a nice overview as well.&lt;br /&gt;
&lt;br /&gt;
== Availability (Sample Data) ==&lt;br /&gt;
&lt;br /&gt;
* Search for commercial satellite image providers in the internet.&lt;br /&gt;
* [http://www.landcover.org/ The Global Land Cover Facility (GLCF)] provides [ftp://ftp.glcf.umd.edu/glcf/China_earthquake_May_2008/IKONOS/ four openly available IKONOS scenes of western Sichuan].&lt;br /&gt;
* ISPRS provides a small [http://www.isprs.org/data/ikonos/ IKONOS data set], fragments from a Panchromatic image as well as from a Stereo product.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modules overview ==&lt;br /&gt;
&lt;br /&gt;
=== Outside of GRASS ===&lt;br /&gt;
&lt;br /&gt;
Satellite imagery can be managed and, at some extent, pre-processed with various [http://www.gdal.org/gdal_utilities.html GDAL utilities].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.gdal.org/gdalmanage.html gdalmanage]&lt;br /&gt;
* [http://www.gdal.org/gdalinfo.html gdalinfo]&lt;br /&gt;
* [http://www.gdal.org/gdal_translate.html gdal_translate]&lt;br /&gt;
* [http://www.gdal.org/gdalbuildvrt.html gdalbuildvrt]&lt;br /&gt;
* [http://www.gdal.org/gdalwarp.html gdalwarp]&lt;br /&gt;
&lt;br /&gt;
=== Inside GRASS GIS ===&lt;br /&gt;
&lt;br /&gt;
GRASS GIS features a complete set of modules and various add-ons enabling pre- and post-processing of IKONOS satellite imagery. The following lists offer an overview of related modules and add-ons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.in.gdal}}&lt;br /&gt;
* {{cmd|r.mapcalc}}&lt;br /&gt;
* {{cmd|r.colors}}&lt;br /&gt;
* {{cmd|i.landsat.rgb}}&lt;br /&gt;
* {{AddonSrc|imagery|i.fusion.hpf|version=7}}&lt;br /&gt;
* {{cmd|i.pansharpen}}&lt;br /&gt;
* https://github.com/NikosAlexandris/i.ikonos.toar&lt;br /&gt;
* {{cmd|i.vi}}&lt;br /&gt;
* {{cmd|i.segment}}&lt;br /&gt;
&lt;br /&gt;
== Pre-Processing ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
Typically, multispectral satellite data are converted into physical quantities such as ''Radiance'' or ''Reflectance'' before they are subjected in multispectral analysis techniques (image interpretation, band arithmetic, vegetation indices, matrix transformations, etc.). The latter can be differentiated in ''Top of Atmosphere Reflectance'' (ToAR) which does not account for atmospheric effects (absorption or scattering) and in ''Top of Canopy Reflectance'' (ToCR) which introduces a &amp;quot;correction&amp;quot; for atmospheric effects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In order to derive Reflectance values, likewise as with remotely sensed data acquired by other sensors, IKONOS raw image digital numbers (DNs) need to be converted to ''at-sensor spectral Radiance'' values.  At-sensor spectral Radiance values are an important input for the equation to derive Reflectance values. Note, ''Spectal Radiance'' is the measure of the quantity of radiation that hits the sensor and typically expressed in &amp;lt;math&amp;gt;\frac{W}{m^2*sr*nm}&amp;lt;/math&amp;gt;, that is ''watts'' per ''unit source area'', per ''unit solid angle'', and per ''unit wavelength''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* Converting DNs to at-sensor Radiance can be done by using the following equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L\lambda = \frac{10^4 * DN\lambda}{CalCoef\lambda * Bandwidth\lambda}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Converting to Top of Atmosphere Reflectance, also referred to as Planetary Reflectance, can be done by using the following equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\rho_p = \frac{\pi * L\lambda * d^2}{ESUN\lambda * cos(\Theta_S)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;where:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\rho&amp;lt;/math&amp;gt; - Unitless Planetary Reflectance&lt;br /&gt;
* &amp;lt;math&amp;gt;\pi&amp;lt;/math&amp;gt; - mathematical constant (3.14159265358)&lt;br /&gt;
* &amp;lt;math&amp;gt;L\lambda&amp;lt;/math&amp;gt; spectral Radiance at the sensor's aperture, from equation... '''''ToADD'''''&lt;br /&gt;
* &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; - Earth-Sun distance in astronomical units, interpolated values&lt;br /&gt;
* &amp;lt;math&amp;gt;Esun&amp;lt;/math&amp;gt; - Mean solar exoatmospheric irradiance(s) (W/m2/μm), interpolated values&lt;br /&gt;
* &amp;lt;math&amp;gt;cos(\theta_s)&amp;lt;/math&amp;gt; - {{wikipedia||Solar_zenith_angle}} from the image acquisition's metadata&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Importing data ===&lt;br /&gt;
&lt;br /&gt;
==== File Formats &amp;amp; Metadata ====&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
==== Importing ====&lt;br /&gt;
&lt;br /&gt;
In the following example the publicly available IKONOS acqisition [ftp://ftp.glcf.umd.edu/glcf/China_earthquake_May_2008/IKONOS/po_58204_0000000.20001116.China-Sichuan/ po_58204_0000000.20001116.China-Sichuan] is used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* Location creation based on georeferenced data&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once inside a Location that is defined by the spatial reference system in which the bands of interest are projected, they can be imported with the {{cmd|r.in.gdal}} module.&lt;br /&gt;
&lt;br /&gt;
For example, GeoTIFF files can be imported by looping {{cmd|r.in.gdal}} over all of them&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for TIF in `echo *.tif`; do r.in.gdal in=${TIF} out=${TIF%%.*}; done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To keep the raw material untouched, we create another Mapset inside the same Location and copy over the bands giving, ''optionally'' at the same time, a new name for each.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
g.mapset -c pre-processing&lt;br /&gt;
g.copy rast=po_58204_blu_0000000,Blue_DNs&lt;br /&gt;
g.copy rast=po_58204_grn_0000000,Green_DNs&lt;br /&gt;
g.copy rast=po_58204_red_0000000,Red_DNs&lt;br /&gt;
g.copy rast=po_58204_nir_0000000,NIR_DNs&lt;br /&gt;
g.copy rast=po_58204_pan_0000000,Pan_DNs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Deriving Physical Quantities ===&lt;br /&gt;
&lt;br /&gt;
Conversions are implemented in a GRASS module available at https://github.com/NikosAlexandris/i.ikonos.toar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Details''&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Converting Digital Numbers to Radiance/Reflectance requires knowledge about the sensor's specific spectral band parameters. Those are, as extracted from the document ''IKONOS Planetary Reflectance and Mean Solar Exoatmospheric Irradiance'', by Martin Taylor (see references):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 Pan_CalCoef=161	;	Pan_Width=403		;	Pan_Esun=1375.8&lt;br /&gt;
 Blue_CalCoef=728	;	Blue_Width=71.3		;	Blue_Esun=1930.9&lt;br /&gt;
 Green_CalCoef=720	;	Green_Width=88.6	;	Green_Esun=1854.8&lt;br /&gt;
 Red_CalCoef=949	;	Red_Width=65.8		;	Red_Esun=1556.5&lt;br /&gt;
 NIR_CalCoef=843	;	NIR_Width=95.4		;	NIR_Esun=1156.9&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following examples exemplify the conversion of raw Blue band digital numbers into Radiance and Reflectance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Spectral Radiance ====&lt;br /&gt;
&lt;br /&gt;
Converting a Blue Band (Digital Numbers) in to Spectral at-sensor Radiance in the ''correct'' units to be further used for the conversion in to unitless Reflectance:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# set the region&lt;br /&gt;
g.region rast=Blue_DNs -p&lt;br /&gt;
&lt;br /&gt;
# convert DNs to spectral Radiance values&lt;br /&gt;
r.mapcalc &amp;quot;Blue_Radiance = ( (10000 * IKONOS_Blue_DNs) / (728 * 71.3) )&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Planetary Reflectance ====&lt;br /&gt;
&lt;br /&gt;
The equation to derive Reflectance values incorporates in addition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* The mathematical constant {{wikipedia|Pi}} &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;PI=3.14159265358&amp;lt;/source&amp;gt;.&lt;br /&gt;
* The Earth-Sun distance in astronomical units which depends on the acquisition's day of year (DOY -- also referred to as Julian day, {{wikipedia|Ordinal_date}}) and can be retrieved from the following spreadsheet &amp;lt;http://landsathandbook.gsfc.nasa.gov/excel_docs/d.xls&amp;gt;.&lt;br /&gt;
* The mean solar exoatmospheric irradiance in &amp;lt;math&amp;gt;\frac{W}{m^2*\mu m}&amp;lt;/math&amp;gt;. See 3rd column of (interplated) values given above.&lt;br /&gt;
* The cosine of the ''Solar Zenith Angle'' (SZA) at the time of the acquisition. The SZA can be calculated from its complementary ''Solar Elevation Angle'' (SEA) given in the image acquisition's metadata.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following example we accept as the acquisition's &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;DOY=166&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;SEA=52.78880&amp;lt;/source&amp;gt;. Hence, we get the Earth-Sun distance &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;ESD=1.0157675&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;SZA = 37.21120 deg&amp;lt;/source&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Converting the in-Blue spectral band at-sensor Radiance in to Planerary Reflectance:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;PI=3.14159265358; ESD=1.0157675; BAND_Esun=1930.9; SZA=37.21120&amp;lt;/source&amp;gt;&lt;br /&gt;
 {{cmd|r.mapcalc}} &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;&amp;quot;Blue_Reflectance = ( ${PI} * Blue_Radiance * ${ESD}^2 ) / ( ${BAND_Esun} * cos(${SZA}) )&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Automatising Conversions ====&lt;br /&gt;
&lt;br /&gt;
The conversion process can be scripted to avoid repeating the same steps for each band separately.&lt;br /&gt;
&lt;br /&gt;
===== Python =====&lt;br /&gt;
&lt;br /&gt;
A custom python script, performing the operations of interest, might be like [https://github.com/NikosAlexandris/i.ikonos.toar i.ikonos.toar (for GRASS 7.x)]&lt;br /&gt;
 &lt;br /&gt;
===== Bash =====&lt;br /&gt;
In bash, such a script might be as the following example. '''Note,''' however, in this example script constants, band parameters and acquisition related metadata are hard-coded!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
Pan_CalCoef=161		;	Pan_Width=403		;	Pan_Esun=1375.8&lt;br /&gt;
Blue_CalCoef=728	;	Blue_Width=71.3		;	Blue_Esun=1930.9&lt;br /&gt;
Green_CalCoef=720	;	Green_Width=88.6	;	Green_Esun=1854.8&lt;br /&gt;
Red_CalCoef=949		;	Red_Width=65.8		;	Red_Esun=1556.5&lt;br /&gt;
NIR_CalCoef=843		;	NIR_Width=95.4		;	NIR_Esun=1156.9&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# set constants, band parameters and acquisition related metadata here!&lt;br /&gt;
&lt;br /&gt;
# Pi, first 11 decimals&lt;br /&gt;
PI=3.14159265358&lt;br /&gt;
&lt;br /&gt;
# Acquisition's Day of Year and estimated Earth-Sun Distance&lt;br /&gt;
DOY=166; ESD=1.0157675&lt;br /&gt;
&lt;br /&gt;
# Sun Zenith Angle based on the acquisition's Sun Elevation Angle&lt;br /&gt;
SEA=52.78880; SZA=$(echo &amp;quot;90 - ${SEA}&amp;quot; | bc )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# bands to process&lt;br /&gt;
Spectral_Bands=&amp;quot;Pan Blue Green Red NIR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# loop over all bands&lt;br /&gt;
for BAND in ${Spectral_Bands}; do&lt;br /&gt;
&lt;br /&gt;
  echo &amp;quot;Processing the ${BAND} spectral band&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # set region&lt;br /&gt;
  g.region rast=${BAND}_DNs&lt;br /&gt;
&lt;br /&gt;
  # set band parameters as variables&lt;br /&gt;
  eval BAND_CalCoef=&amp;quot;${BAND}_CalCoef&amp;quot;&lt;br /&gt;
  eval BAND_Width=&amp;quot;${BAND}_Width&amp;quot;;&lt;br /&gt;
  echo &amp;quot;Band Parameters set to CalCoef=${!BAND_CalCoef}, Bandwidth=${!BAND_Width}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # conversion to Radiance&lt;br /&gt;
  r.mapcalc &amp;quot;${BAND}_Radiance = ( ( 10^4 * ${BAND}_DNs ) / ( ${!BAND_CalCoef} * ${!BAND_Width} ) )&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # add info&lt;br /&gt;
  r.support map=${BAND}_Radiance \&lt;br /&gt;
  title=&amp;quot;&amp;quot; \&lt;br /&gt;
  units=&amp;quot;W / m2 / μm / ster&amp;quot; \&lt;br /&gt;
  description=&amp;quot;At-sensor `echo ${BAND}` band spectral Radiance (W/m2/μm/sr)&amp;quot; \&lt;br /&gt;
  source1='&amp;quot;IKONOS Planetary Reflectance and Mean Solar Exoatmospheric Irradiance&amp;quot;, by Martin Taylor, Geoeye'&lt;br /&gt;
&lt;br /&gt;
  # set Earth-Sun distance&lt;br /&gt;
  eval BAND_Esun=&amp;quot;${BAND}_Esun&amp;quot;; echo &amp;quot;Using Esun=${!BAND_Esun}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # calculate ToAR&lt;br /&gt;
  r.mapcalc &amp;quot;${BAND}_ToAR = \&lt;br /&gt;
	( ${PI} * ${BAND}_Radiance * ${ESD}^2 ) / ( ${!BAND_Esun} * cos(${SZA}) )&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # add some metadata&lt;br /&gt;
  r.support map=${BAND}_ToAR \&lt;br /&gt;
  title=&amp;quot;echo ${BAND} band (Top of Atmosphere Reflectance)&amp;quot; \&lt;br /&gt;
  units=&amp;quot;Unitless&amp;quot; \&lt;br /&gt;
  description=&amp;quot;Top of Atmosphere `echo ${BAND}` band spectral Reflectance (unitless)&amp;quot; \&lt;br /&gt;
  source1='&amp;quot;IKONOS Planetary Reflectance and Mean Solar Exoatmospheric Irradiance&amp;quot;, by Martin Taylor, Geoeye' \&lt;br /&gt;
  source2=&amp;quot;e.g., the Image Provider!&amp;quot; \&lt;br /&gt;
  history=&amp;quot;PI=3.14159265358; ESD=1.0157675; BAND_Esun=1930.9; SZA=37.21120&amp;quot;&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Atmospheric correction ===&lt;br /&gt;
&lt;br /&gt;
See [[Atmospheric correction]]&lt;br /&gt;
&lt;br /&gt;
== Post-Processing ==&lt;br /&gt;
&lt;br /&gt;
Having beforehand satellite image data expressed in physical quantities (radiance or reflectance) is preferred to follow-up with digital image analysis techniques. A few common post-processing practices are Contrast-Enhancement, Pan-Sharpening and creating Pseudo- or True-Color Composites. Other well known enhancing manipualtions to support the analyses of satellite imagery, include deriving Vegetation Indices, transforming multi-spectral data based on [[Principal_Components_Analysis | PCA]] and Segmenting images.&lt;br /&gt;
&lt;br /&gt;
=== Contrast Enhancement ===&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
=== Pan-Sharpening ===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Pansharpened_image Pan-Sharpening] / [http://en.wikipedia.org/wiki/Image_fusion Fusion] is the process of merging high-resolution panchromatic and lower resolution multi-spectral imagery. [http://grass.osgeo.org/grass70/ GRASS 7] holds a dedicated pan-sharpening module, {{cmd|i.pansharpen}} which features three techniques for sharpening, namely the [http://wiki.awf.forst.uni-goettingen.de/wiki/index.php/Brovey_Transformation Brovey transformation], the classical IHS method and one that is based on [[Principal Components Analysis]] (PCA). Another algorithm deriving excellent detail and a realistic representation of original multispectral scene colors, is the High-Pass Filter Addition (HPFA) technique. It is available through the add-on {{AddonSrc|imagery|i.fusion.hpf|version=7}} (for GRASS 6, please refer to a bash shell script https://github.com/NikosAlexandris/i.fusion.hpf.sh which is, however, unmaintained).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One approach inside GRASS-GIS to get an acceptable color-balanced composite image after Pan-sharpening 11-bit IKONOS spectral bands comprises the following steps&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
# rescale the 11-bit IKONOS spectral bands to 8-bit ranging in [0, 255] ({{cmd|r.rescale}})&lt;br /&gt;
# pan-sharpen with any of the featured methods (Brovey, IHS, PCA) ({{cmd|i.pansharpen}})&lt;br /&gt;
# color-balance by using the {{cmd|i.landsat.rgb}} module or manually adjusting the color tables of the bands of interest&lt;br /&gt;
# create a composite image by using the {{cmd|r.compose}} module&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example Instructions for {{cmd|i.pansharpen}} ====&lt;br /&gt;
&lt;br /&gt;
{{cmd|i.pansharpen}} works fine with 8-bit raster maps as an input. If the data to be processed are out of this range, that is out of &amp;lt;math&amp;gt;[0, 255]&amp;lt;/math&amp;gt;, they can be rescaled to fit into this range by using GRASS' {{cmd|r.rescale}} module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Given an IKONOS set of 11-bit spectral bands (Blue, Green, Red, NIR and Pan) ranging between &amp;lt;math&amp;gt;[0, 2047]&amp;lt;/math&amp;gt;, and then querying for example the Blue band &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;r.info Blue_DNs -r&amp;lt;/source&amp;gt;, would return&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
min=0&lt;br /&gt;
max=2047&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Rescaling single bands =====&lt;br /&gt;
&lt;br /&gt;
Rescaling the Blue band to range between `[0, 255]`&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
r.rescale in=Blue_DNs out=Blue_DNs_255 from=0,2047 to=0,255&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The same step applies to both the rest of the multi-spectral bands and the Panchromatic band of interest. If working under Bash, To repeat the same command (given, it was the last on used in the GRASS' terminal), one can isntruct&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
!!:gs/Blue/Green&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would substitute everywhere found on the last command the string &amp;quot;Blue&amp;quot; with the string &amp;quot;Green&amp;quot; and re-execute it.  The same can be done for the rest of the bands, namely Red, NIR and Pan. Some attention is required to instruct substitution of the ''last'' used string.&lt;br /&gt;
&lt;br /&gt;
===== Rescaling all bands at once =====&lt;br /&gt;
&lt;br /&gt;
Of course, one can always use a ''for'' loop&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for DN in `g.mlist rast pat=*DNs`; do r.rescale in=${DN} out=${DN}_255 from=0,2047 to=0,255; done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Pan-Sharpening =====&lt;br /&gt;
&lt;br /&gt;
As usual when working with GRASS, it is required to set the region of interest, i.e. &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;g.region rast=Blue_DNs_255&amp;lt;/source&amp;gt; to match the extent of the band(s) or else. The resolution itself is taken care in this particular case by the module and the resulting pan-sharpened raster maps will of the same high(er) resolution as the Panchromatic band.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example command for an IHS-based Pan-Sharpening action might look like&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i.pansharpen pan=Pan_DNs_255 ms1=Blue_DNs_255 ms2=Green_DNs_255 ms3=Red_DNs_255 output=sharptest255 sharpen=ihs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Color Re-Balancnig =====&lt;br /&gt;
&lt;br /&gt;
After the process completion, the module outputs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
The following pan-sharpened output maps have been generated:&lt;br /&gt;
sharptest255_red&lt;br /&gt;
sharptest255_green&lt;br /&gt;
sharptest255_blue&lt;br /&gt;
&lt;br /&gt;
To visualize output, run: g.region -p rast=sharptest255.red&lt;br /&gt;
d.rgb r=sharptest255_red g=sharptest255_green b=sharptest255_blue&lt;br /&gt;
&lt;br /&gt;
If desired, combine channels into a single RGB map with 'r.composite'.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Normally it should be enough to re-balance the colors after the pan-sharpening action by using for example the {{cmd|i.landsat.rgb}} module or manual adjustment of each of the three bands that would compose an RGB image.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i.landsat.rgb r=sharptest255_red g=sharptest255_green b=sharptest255_blue -p&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Automatising Sharpening &amp;amp; RGB Composition =====&lt;br /&gt;
&lt;br /&gt;
An ''experimental'' bash script to automatise the sharpening/fusion and RGB composition process is demonstrated here. The script uses the Spectral Reflectance values (double precision values), gained from previous steps (see above), and produces Pan-sharpened images by applying all of the three methods that {{addon|i.pansharpen}} offers. In addition, it attempts to produce True-Color composite images, without and with re-balancing the color tables by using the {{cmd|i.landsat.rgb}} module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initial tests indicate that at least one of the three sharpening methods, combined with re-balancing, produces very clear and balanced True-Color composites. Note, there is no 100% confidence that it will produce nice looking True-Color composites. Some of the methods might simply work, others might deliver fancy-colored images. As usual, some manual action might be required to get the re-balancing to work as best as possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The script can be expanded in terms of using more inputs by utilising bash's positional parameters.  However, care has to be taken to alter the instruction that concerns the conversion from double precision values to 8-bit integers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bash/sh&lt;br /&gt;
&lt;br /&gt;
# use in G7 only :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Rescaling all images to 8-bit&amp;quot;&lt;br /&gt;
# convert to 8-bit first :-!&lt;br /&gt;
for Method_Input in \&lt;br /&gt;
&amp;quot;Pan ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;Blue ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;Green ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;Red ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;NIR ToAR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
  # parse &amp;quot;${Method_STR}&amp;quot; and set positional parameters&lt;br /&gt;
  set -- $Method_Input ; echo -e &amp;quot;\n&amp;quot; #echo $1 $2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  # input BAND is...&lt;br /&gt;
  eval BAND=&amp;quot;${1}_${2}&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  # set region&lt;br /&gt;
  g.region rast=${BAND}&lt;br /&gt;
&lt;br /&gt;
  # integerise&lt;br /&gt;
  r.mapcalc --v \&lt;br /&gt;
  &amp;quot;${BAND}_integerised = round( 1000000 * ${BAND} )&amp;quot; # how many decimals?&lt;br /&gt;
&lt;br /&gt;
  # integerised BAND is...&lt;br /&gt;
  eval BAND=&amp;quot;${1}_${2}_integerised&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # get ${min} and ${max}&lt;br /&gt;
  eval `r.info -r ${BAND}`&lt;br /&gt;
&lt;br /&gt;
  #&lt;br /&gt;
  r.rescale in=${1}_${2}_integerised out=${1}_${2}_255 from=${min},${max} to=0,255&lt;br /&gt;
&lt;br /&gt;
done ########################################################################&lt;br /&gt;
echo &amp;quot;Rescaling done!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# pan-sharpen High Resolution imagery ---------------------------------------&lt;br /&gt;
# needs setting some naming conventions&lt;br /&gt;
for Method_Input in \&lt;br /&gt;
&amp;quot;ihs ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;brovey ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;pca ToAR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
  # parse &amp;quot;${Method_STR}&amp;quot; and set positional parameters&lt;br /&gt;
  set -- $Method_Input ; echo $1 $2&lt;br /&gt;
&lt;br /&gt;
  # some echo&lt;br /&gt;
  echo &amp;quot;Pan-Sharpening the &amp;lt;${2}&amp;gt; images based on the &amp;lt;${1}&amp;gt; method&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  i.pansharpen \&lt;br /&gt;
  sharpen=${1} \&lt;br /&gt;
  pan=Pan_${2}_255 \&lt;br /&gt;
  ms1=Blue_${2}_255 \&lt;br /&gt;
  ms2=Green_${2}_255 \&lt;br /&gt;
  ms3=Red_${2}_255 \&lt;br /&gt;
  output=sharp_${1}_${2}_255&lt;br /&gt;
&lt;br /&gt;
done ########################################################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# compose BGRs --------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
# loop over Methods and Input Types, compose RGBs&lt;br /&gt;
for Method_Input in \&lt;br /&gt;
&amp;quot;ihs ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;brovey ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;pca ToAR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
  # parse &amp;quot;${Method_STR}&amp;quot; and set positional parameters&lt;br /&gt;
  set -- $Method_Input ; echo $1 $2&lt;br /&gt;
&lt;br /&gt;
  # region&lt;br /&gt;
  g.region rast=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue&lt;br /&gt;
&lt;br /&gt;
  # compose&lt;br /&gt;
  r.composite --o \&lt;br /&gt;
  r=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_red \&lt;br /&gt;
  g=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_green \&lt;br /&gt;
  b=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue \&lt;br /&gt;
  out=rgb_sharpened_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255&lt;br /&gt;
&lt;br /&gt;
done #######################################################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# re-balance &amp;amp; re-compose colors --------------------------------------------&lt;br /&gt;
&lt;br /&gt;
for Method_Input in \&lt;br /&gt;
&amp;quot;ihs ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;brovey ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;pca ToAR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
  # parse &amp;quot;${Method_STR}&amp;quot; and set positional parameters&lt;br /&gt;
  set -- $Method_Input ; echo $1 $2&lt;br /&gt;
&lt;br /&gt;
  # re-balance&lt;br /&gt;
  i.landsat.rgb -p \&lt;br /&gt;
  r=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_red \&lt;br /&gt;
  g=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_green \&lt;br /&gt;
  b=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue&lt;br /&gt;
&lt;br /&gt;
  # region -- Really necessary, again?&lt;br /&gt;
  g.region rast=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue&lt;br /&gt;
&lt;br /&gt;
  # re-compose&lt;br /&gt;
  r.composite --o \&lt;br /&gt;
  r=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_red \&lt;br /&gt;
  g=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_green \&lt;br /&gt;
  b=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue \&lt;br /&gt;
  out=rgb_sharpened_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_rebalanced&lt;br /&gt;
&lt;br /&gt;
done ########################################################################&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Pan-Sharpening based on the HPFA technique ====&lt;br /&gt;
&lt;br /&gt;
The technique, implemented via the GRASS add-on {{AddonSrc|imagery|i.fusion.hpf|version=7}}, as indicated above, involves a convolution using a High Pass Filter (HPF) on the high resolution data, then combining this with the lower resolution multispectral data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Source: &amp;quot;Optimizing the High-Pass Filter Addition Technique for Image Fusion&amp;quot;, Ute G. Gangkofner, Pushkar S. Pradhan, and Derrold W. Holcomb (2008)''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The algorithm's steps are:&lt;br /&gt;
&lt;br /&gt;
# Computing the ratio of the low (Multi-Spectral) to the high (Panchromatic) resolution&lt;br /&gt;
# High Pass Filtering the Panchromatic Image&lt;br /&gt;
# Resampling the Multi-Spectral image to the higher resolution&lt;br /&gt;
# Adding a weighted High-Pass-Filtered image to the upsampled Multi-Spectral image&lt;br /&gt;
# Optionally, matching the histogram of the Pan-Sharpened image to the one of the original Multi-Spectral image&lt;br /&gt;
&lt;br /&gt;
=== Color Composites ===&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== Vegetation Indices ==&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== PCA ==&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== IKONOS Image classification ==&lt;br /&gt;
&lt;br /&gt;
See [[Image classification]]&lt;br /&gt;
&lt;br /&gt;
== References / Sources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.apollomapping.com/wp-content/user_uploads/2011/09/IKONOS_Esun_Calculations.pdf IKONOS Planetary Reflectance and Me an Solar Exoatmospheric Irradiance, by Martin Taylor] &lt;br /&gt;
* [http://web.unicen.edu.ar/crecic/docs/radrefl.pdf Ikonos DN Value Conversion to Planetary Reflectance Values, by David Fleming]&lt;br /&gt;
* [http://landsathandbook.gsfc.nasa.gov/data_prod/prog_sect11_3.html Landsat7 Science Data Users Handbook, Chapter 11, Section 3]&lt;br /&gt;
* [http://igett.delmar.edu/Resources/Remote%20Sensing%20Technology%20Training/Calculation-DN_to_Reflectance_Irish_20June08.pdf Calibrated Landsat Digital Number (DN) to Top of Atmosphere (TOA) Reflectance Conversion, by Richard Irish]&lt;br /&gt;
* from [http://landsat.usgs.gov/tools_access_all_faqs.php FAQs about the Landsat Missions]&lt;br /&gt;
** [http://landsat.usgs.gov/how_is_radiance_calculated.php How is radiance calculated?]&lt;br /&gt;
** [http://landsat.usgs.gov/at_sensor_reflectance_calculated.php How is at-sensor reflectance calculated?]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* GRASS-Wiki page about [http://grasswiki.osgeo.org/wiki/Image_processing Image Processing]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Documentation]]&lt;br /&gt;
[[Category: FAQ]]&lt;br /&gt;
[[Category: IKONOS]]&lt;br /&gt;
[[Category: High Resolution]]&lt;br /&gt;
[[Category: Import]]&lt;br /&gt;
[[Category: Digital Numbers]]&lt;br /&gt;
[[Category: Radiance]]&lt;br /&gt;
[[Category: Reflectance]]&lt;br /&gt;
[[Category: Image processing]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=IKONOS&amp;diff=23372</id>
		<title>IKONOS</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=IKONOS&amp;diff=23372"/>
		<updated>2016-08-14T05:01:28Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: /* Deriving Physical Quantities */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
IKONOS is a commercial earth observation satellite. Details about the sensor are provided at Digital Globe's [http://www.digitalglobe.com/sites/default/files/DG_IKONOS_DS.pdf IKONOS Data Sheet]. [http://en.wikipedia.org/wiki/Ikonos Wikipedia's article on IKONOS] provides a nice overview as well.&lt;br /&gt;
&lt;br /&gt;
== Availability (Sample Data) ==&lt;br /&gt;
&lt;br /&gt;
* Search for commercial satellite image providers in the internet.&lt;br /&gt;
* [http://www.landcover.org/ The Global Land Cover Facility (GLCF)] provides [ftp://ftp.glcf.umd.edu/glcf/China_earthquake_May_2008/IKONOS/ four openly available IKONOS scenes of western Sichuan].&lt;br /&gt;
* ISPRS provides a small [http://www.isprs.org/data/ikonos/ IKONOS data set], fragments from a Panchromatic image as well as from a Stereo product.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modules overview ==&lt;br /&gt;
&lt;br /&gt;
=== Outside of GRASS ===&lt;br /&gt;
&lt;br /&gt;
Satellite imagery can be managed and, at some extent, pre-processed with various [http://www.gdal.org/gdal_utilities.html GDAL utilities].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.gdal.org/gdalmanage.html gdalmanage]&lt;br /&gt;
* [http://www.gdal.org/gdalinfo.html gdalinfo]&lt;br /&gt;
* [http://www.gdal.org/gdal_translate.html gdal_translate]&lt;br /&gt;
* [http://www.gdal.org/gdalbuildvrt.html gdalbuildvrt]&lt;br /&gt;
* [http://www.gdal.org/gdalwarp.html gdalwarp]&lt;br /&gt;
&lt;br /&gt;
=== Inside GRASS GIS ===&lt;br /&gt;
&lt;br /&gt;
GRASS GIS features a complete set of modules and various add-ons enabling pre- and post-processing of IKONOS satellite imagery. The following lists offer an overview of related modules and add-ons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.in.gdal}}&lt;br /&gt;
* {{cmd|r.mapcalc}}&lt;br /&gt;
* {{cmd|r.colors}}&lt;br /&gt;
* {{cmd|i.landsat.rgb}}&lt;br /&gt;
* {{cmd|i.pansharpen}}&lt;br /&gt;
* {{cmd|i.vi}}&lt;br /&gt;
* {{cmd|i.segment}}&lt;br /&gt;
* ...''more to add''&lt;br /&gt;
&lt;br /&gt;
== Pre-Processing ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
Typically, multispectral satellite data are converted into physical quantities such as ''Radiance'' or ''Reflectance'' before they are subjected in multispectral analysis techniques (image interpretation, band arithmetic, vegetation indices, matrix transformations, etc.). The latter can be differentiated in ''Top of Atmosphere Reflectance'' (ToAR) which does not account for atmospheric effects (absorption or scattering) and in ''Top of Canopy Reflectance'' (ToCR) which introduces a &amp;quot;correction&amp;quot; for atmospheric effects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In order to derive Reflectance values, likewise as with remotely sensed data acquired by other sensors, IKONOS raw image digital numbers (DNs) need to be converted to ''at-sensor spectral Radiance'' values.  At-sensor spectral Radiance values are an important input for the equation to derive Reflectance values. Note, ''Spectal Radiance'' is the measure of the quantity of radiation that hits the sensor and typically expressed in &amp;lt;math&amp;gt;\frac{W}{m^2*sr*nm}&amp;lt;/math&amp;gt;, that is ''watts'' per ''unit source area'', per ''unit solid angle'', and per ''unit wavelength''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* Converting DNs to at-sensor Radiance can be done by using the following equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L\lambda = \frac{10^4 * DN\lambda}{CalCoef\lambda * Bandwidth\lambda}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Converting to Top of Atmosphere Reflectance, also referred to as Planetary Reflectance, can be done by using the following equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\rho_p = \frac{\pi * L\lambda * d^2}{ESUN\lambda * cos(\Theta_S)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;where:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\rho&amp;lt;/math&amp;gt; - Unitless Planetary Reflectance&lt;br /&gt;
* &amp;lt;math&amp;gt;\pi&amp;lt;/math&amp;gt; - mathematical constant (3.14159265358)&lt;br /&gt;
* &amp;lt;math&amp;gt;L\lambda&amp;lt;/math&amp;gt; spectral Radiance at the sensor's aperture, from equation... '''''ToADD'''''&lt;br /&gt;
* &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; - Earth-Sun distance in astronomical units, interpolated values&lt;br /&gt;
* &amp;lt;math&amp;gt;Esun&amp;lt;/math&amp;gt; - Mean solar exoatmospheric irradiance(s) (W/m2/μm), interpolated values&lt;br /&gt;
* &amp;lt;math&amp;gt;cos(\theta_s)&amp;lt;/math&amp;gt; - {{wikipedia||Solar_zenith_angle}} from the image acquisition's metadata&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Importing data ===&lt;br /&gt;
&lt;br /&gt;
==== File Formats &amp;amp; Metadata ====&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
==== Importing ====&lt;br /&gt;
&lt;br /&gt;
In the following example the publicly available IKONOS acqisition [ftp://ftp.glcf.umd.edu/glcf/China_earthquake_May_2008/IKONOS/po_58204_0000000.20001116.China-Sichuan/ po_58204_0000000.20001116.China-Sichuan] is used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* Location creation based on georeferenced data&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once inside a Location that is defined by the spatial reference system in which the bands of interest are projected, they can be imported with the {{cmd|r.in.gdal}} module.&lt;br /&gt;
&lt;br /&gt;
For example, GeoTIFF files can be imported by looping {{cmd|r.in.gdal}} over all of them&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for TIF in `echo *.tif`; do r.in.gdal in=${TIF} out=${TIF%%.*}; done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To keep the raw material untouched, we create another Mapset inside the same Location and copy over the bands giving, ''optionally'' at the same time, a new name for each.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
g.mapset -c pre-processing&lt;br /&gt;
g.copy rast=po_58204_blu_0000000,Blue_DNs&lt;br /&gt;
g.copy rast=po_58204_grn_0000000,Green_DNs&lt;br /&gt;
g.copy rast=po_58204_red_0000000,Red_DNs&lt;br /&gt;
g.copy rast=po_58204_nir_0000000,NIR_DNs&lt;br /&gt;
g.copy rast=po_58204_pan_0000000,Pan_DNs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Deriving Physical Quantities ===&lt;br /&gt;
&lt;br /&gt;
Conversions are implemented in a GRASS module available at https://github.com/NikosAlexandris/i.ikonos.toar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Details''&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
Converting Digital Numbers to Radiance/Reflectance requires knowledge about the sensor's specific spectral band parameters. Those are, as extracted from the document ''IKONOS Planetary Reflectance and Mean Solar Exoatmospheric Irradiance'', by Martin Taylor (see references):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 Pan_CalCoef=161	;	Pan_Width=403		;	Pan_Esun=1375.8&lt;br /&gt;
 Blue_CalCoef=728	;	Blue_Width=71.3		;	Blue_Esun=1930.9&lt;br /&gt;
 Green_CalCoef=720	;	Green_Width=88.6	;	Green_Esun=1854.8&lt;br /&gt;
 Red_CalCoef=949	;	Red_Width=65.8		;	Red_Esun=1556.5&lt;br /&gt;
 NIR_CalCoef=843	;	NIR_Width=95.4		;	NIR_Esun=1156.9&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following examples exemplify the conversion of raw Blue band digital numbers into Radiance and Reflectance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Spectral Radiance ====&lt;br /&gt;
&lt;br /&gt;
Converting a Blue Band (Digital Numbers) in to Spectral at-sensor Radiance in the ''correct'' units to be further used for the conversion in to unitless Reflectance:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# set the region&lt;br /&gt;
g.region rast=Blue_DNs -p&lt;br /&gt;
&lt;br /&gt;
# convert DNs to spectral Radiance values&lt;br /&gt;
r.mapcalc &amp;quot;Blue_Radiance = ( (10000 * IKONOS_Blue_DNs) / (728 * 71.3) )&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Planetary Reflectance ====&lt;br /&gt;
&lt;br /&gt;
The equation to derive Reflectance values incorporates in addition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* The mathematical constant {{wikipedia|Pi}} &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;PI=3.14159265358&amp;lt;/source&amp;gt;.&lt;br /&gt;
* The Earth-Sun distance in astronomical units which depends on the acquisition's day of year (DOY -- also referred to as Julian day, {{wikipedia|Ordinal_date}}) and can be retrieved from the following spreadsheet &amp;lt;http://landsathandbook.gsfc.nasa.gov/excel_docs/d.xls&amp;gt;.&lt;br /&gt;
* The mean solar exoatmospheric irradiance in &amp;lt;math&amp;gt;\frac{W}{m^2*\mu m}&amp;lt;/math&amp;gt;. See 3rd column of (interplated) values given above.&lt;br /&gt;
* The cosine of the ''Solar Zenith Angle'' (SZA) at the time of the acquisition. The SZA can be calculated from its complementary ''Solar Elevation Angle'' (SEA) given in the image acquisition's metadata.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following example we accept as the acquisition's &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;DOY=166&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;SEA=52.78880&amp;lt;/source&amp;gt;. Hence, we get the Earth-Sun distance &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;ESD=1.0157675&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;SZA = 37.21120 deg&amp;lt;/source&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Converting the in-Blue spectral band at-sensor Radiance in to Planerary Reflectance:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;PI=3.14159265358; ESD=1.0157675; BAND_Esun=1930.9; SZA=37.21120&amp;lt;/source&amp;gt;&lt;br /&gt;
 {{cmd|r.mapcalc}} &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;&amp;quot;Blue_Reflectance = ( ${PI} * Blue_Radiance * ${ESD}^2 ) / ( ${BAND_Esun} * cos(${SZA}) )&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Automatising Conversions ====&lt;br /&gt;
&lt;br /&gt;
The conversion process can be scripted to avoid repeating the same steps for each band separately.&lt;br /&gt;
&lt;br /&gt;
===== Python =====&lt;br /&gt;
&lt;br /&gt;
A custom python script, performing the operations of interest, might be like [https://github.com/NikosAlexandris/i.ikonos.toar i.ikonos.toar (for GRASS 7.x)]&lt;br /&gt;
 &lt;br /&gt;
===== Bash =====&lt;br /&gt;
In bash, such a script might be as the following example. '''Note,''' however, in this example script constants, band parameters and acquisition related metadata are hard-coded!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
Pan_CalCoef=161		;	Pan_Width=403		;	Pan_Esun=1375.8&lt;br /&gt;
Blue_CalCoef=728	;	Blue_Width=71.3		;	Blue_Esun=1930.9&lt;br /&gt;
Green_CalCoef=720	;	Green_Width=88.6	;	Green_Esun=1854.8&lt;br /&gt;
Red_CalCoef=949		;	Red_Width=65.8		;	Red_Esun=1556.5&lt;br /&gt;
NIR_CalCoef=843		;	NIR_Width=95.4		;	NIR_Esun=1156.9&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# set constants, band parameters and acquisition related metadata here!&lt;br /&gt;
&lt;br /&gt;
# Pi, first 11 decimals&lt;br /&gt;
PI=3.14159265358&lt;br /&gt;
&lt;br /&gt;
# Acquisition's Day of Year and estimated Earth-Sun Distance&lt;br /&gt;
DOY=166; ESD=1.0157675&lt;br /&gt;
&lt;br /&gt;
# Sun Zenith Angle based on the acquisition's Sun Elevation Angle&lt;br /&gt;
SEA=52.78880; SZA=$(echo &amp;quot;90 - ${SEA}&amp;quot; | bc )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# bands to process&lt;br /&gt;
Spectral_Bands=&amp;quot;Pan Blue Green Red NIR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# loop over all bands&lt;br /&gt;
for BAND in ${Spectral_Bands}; do&lt;br /&gt;
&lt;br /&gt;
  echo &amp;quot;Processing the ${BAND} spectral band&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # set region&lt;br /&gt;
  g.region rast=${BAND}_DNs&lt;br /&gt;
&lt;br /&gt;
  # set band parameters as variables&lt;br /&gt;
  eval BAND_CalCoef=&amp;quot;${BAND}_CalCoef&amp;quot;&lt;br /&gt;
  eval BAND_Width=&amp;quot;${BAND}_Width&amp;quot;;&lt;br /&gt;
  echo &amp;quot;Band Parameters set to CalCoef=${!BAND_CalCoef}, Bandwidth=${!BAND_Width}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # conversion to Radiance&lt;br /&gt;
  r.mapcalc &amp;quot;${BAND}_Radiance = ( ( 10^4 * ${BAND}_DNs ) / ( ${!BAND_CalCoef} * ${!BAND_Width} ) )&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # add info&lt;br /&gt;
  r.support map=${BAND}_Radiance \&lt;br /&gt;
  title=&amp;quot;&amp;quot; \&lt;br /&gt;
  units=&amp;quot;W / m2 / μm / ster&amp;quot; \&lt;br /&gt;
  description=&amp;quot;At-sensor `echo ${BAND}` band spectral Radiance (W/m2/μm/sr)&amp;quot; \&lt;br /&gt;
  source1='&amp;quot;IKONOS Planetary Reflectance and Mean Solar Exoatmospheric Irradiance&amp;quot;, by Martin Taylor, Geoeye'&lt;br /&gt;
&lt;br /&gt;
  # set Earth-Sun distance&lt;br /&gt;
  eval BAND_Esun=&amp;quot;${BAND}_Esun&amp;quot;; echo &amp;quot;Using Esun=${!BAND_Esun}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # calculate ToAR&lt;br /&gt;
  r.mapcalc &amp;quot;${BAND}_ToAR = \&lt;br /&gt;
	( ${PI} * ${BAND}_Radiance * ${ESD}^2 ) / ( ${!BAND_Esun} * cos(${SZA}) )&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # add some metadata&lt;br /&gt;
  r.support map=${BAND}_ToAR \&lt;br /&gt;
  title=&amp;quot;echo ${BAND} band (Top of Atmosphere Reflectance)&amp;quot; \&lt;br /&gt;
  units=&amp;quot;Unitless&amp;quot; \&lt;br /&gt;
  description=&amp;quot;Top of Atmosphere `echo ${BAND}` band spectral Reflectance (unitless)&amp;quot; \&lt;br /&gt;
  source1='&amp;quot;IKONOS Planetary Reflectance and Mean Solar Exoatmospheric Irradiance&amp;quot;, by Martin Taylor, Geoeye' \&lt;br /&gt;
  source2=&amp;quot;e.g., the Image Provider!&amp;quot; \&lt;br /&gt;
  history=&amp;quot;PI=3.14159265358; ESD=1.0157675; BAND_Esun=1930.9; SZA=37.21120&amp;quot;&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Atmospheric correction ===&lt;br /&gt;
&lt;br /&gt;
See [[Atmospheric correction]]&lt;br /&gt;
&lt;br /&gt;
== Post-Processing ==&lt;br /&gt;
&lt;br /&gt;
Having beforehand satellite image data expressed in physical quantities (radiance or reflectance) is preferred to follow-up with digital image analysis techniques. A few common post-processing practices are Contrast-Enhancement, Pan-Sharpening and creating Pseudo- or True-Color Composites. Other well known enhancing manipualtions to support the analyses of satellite imagery, include deriving Vegetation Indices, transforming multi-spectral data based on [[Principal_Components_Analysis | PCA]] and Segmenting images.&lt;br /&gt;
&lt;br /&gt;
=== Contrast Enhancement ===&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
=== Pan-Sharpening ===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Pansharpened_image Pan-Sharpening] / [http://en.wikipedia.org/wiki/Image_fusion Fusion] is the process of merging high-resolution panchromatic and lower resolution multi-spectral imagery. [http://grass.osgeo.org/grass70/ GRASS 7] holds a dedicated pan-sharpening module, {{cmd|i.pansharpen}} which features three techniques for sharpening, namely the [http://wiki.awf.forst.uni-goettingen.de/wiki/index.php/Brovey_Transformation Brovey transformation], the classical IHS method and one that is based on [[Principal Components Analysis]] (PCA). Another algorithm deriving excellent detail and a realistic representation of original multispectral scene colors, is the High-Pass Filter Addition (HPFA) technique. It is available through the add-on {{AddonSrc|imagery|i.fusion.hpf|version=7}} (for GRASS 6, please refer to a bash shell script https://github.com/NikosAlexandris/i.fusion.hpf.sh which is, however, unmaintained).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One approach inside GRASS-GIS to get an acceptable color-balanced composite image after Pan-sharpening 11-bit IKONOS spectral bands comprises the following steps&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
# rescale the 11-bit IKONOS spectral bands to 8-bit ranging in [0, 255] ({{cmd|r.rescale}})&lt;br /&gt;
# pan-sharpen with any of the featured methods (Brovey, IHS, PCA) ({{cmd|i.pansharpen}})&lt;br /&gt;
# color-balance by using the {{cmd|i.landsat.rgb}} module or manually adjusting the color tables of the bands of interest&lt;br /&gt;
# create a composite image by using the {{cmd|r.compose}} module&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example Instructions for {{cmd|i.pansharpen}} ====&lt;br /&gt;
&lt;br /&gt;
{{cmd|i.pansharpen}} works fine with 8-bit raster maps as an input. If the data to be processed are out of this range, that is out of &amp;lt;math&amp;gt;[0, 255]&amp;lt;/math&amp;gt;, they can be rescaled to fit into this range by using GRASS' {{cmd|r.rescale}} module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Given an IKONOS set of 11-bit spectral bands (Blue, Green, Red, NIR and Pan) ranging between &amp;lt;math&amp;gt;[0, 2047]&amp;lt;/math&amp;gt;, and then querying for example the Blue band &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;r.info Blue_DNs -r&amp;lt;/source&amp;gt;, would return&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
min=0&lt;br /&gt;
max=2047&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Rescaling single bands =====&lt;br /&gt;
&lt;br /&gt;
Rescaling the Blue band to range between `[0, 255]`&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
r.rescale in=Blue_DNs out=Blue_DNs_255 from=0,2047 to=0,255&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The same step applies to both the rest of the multi-spectral bands and the Panchromatic band of interest. If working under Bash, To repeat the same command (given, it was the last on used in the GRASS' terminal), one can isntruct&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
!!:gs/Blue/Green&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would substitute everywhere found on the last command the string &amp;quot;Blue&amp;quot; with the string &amp;quot;Green&amp;quot; and re-execute it.  The same can be done for the rest of the bands, namely Red, NIR and Pan. Some attention is required to instruct substitution of the ''last'' used string.&lt;br /&gt;
&lt;br /&gt;
===== Rescaling all bands at once =====&lt;br /&gt;
&lt;br /&gt;
Of course, one can always use a ''for'' loop&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for DN in `g.mlist rast pat=*DNs`; do r.rescale in=${DN} out=${DN}_255 from=0,2047 to=0,255; done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Pan-Sharpening =====&lt;br /&gt;
&lt;br /&gt;
As usual when working with GRASS, it is required to set the region of interest, i.e. &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;g.region rast=Blue_DNs_255&amp;lt;/source&amp;gt; to match the extent of the band(s) or else. The resolution itself is taken care in this particular case by the module and the resulting pan-sharpened raster maps will of the same high(er) resolution as the Panchromatic band.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example command for an IHS-based Pan-Sharpening action might look like&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i.pansharpen pan=Pan_DNs_255 ms1=Blue_DNs_255 ms2=Green_DNs_255 ms3=Red_DNs_255 output=sharptest255 sharpen=ihs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Color Re-Balancnig =====&lt;br /&gt;
&lt;br /&gt;
After the process completion, the module outputs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
The following pan-sharpened output maps have been generated:&lt;br /&gt;
sharptest255_red&lt;br /&gt;
sharptest255_green&lt;br /&gt;
sharptest255_blue&lt;br /&gt;
&lt;br /&gt;
To visualize output, run: g.region -p rast=sharptest255.red&lt;br /&gt;
d.rgb r=sharptest255_red g=sharptest255_green b=sharptest255_blue&lt;br /&gt;
&lt;br /&gt;
If desired, combine channels into a single RGB map with 'r.composite'.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Normally it should be enough to re-balance the colors after the pan-sharpening action by using for example the {{cmd|i.landsat.rgb}} module or manual adjustment of each of the three bands that would compose an RGB image.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i.landsat.rgb r=sharptest255_red g=sharptest255_green b=sharptest255_blue -p&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Automatising Sharpening &amp;amp; RGB Composition =====&lt;br /&gt;
&lt;br /&gt;
An ''experimental'' bash script to automatise the sharpening/fusion and RGB composition process is demonstrated here. The script uses the Spectral Reflectance values (double precision values), gained from previous steps (see above), and produces Pan-sharpened images by applying all of the three methods that {{addon|i.pansharpen}} offers. In addition, it attempts to produce True-Color composite images, without and with re-balancing the color tables by using the {{cmd|i.landsat.rgb}} module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initial tests indicate that at least one of the three sharpening methods, combined with re-balancing, produces very clear and balanced True-Color composites. Note, there is no 100% confidence that it will produce nice looking True-Color composites. Some of the methods might simply work, others might deliver fancy-colored images. As usual, some manual action might be required to get the re-balancing to work as best as possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The script can be expanded in terms of using more inputs by utilising bash's positional parameters.  However, care has to be taken to alter the instruction that concerns the conversion from double precision values to 8-bit integers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bash/sh&lt;br /&gt;
&lt;br /&gt;
# use in G7 only :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Rescaling all images to 8-bit&amp;quot;&lt;br /&gt;
# convert to 8-bit first :-!&lt;br /&gt;
for Method_Input in \&lt;br /&gt;
&amp;quot;Pan ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;Blue ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;Green ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;Red ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;NIR ToAR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
  # parse &amp;quot;${Method_STR}&amp;quot; and set positional parameters&lt;br /&gt;
  set -- $Method_Input ; echo -e &amp;quot;\n&amp;quot; #echo $1 $2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  # input BAND is...&lt;br /&gt;
  eval BAND=&amp;quot;${1}_${2}&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  # set region&lt;br /&gt;
  g.region rast=${BAND}&lt;br /&gt;
&lt;br /&gt;
  # integerise&lt;br /&gt;
  r.mapcalc --v \&lt;br /&gt;
  &amp;quot;${BAND}_integerised = round( 1000000 * ${BAND} )&amp;quot; # how many decimals?&lt;br /&gt;
&lt;br /&gt;
  # integerised BAND is...&lt;br /&gt;
  eval BAND=&amp;quot;${1}_${2}_integerised&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # get ${min} and ${max}&lt;br /&gt;
  eval `r.info -r ${BAND}`&lt;br /&gt;
&lt;br /&gt;
  #&lt;br /&gt;
  r.rescale in=${1}_${2}_integerised out=${1}_${2}_255 from=${min},${max} to=0,255&lt;br /&gt;
&lt;br /&gt;
done ########################################################################&lt;br /&gt;
echo &amp;quot;Rescaling done!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# pan-sharpen High Resolution imagery ---------------------------------------&lt;br /&gt;
# needs setting some naming conventions&lt;br /&gt;
for Method_Input in \&lt;br /&gt;
&amp;quot;ihs ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;brovey ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;pca ToAR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
  # parse &amp;quot;${Method_STR}&amp;quot; and set positional parameters&lt;br /&gt;
  set -- $Method_Input ; echo $1 $2&lt;br /&gt;
&lt;br /&gt;
  # some echo&lt;br /&gt;
  echo &amp;quot;Pan-Sharpening the &amp;lt;${2}&amp;gt; images based on the &amp;lt;${1}&amp;gt; method&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  i.pansharpen \&lt;br /&gt;
  sharpen=${1} \&lt;br /&gt;
  pan=Pan_${2}_255 \&lt;br /&gt;
  ms1=Blue_${2}_255 \&lt;br /&gt;
  ms2=Green_${2}_255 \&lt;br /&gt;
  ms3=Red_${2}_255 \&lt;br /&gt;
  output=sharp_${1}_${2}_255&lt;br /&gt;
&lt;br /&gt;
done ########################################################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# compose BGRs --------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
# loop over Methods and Input Types, compose RGBs&lt;br /&gt;
for Method_Input in \&lt;br /&gt;
&amp;quot;ihs ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;brovey ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;pca ToAR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
  # parse &amp;quot;${Method_STR}&amp;quot; and set positional parameters&lt;br /&gt;
  set -- $Method_Input ; echo $1 $2&lt;br /&gt;
&lt;br /&gt;
  # region&lt;br /&gt;
  g.region rast=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue&lt;br /&gt;
&lt;br /&gt;
  # compose&lt;br /&gt;
  r.composite --o \&lt;br /&gt;
  r=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_red \&lt;br /&gt;
  g=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_green \&lt;br /&gt;
  b=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue \&lt;br /&gt;
  out=rgb_sharpened_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255&lt;br /&gt;
&lt;br /&gt;
done #######################################################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# re-balance &amp;amp; re-compose colors --------------------------------------------&lt;br /&gt;
&lt;br /&gt;
for Method_Input in \&lt;br /&gt;
&amp;quot;ihs ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;brovey ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;pca ToAR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
  # parse &amp;quot;${Method_STR}&amp;quot; and set positional parameters&lt;br /&gt;
  set -- $Method_Input ; echo $1 $2&lt;br /&gt;
&lt;br /&gt;
  # re-balance&lt;br /&gt;
  i.landsat.rgb -p \&lt;br /&gt;
  r=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_red \&lt;br /&gt;
  g=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_green \&lt;br /&gt;
  b=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue&lt;br /&gt;
&lt;br /&gt;
  # region -- Really necessary, again?&lt;br /&gt;
  g.region rast=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue&lt;br /&gt;
&lt;br /&gt;
  # re-compose&lt;br /&gt;
  r.composite --o \&lt;br /&gt;
  r=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_red \&lt;br /&gt;
  g=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_green \&lt;br /&gt;
  b=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue \&lt;br /&gt;
  out=rgb_sharpened_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_rebalanced&lt;br /&gt;
&lt;br /&gt;
done ########################################################################&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Pan-Sharpening based on the HPFA technique ====&lt;br /&gt;
&lt;br /&gt;
The technique, implemented via the GRASS add-on {{AddonSrc|imagery|i.fusion.hpf|version=7}}, as indicated above, involves a convolution using a High Pass Filter (HPF) on the high resolution data, then combining this with the lower resolution multispectral data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Source: &amp;quot;Optimizing the High-Pass Filter Addition Technique for Image Fusion&amp;quot;, Ute G. Gangkofner, Pushkar S. Pradhan, and Derrold W. Holcomb (2008)''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The algorithm's steps are:&lt;br /&gt;
&lt;br /&gt;
# Computing the ratio of the low (Multi-Spectral) to the high (Panchromatic) resolution&lt;br /&gt;
# High Pass Filtering the Panchromatic Image&lt;br /&gt;
# Resampling the Multi-Spectral image to the higher resolution&lt;br /&gt;
# Adding a weighted High-Pass-Filtered image to the upsampled Multi-Spectral image&lt;br /&gt;
# Optionally, matching the histogram of the Pan-Sharpened image to the one of the original Multi-Spectral image&lt;br /&gt;
&lt;br /&gt;
=== Color Composites ===&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== Vegetation Indices ==&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== PCA ==&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== IKONOS Image classification ==&lt;br /&gt;
&lt;br /&gt;
See [[Image classification]]&lt;br /&gt;
&lt;br /&gt;
== References / Sources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.apollomapping.com/wp-content/user_uploads/2011/09/IKONOS_Esun_Calculations.pdf IKONOS Planetary Reflectance and Me an Solar Exoatmospheric Irradiance, by Martin Taylor] &lt;br /&gt;
* [http://web.unicen.edu.ar/crecic/docs/radrefl.pdf Ikonos DN Value Conversion to Planetary Reflectance Values, by David Fleming]&lt;br /&gt;
* [http://landsathandbook.gsfc.nasa.gov/data_prod/prog_sect11_3.html Landsat7 Science Data Users Handbook, Chapter 11, Section 3]&lt;br /&gt;
* [http://igett.delmar.edu/Resources/Remote%20Sensing%20Technology%20Training/Calculation-DN_to_Reflectance_Irish_20June08.pdf Calibrated Landsat Digital Number (DN) to Top of Atmosphere (TOA) Reflectance Conversion, by Richard Irish]&lt;br /&gt;
* from [http://landsat.usgs.gov/tools_access_all_faqs.php FAQs about the Landsat Missions]&lt;br /&gt;
** [http://landsat.usgs.gov/how_is_radiance_calculated.php How is radiance calculated?]&lt;br /&gt;
** [http://landsat.usgs.gov/at_sensor_reflectance_calculated.php How is at-sensor reflectance calculated?]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* GRASS-Wiki page about [http://grasswiki.osgeo.org/wiki/Image_processing Image Processing]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Documentation]]&lt;br /&gt;
[[Category: FAQ]]&lt;br /&gt;
[[Category: IKONOS]]&lt;br /&gt;
[[Category: High Resolution]]&lt;br /&gt;
[[Category: Import]]&lt;br /&gt;
[[Category: Digital Numbers]]&lt;br /&gt;
[[Category: Radiance]]&lt;br /&gt;
[[Category: Reflectance]]&lt;br /&gt;
[[Category: Image processing]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=IKONOS&amp;diff=23371</id>
		<title>IKONOS</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=IKONOS&amp;diff=23371"/>
		<updated>2016-08-14T05:00:38Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: i.ikonos.toar&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
IKONOS is a commercial earth observation satellite. Details about the sensor are provided at Digital Globe's [http://www.digitalglobe.com/sites/default/files/DG_IKONOS_DS.pdf IKONOS Data Sheet]. [http://en.wikipedia.org/wiki/Ikonos Wikipedia's article on IKONOS] provides a nice overview as well.&lt;br /&gt;
&lt;br /&gt;
== Availability (Sample Data) ==&lt;br /&gt;
&lt;br /&gt;
* Search for commercial satellite image providers in the internet.&lt;br /&gt;
* [http://www.landcover.org/ The Global Land Cover Facility (GLCF)] provides [ftp://ftp.glcf.umd.edu/glcf/China_earthquake_May_2008/IKONOS/ four openly available IKONOS scenes of western Sichuan].&lt;br /&gt;
* ISPRS provides a small [http://www.isprs.org/data/ikonos/ IKONOS data set], fragments from a Panchromatic image as well as from a Stereo product.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modules overview ==&lt;br /&gt;
&lt;br /&gt;
=== Outside of GRASS ===&lt;br /&gt;
&lt;br /&gt;
Satellite imagery can be managed and, at some extent, pre-processed with various [http://www.gdal.org/gdal_utilities.html GDAL utilities].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.gdal.org/gdalmanage.html gdalmanage]&lt;br /&gt;
* [http://www.gdal.org/gdalinfo.html gdalinfo]&lt;br /&gt;
* [http://www.gdal.org/gdal_translate.html gdal_translate]&lt;br /&gt;
* [http://www.gdal.org/gdalbuildvrt.html gdalbuildvrt]&lt;br /&gt;
* [http://www.gdal.org/gdalwarp.html gdalwarp]&lt;br /&gt;
&lt;br /&gt;
=== Inside GRASS GIS ===&lt;br /&gt;
&lt;br /&gt;
GRASS GIS features a complete set of modules and various add-ons enabling pre- and post-processing of IKONOS satellite imagery. The following lists offer an overview of related modules and add-ons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.in.gdal}}&lt;br /&gt;
* {{cmd|r.mapcalc}}&lt;br /&gt;
* {{cmd|r.colors}}&lt;br /&gt;
* {{cmd|i.landsat.rgb}}&lt;br /&gt;
* {{cmd|i.pansharpen}}&lt;br /&gt;
* {{cmd|i.vi}}&lt;br /&gt;
* {{cmd|i.segment}}&lt;br /&gt;
* ...''more to add''&lt;br /&gt;
&lt;br /&gt;
== Pre-Processing ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
Typically, multispectral satellite data are converted into physical quantities such as ''Radiance'' or ''Reflectance'' before they are subjected in multispectral analysis techniques (image interpretation, band arithmetic, vegetation indices, matrix transformations, etc.). The latter can be differentiated in ''Top of Atmosphere Reflectance'' (ToAR) which does not account for atmospheric effects (absorption or scattering) and in ''Top of Canopy Reflectance'' (ToCR) which introduces a &amp;quot;correction&amp;quot; for atmospheric effects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In order to derive Reflectance values, likewise as with remotely sensed data acquired by other sensors, IKONOS raw image digital numbers (DNs) need to be converted to ''at-sensor spectral Radiance'' values.  At-sensor spectral Radiance values are an important input for the equation to derive Reflectance values. Note, ''Spectal Radiance'' is the measure of the quantity of radiation that hits the sensor and typically expressed in &amp;lt;math&amp;gt;\frac{W}{m^2*sr*nm}&amp;lt;/math&amp;gt;, that is ''watts'' per ''unit source area'', per ''unit solid angle'', and per ''unit wavelength''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* Converting DNs to at-sensor Radiance can be done by using the following equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L\lambda = \frac{10^4 * DN\lambda}{CalCoef\lambda * Bandwidth\lambda}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Converting to Top of Atmosphere Reflectance, also referred to as Planetary Reflectance, can be done by using the following equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\rho_p = \frac{\pi * L\lambda * d^2}{ESUN\lambda * cos(\Theta_S)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;where:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\rho&amp;lt;/math&amp;gt; - Unitless Planetary Reflectance&lt;br /&gt;
* &amp;lt;math&amp;gt;\pi&amp;lt;/math&amp;gt; - mathematical constant (3.14159265358)&lt;br /&gt;
* &amp;lt;math&amp;gt;L\lambda&amp;lt;/math&amp;gt; spectral Radiance at the sensor's aperture, from equation... '''''ToADD'''''&lt;br /&gt;
* &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; - Earth-Sun distance in astronomical units, interpolated values&lt;br /&gt;
* &amp;lt;math&amp;gt;Esun&amp;lt;/math&amp;gt; - Mean solar exoatmospheric irradiance(s) (W/m2/μm), interpolated values&lt;br /&gt;
* &amp;lt;math&amp;gt;cos(\theta_s)&amp;lt;/math&amp;gt; - {{wikipedia||Solar_zenith_angle}} from the image acquisition's metadata&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Importing data ===&lt;br /&gt;
&lt;br /&gt;
==== File Formats &amp;amp; Metadata ====&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
==== Importing ====&lt;br /&gt;
&lt;br /&gt;
In the following example the publicly available IKONOS acqisition [ftp://ftp.glcf.umd.edu/glcf/China_earthquake_May_2008/IKONOS/po_58204_0000000.20001116.China-Sichuan/ po_58204_0000000.20001116.China-Sichuan] is used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* Location creation based on georeferenced data&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once inside a Location that is defined by the spatial reference system in which the bands of interest are projected, they can be imported with the {{cmd|r.in.gdal}} module.&lt;br /&gt;
&lt;br /&gt;
For example, GeoTIFF files can be imported by looping {{cmd|r.in.gdal}} over all of them&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for TIF in `echo *.tif`; do r.in.gdal in=${TIF} out=${TIF%%.*}; done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To keep the raw material untouched, we create another Mapset inside the same Location and copy over the bands giving, ''optionally'' at the same time, a new name for each.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
g.mapset -c pre-processing&lt;br /&gt;
g.copy rast=po_58204_blu_0000000,Blue_DNs&lt;br /&gt;
g.copy rast=po_58204_grn_0000000,Green_DNs&lt;br /&gt;
g.copy rast=po_58204_red_0000000,Red_DNs&lt;br /&gt;
g.copy rast=po_58204_nir_0000000,NIR_DNs&lt;br /&gt;
g.copy rast=po_58204_pan_0000000,Pan_DNs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Deriving Physical Quantities ===&lt;br /&gt;
&lt;br /&gt;
Conversions are implemented in a GRASS module available at https://github.com/NikosAlexandris/i.ikonos.toar. Detailed descriptions below.&lt;br /&gt;
 &lt;br /&gt;
Converting Digital Numbers to Radiance/Reflectance requires knowledge about the sensor's specific spectral band parameters. Those are, as extracted from the document ''IKONOS Planetary Reflectance and Mean Solar Exoatmospheric Irradiance'', by Martin Taylor (see references):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 Pan_CalCoef=161	;	Pan_Width=403		;	Pan_Esun=1375.8&lt;br /&gt;
 Blue_CalCoef=728	;	Blue_Width=71.3		;	Blue_Esun=1930.9&lt;br /&gt;
 Green_CalCoef=720	;	Green_Width=88.6	;	Green_Esun=1854.8&lt;br /&gt;
 Red_CalCoef=949	;	Red_Width=65.8		;	Red_Esun=1556.5&lt;br /&gt;
 NIR_CalCoef=843	;	NIR_Width=95.4		;	NIR_Esun=1156.9&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following examples exemplify the conversion of raw Blue band digital numbers into Radiance and Reflectance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Spectral Radiance ====&lt;br /&gt;
&lt;br /&gt;
Converting a Blue Band (Digital Numbers) in to Spectral at-sensor Radiance in the ''correct'' units to be further used for the conversion in to unitless Reflectance:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# set the region&lt;br /&gt;
g.region rast=Blue_DNs -p&lt;br /&gt;
&lt;br /&gt;
# convert DNs to spectral Radiance values&lt;br /&gt;
r.mapcalc &amp;quot;Blue_Radiance = ( (10000 * IKONOS_Blue_DNs) / (728 * 71.3) )&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Planetary Reflectance ====&lt;br /&gt;
&lt;br /&gt;
The equation to derive Reflectance values incorporates in addition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* The mathematical constant {{wikipedia|Pi}} &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;PI=3.14159265358&amp;lt;/source&amp;gt;.&lt;br /&gt;
* The Earth-Sun distance in astronomical units which depends on the acquisition's day of year (DOY -- also referred to as Julian day, {{wikipedia|Ordinal_date}}) and can be retrieved from the following spreadsheet &amp;lt;http://landsathandbook.gsfc.nasa.gov/excel_docs/d.xls&amp;gt;.&lt;br /&gt;
* The mean solar exoatmospheric irradiance in &amp;lt;math&amp;gt;\frac{W}{m^2*\mu m}&amp;lt;/math&amp;gt;. See 3rd column of (interplated) values given above.&lt;br /&gt;
* The cosine of the ''Solar Zenith Angle'' (SZA) at the time of the acquisition. The SZA can be calculated from its complementary ''Solar Elevation Angle'' (SEA) given in the image acquisition's metadata.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following example we accept as the acquisition's &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;DOY=166&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;SEA=52.78880&amp;lt;/source&amp;gt;. Hence, we get the Earth-Sun distance &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;ESD=1.0157675&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;SZA = 37.21120 deg&amp;lt;/source&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Converting the in-Blue spectral band at-sensor Radiance in to Planerary Reflectance:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;PI=3.14159265358; ESD=1.0157675; BAND_Esun=1930.9; SZA=37.21120&amp;lt;/source&amp;gt;&lt;br /&gt;
 {{cmd|r.mapcalc}} &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;&amp;quot;Blue_Reflectance = ( ${PI} * Blue_Radiance * ${ESD}^2 ) / ( ${BAND_Esun} * cos(${SZA}) )&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Automatising Conversions ====&lt;br /&gt;
&lt;br /&gt;
The conversion process can be scripted to avoid repeating the same steps for each band separately.&lt;br /&gt;
&lt;br /&gt;
===== Python =====&lt;br /&gt;
&lt;br /&gt;
A custom python script, performing the operations of interest, might be like [https://github.com/NikosAlexandris/i.ikonos.toar i.ikonos.toar (for GRASS 7.x)]&lt;br /&gt;
 &lt;br /&gt;
===== Bash =====&lt;br /&gt;
In bash, such a script might be as the following example. '''Note,''' however, in this example script constants, band parameters and acquisition related metadata are hard-coded!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
Pan_CalCoef=161		;	Pan_Width=403		;	Pan_Esun=1375.8&lt;br /&gt;
Blue_CalCoef=728	;	Blue_Width=71.3		;	Blue_Esun=1930.9&lt;br /&gt;
Green_CalCoef=720	;	Green_Width=88.6	;	Green_Esun=1854.8&lt;br /&gt;
Red_CalCoef=949		;	Red_Width=65.8		;	Red_Esun=1556.5&lt;br /&gt;
NIR_CalCoef=843		;	NIR_Width=95.4		;	NIR_Esun=1156.9&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# set constants, band parameters and acquisition related metadata here!&lt;br /&gt;
&lt;br /&gt;
# Pi, first 11 decimals&lt;br /&gt;
PI=3.14159265358&lt;br /&gt;
&lt;br /&gt;
# Acquisition's Day of Year and estimated Earth-Sun Distance&lt;br /&gt;
DOY=166; ESD=1.0157675&lt;br /&gt;
&lt;br /&gt;
# Sun Zenith Angle based on the acquisition's Sun Elevation Angle&lt;br /&gt;
SEA=52.78880; SZA=$(echo &amp;quot;90 - ${SEA}&amp;quot; | bc )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# bands to process&lt;br /&gt;
Spectral_Bands=&amp;quot;Pan Blue Green Red NIR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# loop over all bands&lt;br /&gt;
for BAND in ${Spectral_Bands}; do&lt;br /&gt;
&lt;br /&gt;
  echo &amp;quot;Processing the ${BAND} spectral band&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # set region&lt;br /&gt;
  g.region rast=${BAND}_DNs&lt;br /&gt;
&lt;br /&gt;
  # set band parameters as variables&lt;br /&gt;
  eval BAND_CalCoef=&amp;quot;${BAND}_CalCoef&amp;quot;&lt;br /&gt;
  eval BAND_Width=&amp;quot;${BAND}_Width&amp;quot;;&lt;br /&gt;
  echo &amp;quot;Band Parameters set to CalCoef=${!BAND_CalCoef}, Bandwidth=${!BAND_Width}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # conversion to Radiance&lt;br /&gt;
  r.mapcalc &amp;quot;${BAND}_Radiance = ( ( 10^4 * ${BAND}_DNs ) / ( ${!BAND_CalCoef} * ${!BAND_Width} ) )&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # add info&lt;br /&gt;
  r.support map=${BAND}_Radiance \&lt;br /&gt;
  title=&amp;quot;&amp;quot; \&lt;br /&gt;
  units=&amp;quot;W / m2 / μm / ster&amp;quot; \&lt;br /&gt;
  description=&amp;quot;At-sensor `echo ${BAND}` band spectral Radiance (W/m2/μm/sr)&amp;quot; \&lt;br /&gt;
  source1='&amp;quot;IKONOS Planetary Reflectance and Mean Solar Exoatmospheric Irradiance&amp;quot;, by Martin Taylor, Geoeye'&lt;br /&gt;
&lt;br /&gt;
  # set Earth-Sun distance&lt;br /&gt;
  eval BAND_Esun=&amp;quot;${BAND}_Esun&amp;quot;; echo &amp;quot;Using Esun=${!BAND_Esun}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # calculate ToAR&lt;br /&gt;
  r.mapcalc &amp;quot;${BAND}_ToAR = \&lt;br /&gt;
	( ${PI} * ${BAND}_Radiance * ${ESD}^2 ) / ( ${!BAND_Esun} * cos(${SZA}) )&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # add some metadata&lt;br /&gt;
  r.support map=${BAND}_ToAR \&lt;br /&gt;
  title=&amp;quot;echo ${BAND} band (Top of Atmosphere Reflectance)&amp;quot; \&lt;br /&gt;
  units=&amp;quot;Unitless&amp;quot; \&lt;br /&gt;
  description=&amp;quot;Top of Atmosphere `echo ${BAND}` band spectral Reflectance (unitless)&amp;quot; \&lt;br /&gt;
  source1='&amp;quot;IKONOS Planetary Reflectance and Mean Solar Exoatmospheric Irradiance&amp;quot;, by Martin Taylor, Geoeye' \&lt;br /&gt;
  source2=&amp;quot;e.g., the Image Provider!&amp;quot; \&lt;br /&gt;
  history=&amp;quot;PI=3.14159265358; ESD=1.0157675; BAND_Esun=1930.9; SZA=37.21120&amp;quot;&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Atmospheric correction ===&lt;br /&gt;
&lt;br /&gt;
See [[Atmospheric correction]]&lt;br /&gt;
&lt;br /&gt;
== Post-Processing ==&lt;br /&gt;
&lt;br /&gt;
Having beforehand satellite image data expressed in physical quantities (radiance or reflectance) is preferred to follow-up with digital image analysis techniques. A few common post-processing practices are Contrast-Enhancement, Pan-Sharpening and creating Pseudo- or True-Color Composites. Other well known enhancing manipualtions to support the analyses of satellite imagery, include deriving Vegetation Indices, transforming multi-spectral data based on [[Principal_Components_Analysis | PCA]] and Segmenting images.&lt;br /&gt;
&lt;br /&gt;
=== Contrast Enhancement ===&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
=== Pan-Sharpening ===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Pansharpened_image Pan-Sharpening] / [http://en.wikipedia.org/wiki/Image_fusion Fusion] is the process of merging high-resolution panchromatic and lower resolution multi-spectral imagery. [http://grass.osgeo.org/grass70/ GRASS 7] holds a dedicated pan-sharpening module, {{cmd|i.pansharpen}} which features three techniques for sharpening, namely the [http://wiki.awf.forst.uni-goettingen.de/wiki/index.php/Brovey_Transformation Brovey transformation], the classical IHS method and one that is based on [[Principal Components Analysis]] (PCA). Another algorithm deriving excellent detail and a realistic representation of original multispectral scene colors, is the High-Pass Filter Addition (HPFA) technique. It is available through the add-on {{AddonSrc|imagery|i.fusion.hpf|version=7}} (for GRASS 6, please refer to a bash shell script https://github.com/NikosAlexandris/i.fusion.hpf.sh which is, however, unmaintained).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One approach inside GRASS-GIS to get an acceptable color-balanced composite image after Pan-sharpening 11-bit IKONOS spectral bands comprises the following steps&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
# rescale the 11-bit IKONOS spectral bands to 8-bit ranging in [0, 255] ({{cmd|r.rescale}})&lt;br /&gt;
# pan-sharpen with any of the featured methods (Brovey, IHS, PCA) ({{cmd|i.pansharpen}})&lt;br /&gt;
# color-balance by using the {{cmd|i.landsat.rgb}} module or manually adjusting the color tables of the bands of interest&lt;br /&gt;
# create a composite image by using the {{cmd|r.compose}} module&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example Instructions for {{cmd|i.pansharpen}} ====&lt;br /&gt;
&lt;br /&gt;
{{cmd|i.pansharpen}} works fine with 8-bit raster maps as an input. If the data to be processed are out of this range, that is out of &amp;lt;math&amp;gt;[0, 255]&amp;lt;/math&amp;gt;, they can be rescaled to fit into this range by using GRASS' {{cmd|r.rescale}} module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Given an IKONOS set of 11-bit spectral bands (Blue, Green, Red, NIR and Pan) ranging between &amp;lt;math&amp;gt;[0, 2047]&amp;lt;/math&amp;gt;, and then querying for example the Blue band &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;r.info Blue_DNs -r&amp;lt;/source&amp;gt;, would return&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
min=0&lt;br /&gt;
max=2047&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Rescaling single bands =====&lt;br /&gt;
&lt;br /&gt;
Rescaling the Blue band to range between `[0, 255]`&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
r.rescale in=Blue_DNs out=Blue_DNs_255 from=0,2047 to=0,255&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The same step applies to both the rest of the multi-spectral bands and the Panchromatic band of interest. If working under Bash, To repeat the same command (given, it was the last on used in the GRASS' terminal), one can isntruct&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
!!:gs/Blue/Green&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would substitute everywhere found on the last command the string &amp;quot;Blue&amp;quot; with the string &amp;quot;Green&amp;quot; and re-execute it.  The same can be done for the rest of the bands, namely Red, NIR and Pan. Some attention is required to instruct substitution of the ''last'' used string.&lt;br /&gt;
&lt;br /&gt;
===== Rescaling all bands at once =====&lt;br /&gt;
&lt;br /&gt;
Of course, one can always use a ''for'' loop&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for DN in `g.mlist rast pat=*DNs`; do r.rescale in=${DN} out=${DN}_255 from=0,2047 to=0,255; done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Pan-Sharpening =====&lt;br /&gt;
&lt;br /&gt;
As usual when working with GRASS, it is required to set the region of interest, i.e. &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;g.region rast=Blue_DNs_255&amp;lt;/source&amp;gt; to match the extent of the band(s) or else. The resolution itself is taken care in this particular case by the module and the resulting pan-sharpened raster maps will of the same high(er) resolution as the Panchromatic band.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example command for an IHS-based Pan-Sharpening action might look like&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i.pansharpen pan=Pan_DNs_255 ms1=Blue_DNs_255 ms2=Green_DNs_255 ms3=Red_DNs_255 output=sharptest255 sharpen=ihs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Color Re-Balancnig =====&lt;br /&gt;
&lt;br /&gt;
After the process completion, the module outputs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
The following pan-sharpened output maps have been generated:&lt;br /&gt;
sharptest255_red&lt;br /&gt;
sharptest255_green&lt;br /&gt;
sharptest255_blue&lt;br /&gt;
&lt;br /&gt;
To visualize output, run: g.region -p rast=sharptest255.red&lt;br /&gt;
d.rgb r=sharptest255_red g=sharptest255_green b=sharptest255_blue&lt;br /&gt;
&lt;br /&gt;
If desired, combine channels into a single RGB map with 'r.composite'.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Normally it should be enough to re-balance the colors after the pan-sharpening action by using for example the {{cmd|i.landsat.rgb}} module or manual adjustment of each of the three bands that would compose an RGB image.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i.landsat.rgb r=sharptest255_red g=sharptest255_green b=sharptest255_blue -p&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Automatising Sharpening &amp;amp; RGB Composition =====&lt;br /&gt;
&lt;br /&gt;
An ''experimental'' bash script to automatise the sharpening/fusion and RGB composition process is demonstrated here. The script uses the Spectral Reflectance values (double precision values), gained from previous steps (see above), and produces Pan-sharpened images by applying all of the three methods that {{addon|i.pansharpen}} offers. In addition, it attempts to produce True-Color composite images, without and with re-balancing the color tables by using the {{cmd|i.landsat.rgb}} module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initial tests indicate that at least one of the three sharpening methods, combined with re-balancing, produces very clear and balanced True-Color composites. Note, there is no 100% confidence that it will produce nice looking True-Color composites. Some of the methods might simply work, others might deliver fancy-colored images. As usual, some manual action might be required to get the re-balancing to work as best as possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The script can be expanded in terms of using more inputs by utilising bash's positional parameters.  However, care has to be taken to alter the instruction that concerns the conversion from double precision values to 8-bit integers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bash/sh&lt;br /&gt;
&lt;br /&gt;
# use in G7 only :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Rescaling all images to 8-bit&amp;quot;&lt;br /&gt;
# convert to 8-bit first :-!&lt;br /&gt;
for Method_Input in \&lt;br /&gt;
&amp;quot;Pan ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;Blue ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;Green ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;Red ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;NIR ToAR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
  # parse &amp;quot;${Method_STR}&amp;quot; and set positional parameters&lt;br /&gt;
  set -- $Method_Input ; echo -e &amp;quot;\n&amp;quot; #echo $1 $2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  # input BAND is...&lt;br /&gt;
  eval BAND=&amp;quot;${1}_${2}&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  # set region&lt;br /&gt;
  g.region rast=${BAND}&lt;br /&gt;
&lt;br /&gt;
  # integerise&lt;br /&gt;
  r.mapcalc --v \&lt;br /&gt;
  &amp;quot;${BAND}_integerised = round( 1000000 * ${BAND} )&amp;quot; # how many decimals?&lt;br /&gt;
&lt;br /&gt;
  # integerised BAND is...&lt;br /&gt;
  eval BAND=&amp;quot;${1}_${2}_integerised&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # get ${min} and ${max}&lt;br /&gt;
  eval `r.info -r ${BAND}`&lt;br /&gt;
&lt;br /&gt;
  #&lt;br /&gt;
  r.rescale in=${1}_${2}_integerised out=${1}_${2}_255 from=${min},${max} to=0,255&lt;br /&gt;
&lt;br /&gt;
done ########################################################################&lt;br /&gt;
echo &amp;quot;Rescaling done!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# pan-sharpen High Resolution imagery ---------------------------------------&lt;br /&gt;
# needs setting some naming conventions&lt;br /&gt;
for Method_Input in \&lt;br /&gt;
&amp;quot;ihs ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;brovey ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;pca ToAR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
  # parse &amp;quot;${Method_STR}&amp;quot; and set positional parameters&lt;br /&gt;
  set -- $Method_Input ; echo $1 $2&lt;br /&gt;
&lt;br /&gt;
  # some echo&lt;br /&gt;
  echo &amp;quot;Pan-Sharpening the &amp;lt;${2}&amp;gt; images based on the &amp;lt;${1}&amp;gt; method&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  i.pansharpen \&lt;br /&gt;
  sharpen=${1} \&lt;br /&gt;
  pan=Pan_${2}_255 \&lt;br /&gt;
  ms1=Blue_${2}_255 \&lt;br /&gt;
  ms2=Green_${2}_255 \&lt;br /&gt;
  ms3=Red_${2}_255 \&lt;br /&gt;
  output=sharp_${1}_${2}_255&lt;br /&gt;
&lt;br /&gt;
done ########################################################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# compose BGRs --------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
# loop over Methods and Input Types, compose RGBs&lt;br /&gt;
for Method_Input in \&lt;br /&gt;
&amp;quot;ihs ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;brovey ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;pca ToAR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
  # parse &amp;quot;${Method_STR}&amp;quot; and set positional parameters&lt;br /&gt;
  set -- $Method_Input ; echo $1 $2&lt;br /&gt;
&lt;br /&gt;
  # region&lt;br /&gt;
  g.region rast=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue&lt;br /&gt;
&lt;br /&gt;
  # compose&lt;br /&gt;
  r.composite --o \&lt;br /&gt;
  r=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_red \&lt;br /&gt;
  g=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_green \&lt;br /&gt;
  b=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue \&lt;br /&gt;
  out=rgb_sharpened_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255&lt;br /&gt;
&lt;br /&gt;
done #######################################################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# re-balance &amp;amp; re-compose colors --------------------------------------------&lt;br /&gt;
&lt;br /&gt;
for Method_Input in \&lt;br /&gt;
&amp;quot;ihs ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;brovey ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;pca ToAR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
  # parse &amp;quot;${Method_STR}&amp;quot; and set positional parameters&lt;br /&gt;
  set -- $Method_Input ; echo $1 $2&lt;br /&gt;
&lt;br /&gt;
  # re-balance&lt;br /&gt;
  i.landsat.rgb -p \&lt;br /&gt;
  r=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_red \&lt;br /&gt;
  g=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_green \&lt;br /&gt;
  b=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue&lt;br /&gt;
&lt;br /&gt;
  # region -- Really necessary, again?&lt;br /&gt;
  g.region rast=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue&lt;br /&gt;
&lt;br /&gt;
  # re-compose&lt;br /&gt;
  r.composite --o \&lt;br /&gt;
  r=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_red \&lt;br /&gt;
  g=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_green \&lt;br /&gt;
  b=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue \&lt;br /&gt;
  out=rgb_sharpened_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_rebalanced&lt;br /&gt;
&lt;br /&gt;
done ########################################################################&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Pan-Sharpening based on the HPFA technique ====&lt;br /&gt;
&lt;br /&gt;
The technique, implemented via the GRASS add-on {{AddonSrc|imagery|i.fusion.hpf|version=7}}, as indicated above, involves a convolution using a High Pass Filter (HPF) on the high resolution data, then combining this with the lower resolution multispectral data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Source: &amp;quot;Optimizing the High-Pass Filter Addition Technique for Image Fusion&amp;quot;, Ute G. Gangkofner, Pushkar S. Pradhan, and Derrold W. Holcomb (2008)''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The algorithm's steps are:&lt;br /&gt;
&lt;br /&gt;
# Computing the ratio of the low (Multi-Spectral) to the high (Panchromatic) resolution&lt;br /&gt;
# High Pass Filtering the Panchromatic Image&lt;br /&gt;
# Resampling the Multi-Spectral image to the higher resolution&lt;br /&gt;
# Adding a weighted High-Pass-Filtered image to the upsampled Multi-Spectral image&lt;br /&gt;
# Optionally, matching the histogram of the Pan-Sharpened image to the one of the original Multi-Spectral image&lt;br /&gt;
&lt;br /&gt;
=== Color Composites ===&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== Vegetation Indices ==&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== PCA ==&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== IKONOS Image classification ==&lt;br /&gt;
&lt;br /&gt;
See [[Image classification]]&lt;br /&gt;
&lt;br /&gt;
== References / Sources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.apollomapping.com/wp-content/user_uploads/2011/09/IKONOS_Esun_Calculations.pdf IKONOS Planetary Reflectance and Me an Solar Exoatmospheric Irradiance, by Martin Taylor] &lt;br /&gt;
* [http://web.unicen.edu.ar/crecic/docs/radrefl.pdf Ikonos DN Value Conversion to Planetary Reflectance Values, by David Fleming]&lt;br /&gt;
* [http://landsathandbook.gsfc.nasa.gov/data_prod/prog_sect11_3.html Landsat7 Science Data Users Handbook, Chapter 11, Section 3]&lt;br /&gt;
* [http://igett.delmar.edu/Resources/Remote%20Sensing%20Technology%20Training/Calculation-DN_to_Reflectance_Irish_20June08.pdf Calibrated Landsat Digital Number (DN) to Top of Atmosphere (TOA) Reflectance Conversion, by Richard Irish]&lt;br /&gt;
* from [http://landsat.usgs.gov/tools_access_all_faqs.php FAQs about the Landsat Missions]&lt;br /&gt;
** [http://landsat.usgs.gov/how_is_radiance_calculated.php How is radiance calculated?]&lt;br /&gt;
** [http://landsat.usgs.gov/at_sensor_reflectance_calculated.php How is at-sensor reflectance calculated?]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* GRASS-Wiki page about [http://grasswiki.osgeo.org/wiki/Image_processing Image Processing]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Documentation]]&lt;br /&gt;
[[Category: FAQ]]&lt;br /&gt;
[[Category: IKONOS]]&lt;br /&gt;
[[Category: High Resolution]]&lt;br /&gt;
[[Category: Import]]&lt;br /&gt;
[[Category: Digital Numbers]]&lt;br /&gt;
[[Category: Radiance]]&lt;br /&gt;
[[Category: Reflectance]]&lt;br /&gt;
[[Category: Image processing]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
	<entry>
		<id>https://grasswiki.osgeo.org/w/index.php?title=IKONOS&amp;diff=23370</id>
		<title>IKONOS</title>
		<link rel="alternate" type="text/html" href="https://grasswiki.osgeo.org/w/index.php?title=IKONOS&amp;diff=23370"/>
		<updated>2016-08-14T04:58:15Z</updated>

		<summary type="html">&lt;p&gt;⚠️NikosA: edits related to i.fusion.hpf&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Overview =&lt;br /&gt;
&lt;br /&gt;
IKONOS is a commercial earth observation satellite. Details about the sensor are provided at Digital Globe's [http://www.digitalglobe.com/sites/default/files/DG_IKONOS_DS.pdf IKONOS Data Sheet]. [http://en.wikipedia.org/wiki/Ikonos Wikipedia's article on IKONOS] provides a nice overview as well.&lt;br /&gt;
&lt;br /&gt;
== Availability (Sample Data) ==&lt;br /&gt;
&lt;br /&gt;
* Search for commercial satellite image providers in the internet.&lt;br /&gt;
* [http://www.landcover.org/ The Global Land Cover Facility (GLCF)] provides [ftp://ftp.glcf.umd.edu/glcf/China_earthquake_May_2008/IKONOS/ four openly available IKONOS scenes of western Sichuan].&lt;br /&gt;
* ISPRS provides a small [http://www.isprs.org/data/ikonos/ IKONOS data set], fragments from a Panchromatic image as well as from a Stereo product.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modules overview ==&lt;br /&gt;
&lt;br /&gt;
=== Outside of GRASS ===&lt;br /&gt;
&lt;br /&gt;
Satellite imagery can be managed and, at some extent, pre-processed with various [http://www.gdal.org/gdal_utilities.html GDAL utilities].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* [http://www.gdal.org/gdalmanage.html gdalmanage]&lt;br /&gt;
* [http://www.gdal.org/gdalinfo.html gdalinfo]&lt;br /&gt;
* [http://www.gdal.org/gdal_translate.html gdal_translate]&lt;br /&gt;
* [http://www.gdal.org/gdalbuildvrt.html gdalbuildvrt]&lt;br /&gt;
* [http://www.gdal.org/gdalwarp.html gdalwarp]&lt;br /&gt;
&lt;br /&gt;
=== Inside GRASS GIS ===&lt;br /&gt;
&lt;br /&gt;
GRASS GIS features a complete set of modules and various add-ons enabling pre- and post-processing of IKONOS satellite imagery. The following lists offer an overview of related modules and add-ons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* {{cmd|r.in.gdal}}&lt;br /&gt;
* {{cmd|r.mapcalc}}&lt;br /&gt;
* {{cmd|r.colors}}&lt;br /&gt;
* {{cmd|i.landsat.rgb}}&lt;br /&gt;
* {{cmd|i.pansharpen}}&lt;br /&gt;
* {{cmd|i.vi}}&lt;br /&gt;
* {{cmd|i.segment}}&lt;br /&gt;
* ...''more to add''&lt;br /&gt;
&lt;br /&gt;
== Pre-Processing ==&lt;br /&gt;
&lt;br /&gt;
=== Overview ===&lt;br /&gt;
&lt;br /&gt;
Typically, multispectral satellite data are converted into physical quantities such as ''Radiance'' or ''Reflectance'' before they are subjected in multispectral analysis techniques (image interpretation, band arithmetic, vegetation indices, matrix transformations, etc.). The latter can be differentiated in ''Top of Atmosphere Reflectance'' (ToAR) which does not account for atmospheric effects (absorption or scattering) and in ''Top of Canopy Reflectance'' (ToCR) which introduces a &amp;quot;correction&amp;quot; for atmospheric effects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In order to derive Reflectance values, likewise as with remotely sensed data acquired by other sensors, IKONOS raw image digital numbers (DNs) need to be converted to ''at-sensor spectral Radiance'' values.  At-sensor spectral Radiance values are an important input for the equation to derive Reflectance values. Note, ''Spectal Radiance'' is the measure of the quantity of radiation that hits the sensor and typically expressed in &amp;lt;math&amp;gt;\frac{W}{m^2*sr*nm}&amp;lt;/math&amp;gt;, that is ''watts'' per ''unit source area'', per ''unit solid angle'', and per ''unit wavelength''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* Converting DNs to at-sensor Radiance can be done by using the following equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;L\lambda = \frac{10^4 * DN\lambda}{CalCoef\lambda * Bandwidth\lambda}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Converting to Top of Atmosphere Reflectance, also referred to as Planetary Reflectance, can be done by using the following equation:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\rho_p = \frac{\pi * L\lambda * d^2}{ESUN\lambda * cos(\Theta_S)}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;where:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;ul&amp;gt;&lt;br /&gt;
* &amp;lt;math&amp;gt;\rho&amp;lt;/math&amp;gt; - Unitless Planetary Reflectance&lt;br /&gt;
* &amp;lt;math&amp;gt;\pi&amp;lt;/math&amp;gt; - mathematical constant (3.14159265358)&lt;br /&gt;
* &amp;lt;math&amp;gt;L\lambda&amp;lt;/math&amp;gt; spectral Radiance at the sensor's aperture, from equation... '''''ToADD'''''&lt;br /&gt;
* &amp;lt;math&amp;gt;d&amp;lt;/math&amp;gt; - Earth-Sun distance in astronomical units, interpolated values&lt;br /&gt;
* &amp;lt;math&amp;gt;Esun&amp;lt;/math&amp;gt; - Mean solar exoatmospheric irradiance(s) (W/m2/μm), interpolated values&lt;br /&gt;
* &amp;lt;math&amp;gt;cos(\theta_s)&amp;lt;/math&amp;gt; - {{wikipedia||Solar_zenith_angle}} from the image acquisition's metadata&lt;br /&gt;
 &amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Importing data ===&lt;br /&gt;
&lt;br /&gt;
==== File Formats &amp;amp; Metadata ====&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
==== Importing ====&lt;br /&gt;
&lt;br /&gt;
In the following example the publicly available IKONOS acqisition [ftp://ftp.glcf.umd.edu/glcf/China_earthquake_May_2008/IKONOS/po_58204_0000000.20001116.China-Sichuan/ po_58204_0000000.20001116.China-Sichuan] is used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* Location creation based on georeferenced data&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Once inside a Location that is defined by the spatial reference system in which the bands of interest are projected, they can be imported with the {{cmd|r.in.gdal}} module.&lt;br /&gt;
&lt;br /&gt;
For example, GeoTIFF files can be imported by looping {{cmd|r.in.gdal}} over all of them&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for TIF in `echo *.tif`; do r.in.gdal in=${TIF} out=${TIF%%.*}; done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To keep the raw material untouched, we create another Mapset inside the same Location and copy over the bands giving, ''optionally'' at the same time, a new name for each.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
g.mapset -c pre-processing&lt;br /&gt;
g.copy rast=po_58204_blu_0000000,Blue_DNs&lt;br /&gt;
g.copy rast=po_58204_grn_0000000,Green_DNs&lt;br /&gt;
g.copy rast=po_58204_red_0000000,Red_DNs&lt;br /&gt;
g.copy rast=po_58204_nir_0000000,NIR_DNs&lt;br /&gt;
g.copy rast=po_58204_pan_0000000,Pan_DNs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Deriving Physical Quantities ===&lt;br /&gt;
&lt;br /&gt;
Converting Digital Numbers to Radiance/Reflectance requires knowledge about the sensor's specific spectral band parameters. Those are, as extracted from the document ''IKONOS Planetary Reflectance and Mean Solar Exoatmospheric Irradiance'', by Martin Taylor (see references):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=bash&amp;gt;&lt;br /&gt;
 Pan_CalCoef=161	;	Pan_Width=403		;	Pan_Esun=1375.8&lt;br /&gt;
 Blue_CalCoef=728	;	Blue_Width=71.3		;	Blue_Esun=1930.9&lt;br /&gt;
 Green_CalCoef=720	;	Green_Width=88.6	;	Green_Esun=1854.8&lt;br /&gt;
 Red_CalCoef=949	;	Red_Width=65.8		;	Red_Esun=1556.5&lt;br /&gt;
 NIR_CalCoef=843	;	NIR_Width=95.4		;	NIR_Esun=1156.9&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The following examples exemplify the conversion of raw Blue band digital numbers into Radiance and Reflectance.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Spectral Radiance ====&lt;br /&gt;
&lt;br /&gt;
Converting a Blue Band (Digital Numbers) in to Spectral at-sensor Radiance in the ''correct'' units to be further used for the conversion in to unitless Reflectance:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
# set the region&lt;br /&gt;
g.region rast=Blue_DNs -p&lt;br /&gt;
&lt;br /&gt;
# convert DNs to spectral Radiance values&lt;br /&gt;
r.mapcalc &amp;quot;Blue_Radiance = ( (10000 * IKONOS_Blue_DNs) / (728 * 71.3) )&amp;quot;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Planetary Reflectance ====&lt;br /&gt;
&lt;br /&gt;
The equation to derive Reflectance values incorporates in addition:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
* The mathematical constant {{wikipedia|Pi}} &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;PI=3.14159265358&amp;lt;/source&amp;gt;.&lt;br /&gt;
* The Earth-Sun distance in astronomical units which depends on the acquisition's day of year (DOY -- also referred to as Julian day, {{wikipedia|Ordinal_date}}) and can be retrieved from the following spreadsheet &amp;lt;http://landsathandbook.gsfc.nasa.gov/excel_docs/d.xls&amp;gt;.&lt;br /&gt;
* The mean solar exoatmospheric irradiance in &amp;lt;math&amp;gt;\frac{W}{m^2*\mu m}&amp;lt;/math&amp;gt;. See 3rd column of (interplated) values given above.&lt;br /&gt;
* The cosine of the ''Solar Zenith Angle'' (SZA) at the time of the acquisition. The SZA can be calculated from its complementary ''Solar Elevation Angle'' (SEA) given in the image acquisition's metadata.&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In the following example we accept as the acquisition's &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;DOY=166&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;SEA=52.78880&amp;lt;/source&amp;gt;. Hence, we get the Earth-Sun distance &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;ESD=1.0157675&amp;lt;/source&amp;gt; and &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;SZA = 37.21120 deg&amp;lt;/source&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Converting the in-Blue spectral band at-sensor Radiance in to Planerary Reflectance:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;PI=3.14159265358; ESD=1.0157675; BAND_Esun=1930.9; SZA=37.21120&amp;lt;/source&amp;gt;&lt;br /&gt;
 {{cmd|r.mapcalc}} &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;&amp;quot;Blue_Reflectance = ( ${PI} * Blue_Radiance * ${ESD}^2 ) / ( ${BAND_Esun} * cos(${SZA}) )&amp;quot;&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Automatising Conversions ====&lt;br /&gt;
&lt;br /&gt;
The conversion process can be scripted to avoid repeating the same steps for each band separately.&lt;br /&gt;
&lt;br /&gt;
===== Python =====&lt;br /&gt;
&lt;br /&gt;
A custom python script, performing the operations of interest, might be like [https://github.com/NikosAlexandris/i.ikonos.toar i.ikonos.toar (for GRASS 7.x)]&lt;br /&gt;
 &lt;br /&gt;
===== Bash =====&lt;br /&gt;
In bash, such a script might be as the following example. '''Note,''' however, in this example script constants, band parameters and acquisition related metadata are hard-coded!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
Pan_CalCoef=161		;	Pan_Width=403		;	Pan_Esun=1375.8&lt;br /&gt;
Blue_CalCoef=728	;	Blue_Width=71.3		;	Blue_Esun=1930.9&lt;br /&gt;
Green_CalCoef=720	;	Green_Width=88.6	;	Green_Esun=1854.8&lt;br /&gt;
Red_CalCoef=949		;	Red_Width=65.8		;	Red_Esun=1556.5&lt;br /&gt;
NIR_CalCoef=843		;	NIR_Width=95.4		;	NIR_Esun=1156.9&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# set constants, band parameters and acquisition related metadata here!&lt;br /&gt;
&lt;br /&gt;
# Pi, first 11 decimals&lt;br /&gt;
PI=3.14159265358&lt;br /&gt;
&lt;br /&gt;
# Acquisition's Day of Year and estimated Earth-Sun Distance&lt;br /&gt;
DOY=166; ESD=1.0157675&lt;br /&gt;
&lt;br /&gt;
# Sun Zenith Angle based on the acquisition's Sun Elevation Angle&lt;br /&gt;
SEA=52.78880; SZA=$(echo &amp;quot;90 - ${SEA}&amp;quot; | bc )&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# bands to process&lt;br /&gt;
Spectral_Bands=&amp;quot;Pan Blue Green Red NIR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# loop over all bands&lt;br /&gt;
for BAND in ${Spectral_Bands}; do&lt;br /&gt;
&lt;br /&gt;
  echo &amp;quot;Processing the ${BAND} spectral band&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # set region&lt;br /&gt;
  g.region rast=${BAND}_DNs&lt;br /&gt;
&lt;br /&gt;
  # set band parameters as variables&lt;br /&gt;
  eval BAND_CalCoef=&amp;quot;${BAND}_CalCoef&amp;quot;&lt;br /&gt;
  eval BAND_Width=&amp;quot;${BAND}_Width&amp;quot;;&lt;br /&gt;
  echo &amp;quot;Band Parameters set to CalCoef=${!BAND_CalCoef}, Bandwidth=${!BAND_Width}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # conversion to Radiance&lt;br /&gt;
  r.mapcalc &amp;quot;${BAND}_Radiance = ( ( 10^4 * ${BAND}_DNs ) / ( ${!BAND_CalCoef} * ${!BAND_Width} ) )&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # add info&lt;br /&gt;
  r.support map=${BAND}_Radiance \&lt;br /&gt;
  title=&amp;quot;&amp;quot; \&lt;br /&gt;
  units=&amp;quot;W / m2 / μm / ster&amp;quot; \&lt;br /&gt;
  description=&amp;quot;At-sensor `echo ${BAND}` band spectral Radiance (W/m2/μm/sr)&amp;quot; \&lt;br /&gt;
  source1='&amp;quot;IKONOS Planetary Reflectance and Mean Solar Exoatmospheric Irradiance&amp;quot;, by Martin Taylor, Geoeye'&lt;br /&gt;
&lt;br /&gt;
  # set Earth-Sun distance&lt;br /&gt;
  eval BAND_Esun=&amp;quot;${BAND}_Esun&amp;quot;; echo &amp;quot;Using Esun=${!BAND_Esun}&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # calculate ToAR&lt;br /&gt;
  r.mapcalc &amp;quot;${BAND}_ToAR = \&lt;br /&gt;
	( ${PI} * ${BAND}_Radiance * ${ESD}^2 ) / ( ${!BAND_Esun} * cos(${SZA}) )&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # add some metadata&lt;br /&gt;
  r.support map=${BAND}_ToAR \&lt;br /&gt;
  title=&amp;quot;echo ${BAND} band (Top of Atmosphere Reflectance)&amp;quot; \&lt;br /&gt;
  units=&amp;quot;Unitless&amp;quot; \&lt;br /&gt;
  description=&amp;quot;Top of Atmosphere `echo ${BAND}` band spectral Reflectance (unitless)&amp;quot; \&lt;br /&gt;
  source1='&amp;quot;IKONOS Planetary Reflectance and Mean Solar Exoatmospheric Irradiance&amp;quot;, by Martin Taylor, Geoeye' \&lt;br /&gt;
  source2=&amp;quot;e.g., the Image Provider!&amp;quot; \&lt;br /&gt;
  history=&amp;quot;PI=3.14159265358; ESD=1.0157675; BAND_Esun=1930.9; SZA=37.21120&amp;quot;&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Atmospheric correction ===&lt;br /&gt;
&lt;br /&gt;
See [[Atmospheric correction]]&lt;br /&gt;
&lt;br /&gt;
== Post-Processing ==&lt;br /&gt;
&lt;br /&gt;
Having beforehand satellite image data expressed in physical quantities (radiance or reflectance) is preferred to follow-up with digital image analysis techniques. A few common post-processing practices are Contrast-Enhancement, Pan-Sharpening and creating Pseudo- or True-Color Composites. Other well known enhancing manipualtions to support the analyses of satellite imagery, include deriving Vegetation Indices, transforming multi-spectral data based on [[Principal_Components_Analysis | PCA]] and Segmenting images.&lt;br /&gt;
&lt;br /&gt;
=== Contrast Enhancement ===&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
=== Pan-Sharpening ===&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Pansharpened_image Pan-Sharpening] / [http://en.wikipedia.org/wiki/Image_fusion Fusion] is the process of merging high-resolution panchromatic and lower resolution multi-spectral imagery. [http://grass.osgeo.org/grass70/ GRASS 7] holds a dedicated pan-sharpening module, {{cmd|i.pansharpen}} which features three techniques for sharpening, namely the [http://wiki.awf.forst.uni-goettingen.de/wiki/index.php/Brovey_Transformation Brovey transformation], the classical IHS method and one that is based on [[Principal Components Analysis]] (PCA). Another algorithm deriving excellent detail and a realistic representation of original multispectral scene colors, is the High-Pass Filter Addition (HPFA) technique. It is available through the add-on {{AddonSrc|imagery|i.fusion.hpf|version=7}} (for GRASS 6, please refer to a bash shell script https://github.com/NikosAlexandris/i.fusion.hpf.sh which is, however, unmaintained).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One approach inside GRASS-GIS to get an acceptable color-balanced composite image after Pan-sharpening 11-bit IKONOS spectral bands comprises the following steps&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
# rescale the 11-bit IKONOS spectral bands to 8-bit ranging in [0, 255] ({{cmd|r.rescale}})&lt;br /&gt;
# pan-sharpen with any of the featured methods (Brovey, IHS, PCA) ({{cmd|i.pansharpen}})&lt;br /&gt;
# color-balance by using the {{cmd|i.landsat.rgb}} module or manually adjusting the color tables of the bands of interest&lt;br /&gt;
# create a composite image by using the {{cmd|r.compose}} module&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Example Instructions for {{cmd|i.pansharpen}} ====&lt;br /&gt;
&lt;br /&gt;
{{cmd|i.pansharpen}} works fine with 8-bit raster maps as an input. If the data to be processed are out of this range, that is out of &amp;lt;math&amp;gt;[0, 255]&amp;lt;/math&amp;gt;, they can be rescaled to fit into this range by using GRASS' {{cmd|r.rescale}} module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Given an IKONOS set of 11-bit spectral bands (Blue, Green, Red, NIR and Pan) ranging between &amp;lt;math&amp;gt;[0, 2047]&amp;lt;/math&amp;gt;, and then querying for example the Blue band &lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;r.info Blue_DNs -r&amp;lt;/source&amp;gt;, would return&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
min=0&lt;br /&gt;
max=2047&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Rescaling single bands =====&lt;br /&gt;
&lt;br /&gt;
Rescaling the Blue band to range between `[0, 255]`&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
r.rescale in=Blue_DNs out=Blue_DNs_255 from=0,2047 to=0,255&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The same step applies to both the rest of the multi-spectral bands and the Panchromatic band of interest. If working under Bash, To repeat the same command (given, it was the last on used in the GRASS' terminal), one can isntruct&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
!!:gs/Blue/Green&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This would substitute everywhere found on the last command the string &amp;quot;Blue&amp;quot; with the string &amp;quot;Green&amp;quot; and re-execute it.  The same can be done for the rest of the bands, namely Red, NIR and Pan. Some attention is required to instruct substitution of the ''last'' used string.&lt;br /&gt;
&lt;br /&gt;
===== Rescaling all bands at once =====&lt;br /&gt;
&lt;br /&gt;
Of course, one can always use a ''for'' loop&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
for DN in `g.mlist rast pat=*DNs`; do r.rescale in=${DN} out=${DN}_255 from=0,2047 to=0,255; done&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Pan-Sharpening =====&lt;br /&gt;
&lt;br /&gt;
As usual when working with GRASS, it is required to set the region of interest, i.e. &amp;lt;source lang=&amp;quot;bash&amp;quot; enclose=none&amp;gt;g.region rast=Blue_DNs_255&amp;lt;/source&amp;gt; to match the extent of the band(s) or else. The resolution itself is taken care in this particular case by the module and the resulting pan-sharpened raster maps will of the same high(er) resolution as the Panchromatic band.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An example command for an IHS-based Pan-Sharpening action might look like&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i.pansharpen pan=Pan_DNs_255 ms1=Blue_DNs_255 ms2=Green_DNs_255 ms3=Red_DNs_255 output=sharptest255 sharpen=ihs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Color Re-Balancnig =====&lt;br /&gt;
&lt;br /&gt;
After the process completion, the module outputs&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
The following pan-sharpened output maps have been generated:&lt;br /&gt;
sharptest255_red&lt;br /&gt;
sharptest255_green&lt;br /&gt;
sharptest255_blue&lt;br /&gt;
&lt;br /&gt;
To visualize output, run: g.region -p rast=sharptest255.red&lt;br /&gt;
d.rgb r=sharptest255_red g=sharptest255_green b=sharptest255_blue&lt;br /&gt;
&lt;br /&gt;
If desired, combine channels into a single RGB map with 'r.composite'.&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Normally it should be enough to re-balance the colors after the pan-sharpening action by using for example the {{cmd|i.landsat.rgb}} module or manual adjustment of each of the three bands that would compose an RGB image.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
i.landsat.rgb r=sharptest255_red g=sharptest255_green b=sharptest255_blue -p&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== Automatising Sharpening &amp;amp; RGB Composition =====&lt;br /&gt;
&lt;br /&gt;
An ''experimental'' bash script to automatise the sharpening/fusion and RGB composition process is demonstrated here. The script uses the Spectral Reflectance values (double precision values), gained from previous steps (see above), and produces Pan-sharpened images by applying all of the three methods that {{addon|i.pansharpen}} offers. In addition, it attempts to produce True-Color composite images, without and with re-balancing the color tables by using the {{cmd|i.landsat.rgb}} module.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Initial tests indicate that at least one of the three sharpening methods, combined with re-balancing, produces very clear and balanced True-Color composites. Note, there is no 100% confidence that it will produce nice looking True-Color composites. Some of the methods might simply work, others might deliver fancy-colored images. As usual, some manual action might be required to get the re-balancing to work as best as possible.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The script can be expanded in terms of using more inputs by utilising bash's positional parameters.  However, care has to be taken to alter the instruction that concerns the conversion from double precision values to 8-bit integers.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;bash&amp;quot;&amp;gt;&lt;br /&gt;
#!/bash/sh&lt;br /&gt;
&lt;br /&gt;
# use in G7 only :-)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
echo &amp;quot;Rescaling all images to 8-bit&amp;quot;&lt;br /&gt;
# convert to 8-bit first :-!&lt;br /&gt;
for Method_Input in \&lt;br /&gt;
&amp;quot;Pan ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;Blue ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;Green ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;Red ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;NIR ToAR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
  # parse &amp;quot;${Method_STR}&amp;quot; and set positional parameters&lt;br /&gt;
  set -- $Method_Input ; echo -e &amp;quot;\n&amp;quot; #echo $1 $2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  # input BAND is...&lt;br /&gt;
  eval BAND=&amp;quot;${1}_${2}&amp;quot;&lt;br /&gt;
  &lt;br /&gt;
  # set region&lt;br /&gt;
  g.region rast=${BAND}&lt;br /&gt;
&lt;br /&gt;
  # integerise&lt;br /&gt;
  r.mapcalc --v \&lt;br /&gt;
  &amp;quot;${BAND}_integerised = round( 1000000 * ${BAND} )&amp;quot; # how many decimals?&lt;br /&gt;
&lt;br /&gt;
  # integerised BAND is...&lt;br /&gt;
  eval BAND=&amp;quot;${1}_${2}_integerised&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  # get ${min} and ${max}&lt;br /&gt;
  eval `r.info -r ${BAND}`&lt;br /&gt;
&lt;br /&gt;
  #&lt;br /&gt;
  r.rescale in=${1}_${2}_integerised out=${1}_${2}_255 from=${min},${max} to=0,255&lt;br /&gt;
&lt;br /&gt;
done ########################################################################&lt;br /&gt;
echo &amp;quot;Rescaling done!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# pan-sharpen High Resolution imagery ---------------------------------------&lt;br /&gt;
# needs setting some naming conventions&lt;br /&gt;
for Method_Input in \&lt;br /&gt;
&amp;quot;ihs ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;brovey ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;pca ToAR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
  # parse &amp;quot;${Method_STR}&amp;quot; and set positional parameters&lt;br /&gt;
  set -- $Method_Input ; echo $1 $2&lt;br /&gt;
&lt;br /&gt;
  # some echo&lt;br /&gt;
  echo &amp;quot;Pan-Sharpening the &amp;lt;${2}&amp;gt; images based on the &amp;lt;${1}&amp;gt; method&amp;quot;&lt;br /&gt;
&lt;br /&gt;
  i.pansharpen \&lt;br /&gt;
  sharpen=${1} \&lt;br /&gt;
  pan=Pan_${2}_255 \&lt;br /&gt;
  ms1=Blue_${2}_255 \&lt;br /&gt;
  ms2=Green_${2}_255 \&lt;br /&gt;
  ms3=Red_${2}_255 \&lt;br /&gt;
  output=sharp_${1}_${2}_255&lt;br /&gt;
&lt;br /&gt;
done ########################################################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# compose BGRs --------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
# loop over Methods and Input Types, compose RGBs&lt;br /&gt;
for Method_Input in \&lt;br /&gt;
&amp;quot;ihs ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;brovey ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;pca ToAR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
  # parse &amp;quot;${Method_STR}&amp;quot; and set positional parameters&lt;br /&gt;
  set -- $Method_Input ; echo $1 $2&lt;br /&gt;
&lt;br /&gt;
  # region&lt;br /&gt;
  g.region rast=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue&lt;br /&gt;
&lt;br /&gt;
  # compose&lt;br /&gt;
  r.composite --o \&lt;br /&gt;
  r=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_red \&lt;br /&gt;
  g=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_green \&lt;br /&gt;
  b=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue \&lt;br /&gt;
  out=rgb_sharpened_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255&lt;br /&gt;
&lt;br /&gt;
done #######################################################################&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
# re-balance &amp;amp; re-compose colors --------------------------------------------&lt;br /&gt;
&lt;br /&gt;
for Method_Input in \&lt;br /&gt;
&amp;quot;ihs ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;brovey ToAR&amp;quot; \&lt;br /&gt;
&amp;quot;pca ToAR&amp;quot;&lt;br /&gt;
&lt;br /&gt;
do&lt;br /&gt;
&lt;br /&gt;
  # parse &amp;quot;${Method_STR}&amp;quot; and set positional parameters&lt;br /&gt;
  set -- $Method_Input ; echo $1 $2&lt;br /&gt;
&lt;br /&gt;
  # re-balance&lt;br /&gt;
  i.landsat.rgb -p \&lt;br /&gt;
  r=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_red \&lt;br /&gt;
  g=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_green \&lt;br /&gt;
  b=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue&lt;br /&gt;
&lt;br /&gt;
  # region -- Really necessary, again?&lt;br /&gt;
  g.region rast=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue&lt;br /&gt;
&lt;br /&gt;
  # re-compose&lt;br /&gt;
  r.composite --o \&lt;br /&gt;
  r=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_red \&lt;br /&gt;
  g=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_green \&lt;br /&gt;
  b=sharp_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_blue \&lt;br /&gt;
  out=rgb_sharpened_&amp;quot;${1}&amp;quot;_&amp;quot;${2}&amp;quot;_255_rebalanced&lt;br /&gt;
&lt;br /&gt;
done ########################################################################&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Pan-Sharpening based on the HPFA technique ====&lt;br /&gt;
&lt;br /&gt;
The technique, implemented via the GRASS add-on {{AddonSrc|imagery|i.fusion.hpf|version=7}}, as indicated above, involves a convolution using a High Pass Filter (HPF) on the high resolution data, then combining this with the lower resolution multispectral data.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Source: &amp;quot;Optimizing the High-Pass Filter Addition Technique for Image Fusion&amp;quot;, Ute G. Gangkofner, Pushkar S. Pradhan, and Derrold W. Holcomb (2008)''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The algorithm's steps are:&lt;br /&gt;
&lt;br /&gt;
# Computing the ratio of the low (Multi-Spectral) to the high (Panchromatic) resolution&lt;br /&gt;
# High Pass Filtering the Panchromatic Image&lt;br /&gt;
# Resampling the Multi-Spectral image to the higher resolution&lt;br /&gt;
# Adding a weighted High-Pass-Filtered image to the upsampled Multi-Spectral image&lt;br /&gt;
# Optionally, matching the histogram of the Pan-Sharpened image to the one of the original Multi-Spectral image&lt;br /&gt;
&lt;br /&gt;
=== Color Composites ===&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== Vegetation Indices ==&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== PCA ==&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
== IKONOS Image classification ==&lt;br /&gt;
&lt;br /&gt;
See [[Image classification]]&lt;br /&gt;
&lt;br /&gt;
== References / Sources ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.apollomapping.com/wp-content/user_uploads/2011/09/IKONOS_Esun_Calculations.pdf IKONOS Planetary Reflectance and Me an Solar Exoatmospheric Irradiance, by Martin Taylor] &lt;br /&gt;
* [http://web.unicen.edu.ar/crecic/docs/radrefl.pdf Ikonos DN Value Conversion to Planetary Reflectance Values, by David Fleming]&lt;br /&gt;
* [http://landsathandbook.gsfc.nasa.gov/data_prod/prog_sect11_3.html Landsat7 Science Data Users Handbook, Chapter 11, Section 3]&lt;br /&gt;
* [http://igett.delmar.edu/Resources/Remote%20Sensing%20Technology%20Training/Calculation-DN_to_Reflectance_Irish_20June08.pdf Calibrated Landsat Digital Number (DN) to Top of Atmosphere (TOA) Reflectance Conversion, by Richard Irish]&lt;br /&gt;
* from [http://landsat.usgs.gov/tools_access_all_faqs.php FAQs about the Landsat Missions]&lt;br /&gt;
** [http://landsat.usgs.gov/how_is_radiance_calculated.php How is radiance calculated?]&lt;br /&gt;
** [http://landsat.usgs.gov/at_sensor_reflectance_calculated.php How is at-sensor reflectance calculated?]&lt;br /&gt;
&lt;br /&gt;
== See also ==&lt;br /&gt;
&lt;br /&gt;
* GRASS-Wiki page about [http://grasswiki.osgeo.org/wiki/Image_processing Image Processing]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''ToAdd''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category: Documentation]]&lt;br /&gt;
[[Category: FAQ]]&lt;br /&gt;
[[Category: IKONOS]]&lt;br /&gt;
[[Category: High Resolution]]&lt;br /&gt;
[[Category: Import]]&lt;br /&gt;
[[Category: Digital Numbers]]&lt;br /&gt;
[[Category: Radiance]]&lt;br /&gt;
[[Category: Reflectance]]&lt;br /&gt;
[[Category: Image processing]]&lt;/div&gt;</summary>
		<author><name>⚠️NikosA</name></author>
	</entry>
</feed>