Difference between revisions of "GRASS SoC Ideas 2013"

From GRASS-Wiki
Jump to: navigation, search
(Added "interface to OTB" as a suggestion)
Line 29: Line 29:
 
* Interface with the [http://www.orfeo-toolbox.org/otb/ Orfeo toolbox (OTB)], which is an open source, [http://www.itk.org ITK]-based, C++ library of (spatial) image processing library. OTB implements a very wide set of interesting features for anybody working with raster data - in particular satellite imagery: radiometric corrections, orthorectification, filtering, feature extraction, image segmentation , classification, change detection, etc.
 
* Interface with the [http://www.orfeo-toolbox.org/otb/ Orfeo toolbox (OTB)], which is an open source, [http://www.itk.org ITK]-based, C++ library of (spatial) image processing library. OTB implements a very wide set of interesting features for anybody working with raster data - in particular satellite imagery: radiometric corrections, orthorectification, filtering, feature extraction, image segmentation , classification, change detection, etc.
  
 +
=== Temporal GIS Algebra ===
 +
 +
We (Soeren Gebbert and Thomas Leppelt) want to implement a spatio-temporal map algebra for raster and vector data
 +
 +
* Spatio-temporal vector algebra module
 +
** The algebra will be based on boolean vector operations from <b>v.overlay</b> (and, or, xor, not), v.buffer (buff_point, buff_line, buff_area), temporal variables (day of year, weekday, datum, time, ...) and temporal topology relations (predecessor, successor, follows, equals, ...)
 +
** We will use PLY for lexical analysis and parser generation
 +
** The resulting module will be able to process space time vector datasets using expressions like:
 +
 +
<source lang="bash">
 +
# Compute the intersection between the space time vector datasets A and B
 +
# from maps with equal time stamps. The STVDS A is used as temporal reference.
 +
# A new STVDS C will be created with the same time stamps as A.
 +
t.vect.mapcalc inputs=A,B timeref=A output=C expr="C = if(equal(B), and(A,B))"
 +
 +
# Nested boolean operations are supported and temporal neighborhood computation
 +
t.vect.mapcalc input=A,B,C tempref=A output=D \
 +
    expr="D = if(successor(B) && predecessor(C), and(A, xor(successor(B), buff_point(predecessor(C), 100)))"
 +
 +
# Date and time can be used in the expression
 +
t.vect.mapcalc input=A,B tempref=A output=C \
 +
    expr="C = if(start_year() >= 2001 || start_year() <= 2010, and(A,B))"
 +
</source>
 +
 +
* Spatio-temporal raster algebra module
 +
** The algebra will be based on the existing <b>r.mapcalc</b> map algebra, temporal variables (day of year, weekday, datum, time, ...) and temporal topology relations (predecessor, successor, follows, equals, ...)
 
{{GSoC}}
 
{{GSoC}}
 +
** We will use PLY for lexical analysis and parser generation
 +
** The resulting module will be able to process space time raster datasets using expressions like:
 +
 +
<source lang="bash">
 +
# Compute the sum between the space time raster datasets A and B
 +
# from maps with equal time stamps. The STRDS A is used as temporal reference.
 +
# A new STRDS C will be created with the same time stamps as A.
 +
t.rast.mapcalc inputs=A,B timeref=A output=C expr="C = if(equal(B), A + B)"
 +
 +
# Spatio-temporal neighborhood computation. STRDS C will have the same time stamps as A.
 +
t.rast.mapcalc input=B tempref=A output=C \
 +
    expr="C = if(successor(B) && equal(B) && predecessor(B), (successor(B)[0,0] + B[0,0] + predecessor(B)[0,0])/3.0, B[0,0])"
 +
</source>

Revision as of 13:41, 26 February 2013

About

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

Ideas

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

Symbology / Cartography

  • Allow display of a vector legend in the map display (equivalent to current d.legend implementation for rasters)
HB: note that SoC only accepts coding projects, not graphics design or documentation projects. Adding svg/eps support to a d.* module and ps.map would be quite helpful. See the d.graph help page and ps.map's "eps" and "vpoints" instructions.

Imagery

  • Based on the work on segmentation in GSoC 2012 develop routines for object-based (ore region-based) image classification. This probably entails:
    • Characterizing segments. Thsi includes producing statistics such as mean, median, variance of the segmented data within each delineated segment.
    • Classifying segments based on the characteristics and (possibly) training areas
    • Interface with other modules in a consistent workflow (i.cluster, r.fuzzy, etc)
  • Implement hierarchical classification tools (e.g. being able to create a large class "forest", with subclasses of different types of forests)
  • Interface with the Orfeo toolbox (OTB), which is an open source, ITK-based, C++ library of (spatial) image processing library. OTB implements a very wide set of interesting features for anybody working with raster data - in particular satellite imagery: radiometric corrections, orthorectification, filtering, feature extraction, image segmentation , classification, change detection, etc.

Temporal GIS Algebra

We (Soeren Gebbert and Thomas Leppelt) want to implement a spatio-temporal map algebra for raster and vector data

  • Spatio-temporal vector algebra module
    • The algebra will be based on boolean vector operations from v.overlay (and, or, xor, not), v.buffer (buff_point, buff_line, buff_area), temporal variables (day of year, weekday, datum, time, ...) and temporal topology relations (predecessor, successor, follows, equals, ...)
    • We will use PLY for lexical analysis and parser generation
    • The resulting module will be able to process space time vector datasets using expressions like:
# Compute the intersection between the space time vector datasets A and B
# from maps with equal time stamps. The STVDS A is used as temporal reference.
# A new STVDS C will be created with the same time stamps as A.
t.vect.mapcalc inputs=A,B timeref=A output=C expr="C = if(equal(B), and(A,B))"

# Nested boolean operations are supported and temporal neighborhood computation
t.vect.mapcalc input=A,B,C tempref=A output=D \
    expr="D = if(successor(B) && predecessor(C), and(A, xor(successor(B), buff_point(predecessor(C), 100)))"

# Date and time can be used in the expression
t.vect.mapcalc input=A,B tempref=A output=C \
    expr="C = if(start_year() >= 2001 || start_year() <= 2010, and(A,B))"
  • Spatio-temporal raster algebra module
    • The algebra will be based on the existing r.mapcalc map algebra, temporal variables (day of year, weekday, datum, time, ...) and temporal topology relations (predecessor, successor, follows, equals, ...)
    • We will use PLY for lexical analysis and parser generation
    • The resulting module will be able to process space time raster datasets using expressions like:
# Compute the sum between the space time raster datasets A and B
# from maps with equal time stamps. The STRDS A is used as temporal reference.
# A new STRDS C will be created with the same time stamps as A.
t.rast.mapcalc inputs=A,B timeref=A output=C expr="C = if(equal(B), A + B)"

# Spatio-temporal neighborhood computation. STRDS C will have the same time stamps as A.
t.rast.mapcalc input=B tempref=A output=C \
    expr="C = if(successor(B) && equal(B) && predecessor(B), (successor(B)[0,0] + B[0,0] + predecessor(B)[0,0])/3.0, B[0,0])"