wiki:Grass7/NewFeatures76

List of new features in GRASS GIS 7.6

NOTE: this page is a living document to keeping track of new features that come with GRASS GIS 7.6.0+

GRASS GIS 7.6 is actively developed and maintained with a first major 7.6.0 stable release in January 2019. In total, it comes with more than 1100 fixes and improvements with respect to the previous stable releases 7.4.x. This page summarizes the manifold new features which have been added to GRASS 7.6.

What's new in a nutshell

After almost 1 year of development the new stable release GRASS GIS 7.6 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. Furthermore, ZSTD has been added a new raster compression method which is an improvement over ZLIB's deflate method, providing both faster and higher compression than ZLIB. Also a new raster map type has been added: GRASS virtual raster (VRT) which is a virtual mosaic of the list of input raster maps. In addition, support for PROJ v. 5 has been implemented. For details, see below.

Releases

Graphical User Interface

GRASS GIS 7.6 graphical user interface now displays the computational region extent by default in the Map Display window. This simple new feature allows to always visualize such an important basic concept in GRASS GIS and makes it a lot easier for newcomers. Moreover, a new widget has been implemented for commands including an SQL WHERE parameter to ease selection of features/data.

Show region extent in Map Display
Computational region extent

Many fixes were aimed to enhance compatibility with wxPython 4. The data catalog, the graphical modeler and the startup have also received many improvements in this new major GRASS GIS release.

Modules (commands)

A series of new modules has been added and many improved as outlined below.

General modules

The core G7:g.region module comes with a new grow option that allows to increase or decrease by a certain number of pixels the region extent in all directions.

Raster modules

This new GRASS GIS release comes with 3 new dedicated raster modules. The first one, G76:r.path, can be used to trace paths from different starting points following input directions, such as the outputs of G76:r.cost, G76:r.walk or G76:r.watershed, among others. The second one, G76:r.buildvrt, provides the very useful functionality of creating virtual raster (VRT) mosaics from a list of input raster maps. This is very useful when the original data are available in tiles which can now be virtually mosaiked to a single map without overhead for easier analysis. G76:r.buildvrt hence allows processing big areas while avoiding the creation of physical maps, especially useful when space is limited. ​Finally, there is now G76:r.mapcalc.simple, a tool to calculate a new raster map from a simple r.mapcalc expression.

r.path example
G7:r.path usage: drainage paths from two points

Several other raster modules have been improved with new options or flags:

  • G76:r.proj offers a new pipeline option for high-accuracy re-projection provided by PROJ v. 5
  • G76:r.info recognizes different types of raster maps, i.e., "raster" (GRASS native), "reclass" (reclassification of another raster map), "GDAL-link" (GRASS link to a GDAL raster band), "virtual" (virtual mosaic of raster maps)
  • G76:r.mapcalc comes with new functions floor() and ceil()
  • G76:r.slope.aspect has a new -n flag to create aspect as degrees clockwise from North (azimuth) and a new -e flag to compute values at edges
  • G76:r.in.srtm now also supports the import of SRTM Water Body Data products (SWBD)
  • G76:r.random has a new seed option to set the seed of the RNG, making it possible to reproduce the same random pixels in different runs
  • G76:r.cost has a new solver option to control which direction is used in case of multiple directions with equal costs
  • G76:r.colors includes inferno, magma and plasma color tables as well as a new flag -d to list available rules with description (e.g. "srtm: color palette for Shuttle Radar Topography Mission elevation [range: -11000 to 8850]")
r.mapcalc.simple example 1 r.mapcalc.simple example 2
Example of simple expression Option setting in G7:r.mapcalc.simple

Many raster modules use the new GRASS GIS API for coordinate transformation and are also ready to use PROJ v5 API if available (See Library changes section below). This was a significant improvement and a great effort implemented during the OSGeo Code Sprint 2018 in Bonn.

Vector modules

Several vector modules have been significantly improved with new options, flags, fixes and other enhancements. Here are the most significant ones:

  • G7:v.proj comes now with a new pipeline option for high-accuracy re-projection provided by PROJ v. 5
  • G7:v.in.ogr now also converts OpenStreetMap line topology to GRASS GIS topology, inserting nodes where appropriate (further details can be found in this dedicated wiki page OSM vs GRASS topology)
  • G7:v.extract can now dissolve areas not only by category number, but also by attributes, while preserving category values and attribute tables. This is a significant improvement over G76:v.dissolve
  • G76:v.overlay has been improved significantly to speedup large and complex input areas processing
  • G76:v.rast.stats now also reports the number of NULL cells and it has a new 'where' option. In addition, multiple raster maps can now be passed as input to the module to collect statistics
  • G76:v.to.rast now also supports conversion of centroids
  • G76:v.buffer now offers to also build squared buffers around points when the -s flag is set
example of squared buffers
Squared buffers with G7:v.buffer

Imagery modules

Various imagery modules received fixes and enhancements. A lot of work has been put into G76:i.atcorr to fix numerical instability in the 6S method for atmospheric correction. The module now also supports PlanetScope 0c-0d, 0e, and 0f-10 images. A detailed example to process Copernicus Sentinel 2 bands was added to the manual page to make it easier to use for newcomers. G76:i.segment was improved as well for memory management estimation and avoidance of integer overflow when processing extremely large regions. The writing out of goodness of fit and segment ids was also fixed.

