Version 196 (modified by hcho, 7 years ago) (diff)


List of new features in GRASS 7

GRASS GIS 7 is the current development version of GRASS GIS. In total, more than 10,000 changes have been implemented so far with respect to GRASS GIS 6.4. The development was started in April 2008 (r31142). Since then a lot of new features have been added to GRASS 7; until the official release becomes available, it is already possible to use GRASS GIS 7 through nightly snapshots.

The graphical user interface based on wxPython (introduced in GRASS GIS 6.4) has been enriched with many new features in order to make complex GIS operations available as simple as possible. The old Tcl/Tk based GUI has been dropped. Relevant new features are available in the core system, among the most important the new Python interface to the C library. This new feature permits Python developers to create new modules in a simple way while at the same time creating powerful and fast modules. Furthermore, the vector library was particularly improved to make it faster and more efficient with support of huge files. This required a easy to manage topology format update including a new spatial index. Finally, there are a series of new modules to analyse raster and vector data; some of the already existing modules were improved and made faster (some even 1000 x faster). For details see below.

Graphical User Interface

  • wxGUI improved (see manual)
    • Advanced GRASS command console
    • Location wizard: support for creation of planetary ellipsoid locations
    • Graphical modeler
    • Improved wxNviz
  • wxWidgets version of ximgview
  • Tcl/Tk stuff dropped in favour of wxPython
  • New GUI modules
    • G7:g.gui.animation: new - Tool for animating a series of raster and vector maps or a space time raster or vector dataset.
    • G7:g.gui.dbmgr: new - Launches graphical attribute table manager.
    • G7:g.gui.gcp: new - Georectifies a map and allows to manage Ground Control Points.
    • G7:g.gui.gmodeler: new - Graphical Modeler.
    • G7:g.gui.iclass: new - Tool for supervised classification of imagery data.
    • G7:g.gui.mapswipe: new - Interactively compares two maps by swiping a visibility bar.
    • G7:g.gui.psmap: new - Tool for creating hardcopy map outputs.
    • G7:g.gui.rlisetup: new - Configuration tool for modules.
    • G7:g.gui.timeline: new - Allows to compare temporal datasets by displaying their temporal extents in a plot.
    • G7:g.gui.vdigit: new - Interactive editing and digitization of vector maps.

Modules (commands)

Display modules

  • old display architecture removed including related modules
  • new display architecture based on Cairo and wxPython
  • G7:d.barscale: major rewrite and expansion
  • G7:ximgview: new - View BMP images from the PNG driver.
  • North arrow symbols: moved into their own section
  • G7:d.northarrow: split out from G7:d.barscale

General modules

  • G7:g.cairocomp: new - Overlays multiple X Pixmaps.
  • G7:g.mapset: new flag to print current mapset; Optionally create new mapset or list available mapsets in given location.
  • G7:g.ppmtopng: new - Converts between PPM/PGM and PNG image formats.
  • G7:g.region: new flag to export region bounding box in WMS style

