GRASS GSoC 2012 WxGUI front end for vector analysis modules
(See also other GRASS GSoC 2012 projects)
Student Name: | Stepan Turek, Czech University in Prague |
Organization: | OSGeo - Open Source Geospatial Foundation |
Mentor Name: | Martin Landa Backup mentor: Markus Metz |
Title: | WxGUI front end for vector network analysis modules |
Repository: | sandbox, browse at: scatter_plot |
- Abstract
GRASS GIS provides various modules for vector network analysis. It is difficult to use these powerful modules for beginners in GRASS because these modules can be used only in command line. Main goal of the project is to make user-friendly WxGUI front end for vector network analyses. Additional goal is to improve functionality of Attribute Table Manager.
Application
Introduction
GRASS GIS provides various modules for vector network analysis. It is difficult to use these powerful modules for beginners in GRASS because these modules can be used only in command line. Main goal of the project is to make user-friendly WxGUI front end for vector network analysis tools. Additional goal is to improve functionality of Attribute Table Manager.
Background
Purpose of network analysis is finding optimal solution of the problem on graph. All GRASS vector network analysis modules have prefix v.net plus interactive module d.path. The modules use Directed Graph Library as engine for network analysis. Currently, module d.path does not work in GRASS 7 because of X monitors dependency which GRASS 7 does not support.
The idea
Vector network analysis WxGUI front end will use v.net.* + d.path modules for computations.
The WxGUI front end will work that way: User will just choose type of analysis from menu, set parameters for analysis (vector map, layers, costs...), insert some points into map by mouse or by their coordinates, then will run the analysis and see the result. Then user will be able to easily change configuration of points and run analysis again. Results of analyses will be implicitly saved as temporary maps and user will have option to save it permanently. There will be undo redo features for history browsing therefore maps created few steps in history will be temporary saved. Before running of analysis points will be inserted as nodes into vector layer, because v.net module will be automatically called.
Second part of the project will deal with improving of Attribute Table Manager, because important part of vector network analysis includes work with the attribute table. Important feature related to vector network analysis, which Attribute Table Manager misses, is a field calculator. The field calculator would be very useful for calculating cost values for network segments. It will be front end of v.db.update module. During development I will make effort to re-use already written code in GRASS or modify the code in order to make it re-usable. Interactive input of points is already implemented in WxGUI, it will be used for vector analysis front end.
Project plan
Period | Task | Status | Notes |
---|---|---|---|
April 23 - May 20 | Bonding period | √ | |
May 21 | design of front end, studying code | √ | |
May 28 | design of front end, studying code | √ | |
June 4 | dialog for front end | √ | |
June 11 | v.net.path implementation to front end, dialog | √ | points list - map win connection, ( √ in July 2 - 9 week) |
June 18 | v.net.path + other v.net.* modules implementation to front end | √ | improved map win API for mouse event handlers and for drawing |
June 25 | other v.net.* modules implementation to front end | √ | the map win API - testing, commit, ( √ in July 9 - 16 week) |
July 2 | adaptation of front end behavior for different v.net modules | √ | v.net.path implemented into front end |
July 9 | continue with adaptation, bug fixing | √ | other v.net.* modules implementation |
July 13 | Mid-term evaluations deadline | √ | passed |
July 16 | undo/redo functionality | √ | adaptation, bugs fixing |
July 23 | undo/redo functionality | √ | + snapping to nodes |
July 30 | Attribute Table Manager (ATM), refactoring | √ | refactoring |
August 6 | ATM, Field calculator | √ | refactoring, field calculator |
August 13 | ATM, wx.vnet integration | √ | integration |
August 20 | testing, documentation | ||
August 24 | Final evaluation |
Testing
Code is available from GRASS AddOns SVN repository
svn co http://svn.osgeo.org/grass/grass-addons/grass7/gui/wxpython/wx.vnet
- How to install & test
1. Install wx.vnet extension via g.extension
g.extension -s extension=wx.vnet
2. Go to Map Display Window and choose 'Vector network analysis' from 'Analyze' menu
Roadmap
Week 1 (May 21)
- took part in GRASS Community Sprint Prague 2012. I did most of work for GSoC at this event, see the report.
Week 2 (May 28)
- implemented interactive inserting of coordinates from map window to module parameter field
Week 3 (June 4)
- created first version of dialog for vector network analysis
- separation of points list code from GCP Manager to new class which is shared with the dialog and the manager
Week 4 (June 11)
- connected points list with map window
Week 5 (June 18)
- worked on improving registration of event handlers to MapWindow (connection with toolbars)
- worked on registration and drawing of graphics in MapWindow
- GCP rewritten to use the registration of graphics
Week 6 (June 25)
- most of time I tested and tuned the changes in trunk
Committed changes:
- Improved event handlers registration API (r52255):
- possible to unregister concrete handler from event (with help of Vaclav Petras and Anna Kratochvilova)
- imroved toggling and untoggling buttons in map window toolbars
- the toolbars reacts on registration and unregistration
- implemented button for interactive inserting of coordinates
- Implemented API for drawing lines and points in map window (r52256).
- GCP rewritten to use this registration for drawing ground control points (r52257).
Week 7 (July 2)
- Integrated v.net.path module into dialog (r52330):
Week 8 (July 9)
- Integrated modules:
- Added output console
- Analysis is run in other thread than GUI
Week 9 (July 16)
- Added new options into settings dialog
- Parameters tab:
- Better interaction of selects
- Checks for incorrect values
- Protection from overwriting of vector maps, which have same name as temporary vector maps created during analysis
- Checks if temporary vector maps were not changed outside
- Bugs fixing
- Code reorganization
Week 10 (July 23)
- Implemented snapping to nodes feature
- Implemented undo/redo functionality, which enables to browse previous analysis results
Week 11 (July 30)
- Studied code of Attribute Table Manager
- Refactoring of Attribute Table Manager
- Improvements of snapping and undo/redo functionality
Week 12 (August 6)
- Refactoring of Attribute Table Manager - r52641
- Implementation of field calculator
Week 13 (August 13)
- Added attribute table browser of input layers and results of analysis
- Bugs fixing
- Added statusbar