GRASS SoC Ideas 2012

From GRASS-Wiki
Revision as of 01:35, 25 February 2012 by MarisN (talk | contribs) (wxGUI: Remove WMS idea, add interactive export tool idea)

Jump to: navigation, search

Grasslogo vector small.png @ Gsoc-2012-logo-color.png @ OSGeo 220pix.png


This is the GRASS page for Google Summer of Code 2012. Here we will list project ideas and and other information related to the GRASS GSoC projects.


* OSGeo Flyer at (todo)


Required Steps

  • List ideas
  • Assign Mentors to Ideas
  • Notify OSGeo
  • Mentors evaluate student applications
  • Accepted students announced
  • Mentor will create directory structure in the GRASS add-ons SVN for projects and setup access for students
    • Students must read and post agreement to RFC2 to the grass-psc mailing list to gain SVN access
    • Create a Wiki page for each accepted project, to be used as a progress reporting tool
  • Coding begins...
  • Students and mentors: Complete the Mid-term survey
  • Final commit and packaging for Google


  • Project ideas of your own are also most welcome and often the best.


  1. Offer also (optional) "conventional" GUI layout: For some users, the current approach of separate windows (SDI) leads to a windows flooding. This is a common complaint especially from newbies. Especially on large monitors or dual screen systems catching the wxGUI windows can be tedious when they appear on separate monitors (depends on windows manager, the much used KDE scatters typically the wxGUI windows all over the screen real estate). Almost each task generates a new wxGUI window which is freely floating around on the screen: example 1 and example 2. On a dual-screen this may sum up to 50cm of distance! The idea is to capture all those windows in one frame. For details, see WxGUI#Layout.
    Current wxGUI layout with detached window components
    Proposal for wxGUI layout modification (Recomposition of existing toolbars, mapview and menus)
  2. Develop a GUI module in wxPython for creating animations from multiple maps and saving animation outputs to animated GIF, MOV, or MPEG files. See existing modules xganim, r.out.mpeg, NVIZ's animation tools, and the Movies creation wiki page. (co-mentor Helena Mitasova).
  3. Develop an interactive vector geometry selection and export tool for WXGUI as described in the trac ticket #1471
  4. Your idea here

Willing to Mentor: Martin Landa, Maris Nartiss, Markus Metz, (your name here)


  1. Add OpenMP parallelization where appropriate, for example r.cost,, r.watershed. It is important to understand which modules are processor bound, and concentrate on them. i.e. do not needlessly complicate the code of non-long running processor bound modules. A good working knowledge of ANSI C and OpenMP is required. (OpenCL and pthreads are fine too!)
  2. Create a new GRASS module to find the topographic_prominence of peaks from a raster elevation map within the region. (probably this would only make up 1/4 to 1/2 of a multi-part GSoC project)
  3. Expand maximum grid size for r.watershed. LIDAR-based elevation grids are at finer resolution than previous elevation models, often overwhelming the integer variable limit for grid size.
  4. Your suggestion here!