Image processing

  • G7:i.albedo: new - Computes broad band albedo from surface reflectance.
  • G7:i.aster.toar: new - Transforms calibrated digital number of ASTER data to top-of-atmosphere radiance, reflectance and temperature
  • G7:i.biomass: new - Computes biomass growth, precursor of crop yield calculation
  • i.class: rewritten in wxGUI
  • G7:i.cca: supports now much more raster maps for canonical analyses (multi-spectral (8) -> hyper-spectral (thousands)), converted from Fortran style to C-style
  • G7:i.eb.eta: new - Actual evapotranspiration for diurnal period (Bastiaanssen, 1995)
  • G7:i.eb.evapfr: new - Computes evaporative fraction (Bastiaanssen, 1995) and root zone soil moisture (Makin, Molden and Bastiaanssen, 2001).
  • G7:i.eb.h_sebal01: new - Computes sensible heat flux iteration SEBAL 01
  • G7:i.eb.netrad: new - Net radiation approximation (Bastiaanssen, 1995).
  • G7:i.eb.soilheatflux: new - Soil heat flux approximation (Bastiaanssen, 1995).
  • G7:i.emissivity: new - Computes emissivity from NDVI, generic method for sparse land
  • new - Computes evapotranspiration calculation modified or original Hargreaves formulation, 2001.
  • new - Computes potential evapotranspiration calculation with hourly Penman-Monteith.
  • new - Computes evapotranspiration calculation Prestley and Taylor formulation, 1972.
  • G7:i.evapo.time: new - Computes temporal integration of satellite ET actual (ETa) following the daily ET reference (ETo) from meteorological station(s).
  • G7:i.fft and G7:i.ifft: In GRASS 6.x, the only operation which can be performed upon the FFT data is a binary mask; a given component can be included or excluded, but not scaled. In GRASS 7.0, the frequency coefficients are saved as raster maps, so they can be manipulated with e.g. G7:r.mapcalc. The main constraint is that both i.fft and i.ifft require the data to fit into memory. Eliminating this requirement boils down to transposing a large array efficiently.
  • G7:i.latlong: new
  • i.fusion.brovey: removed, functionality provided by G7:i.pansharpen
  • G7:i.landsat.toar: new, transforms calibrated digital number of LANDSAT data to top-of-atmosphere radiance, reflectance and temperature
  • G7:i.landsat.acca: new, Automated Cloud-Cover Assessment (ACCA) Algorithm
  • G7:i.modis.qc: new
  • rewritten as G7:i.ortho.rectify: restructured and optimized; batch job capable
  • G7:i.pansharpen: new, Brovey/PCA/IHS transform to merge multispectral and high-res panchromatic channels
  • G7:i.segment: new, identifies segments (objects) from imagery data. Supports hierarchical segmentation
  • new, calculation of vegetation indices
  • G7:wxGUI.gcp: new, a wxGUI extension which allows the user to create, edit, and manage Ground Control Points for geocoding imagery

Raster modules

  • Large File Support (LFS) globally enabled
  • G7:r.colors.out: new - Exports the color table associated with a raster map.
  • G7:r.cost: faster by orders of magnitude (10x - 100x); Creates a raster map showing the cumulative cost of moving between different geographic locations on an input raster map whose cell category values represent cost.
  • G7:r.cross: Creates a cross product of the category values from multiple raster map layers. handling of null values fixed; Use btree library instead of inlined version for speed
  • G7:r.external.out: new - Defines raster output format utilizing GDAL library.
  • G7:r.fillnulls: Fills no-data areas in raster maps using spline interpolation. Fills each hole separately thus improving quality and speed
  • G7:r.gwflow/!G7:r3.gwflow: Groundwater flow module update
  • new - Create a raster map from LAS LiDAR points using univariate statistics.
  • new implementation - Downloads and imports data from WMS server; + WMTS and NASA OnEarth? support
  • G7:r.mapcalc: white space is needed before/after the = sign (r.mapcalc "outmap = inmap"); use pthreads for parsing
  • G7:r.neighbours: added new option to process only marked cells (i.e: selective elevation map improvement)
  • G7:r.pack: Packs up a raster map and support files for copying.
  • G7:r.unpack: new - Unpacks a raster map packed with r.pack.
  • G7:r.regression.multi: new - Calculates multiple linear regression from raster maps.
  • G7:r.resamp.filter: new - resamples raster map layers using an analytic kernel
  • G7:r.solute.transport: new - New module to compute the solute transport of groundwater in porous media using an implicit finite volume approach
  • G7:r.statistics2: new - Calculates category or object oriented statistics (accumulator-based statistics).
  • G7:r.statistics3: new - Compute category quantiles using two passes.
  • G7:r.sunhours: new - Calculates solar elevation, solar azimuth, and sun hours.
  • G7:r.uslek: new - Computes USLE Soil Erodibility Factor (K).
  • G7:r.usler: new - Computes USLE R factor, Rainfall erosivity index.
  • G7:r.walk: Outputs a raster map showing the anisotropic cumulative cost. Faster by orders of magnitude (10x - 1000x)
  • G7:r.watershed improved from G6.3 to G6.4 to G6.5 to G7: faster, less memory, floating point DEM support, MFD, clean stream extraction from MFD, segmented mode in G7 faster than in G6 by orders of magnitude.

