Toolboxes

From GRASS-Wiki
Revision as of 04:00, 14 February 2011 by Lucadelu (talk | contribs) (fix a mistake)
Jump to navigation Jump to search

See original post by Jarosław Jasiewicz

Hi all!

That rather radical ideas I present here are rather for future, at least for GRASS 8,
but I'd like present it now for long-term reflection.

Probably all notice that for over two years there is big increase in add-on repository
(including me). There are modules of different quality: from fully GRASS toolsets,
to shell or python scripts, from  actively developed tools to abandoned,
from all-purpose tools to very specialized etc. I also think that that activity
will be grown due to substitute shell script by python

Similar situation is in main GRASS branch: there are modules for all like conversion tools,
interpolation methods, georeferencing etc, and very specialized modules for very limited
group of users (like wild fire), there are also some modules out of date.

I'm not enthusiastic about moving new modules into main branch. Almost every module has
different coding style and it will lasting in future that GRASS would be difficult to maintain.
On the other hand some people complains that some interesting modules are only available as
add-ons (I assume for some reasons they cannot install it)

So my suggestion is to rearrange future GRASS form two layers (main branch/add-on) into
three layers architecture:

1) GRASS core layer: much limited limited than now, only GIS environment and basic,
all-puropse tools, slow changes, great stability
2) GRASS toolset layer: oficcial GRASS thematic tools and toolsets (like terrain analysis,
hydrological analysis, photo-interpretation, landscape analysis etc,) every toolset with its
maintainer, rapid development, new ready to use tools after quality control may appear here,
also some of current main branch tool shall be moved to that layer
3) GRASS community layer:  everything else like experimental, actively development new tools,
that what do not pass quality control, simple scripts, etc....

What benefits:
for developers and contributors: much clear situation and better publication path.
Toolset layer should be much more open for new tools than current GRASS main branch

for users: faster access to new tools.
There is no doubt that new tools are faster developed (less risk) than GRASS core
Binaries with toolsets could be maintained as separate apt/urpmi/pacman/yum/exe etc packages,
so it may appear in linux repository separetly form GRASS core.

There is only loose ideas. Most of them are of course taken from R (core/toolsets/rest of packages;
separate core and package development) but I think it is worth of some discuss ...

regards
Jarek

Repository layout

Current repository layout

- grass
|- trunk
 |- raster/
 |- vector/
 |- ...

- grass-addons
|- raster/
|- vector/
|- ...

Proposed repository layout

- grass
|- trunk
 |- raster/
 |- vector/
 |- ...

- grass-tools
|- trunk
 |- raster/
 |- vector/
 |- ...

- grass-addons
|- raster/
|- vector/
|- ...

Proposed toolboxes

Toolbox is a topic-based set of modules used for solving common GIS analysis, like hydrology, networking, LRS, etc. Toolbox should be easily installed by the user, for this purpose could be designed module g.toolbox to

  • add toolboxes
g.toolbox toolbox=hydrology operation=add

Module downloads source code of the selected modules from SVN, compile them and afterwards also install them to the user-specified (~/.grass7/tools) or system (/usr/lib/grass7) directory.

  • remove toolboxes
g.toolbox toolbox=hydrology operation=remove
  • list of modules from given toolbox
g.toolbox -l toolbox=hydrology

User can also add/remove selected module via g.extension.

List of toolboxes

Toolbox name Toolbox code Description Correlate toolbox
3D Raster 3D All `r3.*` modules
Database DB All `db.*` modules Vector data
Hydrology HY
Imagery IM All `i.*` modules
Landascape analysis LA All `r.li.*` modules maybe something else
Lidar analisys LI All `v.lidar.*`, v.surf.bspline
Network Analisys NA All `v.net.*` modules maybe something else Vector data
Raster data RD A lot of basic `r.*` modules (like r.buffer, r.reclass, r.fillnull...)
Vector data VD A lot of basic `v.*` modules (like v.buffer, v.centroid, v.overlay...) Database

List of modules (trunk)

Display

Module Core/Tools/Addons Toolbox(es)
d.barscale ?
d.colorlist ?
d.colortable ?
d.correlate ?
d.erase ?
d.font ?
d.fontlist ?
d.geodesic ?
d.graph ?
d.grid ?
d.his ?
d.histogram ?
d.info ?
d.labels ?
d.legend ?
d.linegraph ?
d.nviz ?
d.path ?
d.polar ?
d.profile ?
d.rast ?
d.rast.arrow ?
d.rast.edit ?
d.rast.leg ?
d.rast.num ?
d.rgb ?
d.rhumbline ?
d.shadedmap ?
d.text ?
d.thematic.area ?
d.title ?
d.vect ?
d.vect.chart ?
d.vect.thematic ?
d.where ?

