Skip to content

GRASS GIS 8.0.0

Choose a tag to compare

@neteler neteler released this 21 Feb 20:16
· 96 commits to releasebranch_8_0 since this release
65675c8

Overview of changes

After more than 3 year of development the first stable release GRASS GIS 8.0.0 is available. Efforts have concentrated on making the user experience even better, providing many new useful additional functionalities to modules and further improving the graphical user interface.

Breaking news: new graphical user interface with entirely rewritten startup sequence!

grass_gis_8_first_time_user_world
New first time user startup and dark theme support

This re-establishes user experience compatibility with QGIS and other connected software packages.

The GRASS GIS 8.0.0 release provides more than 1,400 fixes and improvements with respect to the release 7.8.6.

With the introduction of the semantic label raster metadata class, the temporal database was modified to version 3. Hence, to be able to read and process GRASS 7.x space-time datasets, users will be prompted to run t.upgrade. If users want to read newly created space-time datasets back in GRASS 7.x, they can run t.downgrade.

Launching the software

The user experience of the graphical user interface has been completely rewritten: no more clumsy selection screens - just enter the menu system directly!

And on command line, GRASS GIS now starts versionless, i.e. as grass.

Downloads

New modules

  • g.download.location: moved to core, create grass.utils lib by @wenzeslaus in #1715
  • i.band.library - Prints available semantic label information used for multispectral data.
  • r.in.pdal: a PDAL based replacement of r.in.lidar by @marisn in #1200
  • r.object.geometry: move from addons by @petrasovaa in #1918
  • r.semantic.label - Manages semantic label information assigned to a single raster map or to a list of raster maps
  • t.upgrade: added from addons by @neteler in #1438) and by @landam #1468

Major module changes

  • db.in.ogr: Add gdal_config= and gdal_doo= by @HuidaeCho in #1425
  • g.extension: #3902 multiple metadata entries by @anikaweinmann in #138
  • g.extension: add branch option by @ninsbl in #1130
  • g.extension: add '-j' flag which generates JSON file containing the download URLs of the official Addons by @tmszi in #1009
  • g.extension: allow to install extensions from a fork of the official repo by @ninsbl in #1177
  • g.extension: change to python3 by @anikaweinmann in #83
  • g.extension: check if svn program is installed by @neteler in #1145
  • g.extension: distinguish between extensions and modules by @metzm in #582
  • g.extension: dont expand db modul class by @ninsbl in #424
  • g.extension: Fix installation from gitlab repositories by @tmszi in #683
  • g.extension: fix 'rate limit exceeded' http error during request json file (add-ons paths) from the official add-ons github server url by @tmszi in #1106
  • g.extension: get branch from version by @ninsbl in #1700
  • g.extension: improve way how to parse module name from makefile by @tmszi in #1142
  • g.extension: match module files on Windows by @ninsbl in #1565
  • g.extension: only warn when non-essential files are missing by @wenzeslaus in #164
  • g.extension: remove branch from Windows-function by @ninsbl in #1151
  • g.extension: workaround to use grass7 addon repo by @neteler in #1612
  • g.extension -i (compile), -d (download) flag by @tmszi in #496
  • g.extension -l ValueError by @landam in #1849
  • g.extension: fix link generation in multi-addon man page for addons by @tmszi in #2097
  • g.extension: remove build_platform (only 64bit provided on MS Windows) by @landam in #2102
  • g.extension test added by @petrasovaa in #1364
  • g.parser: Add G_OPT_M_NPROCS by @HuidaeCho in #1652
  • i.ortho.photo: Add optional correction for panorama cameras by @metzm in #401
  • i.tasscap: support for Worldview-2 added by @neteler in #186
  • r.colors: add offset and scale by @metzm in #954
  • r.external: add flag to read min/max from metadata by @metzm in #1856
  • r.external: read "nan" as nan by @metzm in #338
  • r.external: transfer_colormap added by @landam in #337
  • r.external: major speed-up by @metzm in #1305
  • r.geomorphon: add two more comparison modes by @infrastation in #1096
  • r.geomorphon: fix an out-of-bounds read w/multires by @infrastation in #995
  • r.geomorphon: fix landform category names by @infrastation in #1421
  • r.geomorphon: fix shape calculations by @infrastation in #1040
  • r.geomorphon: implement a new "one-off" mode by @infrastation in #1157
  • r.geomorphon: remove multires-specific code by @infrastation in #1570
  • r.geomorphon: separate input from output by @infrastation in #1052
  • r.grow.distance: add minimum and maximum distance options by @metzm in #1453
  • r.in.wms: gdal user:password support by @anikaweinmann in #196
  • r.in.wms: enable CreateOptions for GDAL driver by @neteler in #1558
  • r.neighbors: add option for exponential weighting by @ninsbl in #597
  • r.neighbors: add testsuite by @ninsbl in #729
  • r.random: Add -s flag, remove -i flag, redo interface by @wenzeslaus in #1054
  • r.univar: support large regions with more than 2 billion cells for extended stats by @metzm in #672
  • r.viewshed: limit viewshed horizontally by specifying two angles by @petrasovaa in #180
  • v.db.select: Add JSON output and add -e flag (escape newlines and backslashes) by @HuidaeCho in #476
  • v.db.select: Handle all formats through format option, add CSV by @wenzeslaus in #1121
  • v.distance: Linear matrix becomes default, new -s flag for square matrix [API change] by @mlennert in #601
  • v.neighbors: add aggegate statistics on attribute column [NEW FUNCTIONALITY] by @mlennert in #534
  • v.in.wfs: add options to set user and password by @anikaweinmann in #808
  • v.report: Add separator= option by @HuidaeCho in #1412
  • t.remove: new implementation of flags by @lucadelu in #1695
  • TGIS DB v3 backward compatible with v2 #1454

