= List of new features in GRASS 7 = The development of GRASS GIS 7 was started in April 2008 (r31142). [[TOC]] == Graphical User Interface == * wxGUI improved (see [http://grass.osgeo.org/wiki/wxGUI here]) * Advanced GRASS command console * [wiki:wxGUIDevelopment/Modeler Graphical modeler] * Improved [http://grass.osgeo.org/wiki/WxNviz wxNviz] * wxWidgets version of ximgview * !Tcl/Tk stuff dropped in favour of wxPython * New GUI modules * G7:g.gui.animation: new * G7:g.gui.dbmgr: new * G7:g.gui.gmodeler: new * G7:g.gui.iclass: new * G7:g.gui.mapswipe: new * G7:g.gui.psmap: new * G7:g.gui.rlisetup: new * G7:g.gui.vdigit: new == Display modules == * old display architecture removed including related modules * new display architecture based on CAIRO and wxPython * G7:ximgview: new == General modules == * G7:g.cairocomp: new * G7:g.mapset: new flag to print current mapset * G7:g.ppmtopng: new * G7:g.region: new flag to export region bounding box in WMS style == Image processing == * G7:i.albedo: new * G7:i.aster.toar: new * G7:i.biomass: new * i.class: rewritten in [http://grasswiki.osgeo.org/wiki/WxIClass 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 * G7:i.eb.evapfr: new * G7:i.eb.h_sebal01: new * G7:i.eb.netrad: new * G7:i.eb.soilheatflux: new * G7:i.emissivity: new * G7:i.evapo.mh: new * G7:i.evapo.pm: new * G7:i.evapo.pt: new * G7:i.evapo.time: new * 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 (from addons) * G7:i.landsat.acca: new (from addons) * G7:i.modis.qc: new * i.ortho.photo: rewritten as G7:i.ortho.rectify: restructured and optimized; batch job capable * G7:i.pansharpen: new * G7:i.sunhours: new * G7:i.vi: new == Raster modules == * Large File Support (LFS) globally enabled * G7:r.colors.out: new * G7:r.cost faster by orders of magnitude (10x - 100x) * G7:r.external.out: new * G7:r.fillnulls: fill each hole separately thus improving quality and speed * G7:r.gwflow/!G7:r3.gwflow: Groundwater flow module update * G7:r.in.lidar: new * G7:r.in.wms: new implementation * 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, G7:r.unpack: new * 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 * G7:r.statistics3: new * G7:r.uslek: new * G7:r.usler: new * G7:r.walk 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.kernel faster by orders of magnitude (10x - 1000x) * G7:v.krige: new * G7:v.mkgrid: breaks are breaks not number of segments; significant speedup * G7:v.net.distance: new * G7:v.net.bridge: new * G7:v.net.spanningtree: new * G7:v.net.flow: new * G7:v.net.connectivity: new * G7:v.net.timetable: new * G7:v.net.components: new * G7:v.net.allpairs: new * G7:v.net.centrality: new * G7:v.in.ogr faster for polygon-import, cleaner output. * G7:v.out.ogr: reversed functionality of -c flag to preserve island by default. * G7:v.in.lidar: new * G7:v.colors: rewrite in C, support for vector color tables * G7:v.colors.out: new * G7:v.overlay: up to 40x faster for large vectors (40,000+ lines in ainput) * G7:v.out.postgis: new == 3D raster modules == * G7:r3.colors: new * G7:r3.colors.out: new == Scripts == * All Bash scripts converted to Python, especially for portability reasons and speed. * Initialization scripts also based on Python == GRASS 7 Library changes == === Libccmath === * new library for numerical functions === Libdbmi === * SQLite is now default database driver * Added support for OFTDate, OFTTime, OFTDateTime === Libgis === * WPS support implemented in parser (c, c++, python, shell) * Libraster separated out into own library * Store metadata in $HOME/.grass7 directory === Libgmath === * 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) === Libosgf === * 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). === Libraster === * Libraster separated out from libgis, [wiki:Grass7/RasterLib refactored] === Libvector === * Large File Support (LFS) added * New topology, requires rebuilding topology with G7:v.build (G7:v.build.all) when switching between GRASS 6.x and GRASS 7 * New spatial index, and spatial index kept in file: faster queries (>10x for large vectors), less memory for opening an existing vector * 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) == User Manual - Documentation == * Use Python to generate [http://grass.osgeo.org/grass70/manuals/ HTML docs] == API improvements == * Programmer's manual cleanup: http://grass.osgeo.org/programming7 * Improved [http://grass.osgeo.org/programming7/pythonlib.html Python API] * read/write GRASS rasters to/from !NumPy * libgis supports the automatic generation of a WPS 1.0.0 process description XML document for each module (c, c++, python, shell) * Function name changes from GRASS 6 to GRASS 7: See [wiki:Grass7/RasterLib/ListOfFunctions] etc. == 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 == 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.menu, d.save, d.what.rast, d.what.vect, d.zoom (old display architecture decommissioned) * 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.ortho.photo, i.vpoints ('''need to be ported'''; old display architecture decommissioned) * raster: * r.average, r.median, r.sum merged into G7:r.statistics, G7:r.statistics2, G7:r.statistics3 * r.bilinear merged into G7:r.resamp.interp * r.digit ('''needs to be ported'''; old display architecture decommissioned, wxRdigit under development) * r.le.patch, r.le.pixel, r.le.setup, r.le.trace: replaced by G7:r.li.* * r.terraflow.short (FP version is sufficient) * v.digit (new wxPython digitizer) == Renamed modules == * '''nviz_cmd''' -> ''G7:m.nviz.image'' * '''d.nviz''' -> ''G7:m.nviz.script'' * '''g.transform''' -> ''G7:m.transform'' == 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= === Display module changes === * 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 === Database management module changes === * G7:db.out.ogr * db_table -> table === 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 === * G7:i.atcorr * iimg -> input * iscl -> range * ialt -> elevation * ivis -> visibility * icnd -> parameters * oimg -> output * oscl -> rescale * input -> map * input -> map * G7:i.image.mosaic * images -> input * G7:i.in.spotvgt * file -> input * rast -> output * G7:i.in.gns * file -> input * vect -> output * G7:i.spectral * raster -> input * coord -> east_north * G7:i.tasscap * outprefix -> output_prefix === 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.external * the -r flag has been removed, approximate range is not ok * G7:r.fill.dir * input -> elevation * elevation -> depressionless * G7:r.flow * elevin -> elevation * aspin -> aspect * barin -> barrier * flout -> flowline * lgout -> flowpath * dsout -> density * G7:r.li.* * 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.topmodel * belevation -> basin_elevation * 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.surf.area * input -> map * input -> map * G7:r.texture * measure -> method * G7:r.to.vect * feature -> type * G7:r.uslek * usle_k -> output * G7:r.water.outlet * drainage -> input * basin -> output * G7:r.what * east_north -> coordinates * G7:r.distance * maps -> map === Vector module changes === * G7:v.edit * t -> b * measure -> method * G7:v.info * layer=integer -> layer=string * G7:v.in.e00 * file -> input * vect -> output * G7:v.in.wfs * wfs -> url * input -> map * 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 * G7:v.what.vect * vector -> map * qvector -> qmap