NCSU GeoForAll Lab
at the
Center for Geospatial Analytics
NC State University
NC GIS 2025, March 19-21, 2025
Supervised classification with Support Vector Machines
v.fill.holes: Fill holes in areas by keeping only outer boundaries
r.horizon: Output for multiple points, distances, and many other improvements
(format="json")
in multiple tools (v.db.select, t.rast.list, …)
v.db.select roadsmajor format=json
With better integration in Python:
import json
import grass.script as gs
data = gs.parse_command("v.db.select", map="roadsmajor", format="json")
for row in data["records"]:
print(row["ROAD_NAME"])
More coming in 8.5 (r.report, r.info, …)
by Anna Petrasova, Vaclav Petras, Huidae Cho, Kriti Birda, Corey White, and othersThe Python API, command line, and GUI are now using project instead of location for the main component of the data hierarchy.
.../data/missouri
(location → project)
interstate_44
(mapset aka sub-project)
import grass.script as gs
gs.create_project("/path/to/project", epsg="3358")
.../data/missouri
(project)
interstate_44
(mapset)
grass.script
Python package:
Greatly simplified the creation of new projects in Python without a running session (no more chicken and egg problems)
import grass.script as gs
gs.create_project("cordoba_utm21s", epsg="32721")
gs.setup.init("cordoba_utm21s")
by Vaclav Petras, funded by NSF Award #2322073, granted to Natrx, Inc.
--tmp-project
with --exec
--tmp-location
is now --tmp-project
grass --tmp-project EPSG:3358 --exec \
r.viewshed input=elevation \
output=viewshed coordinates=642964,222890
--tmp-location
continues to work
Code from 2002 running in 2019?
version 5.0 code works as is in 7.6:r.mapcalc depr.bin="if((elev - fill)< 0., 1, 0)"
although there is a better way to write it:
r.mapcalc "depr_bin = if((elev - fill) < 0., 1, 0)"
grass.jupyter
Python package:
grass.jupyter.SeriesMap
class for animating series of vectors or rasters
(temporal animations already available)
s = gj.SeriesMap(height = 500)
s.add_rasters(["elevation_shade", "geology", "soils"])
s.add_vectors(["streams", "streets", "viewpoints"])
s.d_barscale()
s.show()
m = InteractiveMap(map_backend="ipyleaflet")
m.add_vector("streams")
m.add_raster("elevation")
m.show()
by Caitlin Haedrich, Riya Saxena, Anna Petrasova
r.windfetch – distance which winds blow without obstruction
by Anna Petrasova, funded by NSF Award #2322073, granted to Natrx, Inc.
download, import, preprocessing, cloud detection, and masking of remote sensing data with EODAG (Earth Observation Data Access Gateway)
by Hamed A. Elgizery, Veronica Andreo, Stefan Blumentrath
D = if(start_date(A) < "2005-01-01", A + B)
Sum maps from A with maps with equal time stamps from B which are temporally before Jan 1, 2005
by Thomas Leppelt and Soeren Gebbert
by Anna Petrasova
i.superpixels.slic - image segmentation using SLIC superpixels
by Rashad Kanavath and Markus Metz
by Huidae Cho
v.clean – automated topology with outputs for additional checks
by Markus Metz, Radim Blazek, and others
r.futures - set of tools for urban growth modeling
by NC State Center for Geospatial Analytics
Just launched: grass-tutorials.osgeo.org
lead by the NC State Center for Geospatial Analytics
lead by the NC State Center for Geospatial Analytics
or search for "grass project shop" on Redbubble
lead by the NC State Center for Geospatial Analytics
Since GRASS is doing more in geospatial than just GIS, we are re-adopting GRASS instead of GRASS GIS.
GRASS
Lead by the NC State Center for Geospatial Analytics
& Approved by the Project Steering Committee in February
In a testing phase and under the Project Steering Committee approval process
lead by the NC State Center for Geospatial Analytics
lead by the NC State Center for Geospatial Analytics
vpetras@ncsu.edu, LinkedIn: Vaclav Petras, @wenzeslaus
wenzeslaus.github.io/grass-talks
This talk was funded by the US National Science Foundation (NSF), award 2303651.