GRASS GIS

GRASS GIS (Geographic Resources Analysis Support System) is a free, open source geographical information system (GIS) capable of handling raster, topological vector, image processing, and graphic data.

GRASS is released under the GNU General Public License (GPL), and it can be used on multiple platforms, including Mac OS X, Microsoft Windows (natively or with optional Cygwin tools) and Linux. Users can interface with the software features through a graphical user interface (GUI) by using the internal GUI with X Window System or by "plugging into" GRASS via Quantum GIS. They can also interface with the modules directly through the modified version of the shell that the application launches or by calling individual modules directly from a preferred shell (this latter method requires the setting of several environment variables).

The recent GRASS 6 release introduces a new topological 2D/3D vector engine and support for vector network analysis. Attributes are managed in .dbf files or SQL-based DBMS such as MySQL, PostgreSQL/PostGIS, and SQLite. The system is capable of visualizing 3D vector graphics data and voxel volumes. GRASS supports an extensive range of raster and vector formats through the binding to GDAL/OGR libraries, including OGC-conformal (Open Geospatial Consortium) Simple Features for interoperability with other GIS. It also supports Linear Reference System.

The GRASS Development Team is a multi-national group consisting of developers at numerous locations. GRASS is one of the eight initial Software Projects of the Open Source Geospatial Foundation.

Architecture
GRASS supports raster and vector data in two and three dimensions. The vector data model is topological, meaning that areas are defined by boundaries and centroids; boundaries cannot overlap within a single layer. This is in contrast with OpenGIS Simple Features, which define vectors more freely, much as a non-georeferenced vector illustration program does.

GRASS is designed as an environment in which tools that perform specific GIS computations are executed. Unlike typical application software, upon starting GRASS, the user is presented with a UNIX shell containing a modified environment that supports the execution of GRASS commands (known as modules). The environment has a state that includes such parameters as the geographic region covered and the map projection in use. All GRASS modules read this state and additionally are given specific parameters (such as input and output maps, or values to use in a computation) when executed. The majority of GRASS modules and capabilities can be operated via a graphical user interface (provided by a GRASS module), as an alternative to manipulating geographic data in shell. There are over 300 core GRASS modules included in the GRASS distribution, and over 100 add-on modules created by users and offered on the GRASS web site. The GRASS libraries and core modules are written in C; other modules are written in C, C++, Python, UNIX shell, Tcl, or other scripting languages. The GRASS modules are designed under the Unix philosophy and hence can be combined using shell scripting to create more complex or specialized modules by a user without knowledge of C programming.

GRASS 6.4.0 introduces new generation of graphical user interface called wxGUI. wxGUI is designed using Python programming language and Python graphical library.

There is cooperation between GRASS and Quantum GIS (QGIS). Recent versions of QGIS can be executed within the GRASS environment, allowing QGIS to be used as a user-friendly graphical interface to GRASS that more closely resembles other graphical GIS software than does the unique shell-based GRASS interface. See the screenshot for an example.

There also exists a project to re-implement GRASS in Java as JGRASS.

History
GRASS (Geographic Resources Analysis Support System) has been under continuous development since 1982 and has involved a large number of federal US agencies, universities, and private companies. The core components of GRASS and the management of integration of efforts into GRASS releases was originally directed by the U.S. Army - Construction Engineering Research Laboratory (USA-CERL), a branch of the U.S. Army Corps of Engineers, in Champaign, Illinois. USA-CERL completed its last release of GRASS as version 4.1 in 1992, and provided five updates and patches to this release through 1995. USA-CERL also wrote the core components of the GRASS 5.0 floating point version.

The development of GRASS was begun by the USA-CERL to meet the need of the United States military for software for land management and environmental planning. A key motivation was the National Environmental Policy Act. The development platform was UNIX running on VAX hardware. During 1982 through 1995, USA-CERL led the development of GRASS, with the involvement of numerous others, including universities and other federal agencies. USA-CERL officially ceased its involvement in GRASS after release 4.1 (1995), though development had been limited to minor patches since 1993. A group formed at Baylor University to take over the software, releasing GRASS 4.2. Around this period, a port of the software to Linux was made. In 1998, Markus Neteler, the current project leader, announced the release of GRASS 4.2.1, which offered major improvements including a new graphical user interface. In October 1999, the license of the originally public-domain GRASS software was changed to the GNU GPL in version 5.0.

Subsequently, GRASS has evolved into a powerful software suite with a wide range of applications in many different areas of scientific research. GRASS is currently used in academic and commercial settings around the world, as well as many United States governmental agencies including NASA, NOAA, USDA, DLR, CSIRO, the National Park Service, the U.S. Census Bureau, USGS, and many environmental consulting companies.

Currently GRASS development is split into a stable branch (6.4), a development branch (6.5), and an experimental branch (7.0). The stable branch is recommended for most users, while the 6.5/7.0 branch operates as a testbed for new features.