WxNviz GSoC 2011
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
Period | Task | Status / Notes |
---|---|---|
April 26 - May 22 | Bonding period | √ |
May 23 | fixing existing bugs | never ending story ;-) |
May 30 | improve GUI design | √ |
June 6 | implement cutting planes | √ |
June 13 | thematic points | postponed, √ |
June 20 | testing, bug fixing | √ |
June 27 | testing, bug fixing | √ |
July 4 | nviz_cmd - "save state" | √ |
July 11 | implement decorations | text missing, not working on Mac |
July 15 | Mid-term evaluations deadline | √ |
July 18 | volumes - cross sections | √ |
July 25 | better view control | panning to be implemented |
August 1 | implement vector data querying | |
August 8 | implement scaled difference | |
August 15 | testing, documentation | |
August 22 | Final evaluation |
- TODO (ML)
- text rendering in OpenGL
Last TODOs before final pencils down
- add few video-tutorials on wxNviz page
How to test
Download GRASS 7 from SVN repository.
Please report any bugs, wishes via trac:
component: wxGUI keywords: nviz
See list of known bugs.
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
Week 2 (June 6)
- cutting planes - r46654
- view page GUI modified
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
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)
Week 7 (July 11)
- volume slices implemented
- volume slices added to nviz_cmd
- transparency added to constant planes
Week 8 (July 18)
- legend and text labels (reuse 2D mode)
- partly solved latlon maps - sliders for float values (z-exag, position), still problem with lighting
Week 9 (July 25)
- legend and text rendering is still not solved for Mac
- interactive legend resizing for 2D view (not yet implemented in 3D)
Week 10 (August 1)
- rotation with 3D scene by mouse dragging (it's now bound to pan button -- just temporary solution)
- problem with updating region hopefully fixed
- first implementation of thematic mapping for points
- only colors supported
- entering values is done manually
Week 11 and 12 (August 8 and 15)
- improvements of thematic mapping, dialog supports both vector color tables (implemented by Martin L.) and attribute columns
- update documentation