State of GRASS GIS:
The Dawn of a New Era

Vaclav (Vashek) Petras*
& Veronica Andreo, Martin Landa, Anna Petrasova, Guido Riembauer, Maris Nartiss, Moritz Lennert, Markus Metz, Stefan Blumentrath, Huidae Cho, Markus Neteler

* NCSU GeoForAll Lab at the Center for Geospatial Analytics
NC State University

FOSS4G 2021 Buenos Aires

wenzeslaus.github.io/grass-gis-talks

Vaclav (Vashek) Petras

  • Geospatial Research Software Engineer at North Carolina State University
  • BS & MS in Geoinformatics, Czech Technical University in Prague
  • PhD in Geospatial Analytics, NC State
  • GRASS GIS Development Team Member
  • GRASS GIS Project Steering Committee Member
  • Open Source Geospatial Foundation Charter Member

Community

  • Open community of users and developers
  • Contributors to code, documentation, translations, …
  • Project Steering Committee
  • PSC Chair: VerĂ³nica Andreo (since February 2021)

Credit goes to the whole community, not just this talk's authors.

Support


GRASS GIS logo

General Features

Scientific Foundations



Innovation with Stability

Improvements bring need for changes, but breaking changes are introduced only when needed, for example:
  • Graphical user interface changes as needed.
  • Python API added in v6 taking the leading position from Bash, matured in v7, additions planned for 8.2.
  • Basic things continue to work in the same way, for example:

Raster algebra expression from 2002 (v5) works in 2021 (v8):

depressions = if(elevation - fill < 0, 1, 0)

Only the best practice on how you write spaces around an equal sign changed.

All-in-one Software Suite

  • All matured tools available right away.
  • Download of experimental tools possible.
  • Network analysis, hydrology, OBIA, time series, …

GRASS GIS 8

  • Roadmap:
    • 7.8.6 Fall 2021
      • Old but still good.
    • 8.0.0 Fall 2021
      • First release in the new era.
    • 8.0.1 Winter 2021
      • What did we miss?
    • 8.2.0 Spring 2022
      • Enjoy the GSoC 2021 results!

New Era

Improved First-time User Experience

Initial project sets up automatically and suggestions for next steps are provided.

by Linda Kladivova & rest of the community (many reviews, video calls, user surveys, …)

No Startup Screen

Single-Window GUI

Ongoing code refactoring to enable a single-window GUI with dockable widgets.

Opt-in preview coming in 8.2.

See talk I hated the way GRASS started so I changed it. 2021-09-30, 08:00

by Linda Kladivova

Centralized Data Management

All data manipulation centered around revamped Data tab.

by Linda Kladivova, Anna Petrasova, Vaclav Petras

Dark Theme Support

Interface respects system dark theme.

by Anna Petrasova, Nicklas Larsson

GitHub-centered Software Development

  • Git
  • PRs
  • Issues
  • GitHub Actions

Improved and Robust Code Quality Checks

  • Python code formatted by Black.
  • Python code checked against Flake8.
  • Most of warnings in C code removed and now checked.
  • Code tested with CodeQL.

by Nicklas Larsson, Vaclav Petras, Anna Petrasova, Carmen Tawalika, ...

Docker Containers


  • Different flavours (add or suggest more!)
  • Built and updated automatically

actinia

See talk News from actinia (2021-09-30, 09:30)

by Markus Neteler, Carmen Tawalika, Anika Weinmann, …

Improved HPC Readiness

by Vaclav Petras, Markus Neteler, Nicklas Larsson, …

Grassy the Hungry Cow

         -----------------------------------
        | I'm always hungry for more GRASS! |
         -----------------------------------
                \   ^__^
                 \  (oo)\_______
                    (__)\       )\/\
                        ||----w |
        _\|/__\|/__\|/_ ||     ||  _\|/__\|/_
    

Thanks to cowsay.

More Improvements

Lidar Data Import with PDAL

  • binning using any point dimension (including user defined ones, e.g., from PDAL filters)
  • point filtering by values in any dimension
  • support of 19 binning methods (including eigenvalues)

by Vaclav Petras and Maris Nartiss

