= GRASS GIS 7.8.0 = [[TOC]] A short summary of changes: '''[wiki:Grass7/NewFeatures78 New features in GRASS 7.8]''' === Releases === ==== Stable Release ==== * Release date: ''6 Sep 2019'' * Changelog: https://grass.osgeo.org/grass78/source/ChangeLog_7.8.0.gz * Binaries: ​https://grass.osgeo.org/download/software/#g78x * Source code: * https://github.com/OSGeo/grass/releases/tag/7.8.0 * https://grass.osgeo.org/grass78/source/grass-7.8.0.tar.gz ([https://grass.osgeo.org/grass78/source/grass-7.8.0.md5sum md5sum]) ==== Release Candidate 1 (RC1) ==== * Release date: ''14 Aug 2019'' * Changelog: https://grass.osgeo.org/grass78/source/ChangeLog_7.8.0RC1.gz * Binaries: ​https://grass.osgeo.org/download/software/#g78x * Source code: * https://github.com/OSGeo/grass/releases/tag/7.8.0RC1 * https://grass.osgeo.org/grass78/source/grass-7.8.0RC1.tar.gz ([https://grass.osgeo.org/grass78/source/grass-7.8.0RC1.md5sum md5sum]) === Git Source Code === * Milestone: [milestone:"7.8.0"] * Release branch created on 4 Aug 2019 (GH d4879d4) * Git clone of latest 7.8 release branch (including yet unpublished bugfixes): {{{ git clone https://github.com/OSGeo/grass.git cd grass git checkout releasebranch_7_8 }}} === Overview of changes === The most important change is the new Python-3 support. Also new PROJ 5 and GDAL 2.5 with substantial changes in the API and CRS handling are supported. A series of new features and stability fixes, manual improvements, and a more language translations have been added. Importantly, the new version is backward compatible with older 7.x releases. **Breaking news: Python 3 compatibility** The GRASS GIS 7.8.0 release provides '''more than [https://github.com/OSGeo/grass/compare/releasebranch_7_6...releasebranch_7_8 730 fixes and improvements]''' with respect to the stable release 7.6.x. ==== New modules ==== * parser: added --json output, useful for REST API output (needed e.g. for [​https://github.com/mundialis/actinia_core actinia]) ==== Major module changes ==== (see also below for closed bugs) * G78:grass7: major code refactoring * G78:g.search.modules: support for installed addons added * G78:i.pansharpen: updated i.pansharpen to handle pixel depths from 2-30 bits, and quashed some bugs * G78:r.compress: ZLIB is no longer the default compression method but [http://facebook.github.io/zstd/ ZSTD] compression * G78:r.in.gdal: added info on subdatasets (relevant for MODIS, Sentinel, ... datasets) * G78:r.mapcalc.simple: former r.mapcalculator as now as r.mapcalc.simple * G78:v.in.pdal: use PDAL streaming instead of !PointView * G78:v.overlay: speed-up for large, complex input areas * G78:v.patch: automagic cleaning of boundaries if areas have been patched ==== Minor module changes ==== (see also below for closed bugs) Start script: * G78:grass7: stop clearing the terminal upon closing; shorten GRASS prompt; do not require dev pkg to be installed for path `grass --config path` as well as `version` and `svn_revision`. Note that revision is currently broken due to Subversion to Git migration. * G78:grass7: added --config svn_revision * G78:grass7: add powershell shell support * G78:grass7: browser = xdg-open as fallback; no browser message spam in batch jobs * G78:grass7: clean up sqlite DB if existing upon session closing Modules: * G78:d.barscale: font support added (PR #72) * G78:d.northarrow: font, path and charset parameters added * G78:g.extension: enforce change to python3 during installation of Addon * G78:g.extension: fix bitbucket download, assumes master branch; fixed incomplete updating addon metadata file * G78:g.extension: update base_url to current winGRASS server layout (PR #68) * G78:g.parser: added --json output, useful for REST API * G78:g.proj: error handling with PROJ 6 added * G78:g.proj: list_codes to list codes for given authority, compatible with PROJ 4, 5, 6 * G78:g.proj: need GRASS_PROJSHARE to list codes with PROJ 4 * G78:i.atcorr: Worldview4 filter functions added * G78:i.gensig: skip NULL cells when calculating variance * G78:i.group: Allow listing group and subgroup contents also for groups from other mapsets * G78:i.pansharpen: added new channel stretch option; fixed rare possible bug in histogram matching algorithm and made all output maps integer CELL maps * G78:i.segment: avoid integer overflow with extremely large regions * G78:i.tasscap: add support for Sentinel-2 * G78:i.vi: NDWI index added (Normalized Difference Water Index) * G78:m.nviz.script: fix memory leaks,fix compiler warnings + coverity scan * G78:r3.out.vtk: improved error message when output cannot be written * G78:r.compress: print which compression method is actually applied * G78:r.contour: fix broken contour lines; clean contour lines tracing back on themselves * G78:r.fillnulls: added memory parameter for internal r.resamp.bspline call (speed-up); do not fail hard if input map has no holes * G78:r.horizon: check if coordinates are within the current region * G78:r.import: remove hardcoded memory limit (r.in.gdal will take care); try to avoid failure after v.proj (see PR #24) * G78:r.info -s: always report total number of cells * G78:r.in.wms: add proxy for GDAL driver; catch incorrect WMS url input; new -b flag to keep original bands * G78:r.li: fix segfault in r.li.shannon * G78:r.out.mpeg: fix fail because the output file name is empty * G78:r.plane: added function float_or_dms * G78:r.random.cells: use G_drand48() * G78:r.random.surface: use G_drand48() * G78:r.slope.aspect: fix window alignment to input raster * G78:r.sun: fix error when using both lat and lon raster * G78:r.thin: avoid integer overflow * G78:r.univar: report stats with nan if a given zone has only NULL values * G78:r.walk: add option nearest from r.cost * G78:r.watershed: multiple flow direction output * G78:v.buffer: added test for zero distance * G78:v.distance: improve iterative search; speed improvement for small dmax * G78:v.external: enable GRASS-internal PostGIS driver again * G78:v.generalize: preserve boundary categories * G78:v.in.geonames: read as UTF8 * G78:v.in.ogr: disable unreliable OGR extents for spatial filter * G78:v.in.ogr: set spatial filter to correct geometry field if geom option is given * G78:v.mkgrid: new -d flag to add diagonals to rectangular lines * G78:v.out.postgis: document a bug, output option is ignored for attributes * G78:v.rast.stats: add where option * G78:v.report: Add -d flag for geometries with no database records * G78:v.report: added -c flag to avoid column names in output * G78:v.to.points: new option use=start/end * G78:v.to.rast: do not create raster categories if vector categories are used as cell values because 1. Rast_set_cat() is terribly slow for many categories, 2. this information is redundant (1: 1 etc is not informative) * G78:v.voronoi: fix for area skeletons and voronoi diagrams for areas. Numerical stability of v.voronoi has been improved but is not perfect. ==== Improvements in the Graphical User Interface ==== * wxGUI data catalog: allow to perform actions on multiple layers (e.g. deleting, moving, reprojection, display, metadata) * wxGUI/animation: fixes for Python 3 * wxGUI/digitizer: fixes for Python 3 * wxGUI/modeller: fixes for Python 3 * wxGUI: add function to LM interface to programmatically change layer * wxGUI: add !GeoPackage as known raster/vector format * wxGUI: fix setting non-ascii display name * wxGUI/psmap: wxPython 4 compatibility * wxGUI: use g.proj list_codes=EPSG to read EPSG codes ==== Python scripting ==== Python 2 end-of-life: https://www.python.org/doc/sunset-python-2/ GRASS GIS has been updated to Python 3: * all python scripts: change Python shebang to python3 (PR #75, #82) * pygrass: fixing doctests (only for Python 3) * pygrass.gis: make region importable from grass.pygrass.gis * pythonlib: fix encoding ==== Projection support ==== * libproj: code clean-up; PROJ5: EPSG must lowercase epsg, PROJ6+: EPSG must uppercase EPSG ==== Database support ==== * postgresql driver: create index if not exists for PG server versions 9.5+ ==== Library changes ==== * configure, configure.in: configure with ZSTD by default, can be disabled with --with-zstd=no * ctypes: delete lib/python/ctypes/ctypesgencore/parser/lextab.py (#95)- since lextab.py is auto-generated * libpython: float_or_dms accept E,W,N,S * libraster: add support for GDAL 2.4 on MS Windows * libraster: fsync data files before closing, and capture any errors; sync_and_close() null file; no fsync check for corrupt raster data on Windows * libsegment: fix for all-in-memory cache * libvector: support reserved PostgreSQL keywords as column name by quoting when exporting vector map to PostGIS database; Vect_cidx_find_all() should not allow mixing GV_AREA with other geometries * parser: added --json output, useful for REST API output (needed e.g. for [https://github.com/mundialis/actinia_core/ actinia]) * Vlib: adjust dynamic floating point representation error for squared distances * Vlib: fix fp error in Vect_segment_intersection() ==== Unit tests / CI ==== * testsuite/examples/test_framework_GRASS_GIS_with_NC.sh: major cleanup * various modules: test added and respective testsuites cleaned up * Travis-CI: enable ccache for faster builds * Codecov: Attempt to add Codecov support for automated source code quality checks (https://codecov.io/gh/OSGeo/grass) ==== User Manuals - Documentation ==== * various manual pages: examples added/updated ==== Portability ==== * Python-3 support implemented across the tree ==== Docker support ==== * Various docker images listed at: https://grass.osgeo.org/download/software/docker-images/ * Dockerfile: updated to Python 3 ==== Message Translations ==== * i18N: added new translations from Transifex (https://www.transifex.com/grass-gis/grass7/dashboard/) * i18N: cleanup gettext usage for Python code === New Addons since GRASS 7.6.0 === * 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.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 === Closed tickets === ==== Closed bugs since the last release ==== [[TicketQuery(status=closed&milestone=7.8.0&type=defect&resolution=fixed&order=priority)]] ==== Closed wishes since the last release ==== [[TicketQuery(status=closed&milestone=7.8.0&type=enhancement&resolution=fixed&order=priority)]]