= 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 [https://github.com/OSGeo/grass/compare/releasebranch_7_6...releasebranch_7_8 1650 fixes and improvements]''' with respect to the previous [wiki:Grass7/NewFeatures76 stable releases 7.6.x]. This page summarizes the manifold new features which have been added to GRASS 7.8. [[TOC]] === 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: * [https://github.com/OSGeo/grass/releases/tag/7.8.8 Release/7.8.8-News] (6 Aug 2023) - **last GRASS GIS 7.x release**, continuation with GRASS GIS 8.x * [https://github.com/OSGeo/grass/releases/tag/7.8.7 Release/7.8.7-News] (23 Feb 2022) * [wiki:Release/7.8.6-News] (10 Oct 2021) * [wiki:Release/7.8.5-News] (21 Dec 2020) * [wiki:Release/7.8.4-News] (5 Oct 2020) * [wiki:Release/7.8.3-News] (5 May 2020) * [wiki:Release/7.8.2-News] (11 Dec 2019) * [wiki:Release/7.8.1-News] (9 Nov 2019) * [wiki: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 [http://facebook.github.io/zstd/ 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 and `maps[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 [https://github.com/OSGeo/grass/blob/master/CONTRIBUTING.md 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: * see [wiki:Grass7/NewFeatures#Optionschanges here] for changes in parameter names and changed flags * see [wiki:Grass7/NewFeatures#Replacedandremovedmodules here] for removed modules and renamed modules * see [wiki:Grass7/NewFeatures#Optionschanges here] for renamed options