Minor module changes

  • db.describe: Remove unused tdesc by @HuidaeCho in #1426
  • db.in.ogr: single quotes to double quotes by @HuidaeCho in #1430
  • db.univar: Ignore rows with NULLs with -e by @wenzeslaus in #1341
  • db.univar: numerical instability can lead to bug in calculations of stdev, etc by @mlennert in #101
  • d.mon: fix get list of running monitors by @tmszi in #1902
  • d.legend: Fix position of units and background by @wenzeslaus in #1075
  • d.mon: Do not clear an existing output file on fatal error by @HuidaeCho in #1452
  • d.polar: fix launch module (py3) and write output EPS file by @tmszi in #1107
  • d.polar: test added by @neteler in #1108
  • d.rast.arrow: Fix negative drainage directions by @HuidaeCho in #777
  • d.rast.edit: fix launch wxGUI (py3/wxPy4) by @tmszi in #1085
  • m.proj: replace checks in code by parser rules by @wenzeslaus in #106
  • g.copy: Report failed copy using an error message by @wenzeslaus in #1086
  • g.extension: disable checking multi-addon addons metadata by @tmszi #2090
  • g.extension: fix make command on FreeBSD by @lbartoletti #2075
  • g.extension.all: fix reinstall multi-addons by @tmszi #2082
  • g.filename: Create dir in mapset only when asked by @wenzeslaus in #1687
  • g.gui.iclass: replace removed dist_point_to_segment() by @nilason in #645
  • g.gui.image2target: Fix wxPython Phoenix support by @nilason in #396
  • g.gui.psmap: fixes for Python3 by @petrasovaa in #133
  • g.gui.vdigit Snap selected lines/boundaries tool: Fix checking SnapLine function return value by @tmszi in #506
  • g.proj: fix reading input WKT by @metzm in #1582
  • g.proj: fix segfault when reading proj info from georef file by @petrasovaa in #599
  • g.region: Add more detail into error messages by @wenzeslaus in #1140
  • g.region: do not update WIND file when not needed by @petrasovaa in #1627
  • g.rename: avoid buffer overflow by @metzm in #1899
  • g.search.modules: without keywords, list all modules by @metzm in #989
  • g.version: Fix February print by @HuidaeCho in #366
  • i.group: fit long names to fancy file listing by @nilason in #1818
  • i.pansharpen: Fix encode string by @tmszi in #745
  • i.pansharpen: grass.decode stdout by @ninsbl in #416
  • i.vi: fix PVI formula #1985
  • i.vi: fix check input 'red' param arg by @tmszi in #1353
  • i.vi: fix the check for the existence of the 'redchan' variable by @tmszi in #1378
  • i.vi: red band not required and GUI section modified by @YannChemin in #179
  • i.vi: write out FCELL instead of DCELL by @neteler in #236
  • i.zc: avoid integer overflow by @metzm in #142
  • r.blend: Quote map names in r.mapcalc expressions. by @marisn in #277
  • r.clump: fix clumping of FCELL/DCELL maps with threshold=0 by @mmetz #1792
  • r.compress: Reversing logic to fix Failure Reporting by @Lucifergene in #1812
  • r.contour: fix an error message text by @infrastation in #1014
  • r.fillnulls to run in python 3 by @mwort in #85
  • r.grow: correctly handle shrinking of maps without NULL values by @marisn in #343
  • r.grow.distance: update module description with value raster by @griembauer in #983
  • r.import and v.import: Use PID and node for tmp location by @wenzeslaus in #653
  • r.import: do not reproject when projection matches (bug #547) by @petrasovaa in #659
  • r.import extent=region bug fix by @anikaweinmann in #404
  • r.import: fix calling r.import when use_temp_region is used by @petrasovaa in #676
  • r.import: pass extent to r.in.gdal by @mmacata in #291
  • r.import: use temp region for resolution=value by @wenzeslaus in #197
  • r.in.wms: replace broken URLs with alternative WMS by @neteler in #1635
  • r.in.wms: restore NASA GIBS by @agiudiceandrea in #1756
  • r.in.wms BaseCapabilitiesTree: Fix init ElementTree class by @tmszi in #651
  • r.in.wms: Fix Access window out of range in RasterIO() error (raster tile size) by @tmszi in #693
  • r.in.wms: message update by @jidanni in #613
  • r.in.wms: write string not bytes to capabilities file by @ninsbl in #195
  • r.kappa: better user msg; fix var by @neteler in #341
  • r.kappa: fix omission typo by @neteler in #433
  • r.kappa: maps[0] is the reference and maps[1] is the classified map by @mlennert in #290
  • r.mapcalc.simple: screenshot added by @neteler in #188
  • r.out.gdal / v.out.ogr: fix xy export by @metzm in #1564
  • r.pack/r.unpack: fix pack and unpack VRT raster map with tiled raster maps by @tmszi in #1074
  • r.pack/r.unpack: fix packing/unpacking vrt map if some of tiled rasters doesn't have color table by @tmszi in #1116
  • r.random.cells: treat distance as minimum distance by @mmetz #1797
  • r.region: Vect_get_map_box() requires level 2 by @HuidaeCho in #1404
  • r.report: add default units, change to full unit names by @petrasovaa in #1666
  • r.resamp*, v.surf.rst: more resampling keywords added by @neteler in #141
  • r.sim: dynamic allocation of walkers by @petrasovaa in #228
  • r.sim / simlib: use nstack only when walkers output needed by @petrasovaa in #332
  • r.sim.sediment: fix segfault, memory freeing was in wrong place by @petrasovaa in #1094
  • r.sim.water: NC SPM example and other modernizations by @wenzeslaus in #171
  • r.slope.aspect: fix -e flag to calculate values at edges by @metzm in #166
  • r.slope.aspect: Fix directions in comments by @HuidaeCho in #110
  • r.slope.aspect: fix title and color table for -n flag by @petrasovaa in #320
  • r.stats.zonal and v.vect.stats: Improve documentation and interface by @wenzeslaus in #1114
  • r.sun: allow user to set solar constant by @petrasovaa in #482
  • r.sun: fix copy paste error when using both lat and lon raster by @petrasovaa in #92
  • r.sun: Fix parallel computation by @aaronsms in #1514
  • r.terraflow: remove print "Free Memory" to stats file by @nilason in #1306
  • r.topidx: fix bug with steep slopes by @petrasovaa in #193
  • r.topidx: Rewrite Perl scripts in Python 3 by @HuidaeCho in #766
  • r.to.vect: break line when value changes by @byronbest in #113
  • r.unpack: sys.stdout.write() cannot print bytes; convert f.read() to str by @HuidaeCho in #577
  • r.watershed: Update the drainage figure by @HuidaeCho in #603
  • r3.out.vtk: replace 'void *' with 'RASTER3D_Map *' for clarity by @nilason in #1291
  • v.category: message fix by @jidanni in #618
  • v.colors: Fix color inversion by @HuidaeCho in #1478
  • v.colors: Implement rules from stdin by @HuidaeCho in #1389
  • v.colors: raster= with use=attr by @HuidaeCho in #1393
  • v.db.addtable: Overwrite newly created cat column (Fix #567) by @HuidaeCho in #571
  • v.db.droprow: remove randomness from testsuite to fix failing tests by @petrasovaa in #1824
  • v.db.droptable: check if map exists by @wenzeslaus in #107
  • v.db.join: Use case insensitive comparison for columns by @wenzeslaus in #1409
  • v.db.select: Run grass_indent.sh on the source by @wenzeslaus in #1138
  • v.db.update: Use case insensitive comparison for columns by @wenzeslaus in #1413
  • v.decimate: copy tables only when topology is available by @metzm in #331
  • v.digit: fix testing empty input by @petrasovaa in #469
  • v.distance: relax parser rules by @ninsbl in #2132
  • v.edit: Add credits for extend tools by @HuidaeCho in #446
  • v.generalize: remove_small is no longer available by @HuidaeCho in #473
  • v.hull: use standard C boolean type by @nilason in #1567
  • v.import: Add layer to the projection check by @wenzeslaus in #1328
  • v.import: Do not reproject if projections match by @marisn in #845
  • v.import: fix gfs file for GDAL version smaller 2.4.1 by GML import by @anikaweinmann in #386
  • v.in.ascii: include values into the message by @wenzeslaus in #104
  • v.in.ascii: user likely expectes number of rows used by @wenzeslaus in #108
  • v.info: fix printing UTM zone (#892) by @metzm in #977
  • v.in.ogr: fix usage of OGR_G_HasCurveGeometry() by @metzm in #267
  • v.in.pdal: cast enum value to int by @nilason in #1819
  • v.in.pdal: fix filtering by bbox by @petrasovaa in #359
  • v.in.pdal: remove obsolete PCL functionality by @marisn in #1907
  • v.kernel: add output raster history by @petrasovaa in #111
  • v.kernel: fix inconsistent msg by @neteler in #825
  • v.net: fix for Python 3 by @petrasovaa in #279
  • v.net.visibility: fix coordinates parameter by @agiudiceandrea in #1336
  • v.out.ogr: export datetime attributes as datetime by @metzm in #184
  • v.out.ogr: Remove a garbage character from warning by @HuidaeCho in #1886
  • v.patch: add details into error messages by @wenzeslaus in #103
  • v.patch: Fix line categories when building topology by @HuidaeCho in #374
  • v.patch: fix segmentation fault when DB table absent in one input map by @metzm in #1492
  • v.patch: match map to column (fixes 6616daa) by @wenzeslaus in #109
  • v.perturb: Require either explicit seed or generated seed by @wenzeslaus in #1661
  • v.random: finished test in reference to #704 by @SunveerSingh in #1464
  • v.random: Fix segfault as per bug #1024 by @marisn in #1025
  • v.rast.stats: fix NULL values for very small areas address by @ninsbl in #402
  • v.rast.stats: raise a warning when no categories found in raster map by @pesekon2 in #1258
  • v.report: Fix newline issue by @HuidaeCho in #477
  • v.surf.bspline: fix method selection by @neteler in #727
  • v.surf.idw: fix using potentially uninitialized ret value causing bogus warning by @petrasovaa in #1541
  • v.surf.idw: indent with indent script by @petrasovaa in #1540
  • v.surf.idw: less confusing error message by @neteler in #1332
  • v.to.db: Add --overwrite to help and GUI by @HuidaeCho in #807
  • v.to.db history support files by @HuidaeCho in #486
  • v.to.db: Require --overwrite flag to overwrite existing columns by @HuidaeCho in #487
  • v.to.db: Write history by @HuidaeCho in #481
  • v.to.rast ignore null entries of attribute values for use=attr by @metzm in #173
  • v.to.rast: fix where selection by @metzm in #259
  • v.to.rast: Print the correct option name by @HuidaeCho in #1351
  • v.unpack: sys.stdout.write() cannot print bytes; convert f.read() to str by @HuidaeCho in #577
  • v.vect.stats: Add current mapset in msg, fixes for doc by @wenzeslaus in #1137
  • v.what: Fix script outputs for -d (space after = or : instead of =) by @HuidaeCho in #1584
  • v.what.rast: fix writing of map history by @HuidaeCho in #584
  • v.what.rast: no features message wording, switched to be a warning by @landam in #1323
  • t.info: add list of band names by @metzm in #1862) and #285
  • t.info: clarify 'dataset not found' error message by @landam in #1473
  • t.list, t.rast.list: fix missing band_reference by @neteler in #206
  • t.rast.export: use CWD as crossplatform default directory by @ninsbl in #1817
  • t.register: strip newline from list of maps to avoid error by @petrasovaa in #1295
  • t.vect.algebra: modified html doc by @nobeeakon in #1089
  • t.vect.export: GPKG support added by @neteler in #129

GUI: Improvements in the Graphical User Interface

grass_gis_8_first_time_user_world
New first time user startup and dark theme support

Python scripting

Binder

You can try GRASS GIS with Binder online: Binder

Jupyter Notebooks

User Manuals - Documentation

Projection support

GDAL support

Database support

Library changes

Changes to software start

JSON / REST support

Code quality

Unit tests / CI

Portability

MS-Windows:

Mac:

FreeBSD:

Docker support

New: Docker images are now built for the 8.0 branch.

Docker:

Singularity:

Message Translations

Packaging

GitHub related

Restructuring of the GRASS GIS Addons repository

New Addons since GRASS 7.8.6

  • d.region.grid: Drapes a color raster over an shaded relief or aspect map.
  • v.greedycolors: Creates greedy colors for vector areas.
  • v.what.rast.label: Uploads raster values and labels to vector point layer.

Closed GitHub tickets since the last release

See https://github.com/OSGeo/grass/milestone/4?closed=1

New Contributors

(in alphabetical GitHub user name order)