Database

Module Core/Tools/Addons Toolbox(es)
db.columns ?
db.connect ?
db.copy ?
db.createdb ?
db.databases ?
db.describe ?
db.drivers ?
db.dropcolumn ?
db.dropdb ?
db.droptable ?
db.droptable ?
db.execute ?
db.in.ogr ?
db.login ?
db.out.ogr ?
db.select ?
db.tables ?
db.test ?

General

Module Core/Tools/Addons Toolbox(es)
g.access C
g.cairocomp C
g.copy C
g.dirseps C
g.extension C
g.filename C
g.findetc C
g.findfile C
g.gisenv C
g.gui C
g.list C
g.manual C
g.mapset C
g.mapsets C
g.message C
g.mkfontcap C
g.mlist C
g.mremove C
g.parser C
g.pnmcomp C
g.ppmtopng C
g.proj C
g.region C
g.remove C
g.rename C
g.tempfile C
g.transform C
g.version C

Imagery

Module Core/Tools/Addons Toolbox(es)
i.albedo ?
i.atcorr ?
i.biomass ?
i.cca ?
i.cluster ?
i.eb.eta ?
i.eb.evapfr ?
i.eb.h_SEBAL01 ?
i.eb.soilheatflux ?
i.emissivity ?
i.evapo.time ?
i.fft ?
i.fusion.brovey ?
i.gensig ?
i.gensigset ?
i.group ?
i.his.rgb ?
i.ifft ?
i.image.mosaic ?
i.in.spotvgt ?
i.landsat.rgb ?
i.latlong ?
i.maxlik ?
i.modis.qc ?
i.oif ?
i.pca ?
i.rectify ?
i.rgb.his ?
i.smap ?
i.spectral ?
i.sunhours ?
i.target ?
i.tasscap ?
i.vi ?
i.zc ?

Misc

Module Core/Tools/Addons Toolbox(es)
m.cogo ?
m.measure ?
m.proj ?

Postscript

Module Core/Tools/Addons Toolbox(es)
ps.map ?

Raster

Module Core/Tools/Addons Toolbox(es)
r.basins.fill ?
r.bitpattern ?
r.blend ?
r.buffer ?
r.buffer2 ?
r.carve ?
r.category ?
r.circle ?
r.clump ?
r.coin ?
r.colors ?
r.colors.out ?
r.colors.stddev ?
r.composite ?
r.compress ?
r.contour ?
r.cost ?
r.covar ?
r.cross ?
r.describe ?
r.distance ?
r.drain ?
r.external ?
r.external.out ?
r.fill.dir ?
r.fillnulls ?
r.flow ?
r.grow ?
r.grow.distance ?
r.gwflow ?
r.his ?
r.horizon ?
r.in.arc ?
r.in.ascii ?
r.in.aster ?
r.in.bin ?
r.in.gdal ?
r.in.gridatb ?
r.in.mat ?
r.in.png ?
r.in.poly ?
r.in.srtm ?
r.in.wms ?
r.in.xyz ?
r.info ?
r.kappa ?
r.lake ?
r.li.cwed ?
r.li.dominance ?
r.li.edgedensity ?
r.li.mpa ?
r.li.mps ?
r.li.padcv ?
r.li.padrange ?
r.li.padsd ?
r.li.patchdensity ?
r.li.patchnum ?
r.li.richness ?
r.li.shannon ?
r.li.shape ?
r.li.simpson ?
r.los ?
r.mapcalc ?
r.mask ?
r.mfilter ?
r.mode ?
r.neighbors ?
r.null ?
r.out.arc ?
r.out.ascii ?
r.out.bin ?
r.out.gdal ?
r.out.gridatb ?
r.out.mat ?
r.out.mpeg ?
r.out.png ?
r.out.pov ?
r.out.ppm ?
r.out.ppm3 ?
r.out.tiff ?
r.out.vrml ?
r.out.vtk ?
r.out.xyz ?
r.param.scale ?
r.patch ?
r.plane ?
r.profile ?
r.proj ?
r.quant ?
r.quantile ?
r.random ?
r.random.cells ?
r.random.surface ?
r.reclass ?
r.reclass.area ?
r.recode ?
r.region ?
r.regression.line ?
r.report ?
r.resamp.bspline ?
r.resamp.filter ?
r.resamp.interp ?
r.resamp.rst ?
r.resamp.stats ?
r.resample ?
r.rescale ?
r.rescale.eq ?
r.ros ?
r.series ?
r.shaded.relief ?
r.sim.sediment ?
r.sim.water ?
r.slope.aspect ?
r.solute.transport ?
r.spread ?
r.spreadpath ?
r.statistics ?
r.statistics2 ?
r.statistics3 ?
r.stats ?
r.sun ?
r.sunmask ?
r.support ?
r.support.stats ?
r.surf.area ?
r.surf.contour ?
r.surf.fractal ?
r.surf.gauss ?
r.surf.idw ?
r.surf.idw2 ?
r.surf.random ?
r.terraflow ?
r.texture ?
r.thin ?
r.tileset ?
r.timestamp ?
r.to.rast3 ?
r.to.rast3elev ?
r.to.vect ?
r.topidx ?
r.topmodel ?
r.transect ?
r.univar ?
r.uslek ?
r.usler ?
r.volume ?
r.walk ?
r.water.outlet ?
r.watershed ?
r.what ?
r.what.color ?

