GRASS Programmer's Manual  6.5.svn(2014)-r66266
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
GRASS GIS 6 Programmer's Manual

GRASS GIS (Geographic Resources Analysis Support System) is an open source, Free Software Geographical Information System (GIS) with raster, topological vector, image processing, and graphics production functionality that operates on various platforms through a graphical user interface (GUI) or command line interface (CLI). It is released under GNU General Public License (GPL).

This manual introduces the reader to the Geographic Resources Analysis Support System from the programming perspective. Design theory, system support libraries, system maintenance, and system enhancement are all presented. Standard GRASS 4.x conventions are still used in much of the code. This work is part of ongoing research being performed by the GRASS Development Team, an international team of programmers, GRASS module authors are cited within their module's source code and the contributed manual pages.

An up-to-date version of this Programmer's Manual is available at

© 2000-2015 GRASS Development Team
Published under GNU Free Documentation License (GFDL)

This manual comes with ABSOLUTELY NO WARRANTY. The development of GRASS software and this manual is kindly supported by the Open Source Geospatial Foundation, who provides the GRASS main infrastructure.

Main web site:

Table of contents

Missing entries below are either not yet uploaded to SVN (need to be migrated from GRASS 5 Programmer's manual) or are simply undocumented.

GRASS 6 Architecture

Principal library

(the name refers to the directory name in lib/ in the source code)

Further libraries

(the name refers to the directory name in lib/ in the source code)



File structure of GRASS Location

A GRASS raster map consists of several files in several subdirectories in a mapset, organized as follows:

  • cellhd/: 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;
  • cell/, fcell/ or grid3/: generic matrix of values in a compressed, portable format which depends on the raster data type (integer, floating point or 3D grid);
  • hist/: 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;
  • cats/: optional category file which contains text or numeric labels assigned to the raster map categories;
  • colr/: optional color table;
  • cell_misc/: optional timestamp, range of values, quantization rules (for floating point maps) and null (no-data) files;

A GRASS vector maps are stored in several separate files in a single directory. While the attributes are stored in either a DBF file, a SQLite file or in an external DBMS (PostgreSQL, MySQL, ODBC), the geometric data are saved as follows:

  • head: vector map ASCII header with information about the map creation (date and name), its scale and threshold;
  • coor: binary geometry file which includes the coordinates of graphic elements (primitives) that define the vector feature;
  • topo: binary topology file describes the spatial relationships between the map's graphic elements;
  • hist: history ASCII file with complete commands that were used to create the vector map, as well as the name and date/time of the map creation;
  • cidx: binary category index file which is used to link the vector object IDs to the attribute table rows;
  • dbln: ASCII file which contains definition(s) of link to attribute storage in database (DBMS).
Diagram of GRASS file structure