GRASS and its siblings; a guide for the novice
There are many open-source software packages that deal with spatial data in some way and are also related to GRASS. This page provides a brief overview of history, current status, and platforms. It is based on a nice summary prepared by Michael Barton and will hopefully be edited by many people.
GRASS
GRASS is written primarily in C, with many additional modules created as UNIX Shell and Python scripts that chain together C modules.
The GUI needs to be something that works well with C, is cross-platform, and relatively easy to work with. Tcl/Tk (used for the GRASS 6 GUI) fits these criteria very well. We are in the process of switching the GUI to wxPython, which also fits these criteria and is an even richer GUI development platform. There is a talented team of folks working on the wxPython GUI, so development is going quite fast.
GRASS was originally ported to UNIX in the mid-1980's, and in recent years primarily ran under Linux and Solaris. It has recently been ported to MacOSX and a port to MS-Windows is nearing completion as of mid-2008. See the GRASS history page on the website for more.
EpiGrass
Epigrass is a software for visualizing, analyzing and simulating of epidemic processes on geo-referenced networks.
EpiGrass can interact with the GRASS GIS from which it can obtain maps and other geo-referenced information. However, EpiGrass does not require an installation of the GRASS GIS for most of its features.
GAL Framework
The GAL Framework (GIS Abstraction Layer)
- "Aim of this project is to shape possible design and make a test implementation of advanced OpenSource programming framework for [GRASS GIS]"
JGrass
JGrass was started some years back, when GRASS had a rather primitive GUI. As best I can tell, it creates a GUI in JAVA and uses GRASS libraries to carry out a limited suite of geospatial processing activities (mainly hydrologic modeling). For a long time, jgrass was using the GRASS 5 libraries. I don't know if it has upgraded to GRASS 6 or not. As of a year ago, JGrass merged into uDIG, and I don't know if it is still using GRASS libraries as a geospatial analysis engine or not.
KerGIS
KerGIS is a fork of GRASS 4, the last public domain version of GRASS before the code was relicensed as GPL. There is a BSD open-source licensed version, but apparently there is also a proprietary version based on & expanding on the BSD version.
QGIS
QGIS is basically an easy to use viewer for geospatial data. A couple years ago, Radim Blazek--a former GRASS developer--joined the QGIS project. A number of GRASS processes have been made available to QGIS through its plugin architecture to give QGIS some nice analytical capabilities. QGIS is written in C++ and its GUI uses the Qt toolkit.
vtkGRASSBridge
vtkGRASSBrige provides a VTK/C++ interface to most of the grass gis raster and vector C library functions. Its using an intuitive class structure to hide the complexity of the grass libraries.
Additionally, the vtkGRASSBridge provides access to grass C library functions for Python and Java, using the VTK wrapper.
Reader to convert grass datasets (raster, vector) into VTK datasets are provided for raster and vector data. All vtkImage- and vtkPolyDataAlgorithms can be used to process grass raster and vector data. vtkImages can be directly written as grass raster maps into a grass location.
This library can be used to build comprehensive 3d visualisation of grass gis data with Java, Python and C++, as well as base for complex multithreaded image and vector filter to process grass gis datasets i.e: as backend for WPS server.