Technology for Geoinformatics

The plan for a native GRASS Graphical User Interface (GUI) finds its origin in the project GFOSS - TN, fruit of the collaboration between FBK (Fondazione Bruno Kessler) and the Information System Service of the Trento municipality.

Native GUI is one of the key points for the future development of GRASS GIS. It is crucial for GRASS user and especially connected to newcomers. GRASS offers high capability to analyze and manipulate spatial data, and covers many application areas of GIS projects. However, it shows an incomplete and scarcely intuitive graphical user interface, which causes slow performance of many options such as layout of maps. A large number of GIS professionals use MS-Windows and Macintosh operating systems. Until recently, GRASS run on these platforms not without problems. Additionally, the user interface of GRASS has lagged behind modern GUI design, making it much harder to operate.

The current standard GRASS GUI is written in Tcl programming language using Tk graphical toolkit. In the last years the limitations of Tcl/Tk toolkit appeared to be prohibitive for the future development. The new generation of GRASS GUI is written in the Python programming language using wxPython - a blending of the wxWidgets library for Python.

wxGUI will appear as the default GRASS GUI in main stable release of 2008 - GRASS 6.4.0.

We hope that improvements in the GUI will help to bring more GIS users and professionals into the GRASS community, in turn leading to further advances in GRASS and GIS in general and ultimately a benefit for the public.

wxGUI - a new generation of GUI for GRASS GIS

The main project goals of the new GUI:
wxGUI welcome screen
Fig. 1: wxGUI welcome screen (GNU/Linux and MS Windows)

Description

The GUI is composed of two main components: Currently developed additional extensions:

See also wiki page which contains up-to-date information including screenshots.

For detailed information see the wxGUI manual page.

Layer Manager

Layer Manager allows users to run different GRASS modules from a menu, includes map layer management, integrated command-line prompt, and command output area.
Layer Manager
Fig. 2: Layer Manager

Map Display Window

Map Display Window integrates basic tools for zooming, panning, data querying, decorations (north arrows, barscale, etc.). The user is allowed to start various Map Displays during one session. The Layer Manager registers open Map Displays using different tabs.
Map Display
Fig. 3: Map Display

Vector digitizer

The key component in the GFOSS-TN project. Besides core GUI components, vector digitizer has been developed thanks to close collaboration with the Information System Service of the Trento municipality.
Vector digitizer
Fig. 4: Vector digitizer
For detailed information see the Vector digitizer manual page.

Attribute Table Manager

Attribute table manager allows to:
Attribute Table Manager
Fig. 5: Attribute Table Manager
For detailed information see the Attribute Table Manager manual page.

References

  1. Martin Landa: New GUI for GRASS GIS based on wxPython (GIS Ostrava 2008, January 27-30, 2008, Ostrava, Czech Republic)
  2. Martin Landa, Cristina Moretto, Michele Zanolli, Luca Manganelli and Markus Neteler: wxPython GUI per GRASS (IX Meeting degli Utenti Italiani di GRASS - GFOSS, February 20-22, Perugia, Italy)

Appendix

SLOC statistics

GRASS SVN trunk gui/wxpython (2008-09-07):
SLOC    Directory       SLOC-by-Language (Sorted)
24247   gui_modules     python=24247
2486    vdigit          cpp=2486
1535    top_dir         python=1518,sh=17
792     nviz            cpp=792
750     compat          python=750
435     icons           python=435
141     scripts         sh=137,python=4
69      support         python=69
8       images          python=8
0       docs            (none)
0       xml             (none)

Totals grouped by language (dominant language first):
python:       27031 (88.73%)
cpp:           3278 (10.76%)
sh:             154 (0.51%)

Total Physical Source Lines of Code (SLOC)                = 30,463
Development Effort Estimate, Person-Years (Person-Months) = 7.23 (86.73)
 (Basic COCOMO model, Person-Months = 2.4 * (KSLOC**1.05))
Schedule Estimate, Years (Months)                         = 1.14 (13.63)
 (Basic COCOMO model, Months = 2.5 * (person-months**0.38))
Estimated Average Number of Developers (Effort/Schedule)  = 6.36
Total Estimated Cost to Develop                           = $ 976,344
 (average salary = $56,286/year, overhead = 2.40).
SLOCCount, Copyright (C) 2001-2004 David A. Wheeler
SLOCCount is Open Source Software/Free Software, licensed under the GNU GPL.
SLOCCount comes with ABSOLUTELY NO WARRANTY, and you are welcome to
redistribute it under certain conditions as specified by the GNU GPL license;
see the documentation for details.
Please credit this data as "generated using David A. Wheeler's 'SLOCCount'."
    

Developers

Vector digitizer
Fig. 6: wxGUI developers (August 2008)
Martin Landa, September 2008, Trento, Italy