= List of new features in GRASS GIS 7.8 = GRASS GIS 7.8 is actively 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 1100 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: * [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): === General modules === * G78:g.extension: fix -i (compile), -d (download) flag (PR:496) * 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.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.sim/simlib: dynamic allocation of walkers to enable computing for larger areas (PR:228) * 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.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) * wxGUI g.gui.vdigit: fix update available vector maps * 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) === Scripting === Major efforts have been done 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) == 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. * 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. == GDAL support == GDAL 3 compatibility added. == 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 19:10 (PR:260) * 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.sar.speckle - Remove speckle from SAR image * G7A:r.fill.category - Replaces the values of pixels of a given category with values of the surrounding pixels * 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.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 == 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