Willing to Mentor: Hamish (co-mentor parallelization and prominence projects), Wolf Bergenheim(your name here)


  1. Add OpenMP parallelization where appropriate, for example, and v.vol.rst (co-mentor Helena Mitasova). (OpenCL and pthreads are fine too!) See above idea in the Raster section.
  2. Better support for wrap-around at 180 longitude: Currently the raster engine is pretty good at wrapping data over 180 longitude. The vector data isn't, but it should be. This is a great task if by the end of the summer you'd like to be familiar with the implementation method of an entire vector stack of a fully featured modern GIS.
  3. Add break lines support to interpolation modules (,, Current implementations provide no support to specify locations of cliffs or faults* thus leading to improper results within non-continous datasets. See Geospatial Analysis - a comprehensive guide. 3rd edition for description. [*] well, some support exists, see
  4. Speed up wxGUI handling and 2D display of large point clouds (several million points). This is likely to include additional "Level-1 Vector" support in the backend modules (for which a working knowledge of ANSI C is req'd).
  5. Your idea here ...

Willing to Mentor: Martin Landa, Markus Metz, Hamish (co-mentor for parallelization), Wolf Bergenheim, (your name here)


  1. GRASS's imagery modules (for satellite, scanned maps, and orthophotos) act as enhanced raster modules. In GRASS 5 and 6 they were mostly implemented using interactive X-monitors which are not available in MS Windows and so are removed in the new cross-platform code of GRASS 7.
    • We need someone willing to port the old modules to work with GRASS 7, including writing new wxPython GUI frontends to a number of existing tools and updating the imagery libraries to current raster library standards.
    • In addition, there are a number of improved/automated georectification tools which have not been merged into GRASS 5/6 which it would be nice to have updated and merged into the main code.
  2. Implement OpenMP (multithreading) as much as possible (where appropriate; OpenCL and pthreads are fine too)
  3. In addition to the porting of the georectification tools mentioned above, it would be interesting to implement an orthorectification tool for satellite imagery. Currently, GRASS only has for aerial photographs.
  4. Implement image segmentation algorithms and tools
  5. Implement region-based classification
  6. Implement hierarchical classification tools (e.g. being able to create a large class "forest", with subclasses of different types of forests)
  7. Your idea here

See the ideas for imagery improvement and GRASS 7 ideas wiki pages for more details.

Willing to Mentor: Hamish (co-mentor for parallelization), (your name here)

3D visualization

  1. Optimize OGSF (and NVIZ/wxNVIZ) to display large 3D point clouds with uninterupted tought speed. OGSF + (wx)NVIZ should be able to rotate point cloud (i.e. LiDAR dataset) with 4 millions of points on medium hardware (i.e. 2GHz CPU with 2Gb RAM and GPU with hardware transform and lighting support and dedicated video RAM) with response time not greater than 1.0 second.
  2. Design and implement text displaying and styling in OGSF library and it's front-ends (NVIZ, wxNVIZ). Solution should be user configurable (fonts, colors, effects etc.) and multilanguage friendly.
  3. Design and implement user-provided symbol support in OGSF library and it's front-ends (NVIZ, wxNVIZ). Solution should support GRASS symbols, SVG, and/or simple EPS symbols.
  4. Drape multiple color maps over topography (equivalent to running r.patch or r.composite and draping the result; second raster is currently supported as transparency).

Willing to Mentor: Martin Landa (for 2), co-mentor for 1 and 4: Helena Mitasova, (your name here)

Volume modeling

  1. implement color management for 3D rasters : r3.colors
  2. develop r3.flow for computing 3D flow lines and 3D flow accumulation from 3D rasters
  3. enhance volume interpolation module v.vol.rst for handling of data in space-time cube, including computation of gradients and hypercurvatures

Willing to Mentor: co-mentor Helena Mitasova, (your name here)


  1. Design and implement modern metadata management system for GRASS to support OGC CSW and INSPIRE discovery a view services
  2. Design sophisticated Python scripting interface for GRASS based on GRASS Python Scripting Library
  3. Your idea here

Willing to Mentor: Wolf Bergenheim (Python API, metadata management) (your name here)

Guidelines for Students

How do you maximize your chances of getting picked? First read the Google SoC FAQ. Then talk to us about your idea. Try emailing our dev-mailing list, or come and talk to us in IRC (#grass). You can also reach the mentors directly by emailing:

Getting started with GRASS coding

  • The source code is maintained in a SVN server which is easy to browse
See also the development section of the GRASS user's wiki

Guidelines for Mentors

Accepted Ideas

  1. Project name
    Student: Your name here
    Mentor: Your mentor's name here
    Backup mentor: Your backup mentor's name here
    Wiki page: wiki page maintained by you (typically in this GRASS wiki, or the trac development wiki)
  2. Project name
    Student: Someone else's name here
    Mentor: Their mentor's name here
    Backup mentor: Their backup mentor's name here
    Wiki page: wiki page maintained by them (typically in this GRASS wiki, or the trac development wiki)