3D raster

Module Core/Tools/Addons Toolbox(es)
r3.cross.rast T 3D Raster
r3.gwflow T 3D Raster
r3.in.ascii T 3D Raster
r3.in.v5d T 3D Raster
r3.info T 3D Raster
r3.mapcalc T 3D Raster
r3.mask T 3D Raster
r3.mkdspf T 3D Raster
r3.null T 3D Raster
r3.out.ascii T 3D Raster
r3.out.v5d T 3D Raster
r3.out.vtk T 3D Raster
r3.stats T 3D Raster
r3.timestamp T 3D Raster
r3.to.rast T 3D Raster
r3.univar T 3D Raster

Vector

Module Core/Tools/Addons Toolbox(es)
v.autokrige ?
v.buffer ?
v.build ?
v.build.all ?
v.build.polylines ?
v.category ?
v.centroids ?
v.class ?
v.clean ?
v.colors ?
v.convert ?
v.convert.all ?
v.db.addcolumn ?
v.db.addtable ?
v.db.connect ?
v.db.dropcolumn ?
v.db.droprow ?
v.db.droptable ?
v.db.join ?
v.db.reconnect.all ?
v.db.renamecolumn ?
v.db.select ?
v.db.univar ?
v.db.update ?
v.delaunay ?
v.dissolve ?
v.distance ?
v.drape ?
v.edit ?
v.external ?
v.extract ?
v.extrude ?
v.generalize ?
v.hull ?
v.in.ascii ?
v.in.db ?
v.in.dxf ?
v.in.e00 ?
v.in.geonames ?
v.in.gns ?
v.in.lines ?
v.in.mapgen ?
v.in.ogr ?
v.in.postgis ?
v.in.region ?
v.in.sites ?
v.in.sites.all ?
v.in.wfs ?
v.info ?
v.kcv ?
v.kernel ?
v.krige ?
v.label ?
v.lidar.correction ?
v.lidar.edgedetection ?
v.lidar.growing ?
v.lrs.create ?
v.lrs.label ?
v.lrs.segment ?
v.lrs.where ?
v.mkgrid ?
v.neighbors ?
v.net ?
v.net.alloc ?
v.net.allpairs ?
v.net.bridge ?
v.net.centrality ?
v.net.components ?
v.net.connectivity ?
v.net.distance ?
v.net.flow ?
v.net.iso ?
v.net.path ?
v.net.salesman ?
v.net.spanningtree ?
v.net.steiner ?
v.net.timetable ?
v.net.visibility ?
v.normal ?
v.out.ascii ?
v.out.dxf ?
v.out.gps ?
v.out.ogr ?
v.out.postgis ?
v.out.pov ?
v.out.svg ?
v.out.vtk ?
v.outlier ?
v.overlay ?
v.parallel ?
v.patch ?
v.perturb ?
v.proj ?
v.qcount ?
v.random ?
v.rast.stats ?
v.reclass ?
v.report ?
v.sample ?
v.segment ?
v.select ?
v.split ?
v.support ?
v.surf.bspline ?
v.surf.idw ?
v.surf.rst ?
v.to.3d ?
v.to.db ?
v.to.points ?
v.to.rast ?
v.to.rast3 ?
v.transform ?
v.type ?
v.univar ?
v.vol.rst ?
v.voronoi ?
v.what ?
v.what.rast ?
v.what.vect ?

Various

Module Core/Tools/Addons Toolbox(es)
nviz ?
nviz_cmd ?
wximgview ?
wxpyimgview ?
xganim ?
ximgview ?

List of selected AddOns modules

See GRASS AddOns for full list of available modules. Feel free to extend this list.

Module Core/Tools/Addons Toolbox(es) Note
r.stream.angle T HY
r.seg T IM It could be rename to `i.seg`
i.topocorr T IM
r.diversity T LA
Ps.output ?
... ?