GRASS GSoC 2012 WxGUI front end for vector analysis modules

From GRASS-Wiki
Jump to: navigation, search

(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

Launch 'Vector network analysis' tool from Map Display Window toolbar

Roadmap

Week 1 (May 21)

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
Dialog - Points list tab (2012-6-08)
Dialog - Settings tab (2012-6-08)

Week 4 (June 11)

  • connected points list with map window
Points from list showed in map window (2012-6-15)

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
Button for interactive inserting of coordinates from map window. (2012-7-01)
  • 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)

Dialog - v.net.path analysis (2012-7-06)


Week 8 (July 9)

  • Added output console
  • Analysis is run in other thread than GUI
Dialog - v.net.alloc analysis (2012-7-13)

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
Attribute table browser of input layers(2012-7-13)


Weekly Reports