wiki:Release/7.8.0-News

GRASS GIS 7.8.0

A short summary of changes: New features in GRASS 7.8

Releases

Stable Release

Release Candidate 1 (RC1)

Git Source Code

  • 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 730 fixes and improvements with respect to the stable release 7.6.x.

New modules

Major module changes

(see also below for closed bugs)

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

  • 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 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

Message Translations

New Addons since GRASS 7.6.0

Closed tickets

Closed bugs since the last release

#2708
Run GRASS with Python3
#2751
G_progress() does not support GRASS_MESSAGE_FORMAT=gui
#3170
GRASS_BATCH_JOB does not tolerate path with spaces
#3339
postgis topology: missing relations
#3446
GRASS python library is not working with python 3
#3478
g.extension does not work with bitbucket repo
#3587
Call to deprecated item in wxGUI
#3635
Suspicious use and cleanup of the mapset tempoary directory
#3641
python3/ctypes: ctypes.ArgumentError: argument 2: <type 'exceptions.TypeError'>: expected LP_struct_Cell_head instance instead of LP_struct_Cell_head
#3644
winGRASS7.7.svn: displaying raster causes: TypeError: environment can only contain strings
#3649
Cartographic composer: OK, pointer and pan buttons do not work
#3662
pygrass open vector fails in python3
#3666
wxGUI: Save to file in 3D mode fails with Unicode error
#3673
wxGUI: UnicodeEncodeError when querying vector map
#3675
g.gui.rlisetup: cannot create the configuration file
#3681
g.gui.tplot does not open
#3682
t.rast.algebra: Error wrong type of input
#3704
ctypes compilation error with Python-3.7
#3720
temporal modules fail with python 3
#3723
winGRASS7.7.svn - core.py - python 3 issues
#3725
all temporal modules produce WARNING:root:Needed to restart the libgis server
#3727
t.rast.aggregate fails with python3
#3731
winGRASS7.7.svn python3 build issues
#3733
winGRASS 7.7svn execute command fails
#3734
Location wizard on python 3 seems to be broken
#3739
lib/python/ctypes/ctypesgencore/parser/lextab.py changes after compilation.
#3746
Quouting of strings with white space in t.info breaks tests for temporal modules
#3752
g.gui.animation: TypeError: 'zip' object is not subscriptable
#3753
g.gui.tplot and g.gui.timeline: AttributeError: 'itertools.cycle' object has no attribute 'next'
#3755
error when saving workspace in python 3
#3757
Python3: range vs xrange
#3777
vector digitizer crashes with python 3
#3797
r.horizon suffix gets messed up in multi-direction mode
#3798
Python 3: gunittest multirunner.py crashes
#3802
grass77: g.proj compilation fails with proj 5.2.0
#3803
g.extension: Import requests for python3, too
#3805
Export vector map (table with column name, which is reserved PostgreSQL keyword) into the PostGIS database
#3808
"Next" button inactive in EPSG selection page of Location wizard
#3814
v.buffer: segfault in LL
#3825
Fix tests stalling with Python 3
#3837
OSGeo4W winGRASS77svn - startup error: TypeError: endswith first arg must be bytes or a tuple of bytes, not str
#3861
winGRASS master (git) - g.proj not found at startup
#3872
winGRASS Version: 7.7.dev - wrong german Umlaut in wxGUI
#3894
g.gui.animation fails to export animation with python3 error
#3897
d.mon errors when closing
#3899
g.gui.gmodeler: loading of modeller file broken with TypeError

Closed wishes since the last release

#3491
i.group cannot read from other mapsets
#3669
graphical modeler: export UI definitions into Python script
#3719
prepare OSGeo4W environment for winGRASS 7.8 with python 3
#3738
Make python version configurable on compilation time
#3741
t.rast.series: allow multiple methods/output
#3792
Use unique names on test modules
#3844
Make Region importable from pygrass.gis
#3849
Do we need to clear the screen when entering/exiting GRASS?

Last modified 6 weeks ago Last modified on Sep 6, 2019 3:27:30 PM