= List of new features in GRASS GIS 7.4 = GRASS GIS 7.4 is actively developed and maintained with a first 7.4.0 stable release in January 2018. In total, it comes with '''more than 480 fixes and improvements''' with respect to the previous [wiki:Grass7/NewFeatures72 stable releases 7.2.x]. This page summarizes the manifold new features which have been added to GRASS 7.4. [[TOC]] [[Image(wiki:Grass7/NewFeatures74:grass740_startup_sample_data_download_arrow.png, align=right, 300px)]] === What's new in a nutshell === After more than 1 year of development the **new stable release GRASS GIS 7.4** 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. Several modules were migrated from addons to the core GRASS GIS package and the suite of tools for ortho-rectification was reimplemented in the new GRASS 7 GUI style. In order to support the treatment of massive datasets, new compression algorithms were introduced and NULL files are now also compressed by default. === Releases === * See list here: * [wiki:Release/7.4.0-News] (Jan 2018) * [wiki:Release/7.4.1-News] (Jun 2018) * [wiki:Release/7.4.2-News] (Oct 2018) * [wiki:Release/7.4.3-News] (Nov 2018) * The release related development was officially moved to a dedicated release branch on November 12, 2017 (r71701). == Graphical User Interface == GRASS GIS 7.4 graphical user interface comes with a new ''Download'' button in the Startup windows next to location selection that allows to download selected sample locations directly into grassdata directory. The Data Catalog (available in the Data tab) can now move and copy data between mapsets and locations, as well as reproject rasters and vectors. This can be done just by using right mouse click or drag and drop. Moreover, metadata of the listed maps are available in the context menu. || [[Image(wiki:Grass7/NewFeatures74:datacatalog-reproject.png, align=center, 450px)]] || ''wxGUI Data Catalog: Copy raster and vector maps over different locations including reprojection'' There is also a new Show computational region function available also from menu ''Settings > Computational region > Show current region extent in Map Display''. || [[Image(wiki:Grass7/NewFeatures74:show_reg_map_display.png, align=center, 450px)]] || ''Show current computational region in the Map Display'' The Modules tab includes now Help and Advanced search buttons to show documentation for modules. Moreover, the Map Display has new web browser-like shortcuts for re-rendering maps. The Simple Python Editor is now available from the File menu. Font type can be selected interactively in module dialogs and there are some new symbols for vectors display. Not only that, but there are two new modules that were ported from GRASS 6: * G74:g.gui.image2target to georectify a map and manage Ground Control Points for 3D correction and, * G74:g.gui.photo2image to correct scanning distortions of a scanned aerial photo. || [[Image(wiki:Grass7/NewFeatures74:g.gui.image2target.png, align=center, 400px)]] || [[Image(wiki:Grass7/NewFeatures74:mapswipe.png, align=center, 400px)]] || ''G74:g.gui.image2target'' || ''Georectified photo'' == Modules (commands) == A series of new modules has been added and many improved. === General modules === When a new location is created from vector data, G74:g.proj uses the default region s=0 n=1 w=0 e=1 res=1 to avoid potentially invalid region settings. === Raster modules === A new module, G74:r.geomorphon, to calculate geomorphons (terrain forms) and associated geometry using machine vision approach has been integrated (moved from Add-ons) into the core functionalities of GRASS GIS. A very nice addition to G74:r.out.gdal is the **possibility to create overviews** which enhances the compatibility with other GIS software packages. G74:r.in.gdal and G74:r.external provide support for import of raster maps exceeding 90N or 90S or with an EW extent larger than 360 degrees. Moreover, for imported lat-lon maps created with GIS software that uses limited floating point precision (common problem), an automatic fix of floating point precision errors in the grid geometry was implemented. Furthermore, G74:r.in.gdal and G74:r.import allow to **optionally limit the import map to the current region** (through -r flag and extent=region, respectively). Several other raster modules have been improved with new options, flags or parallelization support: * G74:r.regression.multi provides RMSE and MAE estimations for the regression model. * A new -v flag was added to G74:r.what to return vector category number. * G74:r.clump now includes fuzzy clumping, multispectral clumping and minimum clump size. * Parallelization support was implemented for G74:r.sim.water, G74:r.sim.sediment and G7:r.sun * G74:r.mapcalc has a new ''region'' option that allows to set the computational region to the disjoint union or intersection of all maps in the expression. * G74:r.mapcalc.simple: Calculates a new raster map from a simple r.mapcalc expression (added in GRASS GIS 7.4.4) * G74:r.resamp.stats now also includes range, count and diversity methods. || [[Image(wiki:Grass7/NewFeatures74:r_regression_multi2.png, align=center, 450px)]] || [[Image(wiki:Grass7/NewFeatures74:r_clump_fuzzy.png, align=center, 350px)]] || ''Example of r.regression.multi'' || ''Fuzzy clumping using threshold=0.07 and minsize=10'' === Vector modules === The already impressive list of vector functions in GRASS GIS now includes two new modules that have been moved from add-ons: G74:v.clip: to extract features of input map which overlay features of clip map and G74:v.profile: a vector point and line profiling tool complementing G74:r.profile. || [[Image(wiki:Grass7/NewFeatures74:v_clip2.png, align=center, 300px)]] || ''Example of vector clipping'' G74:v.in.ogr has received several improvements in the past year. The code has been restructured to make it more readable and to fix the logic of steps (e.g. check output only if output is created). Furthermore, the new GDAL 2.2 API is used where possible, avoiding deprecated functions. Projection checks are now performed for all input layers, not only the first layer and, they are a bit more strict and verbose in case of problems. Some other improvements and fixes include: * Use of the default region s=0 n=1 w=0 e=1 res=1 to avoid potentially invalid region settings when a new location is created from a vector file. * Support for new curve geometry types starting with GDAL 2.0 * Proper import of OSM with spatial filters and with GDAL < 2.2 Several other vector modules have been significantly improved with new options, flags, fixes and other enhancements: * New cat and where options for area and point vector maps in G74:v.vect.stats to perform counts or estimate statistics only with selected points over selected areas * G74:v.out.ogr has a new -l flag to list supported formats and **the default format changed from Esri Shapefile to OGC !GeoPackage** * G74:v.edit has various enhancements: new Vedit_extend_lines function, the merge tool has an improved iteration over list of lines, improved skip of invalid lines and intersection check, better handling of Vedit_connect_lines by extending both lines and fixed snapping to background map * New -d flag for line densification in G74:v.rast.stats (as in G74:v.to.rast) * New -m flag to query overlapping features in G74:v.what * New parallel implementation and testsuite for G74:v.surf.rst === Imagery modules === G74:i.atcorr now includes support for the atmospheric correction of 7 new satellite images: Pleiades1a, Pleiades1b, Spot6, Spot7, Sentinel-2A, Rapideye, Worldview3 and mod09GA QA definitions was added to G74:i.modis.qc. In addition to the already existent region growing algorithms, G74:i.segment now also includes mean shift. || [[Image(wiki:Grass7/NewFeatures74:i.atcorr2.png, align=center, 350px)]] || [[Image(wiki:Grass7/NewFeatures74:i.modis.qc.png, align=center, 350px)]] || ''New satellites supported in i.atcorr'' || ''New QA definitions in i.modis.qc'' === Temporal GIS modules === The main change in the temporal framework is the introduction of spatial topological operators to the temporal algebra in G74:t.rast.algebra. Moreover, the quantile method has been added to G74:t.rast.series. On the other hand, G74:t.rast.what now has a new flag -v that returns the category for vector points map and a bug in NULL values was fixed, so null value definitions are now passed to G74:r.what correctly. G74:t.rast.export has now support for GDAL options to support !GeoTiff compression. === Scripting === A new class has been implemented in PyGRASS, [https://grass.osgeo.org/grass73/manuals/libpython/pygrass.modules.interface.html?highlight=multimodule#pygrass.modules.interface.module.MultiModule MultiModule], which enables temporary region environment for multi module runs. This class allows to put multiple modules into the parallel module queue, for example coupled G74:g.region and G74:r.mapcalc calls, that must be run in a specific order but many of these combined calls should run in parallel. == User Manuals - Documentation == === Translations === Translations are now managed in Transifex (please join and translate messages): https://www.transifex.com/grass-gis/grass72 === User manual pages improvements === More than 130 User Manual pages have received major or minor improvements. Several of these include [https://grasswiki.osgeo.org/wiki/GRASS_GCI_Ideas_2017#Add_examples_and.2For_screenshots_to_different_manual_pages new examples and screenshots] contributed by **high-school students** participating in the 2017-2018 edition of the [https://codein.withgoogle.com/ Google Code-In] contest. == GRASS 7 Library changes == In the past year of development, there were several changes in different GRASS GIS libraries. The most relavant changes are described below: * In the libraster there is now NULL file compression by default and longitude wrapping has been fixed for lat/lon locations. * The temporal framework has now support for **spatial topological operators in the temporal algebra**, several tests were added as well as a new function to convert granularity to a smaller granularity. Raster region specific parallel processing has been enabled by means of the !MultiModule new class in PyGRASS. * libproj now provides improved integration of GDAL and streamlining of spatial reference system handling with better support for US datums, as well as new functions (GPJ_grass_to_wkt2 and GPJ_grass_to_osr2). * libgis has received several major and minor enhancements. There are new functions such as G_adjust_window_ll to automatically fix lat-lon errors and the lat-lon restrictions when reading DMS coords were relaxed. On the other hand, G_window_percentage_overlap now accounts for N == S or E == W. The function G_compare_projections has an enhanced ellipsoid check. Moreover, BZIP2 compression has been improved for speed and support for HTML/CSS hash hexadecimal colors has been added in G_str_to_color. * GRASS GIS now supports global datasets which slightly exceed -180..+180, -90..+90 == Source Code Portability == * GCC7 support added in ctypes library (used for Python API) * homebrew support expanded (Mac OSX), see https://grasswiki.osgeo.org/wiki/Compiling_on_MacOSX_using_homebrew == GRASS GIS 7.4 Addons == There are thirty [wiki:Release/7.4.0-News#NewAddonssinceGRASS7.2.0 30 new addons] that now enlarge the already impressive list of extensions available (see http://grass.osgeo.org/grass7/manuals/addons/). Among these new extensions there is a set of components, **r.gsflow.*** and **v.gsflow.***, that uses GRASS GIS to create inputs for the integrated hydrologic model [https://water.usgs.gov/ogw/gsflow/ GSFLOW]. Developed by the US Geological Survey, GSFLOW combines the groundwater model MODFLOW with a rainfall-runoff model, PRMS, but lacked a streamlined way to generate inputs and execute the model. The new GRASS GIS addons build the computational domain for the model, including nested sub-basins for runoff, grid cells for groundwater, and segments for the stream network that are required by GSFLOW; they then export their attributes, which are read in by [https://github.com/umn-hydro/GSFLOW-GRASS GSFLOW-GRASS] to create the input files and run GSFLOW. In this (yet unpublished) [https://www.geosci-model-dev-discuss.net/gmd-2017-321/ paper] it is possible to find more information and details about the workflow to run GSFLOW model. || [[Image(wiki:Grass7/NewFeatures74:gsflow_CannonRiver.png, align=center, 300px)]] || ''Outputs of v.gsflow.* and r.gsflow.* addons'' == Migrating from GRASS GIS 6 to version 7.x == * 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