Vector modules

  • Large File Support (LFS) globally enabled
  • G7:v.colors.out: new - Exports the color table associated with a vector map.
  • G7:v.colors: rewrite in C, support for vector color tables
  • G7:v.generalize: new - loop support added to all smoothing algorithms
  • new - Converts LAS LiDAR point clouds to a GRASS vector map with libLAS.
  • faster for polygon-import, cleaner output.
  • G7:v.kernel faster by orders of magnitude (10x - 1000x)
  • G7:v.mkgrid: breaks are breaks not number of segments; speedup 16x times
  • improved - Computes the shortest path between all pairs of nodes in the network.
  • improved - Computes bridges and articulation points in the network.
  • improved - Computes degree, centrality, betweeness, closeness and eigenvector centrality measures in the network.
  • improved - Computes strongly and weakly connected components in the network.
  • improved - Computes vertex connectivity between two sets of nodes in the network.
  • improved - Computes shortest distance via the network between the given sets of features. Finds the shortest paths from each 'from' point to the nearest 'to' feature and various information about this relation are uploaded to the attribute table.
  • improved - Computes the maximum flow between two sets of nodes in the network.
  • improved, it allows now to snap the points onto the network
  • optional tour optimization added. The standard algorithm to find the shortest tour is heuristic and often does not find the optimal tour for more than 10 nodes to visit. The optimization methods available are bootstrapping and a genetic algorithm.
  • improved - Computes minimum spanning tree for the network.
  • improved - Finds shortest path using timetables.
  • G7:v.out.ogr: reversed functionality of -c flag to preserve island by default.
  • G7:v.out.postgis: new - Exports a vector map layer to PostGIS feature table.
  • G7:v.overlay: up to 40x faster for large vectors (40,000+ lines in ainput)
  • G7:v.pack: new - Packs up a vector map and support files for copying.
  • new -d flag to create densified lines (default: thin lines as in GRASS 6) for improved routing on cost surfaces
  • G7:v.unpack: new - Unpacks a vector map packed with r.pack.
  • G7:v.voronoi: new -a flag to create Voronoi diagrams for areas.

3D raster modules

  • G7:r3.colors: new - Creates/modifies the color table associated with a 3D raster map.
  • G7:r3.colors.out: new - Exports the color table associated with a 3D raster map.
  • G7:r3.out.bin: new - Exports a GRASS 3D raster map to a binary array.
  • new - Imports a binary raster file into a GRASS 3D raster map.
  • G7:r3.out.netcdf: new - Export a 3D raster map as netCDF file.
  • G7:r3.retile: new - Retiles an existing 3D raster map with user defined x, y and z tile size.

Temporal GIS modules

