List of new features in GRASS GIS 7.8
GRASS GIS 7.8 has been developed and maintained with a first 7.8.0 stable release in Sep. 2019. In total, it comes with more than 1650 fixes and improvements with respect to the previous stable releases 7.6.x. This page summarizes the manifold new features which have been added to GRASS 7.8.
Table of Contents
What's new in a nutshell
After more than 1 year of development the new stable release GRASS GIS 7.8 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: Python 3, PROJ 6 and GDAL 3 compatibility
This re-establishes compatibility with QGIS and other connected software packages.
Releases
- For more details than on this overview page, see list here:
- Release/7.8.8-News (6 Aug 2023) - last GRASS GIS 7.x release, continuation with GRASS GIS 8.x
- Release/7.8.7-News (23 Feb 2022)
- Release/7.8.6-News (10 Oct 2021)
- Release/7.8.5-News (21 Dec 2020)
- Release/7.8.4-News (5 Oct 2020)
- Release/7.8.3-News (5 May 2020)
- Release/7.8.2-News (11 Dec 2019)
- Release/7.8.1-News (9 Nov 2019)
- Release/7.8.0-News (6 Sep 2019)
- The 7.8 release development was officially moved to a dedicated release branch on Aug 4, 2019: https://github.com/OSGeo/grass/tree/releasebranch_7_8
Graphical User Interface
GRASS GIS 7.8 graphical user interface comes with many fixes for Python 3 and wxpython4.
Modules (commands)
A number of relevant improvements have been made (selected list; for details bugfixes see the more detailed individual release pages):
General modules
- G78:g.extension: fix -i (compile), -d (download) flag (PR:496)
- G78:g.extension: add branch option (PR:1130)
- G78:g.extension: add '-j' flag which generates JSON file containing the download URLs of the official Addons (PR:1009)
- G78:g.extension: fix get add-on module name on Win platform (PR:1143)
- G78:g.gui.gcp: fix crash when closing
- G78:g.gui.image2target: fix wxPython Phoenix support (PR:396)
- G78:g.gui.rlisetup: fix config file open mode for write in text mode
- G78:g.gui.vdigit: fix SnapLine function return value (PR:506)
- G78:g.search.modules: support for installed addons added
Raster modules
- G78:r.compress: ZLIB is no longer the default compression method but ZSTD compression
- G78:r.blend: Quote map names in r.mapcalc expressions. (PR:277)
- G78:r.external: read NaN as NaN (PR:338)
- G78:r.external: transfer colormap added (PR:337)
- G78:r.external major speed-up (PR:1305)
- G78:r.grow: Correctly handle shrinking of maps without NULL values (PR:343)
- G78:r.import: pass extent to r.in.gdal (PR:291)
- G78:r.import: Use temp region for resolution=value (PR:197)
- G78:r.kappa:
maps[0]
is the reference andmaps[1]
is the classified map (PR:290) - G78:r.mapcalc.simple: former r.mapcalculator as now as r.mapcalc.simple
- G78:r.pack/r.unpack: fix pack and unpack VRT raster map with tiled raster maps (PR:1074)
- G78:r.sim/simlib: dynamic allocation of walkers to enable computing for larger areas (PR:228)
- G78:r.sim: fix r.sim.sediment segfault, memory freeing was in wrong place (PR:1094)
- G78:r.slope.aspect: fix -e flag to calculate values at edges
- G78:r.sun: allow user to set solar constant (PR:482)
- G78:r.to.vect: break line when value changes
Vector modules
The following vector modules have been significantly improved with new options, flags, fixes and other enhancements:
- G78:v.db.addtable: Overwrite newly created cat column (PR:571)
- G78:v.digit: fix digitizing on MS Windows and Mac
- G78:v.decimate: copy tables only when topology is available
- G78:v.import: fix gfs file for GDAL version < 2.4.1 by GML import (PR:386)
- G78:v.in.pdal: use PDAL streaming instead of PointView
- G78:v.patch: automagic cleaning of boundaries if areas have been patched
- G78:v.overlay: speed-up for large, complex input areas
Imagery modules
- G78:i.pansharpen: updated i.pansharpen to handle pixel depths from 2-30 bits, and quashed some bugs
- G78:i.zc: avoid integer overflow with large maps
Temporal GIS modules
- G78:t.downgrade: downgrade a temporal DB from version 3 to 2 (PR:1449)
- G78:t.vect.export: GPKG support added
Graphical user interface
- wxGUI: numerous fixes for Python3 and wxpython4
- wxGUI Field calculator: fix wx.ListBox widget choices argument (PR:460)
- wxGUI: fix 3D rendering in animation tool (PR:293)
- wxGUI: fix Cartographic Composer Add graphic tool (Line/Rectangle), (PR:310)
- wxGUI: fix copy-to-clipboard key binding on macOS (PR:393)
- wxGUI: Fix dbmgr for Python3 (PR:344)
- wxGUI: Fix error message has appeared after close any module dialog (PR:249)
- wxGUI: fix failing vector digitizer on mac (PR:3487) (PR:456)
- wxGUI Fix import vector/raster dialog min width (PR:492)
- wxGUI fix manage color rules interactively (vector map) frame (PR:429)
- wxGUI fix set vector output format wx.Choice widget width (PR:453)
- wxGUI: Fix unable to open file from python editor (PR:288)
- wxGUI: fix WMS (PR:242)
- G78:g.gui.vdigit: fix update available vector maps
- G78:g.gui.psmap: various fixes
- wxGUI Graphical Modeler About Dialog: fix import (PR:438)
- wxGUI Graphical Modeler: remove py2 unicode func (PR:441)
- wxGUI Histogramming Tool: fix Plot xSpec, ySpec property value (PR:422)
- wxGUI Layer Manager: fix add layer into the new empty group (PR:413)
- wxGUI Layer Manager: fix add vector map layer Set color table interactively
- wxGUI Layer Manager: fix close Layers Display FlatNotebook page (PR:411)
- wxGUI Manage color rules interactively (vector map)
- wxGUI mapwin: fix Pointer tool double left click on a map canvas (PR:529)
- wxGUI preferences: fix load epsg codes (PR:545)
- wxGUI Raster Digitizer: fix use input raster map layer region (PR:470)
- wxGUI: removing map layer crashes wxGUI (PR:3607)
- wxGUI Set vector output format: fix check native format dsn (PR:450)
- wxGUI Set vector output format: fix load profile settings (PR:451)
- wxGUI: several fixes related to font dialog (PR:292)
- wxGUI: Show line numbers in the Python editor (pyedit and gmodeler) (PR:284)
- wxGUI Vector Network Analysis Tool: fix close dialog (PR:419)
- wxGUI Vector Network Analysis Tool: fix ComboBox widget deprecation warning (PR:418)
- wxGUI Vector Network Analysis Tool: fix destroy open dialog (PR:432)
- wxGUI Vector Network Analysis Tool: fix execute analysis (PR:440)
- wxGUI Vector Network Analysis Tool: fix merge dicts (PR:417)
- wxGUI: wxnviz: fix for HiDPI monitors with scaling set, fix decoding (PR:307)
- wxGUI: fix wxPython 4.1 support (PR:1161)
Scripting
Major efforts have been taken to port all Python scripts to Python 3.
Database support
- PostgreSQL driver: assign 1000 to TEXT field length (PR:412)
Python 3 support
- The deprecated shebang
#!/usr/bin/env python
has been changed to#!/usr/bin/env python3
- numerous stability fixes regarding the Python 3 support
User Manuals - Documentation
Translations
Translations are managed in Transifex (please join and translate messages): https://www.transifex.com/grass-gis/grass7
User manual pages improvements
- numerous user manual pages have received major or minor improvements
- manual: put module name at first position (PR:248)
- full index manual: add missing pages (PR:258)
- Add CONTRIBUTING file with a standard contributor Git how-to (PR:237)
- manuals and docs: update broken URLS (PR:1003)
- mkhtml: enable path setting for footer html pages (topics.html...) on add-on manual page (PR:1122)
GRASS GIS 7 Library changes
- libsegment: the all-in-memory cache has been improved
- Vectlib: fix usage of vector cats in constraint (PR:262)
- Vector network lib: fix for Python 3 (PR:279)
- gisinit: re-enable the version check
PROJ support
In addition to PROJ 4 and PROJ 5 now also PROJ 6 compatibility implemented.
- PROJ6+ / WKT2 support (PR:1240)
- convert lowercase epsg to uppercase EPSG
- axis order of a CRS is no longer always easting, northing, it can also be northing, easting, e.g. EPSG:4326. If source and target CRS are available, axis order is adjusted using proj_normalize_for_visualization() to easting, northing if needed.
- previously, GRASS GIS did conversions of degress to/from radians and meters from/to map units. Now PROJ6+ might do these conversions itself, or not. GRASS GIS is now doing the conversions only if needed.
- in PROJ6+, there can be several different operations to transform coordinates from one CRS to another CRS. If more than one operation is available, information is provided about these different operations. The current region is used by PROJ to select an appropriate operation.
- libproj: fix crs modification with PROJ6+ (PR:1007)
- libproj: fix test for PJ_TYPE_BOUND_CRS (PR:1013)
GDAL support
- GDAL 3 compatibility added.
- GDAL 3.3.0 introduces the use of standard C bool type, compatibility added (PR:1567)
Source Code Portability
- Python-3 support implemented across the tree
- FreeBSD: add soname (PR:301)
- Mac: Ctypes related compilation failure fix #3883
- Mac: Vector digitizer crash fix #3487
- Mac: G78:g.gui.iclass crash fix #3472
- Mac: Removing map layer from button in layer manager crashes GUI #3607
- Mac: Copy-to-clipboard key binding (make CMD+C copy, not clear panel) #3008 and #3592
- Mac: G78:v.in.pdal compilation failure fix (PR:475)
- OSGeo4W: build fixes, rewrite of package.sh, GDAL3/PROJ6 support added
Unit tests / CI
- (GitHub Actions activated in master: https://github.com/OSGeo/grass/actions)
JSON / REST support
- json parser: change + to @ for URLs: Since
+
is used in algebraic expressions, this char is unsuitable for the indication of external URL resourcs as used by the importer of actinia (https://github.com/mundialis/actinia_core/)
Docker support
- Various docker images listed at: https://grass.osgeo.org/download/software/docker-images/
- Alpine docker image: introduce docker multistage builds (PR:276)
- Alpine docker image: work with py3.8 (PR:278)
- Alpine docker image: use proj 6.2.1 in Alpine Dockerfile (PR:255)
- Alpine docker image: added subversion package for g.extension (PR:261)
- switch to Alpine 3.11 and compiled PDAL as being removed from Alpine repo (PR:399)
- Ubuntu docker: image with Ubuntu 20.04
- added Singularity file
GRASS GIS 7.8 Addons
There are numerous new addons which enlarge the already impressive list of addons available (see http://grass.osgeo.org/grass7/manuals/addons/):
- G7A:i.landsat toolset: G7A:i.landsat.download, G7A:i.landsat.import, G7A:i.landsat.qc
- G7A:i.sar.speckle - Remove speckle from SAR image
- G7A:m.csv.clean: Cleaning of CSV files
- G7A:r.bearing.distance: Find the bearing and/or straight-line distance from all non-null cells to the specified point.
- G7A:r.centroids: Creates vector map of centroids from raster of "clumps".
- G7A:r.extract: Extracts specified categories of an integer input map.
- G7A:r.fill.category - Replaces the values of pixels of a given category with values of the surrounding pixels
- G7A:r.in.ogc, G7A:r.in.ogc.coverages: OGC API support
- G7A:r.mapcalc.tiled - Runs r.mapcalc in parallel over tiles
- G7A:r.object.thickness - Evaluates minimum, maximum and mean thickness of objects of a given category on a raster map
- G7A:r.out.kde - Exports raster with variable transparency into an image file
- G7A:r.out.legend - Create an image file showing the legend of a raster map
- G7A:r.random.weight - Generates a binary raster layer with a random selection of raster cells depending on the weight of each cell in the input weight layer.
- G7A:r.sample.category - Create sampling points from each category in a raster map
- G7A:r.series.diversity - Compute diversity indici over input layers
- G7A:r.skyline: Compute the skyline index and / or find the horizon cells in a raster viewshed.
- G7A:r.slope.direction - Calculates slope following a direction raster
- G7A:r.zonal.classes - Calculates zonal classes proportion describing raster areas's composition, e.g., in terms of land-cover classes
- G7A:v.in.csv: Easy import of CSV as vector points
- G7A:v.in.ogc, G7A:v.in.ogc.coverages: OGC API support
- G7A:v.percolate: Continuum percolation analysis
Migrating from GRASS GIS 6 to version 7.x
If you are still using GRASS GIS 6, here details upgrade instructions for own scripts: