State of GRASS GIS

Markus Neteler
& Verónica Andreo, Vaclav Petras, Anna Petrasova

GRASS GIS log

FOSS4G 2022 - Florence, Italy

neteler.github.io/grass-gis-talks/

About the presenter...


  • Co-founder and senior consultant at mundialis, Bonn (DE)
  • Pic of Markus Neteler
  • PhD in Geography, Univ. of Hannover
  • Years of researcher's life in Trento, Italy
  • Since 2016 in Bonn, Germany @ mundialis
  • Since 1997 active in the GRASS GIS project
  • Co-founder of OSGeo

https://www.mundialis.de/neteler/

For newcomers: which GRASS GIS?

  • GRASS GIS (Geographic Resources Analysis Support System), a FOSS suite used for geospatial data management and analysis, image processing, spatial modeling, and visualization.
  • Originally developed by the U.S. Army CERL for land management and environmental planning (1982-1995).
  • Founding member of OSGeo (2006)
  • 39 years of continuous geospatial development
GRASS GIS 39th birthday

All-in-one software suite

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

GRASS GIS hexagons

Roadmap

  • 7.8.7, Feb 2022 Stability and fixes.
  • 8.0.0, Feb 2022 New startup, data management.
  • 8.0.2, May 2022 Stability and fixes.
  • 8.2.0, June 2022 Jupyter, parallel r.neighbors, …
    • major.minor.micro – semantic versioning:
      • major (x) brings features and possibly backward incompatible changes
      • minor (x.y) brings features and fixes,
      • micro (x.y.z) brings fixes,
    GRASS GIS splash screen

Exciting new features in GRASS 8.2+

Integration of GRASS GIS and Jupyter Notebooks

Integration of results from Google Summer of Code 2021

GRASS GIS and Jupyter notebooks

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

by Caitlin Haedrich

Integration of GRASS GIS and Jupyter Notebooks

  • Notebooks: Mix of text, code, results, images, …
  • Usage: Prototyping, reproducibility, tutorials, …
  • Now in GRASS GIS: Python functions for easy integration
GRASS GIS and viewshed GRASS GIS and viewshed time series

tinyurl.com/grass-rc2 (run in Binder)

by Vaclav Petras, Anna Petrasova, Caitlin Haedrich

New! Semantic Labels for Rasters

  • assigning meaningful labels to raster maps (e.g., S2_1 or red)
    • image classification can use sematic labels to identify bands
    • different scenes can then be classified if semantic labels are the same
  • organize bands within one spatio-temporal dataset
  • signature files can be used for classification if band references match (raster values are semantically equal)

GRASS GIS and semantic labels

by Maris Nartiss, Martin Landa, Markus Metz

Fast LiDAR data import with PDAL

  • import of any point dimension (including user defined ones e.g. from PDAL filters)
  • support of 19 binning methods (including eigenvalues)
  • point filtering by values in any dimension
GRASS GIS and LiDAR 1GRASS GIS and LiDAR 2

by Vaclav Petras and Māris Nartišs

More parallelization in GRASS 8.2+

OpenMP parallelization

Integration of results from Google Summer of Code 2021

  • r.series
  • r.univar
  • r.neighbors
  • r.patch
  • r.resamp.interp
  • r.resamp.filter
  • r.mfilter
  • r.slope.aspect

      + benchmarking library

GRASS GIS and openMP

by Aaron Saw Min Sern and Anna Petrasova

Available in 8.2+

More parallel tools

  • Core tools: r.sun, v.surf.rst, r.sim.sediment, r.sim.water
  • Addons tools: r.sun.daily, r.in.usgs, r.mapcalc.tiled, t.rast.what.aggr, r.connectivity.corridors, r.viewshed.exposure, and 14 more
  • Parallelizing custom Python scripts:
    • GridModule (by tile)
    • multiprocessing, ParallelModuleQueue (by task)
GRASS GIS and Piemonte shaded elevation

A better GUI experience in GRASS 8.2+

Improved First-time User Experience

Old start of GRASS GIS 7 Old start of GRASS GIS 7 no more

Improved First-time User Experience

Initial project sets up automatically. Guidance provided for next steps.
GRASS GIS 8 welcome

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

Single-Window GUI

Integration of results from Google Summer of Code 2021