The new temporal GRASS GIS 7 framework has been developed to manage, process and analyse large scale, spatio-temporal environmental data. In detail, the framework supports querying and map calculation of spatio-temporal data, aggregation, statistics and gap filling, and data export, import, and conversion. A spatio-temporal topology builder is available to build spatio-temporal topology connections between map objects for 1D, 3D and 4D extents. The topology creation is based on the R*Tree implementation in the vector library which supports even 4D extents.

  • G7:t.create: new - Creates a space time dataset.
  • new - Lists information about space time datasets and maps.
  • G7:t.list: new - List space time datasets and maps registered in the temporal database.
  • G7:t.remove: new - Removes space time datasets from temporal database.
  • G7:t.rename: new - Renames a space time dataset
  • G7:t.register: new - Registers raster, vector and raster3d maps in a space time datasets.
  • G7:t.shift: new - Temporally shift the maps of a space time dataset.
  • G7:t.snap: new - Temporally snap the maps of a space time dataset.
  • G7:t.sample: new - Samples the input space time dataset(s) with a sample space time dataset and print the result to stdout.
  • new - Modifies the metadata of a space time dataset.
  • G7:t.topology: new - Lists temporal topology of a space time dataset.
  • G7:t.unregister: new - Unregisters raster, vector and raster3d maps from the temporal database or a specific space time dataset.
  • G7:t.rast.aggregate.ds: new - Aggregated data of an existing space time raster dataset using the temporal topology of a second space time dataset.
  • G7:t.rast.aggregate: new - Temporally aggregates the maps of a space time raster dataset by a user defined granularity.
  • G7:t.rast.colors: new - Creates/modifies the color table associated with each raster map of the space time raster dataset.
  • G7:t.rast.export: new - Exports space time raster dataset.
  • G7:t.rast.extract: new - Extracts a subset of a space time raster datasets.
  • G7:t.rast.list: new - Lists registered maps of a space time raster dataset.
  • G7:t.rast.import: new - Imports space time raster dataset.
  • G7:t.rast.mapcalc: new - Perform spatio-temporal mapcalc expressions on temporal sampled maps of space time raster datasets.
  • G7:t.rast.neighbors: new - Performs a neighborhood analysis for each map in a space time raster dataset.
  • G7:t.rast.gapfill: new - Replace gaps in a space time raster dataset with interpolated raster maps.
  • G7:t.rast.out.vtk: new - Exports space time raster dataset as VTK time series.
  • G7:t.rast.series: new - Performs different aggregation algorithms from r.series on all or a subset of raster maps in a space time raster dataset.
  • new - Converts a space time raster dataset into a raster3d map.
  • G7:t.rast.univar: new - Calculates univariate statistics from the non-null cells for each registered raster map of a space time raster dataset.
  • G7:t.rast3d.mapcalc: new - Performs r3.mapcalc expressions on maps of sampled space time raster3d datasets.
  • G7:t.rast3d.list: new - Lists registered maps of a space time raster3d dataset.
  • G7:t.rast3d.extract: new - Extracts a subset of a space time raster3d dataset.
  • G7:t.rast3d.univar: new - Calculates univariate statistics from the non-null cells for each registered raster3d map of a space time raster3d dataset.
  • G7:t.vect.extract: new - Extracts a subset of a space time vector dataset.
  • G7:t.vect.export: new - Export a space time vector GRASS specific archive file
  • G7:t.vect.import: new - Import a space time vector dataset archive file
  • G7:t.vect.list: new - Lists registered maps of a space time vector dataset.
  • G7:t.vect.observe.strds: new - Observes specific locations in a space time raster dataset over a period of time using vector points.
  • new - Prints attributes of vector maps registered in a space time vector dataset.
  • G7:t.vect.what.strds: new - Store raster map values at spatial and temporal positions of vector points as vector attributes.
  • G7:t.vect.univar: new - Calculates univariate statistics of attributes for each registered vector map of a space time vector dataset


  • All Bash scripts converted to Python, especially for portability reasons and speed.
  • Initialization scripts now also based on Python

GRASS 7 Library changes

See also: GRASS 7 Programmer's Manual

