Vaclav (Vashek) Petras
- Geospatial Research Software Engineer at NC State
- BS & MS in Geoinformatics, Czech Technical University in Prague, Czechia
- PhD in Geospatial Analytics, NC State
- GRASS GIS: Development Team, Project Steering Committee
- OSGeo: Charter Member
Community
-
Open community of users and contributors
- Affiliations: industry, academia, government
- Contributions: code, documentation, free support, …
-
Project Steering Committee
- PSC Chair: VerĂ³nica Andreo (since February 2021)
Credit goes to the whole community, not just this talk's author.
General Features
- Open-source and directly user-driven development
-
Processing tools:
400+ in core,
400+ addons
- Interfaces: graphical, command line, Python, C
- 3rd party interfaces: actinia (REST API), R, QGIS, OGC WPS
- Innovation with Stability & All-in-one Software Suite
Long-term Benefits
-
Individuals:
- Emphasis on backwards compatibility.
- Old commands, often work in new versions with minimal changes.
- Employer-independent.
- Learn once, use forever.
-
Organizations:
- No usage license fees.
- Provider-independent, contractor-independent.
- Financial investments go to a public pool.
Roadmap
-
7.8.7, Feb 23, 2022
Stability and fixes.
-
8.0.0, Feb 21, 2022
New startup, data management.
-
8.0.2, May 12, 2022
Stability and fixes.
-
8.2.0 Release Candidate 2, May 24, 2022
Available for testing.
-
8.2.0, June 2022
Jupyter, parallel r.neighbors, …
major.minor.micro –
micro (x.y.z) brings fixes,
minor (x.y) brings features,
major (x) brings features and possibly backward incompatible changes
Questions?
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
Centralized Data Management
All data manipulation centered around revamped Data tab.
by Linda Kladivova, Anna Petrasova, Vaclav Petras
Single-Window GUI
One window with optimized layout.
Opt-in preview in 8.2: Settings > Preferences > General
by Linda Kladivova
Integration with Jupyter Notebooks
- Notebooks: Mix of text, code, results, images, …
- Usage: Prototyping, reproducibility, tutorials, …
- Now in GRASS GIS: Python functions for easy integration
by Caitlin Haedrich
Integration with Jupyter Notebooks
Web map with base maps, zooming, customizations, …
tinyurl.com/grass-rc2
Semantic Labels for Rasters
-
attach a 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
by Maris Nartiss, Martin Landa, Markus Metz
Docker Containers
- Different flavours
- Built and updated automatically
- For all branches and tags
actinia
by Markus Neteler, Carmen Tawalika, Anika Weinmann, …
Questions?
Multi-threading with OpenMP
- More tasks done in parallel in the same tool
nprocs
specifies number of cores (processes, threads)
memory
specifies RAM in MB
- Performance section in documentation describes the behavior
r.series (OpenMP parallel)
Cell value is a function of the corresponding cells in the inputs.
by Aaron Saw Min Sern in 8.2
r.neighbors (OpenMP parallel)
Cell value is a function of the cells around it.
by Aaron Saw Min Sern in 8.2
r.mfilter (OpenMP parallel)
Cell value is a function of the cells around it.
by Aaron Saw Min Sern in 8.2
r.slope.aspect (OpenMP parallel)
Slope, aspect, and other derivatives of an elevation raster.
by Aaron Saw Min Sern in 8.2
r.patch (OpenMP parallel)
Mosaic multiple rasters into one.
by Aaron Saw Min Sern 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)
Faster External Data Links
-
r.external can link (open) external raster data faster.
- 2-5× faster computation of min & max
- almost no time if min & max in metadata
- almost no time if min & max are not needed later
- Great for workflows when only portion of the data is processed in GRASS GIS.
by Markus Metz
Improved HPC Readiness
by Vaclav Petras, Markus Neteler, Nicklas Larsson, …
Questions?
Science and Code
-
What algorithm
- references to related scientific papers
- references to papers associated with tools or libraries
-
What exact code
- source code, its history, and latest change
-
DOI record with a copy of the code for each release
→ transparency, reproducibility, provenance
Lidar Data Import with PDAL
- Binning & filtering using any point dimension (including user defined ones, e.g., from PDAL filters)
- Support for 19 binning methods
- Linux and macOS only. Help needed for Windows!
by Vaclav Petras and Maris Nartiss
Skeletons and Centerlines
v.voronoi tool can now create area skeletons and centerlines.
by Markus Metz
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, some even Pylint.
- Most of warnings in C code removed and now checked.
- Code tested with CodeQL.
by Nicklas Larsson, Vaclav Petras, Anna Petrasova, Carmen Tawalika, ...
Addons Repository
- Community-maintained tools (addons aka extensions, plugins)
- Separate from the main repository, but only one repository
- A repository with the source code, not just a registry
- Best of both worlds:
- Broader community of contributors, including one-time contributors
- Single repository maintained by the core community
Questions?
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
Visual Exposure to a Defined Source
r.viewshed.exposure - Weighted cumulative viewshed analysis defining visual exposure to a source
by Zofie Cimburova and Stefan Blumentrath
Weighted Layers for Dasymetric Mapping
r.area.createweight - Weighting layer for dasymetric mapping using a random forest regression model.
by Charlotte Flasse, Tais Grippa, Safa Fennia
Valley Bottom Flatness Index
r.valley.bottom - Multi-resolution Valley Bottom Flatness (MrVBF)
by Helmut Kudrnovsky, Steven Pawley
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, …
by
Fondazione Edmund Mach,
OpenGeoLabs,
mundialis
GSoC,
NC State University,
CONICET,
Norwegian Institute for Nature Research,
…
Resources
-
Documentation:
-
Tutorials (my three favorites):
-
Books:
- Open Source GIS: A GRASS GIS Approach (the classic)
- Tangible Modeling with Open Source GIS (use-case-based with additional flavors)
- Open Source Approaches to Spatial Data Handling (broader context)
Support
- Community support
- Commercial support
Sponsoring
- Individuals:
- Organizations:
- Time: employee time
- Money: pay developers (companies) to add features or fix bugs