Vaclav (Vashek) Petras is a research software engineer, open source developer, and open science advocate. He received his masters in Geoinformatics from the Czech Technical University and PhD in Geospatial Analytics from the North Carolina State University. Vaclav is a member of the GRASS GIS Development Team and Project Steering Committee.
The message is not surprising: You should quality check your code, too, even if you are writing a small script for your own needs! However, maybe you wondered if all the warning messages are relevant to you or got discouraged after getting a flood of messages from tools like Pylint. Perhaps you were even annoyed by it. This talk will help you get motivated and get started and how to automate that with continuous integration tools such as GitHub Actions.
In this talk, I will share my experience with adding various code and non-code checks to GRASS GIS which is primarily written in C, C++, and Python. Checking a mixed code base with over 30 years of development is not easy, but not impossible. The talk will cover code quality measures in GRASS GIS such as tests, Pylint, Black, GCC, CodeQL, and Super-Linter and how this compares to my experience with new and small organizational repositories.
Although GRASS GIS has been used for big data processing for a while now, you may think that some esoteric knowledge is needed to take full advantage of its computational power. The purpose of this talk is to demonstrate simple ways to parallelize your computations in GRASS GIS, that are applicable whether you are working on your laptop or HPC. I will give an overview of the state of parallelization of individual tools, show benchmarks, and introduce you to other GRASS GIS parallelization tricks. I will use examples relevant to land change modeling and share our experience with simulating urban growth at 30m pixel across the contiguous United States (16 billion cells) using FUTURES simulation implemented in r.futures addon. This talk is for all levels of expertise, although basic Python or GRASS GIS knowledge will be advantageous.
GRASS GIS is a well established, all-in-one geospatial number cruncher with Python interface, command line, and GUI, with new major version 8.0 released in spring 2022.
FUTURES is an open source urban growth model specifically designed to capture the spatial structure of development. It can accommodate the input of a variety of datasets with different spatial extents and can be coupled to other models. FUTURES is implemented in r.futures GRASS GIS addon.
Although integration of GRASS GIS with Python has been well supported for several years, using GRASS with computational notebooks such as Jupyter Notebooks was inconvenient up until recently. Computational notebooks allow users to share live code with in-line visualizations and narrative text, making them a powerful interactive teaching and collaboration tool for geospatial analytics. In this talk, we’ll introduce a new GRASS GIS package, grass.jupyter, that enhances the existing GRASS Python API to allow Jupyter Notebook users to easily manage GRASS data, visualize data including spatio-temporal datasets and 3D visualizations, and explore vector attributes with Pandas. We’ll demonstrate how to create interactive maps through integration with folium, a leaflet library for Python, and we’ll look at an example use case: using notebooks to teach an advanced geospatial modeling course for graduate students at NC State University.
Grass.jupyter is still under active development but is available experimentally in GRASS version 8.0 and officially with GRASS version 8.2.
The new GRASS GIS version 8.2 is a special edition including all new features developed during Google Summer of Code 2021. One of the enhancements is the parallelization of several raster modules by means of OpenMP, an implementation of multithreading to speed up massive data processing. Another exciting new feature is much improved, the Jupyter notebook support. Here, a new python package (grass.jupyter) is available which allows to interactively visualise maps and time series given the integration with folium.
The graphical user interface in version 8.0 introduced faster and more streamlined startup without a need for a welcome screen. For even more convenience, version 8.2 adds an experimental single window layout with familiar look-and-feel.
Related to raster data, a new metadata class called semantic labels can now be added to raster maps. Examples of semantic labels are aerial or satellite spectral bands, dataset names in remote sensing products (ndvi, evi, lst, etc), or any custom names.
At community level, we have developed a student grant program and, thanks to the move to GitHub, we have welcomed numerous new contributors.