GRASS GIS Temporal Framework

  • new Python framework to implement spatio-temporal modules


  • new library for numerical functions


  • SQLite is now default database driver
  • Added support for OFTDate, OFTTime, OFTDateTime


  • WPS support implemented in parser (c, c++, python, shell)
  • parser: method and unit abbreviations supported
  • Libraster separated out into own library
  • Store metadata in $HOME/.grass7 directory


  • Implementation of BLAS level 1,2 and 3 functions which are in use by all gmath solver, the gpde library and many modules.
  • ATLAS wrapper for BLAS level 1 functions (level 2, and 3 are work in progress)


  • WIP in OGSF - feature styling rewrite that will allow to assign custom (e.g. attribute based) style to points AND lines in NVIZ (might be extended to polys and any 3D vectors too).



  • Large File Support (LFS) added
  • New topology, requires rebuilding topology with ( when switching between GRASS 6.x and GRASS 7. See also Convert all GRASS 6 vector maps to GRASS 7
    • New spatial index: faster queries (>10x for large vectors), less memory for opening an existing vector
    • New option added to use a file-based version of the spatial index which can be activated by setting the new shell environment variable GRASS_VECTOR_LOWMEM (e.g., in bash: 'export GRASS_VECTOR_LOWMEM=1' and deactivated with 'unset GRASS_VECTOR_LOWMEM')
    • New main topology: reduced memory and disk space requirements, generally faster processing
  • Cleaning function 'break polygons' faster, less memory
  • Cleaning function 'snap lines' faster and modifications are minimized: a vertex is snapped to the closest anchor vertex, not to the first anchor vertex found which might not be the closest anchor vertex.
  • Simple Features API/OGR read/write support (ongoing)
  • Support for color tables (see lib/vector/Vlib/color_*.c files)
  • Vector network analysis for large datasets (as other vector operations) should require much less memory in GRASS 7 because of substantial vector library changes

User Manual - Documentation

Python interface

API improvements

Source Code Portability

  • All shell scripts have been rewritten in Python
  • MS-Windows portability improved, new spawn functions (backported to 6.5 and 6.4), global LFS available by default
  • MacOSX portability improved
  • IBM AIX portability improved
  • FreeBSD portability improved

Removed modules

Some modules present in GRASS 6 have been removed due to architecture changes or replacements:

  • d.ask, d.colors, d.extend, d.extract, d.frame, d.mapgraph, d.measure,,, d.what.rast, d.what.vect, d.zoom (old display architecture decommissioned)
    • d.ask, d.colors
    • d.extend: use wxGUI or g.region
    • d.extract: use v.extract or wxVdigit (digitizer)
    • d.frame: use instead "GRASS_FRAME", one of the G7:variables (contains 4 coordinates, top,bottom,left,right, defining the initial frame)
    • d.mapgraph: use instead ???
    • d.measure: use wxGUI
    • use wxGUI
    • use instead ???
    • d.what.rast, d.what.vect, d.zoom: use wxGUI
  • d.histogram: integrated in wxGUI
  • g.ask: use g.findfile
  • g.setproj: use Location Wizard or 'g.proj -c' (state plane by county selection needs to be ported)
  • i.points: new graphical version in wxGUI
  • i.class,, i.vpoints (need to be ported; old display architecture decommissioned)
  • raster:
  • v.digit (new wxPython digitizer)

Renamed modules

Renamed options

Some parameter names (options) have been renamed to achieve greater consistency. User scripts from GRASS 6 may need minor updates to run with GRASS 7 according to the changes listed below:

Global module changes

  • fs= (field separator) -> separator=
  • interpolation methods 'bilinear', 'bicubic' renamed to 'linear', 'cubic'

Display module changes

  • G7:d.barscale
    • background_color -> bgcolor
  • G7:d.correlate
    • layers -> map
  • G7:d.erase
    • color -> bgcolor
    • background -> bgcolor
  • G7:d.rast
    • catlist and vallist options merged into new values option
    • overlay flag inverted to new opaque flag
  • G7:d.rast.leg
    • rast -> raster
  • G7:d.vect
    • wcolumn -> width_column
    • wscale -> width_scale
    • rot_column -> rotation_column
    • display=attr removed
    • attrcolumn -> attribute_column

Database management module changes

General map management module changes

  • G7:g.mapsets
    • addmapset,removemapset -> operation
    • measure -> method
  • G7:g.pnmcomp
    • background -> bgcolor
  • G7:g.region
    • n -> north
    • s -> south
    • e -> east
    • w -> west
    • t -> top
    • b -> bottom

Image processing module changes

Raster module changes

  • G7:r.basins.fill
    • c_map -> cnetwork
    • t_map -> tnetwork
    • result -> output
  • G7:r.blend
    • output -> output_prefix
  • G7:r.colors.stddev
    • input -> map
  • G7:r.category
    • fs -> separator
  • G7:r.cost
    • coordinate -> start_coordinates
  • G7:r.distance
    • maps -> map
  • G7:r.drain
    • voutput -> vector_output
    • coordinates -> start_coordinates
    • vector_points -> start_points
  • G7:r.external
    • the -r flag has been removed, approximate range is not ok
  • G7:r.fill.dir
    • elevation -> input
    • depressionless -> output
    • direction -> outdir
    • type -> format
  • G7:r.flow
    • elevin -> elevation
    • aspin -> aspect
    • barin -> barrier
    • flout -> flowline
    • lgout -> flowpath
    • dsout -> density
    • -f flag -> type=CELL|FCELL|DCELL parameter
    • mapserver -> url
    • map -> input
  • G7:r.out.tiff
    • -t flag -> -w
  • G7:r.plane
    • name -> output
  • G7:r.reclass
    • use of rules parameter is mandatory in grass 7.0, also when the reclass rules are piped through another program (use rules=-)
  • G7:r.sim.sediment
    • elevin -> elevation
    • dxin -> dx
    • dyin -> dy
    • detin -> det
    • tranin -> tran
    • tauin -> tau
    • manin -> man
    • maninval -> man_value
  • G7:r.sim.water
    • elevin -> elevation
    • dxin -> dx
    • dyin -> dy
    • rain_val -> rain_value
    • infil -> infil
    • infil_val -> infil_value
    • manin -> man
    • manin_val -> man_value
  • G7:r.sun
    • Shading (-s) is now the default. Use planar mode (-p) to ignore shadows.
    • elevin -> elen_in
    • aspin -> asp_in
    • slopein -> slope_in
    • linkein -> linke_in
    • latin -> lat_in
    • longin -> long_in
    • coefbh -> coef_bh
    • coefdh -> coef_dh
    • horizonstep -> horizon_step
    • declin -> declination
    • dist -> distance_step
    • numpartitions -> num_partitions
    • civiltime -> civil_time
    • input -> map
    • input -> map
  • G7:r.texture
    • measure -> method
    • feature -> type
  • G7:r.topmodel
    • elevation -> REMOVED
    • basin -> REMOVED
    • depressionless -> REMOVED
    • direction -> REMOVED
    • belevation -> REMOVED
    • nidxclass -> ntopidxclasses
    • idxstats -> topidxstats, outtopidxstats
    • idxclass -> topidxclass
    • qobs -> obsflow
    • nch parameter removed from the parameters file.
    • One parameter per line in the parameters file.
    • ntimesteps removed from the input file.
  • G7:r.uslek
    • usle_k -> output
  • G7:r.walk
    • coordinate -> start_coordinates
  • G7:r.water.outlet
    • drainage -> input
    • basin -> output
  • G7:r.what
    • east_north -> coordinates
    • fs -> separator

Vector module changes

  • G7:v.drape
    • rast -> elevation
  • G7:v.edit
    • t -> b
    • measure -> method
  • G7:v.extract
    • list -> cats
    • file -> input
    • vect -> output
    • wfs -> url
    • input -> map
    • layer=integer -> layer=string
  • G7:v.out.ogr: the meaning of the -c flag has been reverted in GRASS 7 because the default must be to export only features with categories in the selected layer (the user needs to select a GRASS vector layer for v.out.ogr which will be translated to an OGR layer). If features without category are exported, the logic of matching a GRASS vector layer to a OGR layer is violated. This is particularly true for areas with islands which are in simple feature terminology polygons with holes.
  • G7:v.rast.stats
    • colprefix -> column_prefix
    • input -> map
    • -s/-r -> sort
    • maskmap -> mask
    • treefile -> treeseg
    • overfile -> overwin
    • elev -> elevation
  • G7:v.what.vect
    • vector -> map
    • qvector -> qmap
    • -v/-n -> use

Miscellaneous module changes

Attachments (10)

Download all attachments as: .zip