/**
* <H1>GRASS input/output drivers</H1>
*
* <p>
* In this package the I/O drivers for reading and writing GRASS raster maps
* are placed.
* </p>
* <p>
* To better understand the code a good overview should be taken on the
* GRASS database-Location-Mapset structure, of which a short introduction
* is given below.
* </p>
*
* <h2>File structure of GRASS Location</h2>
*
* A GRASS raster map consists of several files in several subdirectories in a mapset, organized as follows:
*
* <ul>
* <li><b>cellhd/</b>: map header including projection code, coordinates representing the spatial extent of the raster map, number of rows and columns, resolution, and information about map compression;</li>
* <li><b>cell/, fcell/ or grid3/</b>: generic matrix of values in a compressed, portable format which depends on the raster data type (integer, floating point or 3D grid);</li>
* <li><b>hist/</b>: history file which contains metadata such as the data source, the command that was used to generate the raster map, or other information provided by the user;</li>
* <li><b>cats/</b>: optional category file which contains text or numeric labels assigned to the raster map categories;</li>
* <li><b>colr/</b>: optional color table;</li>
* <li><b>cell_misc/</b>: optional timestamp, range of values, quantization rules (for floating point maps) and null (no-data) files;</li>
* </ul>
*
* Most important files and folders for now:
*
* <ul>
* <li>WIND - contains the active processing region and the resolution</li>
* <li>PROJ_INFO - contains the information about the projection</li>
* <li>PROJ_UNITS - contains the information about projection units used</li>
* <li>cell, fcell - contain the raster files</li>
* <li>vector - contain the vector data since GRASS 6</li>
* <li>sites_list - contain the sites type data, deprecated from GRASS 6 on, but maintained in JGrass</li>
* </ul>
*
* <h2>The cell header file</h2>
*<p>
* A typical grass map header looks like the following: <br>
* <code>
* proj: 1 <br>
* zone: 13 <br>
* north: 4928000 <br>
* south: 4914000 <br>
* east: 609000 <br>
* west: 590000 <br>
* cols: 950 <br>
* rows: 700 <br>
* e-w resol: 20 <br>
* n-s resol: 20 <br>
* format: 0 <br>
* compressed: 1
* </code>
* <br>
* <br>
*
* <h3>Reclassified files</h3>
*
* If the first line reports 'reclass' then this file is a
* reclassified file and the original data file is given by the following
* two lines: <br>
* <code>
* reclass <br>
* name: soils <br>
* mapset: PERMANENT <br>
* #1 5 3 8 .... ....
* </code>
*
* <h2>The color table file</h2>
* <p>
* Colortables for GRASS 5 and greater are supported.
* </p>
*
* <p>The format of the color file, which is located in
* <b>location/mapset/colr/mapname</b> is the following:</p>
* <p>The first line is a % character and two numbers indicating the minimum
* and maximum data values which have colors. <b>Note that in JGrass after the
* range values we add a third value for alpha support.</b></p>
* <p>After the first line, the list of color rules appears, that can be
* of the following formats:
* <ul>
* <li><code>value1:r:g:b value2:r:g:b</code> interpolation of colors between
* the two values with the two colors</li>
* <li><code>value1:grey value2:grey</code interpolation of grayscale between
* the two values with the two grey values></li>
* <li><code>value1:r:g:b</code> assumption that it means that value1 ==
* value2</li>
* <li><code>nv:r:g:b</code> novalues could also have color with such a rule.</li>
* </ul>
* </p>
*
*/
package org.geotools.gce.grassraster;