WxNviz GSoC 2011

From GRASS-Wiki
Revision as of 18:07, 8 July 2011 by Annakrat (talk | contribs) (→‎Roadmap: Week 6)
Jump to navigation Jump to search

See wxNviz page.

Accepted Google Summer of Code 2011 project, see also related GSoC 2008 and GSoC 2010 pages.

Student Name: Anna Kratochvilova, Czech University in Prague
Organization: OSGeo - Open Source Geospatial Foundation
Mentor Name: Martin Landa, Helena Mitasova
Title: Completion of wxGUI Nviz extension for 3D data visualization in GRASS GIS
Abstract
This project continues in the development of GRASS GIS 3D visualizaton tool wxNviz based on wxPython and underlying OGSF library. The goal is to add missing functionality so that wxNviz's predecessor written in Tcl/Tk could be replaced by completed wxNviz in GRASS 7. The plan is to add missing features like animations or cutting planes and additionally implement better view control.

Application

Introduction

This project continues in the development of wxNviz as 3D visualization tool for native GRASS GUI (wxGUI). Nviz graphical user interface is originally written in Tcl/Tk. Tcl/Tk-based nviz is planed to be removed in GRASS 7 and still waits for its completed successor. Currently wxNviz lacks many features of original Nviz application. The goal of this project is to add the missing functionality and in the result to replace Tcl/Tk-based nviz in GRASS 7 by modern 3D visualization tool integrated in wxGUI.

Background

GRASS GIS (Geographic Resources Analysis Support System) is one of the largest open source Geographic Information Systems. GRASS GIS is a Free Software project released under the GNU General Public License and it is the part of Open Source Geospatial Foundation. GRASS GIS consists of more than 400 modules for spatial analysis, image processing, manipulation and visualization of many types of data. It is widely used in academic and commercial settings thanks to its powerful tools providing functionality missing in other geographic information systems. GRASS works on multiple platforms, including Linux, Mac OS X and Microsoft Windows.

GRASS was originally controlled via its command line. The first graphical user interface was written in Tcl/Tk, which later appeared to be insufficient. Since 2006 new wxGUI is being developed using wxPython as a GUI toolkit for the Python programming language.

wxNviz is a one of the wxGUI extensions. It enables visualization of multiple surfaces (raster data) in 3D space, volume data (3D raster data), overlaying 2D vector data over surfaces and displaying 3D vector data. wxNviz uses OGSF and Nviz library as an interface for OpenGL. Completion of wxNviz is essential for GRASS 7 which can be released only without dependency on Tcl/Tk. This project picks up on wxNviz development within Google Summer of Code 2008 and 2010 and it should make wxNviz fully functional.

The idea

At present wxNviz provides only partial functionality of Tcl/Tk-based nviz so this project focuses on completion of this wxGUI extension. The plan is to add following missing features: cutting planes, scaled difference, animations, vector data querying, decorations (north arrow, legend, labels, scale bar). Implementation of missing functionality would remove the major obstacle of GRASS 7 release which is the dependency on Tcl/Tk-based Nviz. Additional plan is to improve view controlling which is not very intuitive presently. Petr Voldan, a PhD student of our faculty (FCE CTU in Prague), was dealing with this issue so new view control could follow his results.

Project plan

April 26 - May 22 Bonding period
May 23 fixing existing bugs
May 30 improve GUI design
June 6 implement cutting planes
June 13 thematic points
June 20 testing, bug fixing
June 27 testing, bug fixing
July 4 nviz_cmd - "save state"
July 11 implement decorations
July 15 Mid-term evaluations deadline
July 18 volumes - cross sections
July 25 better view control
August 1 implement vector data querying
August 8 implement scaled difference
August 15 testing, documentation
August 22 Final evaluation

Roadmap

Week 0 (May 23)

  • bug fixing - r46208
  • GUI enhancements (enable to change range of sliders, foldpanel bar)

Week 1 (May 30)

  • bug fixing - lights - r46504
  • new functionality - constant surfaces, look here feature - r46504
  • selection of surfaces on which vector points/lines should be displayed - r46558
Surface page of WxNviz modified (2011-06-02)
Constant surface page added (2011-06-02)
Lighting fixed (2011-05-02)

Week 2 (June 6)

  • cutting planes - r46654
  • view page GUI modified
Cutting planes (shading blend) (2011-06-10)
Cutting planes (shading top color) (2011-06-10)
View page modified (2011-06-10)

Week 3 (June 13)

Week 4 (June 20)

  • new nviz features in workspace: view, light, constant planes (r46775)

Week 5 (June 27)

  • nviz light model and fringe problem hopefully fixed
  • generating commands for nviz_cmd (view, light, surfaces, vectors, cutting plane, fringe)
  • nviz_cmd - cutting planes added
Picture of surfaces cut by two planes (generated by nviz_cmd) (2011-06-30)
Command for nviz_cmd generated by wxNviz (2011-07-01)

Week 6 (July 4)

  • north arrow implemented
  • fixed some bugs in volumes
  • add new functionality to nviz_cmd - north arrow, missing features from volumes
  • interactive positioning (x, y) of cutting planes (need to be improved)

Weekly Reports