- GRASS has been around nearly 40 years
- GRASS continues to provide innovative GIS supported
- GRASS’ open source model makes it powerful for research and businesses
- Continued support means it will likely continue to deliver innovative GIS
The Geographic Resources Analysis Support System (GRASS) tool has been under development since 1982 as a US federal agency initiative that was later developed by academics and a consortium of loyal users. Not only is it one of the oldest continuously used GIS tools, but it continues to provide innovative capabilities. In a recent MapScaping podcast with Markus Neteler, chairman on the GRASS GIS Project Steering Committee, makes it is clear that GRASS will continue to be a powerful GIS open source effort for years to come.
At its basic level, GRASS is a raster vector and geospatial processing engine. What makes GRASS so powerful is it can work at different levels for users, being flexible to users who either want to use it directly or as part of other tools.
It can, for instance, be integrated with QGIS, working as a back-end analytical tool. Functions that deploy raster and vector operations with GRASS can be called from scripts within other software. Effectively, users are free to deploy raster and vector GIS directly or apply GRASS as part of other software.
For those who chose to use GRASS directly for GIS analysis, the tool creates what are called Locations, a legacy name, that refers to given geographic regions defined by the user and it creates the space where geospatial data are stored. This helps to keep projects and georeferenced data clean by separating efforts, but from GRASS 8.0 a menu setup will be available comparable to tools such as QGIS and ArcGIS.
GRASS has its own vector and raster formats but works with most others. It contains a vector topological model that helps vector data share common borders and allows them to be related and knowledgeable of shared data, such as a common border in vector data, unlike typical vector models. The GRASS vector model can also store 3D data. One can contain multiple attribute tables and vectorize raster data on the fly using this model, making it easier to also contain multiple levels of information that are aware of the other levels. The application uses GDAL/OGR to translate and export vector and raster data models to external use. One can, for instance, translate between a GRASS vector model and common shapefiles.
On the raster side, GRASS applies multi-layer functions within raster data than enables more complex information to be associated with given raster layers. For instance, color tables can be attached and multi-band aerial or satellite imagery or even time-series data can be linked across applied layers so that they can be associated in analyses. This has the advantage of linking like data and assisting with such measures as averaging between layers, volumetric measures, and other multi-layer geospaital functions.
GRASS has a well developed library of raster functions that can quickly compute area, volume, energy influx, and common geostatistical metrics that even includes normalization of data, such as for adjusting for cloud coverage in your data. Other functionality includes incorporating feature calculations in the 2.5D raster model that GRASS uses, setting up rules for surface features to be included, or not, in surface elevation models. It even has built-in modeling features such as a groundwater model that can be directly linked in analysis.
One problem for traditional GIS tools is importing too much data, particularly raster data, which could not only significantly slow your system down but also lead to it crashing. To get around this problem, GRASS enables users to register raster data and use them as needed, minimizing performance penalties. Sensitive to data demands, GRASS can import, for instance, Shuttle Radar Topography Mission (SRTM) elevation data for the entire Earth in a single view, but the data are condensed using a data reduction tool allowing visualization of 250 gigabytes of data on a normal desktop within having anywhere near the required memory requirements.
GRASS is also setup to talk to remote servers for raster and vector data, including Web Map Service (WMS) and Web Feature Service (WFS) servers. Additionally, the tool uses OGR between the topological GRASS engine and other non-topological engines and connects to database tools such as PostGIS. For displaying feature data, GRASS allows visualization of information, using tools such as GRASS monitors. Other powerful visualization tools, such as Matplotlib, Octave, R, and other tools can be incorporated by exporting information to aid with data visualization if required.
About one-third of GRASS is written in Python; however, the tool can integrate and apply other languages and scripts for users, including Shell scripts, C, C++, Octave, and PHP. GRASS applies a parser that enables command flags to not only be parsed but it is flexible to how commands are given, not requiring a given order. The parser can generate output and even description for scripts provided. Another feature enables GRASS to integrate Actina, which allows Shell or Python scripts to be converted to JSON packets. This allows GRASS to provide users different scripts in varied languages that can be exported.
In the future, GRASS continues to improve its graphical interface so that users can use the tool as a standalone feature while also getting access to its powerful back-end capabilities. While GRASS has had a loyal following in academia, it is also an important tool in the business world. Its continued support and integration in other tools, while having stand-alone raster and vector capabilities, likely means we will continue to see GRASS maintain its place as an important GIS tool for years to come.
 For more on the GRASS initiative and its benefits from a recent MapScaping podcast, see: https://mapscaping.com/blogs/the-mapscaping-podcast/grass-gis-probably-doesn-t-get-the-attention-it-deserves.