GRASS GIS and single window GUI

One GUI window with optimized layout with dockable widgets.

by Linda Kladivova

Available in 8.2+: Settings > Preferences > General

Code quality and automated releases

Improved and robust code quality checks: GitHub Actions

  • Python code formatted by Black.
  • Python code checked against Flake8.
  • Most of warnings in C code removed and now checked.
  • Code tested with CodeQL.
  • Flake8 and Black checks also for Addons.
GRASS GIS and code editing in VS Codium

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

Automated releases from GitHub


Turning git commit entries into a release page

  • log message parsing, categorization for the subsection
  • publishing of source code and auto-generated release notes
GRASS GIS and automated software releases

by Vaclav Petras (procedure support by Markus Neteler)

Selected addons contributed by the community


GRASS GIS code sprint 2018 in Bonn

Spatial Query of Projections

g.projpicker queries projections spatially using user-drawn geometries and set-theoretic logical operators. It requires ProjPicker.
GRASS GIS projection picker GUI

addon by Huidae Cho

Can you see that landslide??

r.survey allows to assess whether objects of certain size could be detected by an observer moving along roads or sitting on a flying object

GRASS GIS and r.survey

addon by Ivan Marchesini

Tap directly into FAIR data warehouses

GRASS GIS understands netCDF data that follows the CF-convention

  • m.crawl.thredds: Lists URLs for netCDF datasets on Thredds servers
  • t.rast.import.netcdf: Makes Spatio-temporal data in netCDF format directly available for analysis in GRASS STRDS (also without downloading)
GRASS GIS and netCDF registration

Enjoy data delivered right into your GRASS GIS database from e.g.: GRASS GIS and netCDF registration 2

by Stefan Blumentrath (Norwegian Institute for Nature Research - NINA)

Visual Exposure to a Defined Source

r.viewshed.exposure - Weighted cumulative viewshed analysis defining visual exposure to a source
GRASS GIS and viewshed exposure

addon by Zofie Cimburova and Stefan Blumentrath

Get involved! Your contribution is welcome!

GRASS GIS and Bonn fotowall

Code contributions


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

  • File bug reports or feature requests
  • All issues and PR's are publicly visible
  • Ask, comment, suggest also in Github Discussions
  • "Fork me on GitHub" and suggest changes or fix bugs via pull requests
  • Create your own addon! See this nice workshop for a guideline: How to write a Python tool for GRASS
GitHub logo

Other contributions are relevant too!

  • Translations: we use OSGeo Weblate
  • Documentation: start by fixing typos in manual pages, add examples where missing, create cool screenshots, write tutorials in the wiki, etc.
  • Contribute material for our social media
  • Write a blog post for our website
  • Bring your own ideas!

Sponsoring: how to...?

  • Individuals:
  • Organizations:
    • Time: employee time
    • Money: pay developers (companies) to add features or fix bugs
GRASS GIS and openCollective donations

"One of the greatest benefits of GRASS GIS is that its environments gives us a plethora of options for manipulating data and testing/designing our automation/workflow processes."

https://opencollective.com/grass

Student grants program: coding for money!


  • GRASS GIS offers a limited number of student grants.
  • These can include actual coding, bug fixing, or documentation and the creation of educational resources.
GRASS GIS student grants

https://grasswiki.osgeo.org/wiki/Student_Grants

Thanks for your attention!!


GRASS GIS logo

grass.osgeo.org

neteler.github.io/grass-gis-talks/foss4g2022.html


MarkusNeteler

Bonus material

Creating a Gabor filter bank

i.gabor creates directional filters for image segmentation using i.segment. It requires NumPy and SciPy.
GRASS GIS and Gabor filter 1 GRASS GIS and Gabor filter 2

addon by Owen Smith

Hydrologic Parameters Using a Flow Direction Raster

r.accumulate calculates weighted flow accumulation, subwatersheds, stream networks, and longest flow paths using a flow direction map.
GRASS GIS and flow accumulation

by Huidae Cho

Ecological applications

r.suitability.regions allows to identify suitable regions, e.g., for endangered species, starting from suitability maps.

GRASS GIS and eco-suitability

addon by Paulo van Breugel

More data: Sentinel, THREDDS, …, netCDF, CSV

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, …

GRASS GIS and NAIP 3D

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