Temporal GIS modules

The most important change in the temporal modules was the long awaited suffix option in G7:t.rast.algebra. This allows to get time and granularity based raster map names out of G76:t.rast.algebra calls. G76:t.info includes support to print history and to use its output in combination with eval. A very nice improvement in the temporal plot tool (G76:g.gui.tplot) now allows to set labels for title, x and y axes, and to export the plotted time series data in a CSV file.

updating temporal plot fig
Labels in the temporal plot tool

Python Scripting

The Python scripting library has been improved (note: Python3 support will be available in GRASS GIS 7.8.0, it is under development in grass77).

User Manuals - Documentation

Translations

Translations are managed in Transifex (please join our efforts and help to translate messages): https://www.transifex.com/grass-gis/grass7

User manual pages improvements

More than 30 user manual pages have received major or minor improvements. These include: various examples added, keyword index improved, many typos fixed, and enhanced descriptions and notes.

GRASS 7 Library changes

In the past year of development, there were several changes in different GRASS GIS libraries. The most relevant changes are described below:

  • a new raster compression method has been added: ZSTD (ZSTD, see ZSTD on github). ZSTD is an improvement over ZLIB's deflate method, providing both faster and higher compression than ZLIB.
  • a new raster map type has been added: GRASS virtual raster (VRT) which is a virtual mosaic of the list of input raster maps.
  • support for PROJ 5: previously, re-projection from one CRS to another CRS used WGS84 as pivot datum: CRS1 -> WGS84 -> CRS2. This method provided reasonable results and allowed for re-projection on-the-fly. However, using a fixed pivot datum has been regarded as a suboptimal solution for coordinate reprojection, therefore a new mechanism has been introduced in PROJ 5, where custom pipelines for coordinate conversion and transformation can be defined. Together with the new PROJ 5+ API, this pipeline mechanism is now supported starting with proj-5.1.0. Custom coordinate conversion/transformation pipelines can now be defined for raster and vector re-projection.
  • vector modules are now less "chatty" with regard to topology building: only problems are reported, standard topology building messages are only shown with --verbose. This should make it easier for users to spot problems.
  • the segment library uses a new fast all-in-memory cache instead of a file-based cache if all data can be kept in memory
  • the regression t value was fixed and the sum of weights is now forced to DCELL type in libstats.
  • the vector library has been enhanced to use grass_int64 for counting vertices, Vect_line_intersection2() was fixed for snap self-intersection only once and the snapping with box search was optimized

Source Code Portability

Windows installers winGRASS and OSGeo4W have received several fixes regarding to missing dependencies and packages renamed. WinGRASS has now switched to PROJ 5.2 and GDAL 2.3.

Cloud and docker

The Dockerfile has been updated (new dependencies added, cleanup, support for ZSTD, liblas and OpenJPEG/JP2) and tested on various cloud infrastructures. Ready-to-use docker images are listed at https://grass.osgeo.org/download/software/docker-images.

GRASS GIS 7.6 Addons

There are 21 new addons that now enlarge the already impressive list of extensions available (see https://grass.osgeo.org/grass7/manuals/addons/).

Among these new extensions there is a set of new addons to import and pre-process Copernicus Sentinel 2 imagery: G7A:i.sentinel.preproc and G7A:i.sentinel.mask. These two modules which add up to the existant G7A:i.sentinel.download and G7A:i.sentinel.import, were contributed by a student under Google Summer of Code 2018 program. With all these Sentinel related modules GRASS GIS provides now the possibility to create full workflows that include download, import, atmospheric correction and cloud masking of Sentinel 2 imagery. Additional imagery addons include, G7A:i.pysptools.unmix for extracting endmembers and spectral unmixing using pysptools and a set of i.signature tools to list, copy and remove signature files. Moreover, a new set of addons for artificial neural networks was also initially developed, G7A:i.ann.maskrcnn, to perform supervised classification using convolutional neural networks.

example of cloud detection for sentinel 2 images (from manual of i.sentinel.mask)
Sentinel-2A Band 02 with computed cloud and shadow masks

The list of other new addons include:

  • G7A:d.vect.colhist to draw an histogram from values in a vector attribute column
  • G7A:r.accumulate to calculate weighted flow accumulation, stream networks, and the longest flow path using a flow direction map
  • G7A:r.connectivity to perform connectivity analysis of ecological networks
  • G7A:r.estimap.recreation which is an implementation of the ESTIMAP algorithm to support mapping and modelling of ecosystem services
  • G7A:r.in.pdal to import LAS LiDAR point clouds data and create statistically a raster map out of it
  • G7A:v.rast.bufferstats to calculate statistics of raster map(s) for buffers around vector geometries
  • G7A:v.what.strds.timestamp to upload strds values to the attribute table at positions of vector points in space and time
example of v.rast.bufferstats addon 1 example of v.rast.bufferstats addon 2
Buffers Attribute table with statistics

Migrating from GRASS GIS 6 to version 7.x

If you are still using GRASS GIS 6, here details upgrade instructions for own scripts:

  • see here for changes in parameter names and changed flags
  • see here for removed modules and renamed modules
  • see here for renamed options
Last modified 2 months ago Last modified on Aug 18, 2019 2:52:09 AM

Attachments (10)