Latest PROJ and GDAL

  • Support for PROJ >=6 added.
  • Support for GDAL >=3 added.
  • WKT2 can be used for CRS definitions.
  • High-accuracy coordinate transformations supported.

by Markus Metz

Skeletons and Centerlines

v.voronoi tool can now create area skeletons and centerlines.

by Markus Metz

Semantic Labels for Rasters

  • add a semantic label to any raster map (e.g., S2_1 or red)
  • image classification use sematic labels to identify bands
  • new portable signature files created as a result of training use it to identify bands
  • different scenes can then be classified if semantic labels are the same

by Maris Nartiss and Martin Landa

Faster External Data Links

r.external links (opens) external raster data (GeoTiffs, …) faster.
(2-5× faster, or almost no time for some workflows)

by Markus Metz

Great for workflows when only portion of the data is processed in GRASS GIS.

More to Come in 8.2

OpenMP parallelization

r.series, r.univar, r.neighbors, r.patch, r.resamp.interp, r.resamp.filter, r.mfilter, r.slope.aspect + benchmarking library

by Aaron Saw Min Sern (Google Summer of Code 2021)

Integration with Jupyter Notebooks

New Python library that simplifies the launch of GRASS GIS in Jupyter and the display of vector & raster data.

by Caitlin Haedrich (Google Summer of Code 2021)

Spatial Query of Projections

Select a CRS spatially on a map.

by Huidae Cho and Owen Smith

Much More by Broader Community

Valley Bottom Flatness Index

r.valley.bottom - Multi-resolution Valley Bottom Flatness (MrVBF)

by Helmut Kudrnovsky, Steven Pawley

Hydrologic Parameters Using a Flow Direction Raster

r.accumulate - weighted flow accumulation, subwatersheds, stream networks, and longest flow paths using a flow direction

See Physically-Based Hydrologic Modeling Using GRASS GIS (FOSS4G 2021 workshop, material)

by Huidae Cho

Weighted layers for dasymetric mapping

r.area.createweight - Weighting layer for dasymetric mapping using a random forest regression model.

See talk A tool for machine learning based dasymetric mapping approaches in GRASS GIS. (2021-09-30, 08:00)

by Charlotte Flasse, Tais Grippa, Safa Fennia

Sentinel, THREDDS, …, netCDF

Automated download and import of common datasets i.sentinel, i.modis, i.landsat, r.in.usgs, r.in.nasadem, m.crawl.thredds, t.rast.import.netcdf, …

See talks Sentinel processing in GRASS GIS: A growing toolset for downloading, preprocessing and multitemporal analysis of Copernicus Sentinel data (2021-10-01, 08:00) and Cold war reconnaissance imagery reloaded: orthorectifying the 1960s in high resolution (2021-09-29, 11:00)

by Fondazione Edmund Mach, OpenGeoLabs, mundialis GSoC, NC State University, CONICET, Norwegian Institute for Nature Research,

FUTURES

r.futures - set of tools for urban growth modeling

by NC State Center for Geospatial Analytics

PoPS

r.pops.spread - Pest or Pathogen Spread simulation

by NC State Center for Geospatial Analytics

Tangible Landscape

Geospatial tangible user interface

by NC State Center for Geospatial Analytics

Resources

Get involved!

Code contributions

GRASS GIS development is GitHub-centered:
core, addons, website

Other contributions are relevant too!

  • Translation: Use Transifex.
  • Documentation: Fix typos in manual pages, add examples, write wiki tutorials, …
  • Post material to GRASS social media.
  • Write a blog post for GRASS website.
  • Bring your own ideas!

Sponsoring

  • Money and employee time donations are very important for GRASS GIS development. You can:
    • organize or finance community sprints
    • contribute to infrastucture needs (e.g., website)
    • pay developers to implement new features and fix specific bugs
  • New: opencollective.com/grass

Community Sprint

Meet the GRASS team at the FOSS4G 2021 Community Sprint!
Saturday, October 2nd, 2021

GRASS GIS logo

grass.osgeo.org

Twitter: vaclavpetras
LinkedIn: Vaclav Petras

wenzeslaus.github.io/grass-gis-talks