[GRASS5] Proposal for GRASS UI roadmap

Colleagues

A couple months back I suggested a discussion on the specifications for the next generation user interface for GRASS. Perhaps because it was summer–or perhaps because everyone is just so happy with what I’ve done so far ;-)–there were few takers. However the comments were useful. I’ve included all of them in the attached text file as I promised to do.

Now that we are thinking about GRASS 6.2 and 7, we need to actively consider the way in which GRASS presents itself to users. GRASS is a great program and current development is making it an outstanding piece of software for managing, visualizing, analyzing, and modeling very diverse spatial data. But this tremendous capability will go unrecognized if potential users become frustrated in trying to make it work. Because of its power and versatility, and because GIS is a complex subject, it is a challenge to make GRASS accessible to users—even ones with considerable experience with computer graphics, CAD, and other GIS’s. This same challenge is faced by other high-end GIS systems. To some extent, we are still trying to work out appropriate display and control metaphors for GIS, and a large part of the existing UI’s are still a lot like word processors and drawing programs, although GIS is neither. An automobile may have a great engine and suspension system, but if it lacks a steering wheel or comprehensible gauges its performance will be underutilized. So the UI is important.

In order to make discussion easier, I want to float a proposal for the next generation UI for GRASS. This will give people a concrete target to take shots at, say they like, or offer modifications or additions. This is perhaps a more effective way to do this than simply asking for input, and I think I’ve got a thick enough skin to offer my proposal for critiquing—of course it is pretty close to perfect so I shouldn’t have to worry much :wink: In any case, it is a start on which we can begin to build.

I’ve tried to build on what works well now, to think out of the box a bit to envision how a GIS can be easier to use, and to be realistic about what can be accomplished in an open source project like this one. GRASS has some excellent features that set it apart from other GIS systems. Ones that always impresses people I show it to are the visualization capabilities. It is extraordinarily flexible and fast at visualizing complex spatial data. I think we should build on that, along with GRASS’s excellent analytical abilities for raster data as unique and distinguishing features of the GRASS system. (I’d like to suggest that we think of beefing up the already strong modeling capabilities of GRASS by adding predictive and agent modeling, but that’s another issue).

Some of the items in the proposal could be implemented pretty soon, using the TclTk tools we use now. Other parts will require more sophisticated use of TclTk or a different GUI development system. Yet other parts will require new C-programming. Because a next generation GUI will require skills beyond my own and team effort, your input is essential.

One thing to note is that I am not recommending a platform for implementing this at this point. I’m pretty sure it could be implemented in TclTk if we get more sophisticated in using that platform. However, it might be better to implement it in another platform like QT or GTK. As I said last summer, however, I think it is better to decide what kind of UI we want and THEN decide which available platform is the best way to implement it.

I guess that is enough preamble. The proposed roadmap is below. Please let me know what you think over the next few weeks. At some point, it might be good to send it to the larger GRASS user list for input from the people who will have to make it work.

Thanks to all of you for your support over the past two years.

Michael


Michael Barton, Professor of Anthropology
School of Human Evolution and Social Change
Arizona State University
Tempe, AZ 85287-2402

phone: 480-965-6213
fax: 480-965-7671
www: http://www.public.asu.edu/~cmbarton

==================================

PROPOSAL FOR A USER INTERFACE ROADMAP FOR GRASS 6.X AND 7

DISPLAYS

***Display windows:
Keep ability to have multiple display windows. Display should have the potential to display both 2D and 3D graphics. Display windows should get focus by clicking with mouse. It should be necessary to run a module like d.mon select simply shift the focus to a different display window.

***2D and 3D visualization:
2D and nD visualization should be seamlessly integrated. The “normal” view would be 2D like current x displays and standard GIS. Clicking a 3D (nviz) button would open a floating window with 3D controls (like in nviz now) but not a new display window. This would allow user to tilt, rotate, change z, visually separate layers, etc. It would work with the same layers shown in 2D mode, but would simply display them in 2.5D or 3D. Nviz would not be a separate module, opening a separate display window and separate layer control panel; it would simply display any active layers in 3D “mode”.

DISPLAY CONTROL GUI AKA GIS MANAGER

We should keep single display control (like current GIS Manager). distinct from the display window(s). This allows for multiple display windows to be controlled from single interface. Display “commands” should be integrated into display control interface; there would be no separate d.* command modules. That is, the display control system should be able to directly draw graphics to a display window, without going through intermediate, stand alone programs. We need to rethink how these would best be implemented (e.g., should we combine thematic vector and chart display functions?) Display functions should still be scriptable as in nviz and d.m, just not independent “commands”. It should be possible to run a display script from the command line to automate mapping.

***Buttons:
There should be 1 row of buttons for display controls (zoom, pan, erase, 3D, query, layer management, open display window, save, print, etc). We should change current display in region buttons to simply region setting buttons (default, select saved region). We will no longer need a display button (see layers specs below)

There should be a 2nd row of buttons for adding layers. This could be space-optimized by making pull-down groups (e.g., vector group would include vector, 3D vector, chart, thematic, etc) with last-used layer-type showing up in the button bar.

***Layers:
Any function than can be thought of as a layer should be implemented as one. It is a nice and pretty intuitive metaphor. It is easy to work with conceptually and comparable to graphic and CAD programs. Layers should include 3D vectors and volumes (see below) along with the kinds of layers now in the GIS manager.

We should keep layer-tree metaphor. The hierarchical arrangement is intuitive and easy to work with. Nested groups are an especially nice touch. We may want to switch from arranging the layer in the order they will be displayed (first at the top, last at the bottom), to a stacked metaphor (last displayed at the “top” of the stack). This is more in line with other GIS programs and most graphics programs, and would make GRASS less confusing to a new user.

Adding a layer to the layer tree should automatically display it when the ‘active’ box is checked. There should be no need for display button. Checking or unchecking the ‘active’ box should automatically display or undisplay the layer. Should layers be added in an non-activated state by default so that the user can choose to display the newly added layer when ready?

There should be an independent layer tree for each display window open. Selecting display window with the mouse displays the associated layer tree. This permits multiple displays of different information controlled from same interface. User should be able to copy existing layer tree to a new or open display window.

***Option panes:
Option panes should open in a separate window when an entry in the layer tree is double clicked. This will optimize space in the display control GUI. There should be “apply” and “save and close” buttons so that an option pane can be kept open if desired.

We should add a “layer name” field to the option pane rather than adding a layer name by typing it into the layer tree. This makes it more “permanent” so that it is not erased when a new map is chosen to be displayed in that layer. If it is empty, the name of the map will go in by default; if something has been typed in it, it will stay and not be overwritten (make this a question when opening a file?)

***Pull-down menus:
Keep menus as we have now for file, configuration, GIS function (raster, vector, 3D), database, extensions (I’m assuming that the GRASS Extension Manager will be default soon). Do we need a separate menu for help or can it go into configure or something like that? Menus should call independent modules that can also be run from the command line. GRASS needs to remain scriptable for complex tasks and functions should be useable from command line for “power users”.

RELATED UI ISSUES

***Attribute data management:
Now that GRASS has vectors with linked attribute data, there needs to be a reasonably decent UI for attribute data management and queries. Perhaps this could be developed along with the switch to a default attribute dbms based on SQLite.

***Printing:
There should be integrated WYSIWYG printing to multiple devices from the GUI, including PDF files. ps.map functions should be integrated into GUI and be accessible without creating complex text file scripts.

***Display output:
Users should be able to save WYSIWYG display output to multiple graphic formats without scripting through a png driver or using gdal_translate. Formats supported should at least include tif, png, pnm, gif, jpg, svg, and xcf.

***Exiting:
It should be possible to exit GRASS from the GUI rather than having to separately type “exit” on the command line.

(attachments)

grass7_ui_discussion.txt (16.7 KB)

Michael,

Thanks for your initiative. I hope it will make a good start for new
Grass GUI. I think that a native, Grass dedicated GUI for is necessary.
I'm adding my point of view on several points.

On Sat, 2005-11-05 at 21:59 -0700, Michael Barton wrote:

<snip>

DISPLAYS

***Display windows:
Keep ability to have multiple display windows. Display should have the
potential to display both 2D and 3D graphics. Display windows should
get focus by clicking with mouse. It should be necessary to run a
module like d.mon select simply shift the focus to a different display
window.

***2D and 3D visualization:
2D and nD visualization should be seamlessly integrated. The "normal"
view would be 2D like current x displays and standard GIS. Clicking a
3D (nviz) button would open a floating window with 3D controls (like
in nviz now) but not a new display window.

Hmm, why not a separate window? I'd prefer:
1. display contents in the 2D window, or select a an existing window
with some layers displayed
2. press the 3D button
3. 3d window with the same layers and controls pop up
4. the 2D window is left untouched - now user can compare the 3D and 2D
view now, use the 2D display as "map", context for navigation in the 3D

This would allow user to tilt, rotate, change z, visually separate
layers, etc. It would work with the same layers shown in 2D mode, but
would simply display them in 2.5D or 3D. Nviz would not be a separate
module, opening a separate display window and separate layer control
panel; it would simply display any active layers in 3D "mode".

DISPLAY CONTROL GUI AKA GIS MANAGER

We should keep single display control (like current GIS Manager).
distinct from the display window(s). This allows for multiple display
windows to be controlled from single interface. Display "commands"
should be integrated into display control interface; there would be no
separate d.* command modules. That is, the display control system
should be able to directly draw graphics to a display window, without
going through intermediate, stand alone programs. We need to rethink
how these would best be implemented (e.g., should we combine thematic
vector and chart display functions?) Display functions should still be
scriptable as in nviz and d.m, just not independent "commands". It
should be possible to run a display script from the command line to
automate mapping.

***Buttons:
There should be 1 row of buttons for display controls (zoom, pan,
erase, 3D, query, layer management, open display window, save, print,
etc). We should change current display in region buttons to simply
region setting buttons (default, select saved region). We will no
longer need a display button (see layers specs below)

There should be a 2nd row of buttons for adding layers. This could be
space-optimized by making pull-down groups (e.g., vector group would
include vector, 3D vector, chart, thematic, etc) with last-used
layer-type showing up in the button bar.

***Layers:
Any function than can be thought of as a layer should be implemented
as one. It is a nice and pretty intuitive metaphor. It is easy to work
with conceptually and comparable to graphic and CAD programs. Layers
should include 3D vectors and volumes (see below) along with the kinds
of layers now in the GIS manager.

We should keep layer-tree metaphor. The hierarchical arrangement is
intuitive and easy to work with. Nested groups are an especially nice
touch. We may want to switch from arranging the layer in the order
they will be displayed (first at the top, last at the bottom), to a
stacked metaphor (last displayed at the "top" of the stack). This is
more in line with other GIS programs and most graphics programs, and
would make GRASS less confusing to a new user.

I like the stack-approach too, but I'd prefer a new layer/grop to be
added exactly on top of the currently highlited one. Having to move it
manually to it's destination *each time* I add a new one is a pain.

I know it would be not 100% solution - in case it is needed to put the
layer/group right at the end of the stack, one will have to move it by
hand. Anyway, still better than having to do so each time.

Adding a layer to the layer tree should automatically display it when
the 'active' box is checked. There should be no need for display
button. Checking or unchecking the 'active' box should automatically
display or undisplay the layer. Should layers be added in an
non-activated state by default so that the user can choose to display
the newly added layer when ready?

The 'active' box idea is nice. And I think it should be set to 'off' by
default. Otherwise adding heavy raster layers, or vector layers with
many objects, would be slow, as each layer would have to be drawn first,
as currently Grass is not able to draw multiple layers simultanously.

There should be an independent layer tree for each display window
open. Selecting display window with the mouse displays the associated
layer tree. This permits multiple displays of different information
controlled from same interface. User should be able to copy existing
layer tree to a new or open display window.

Also, it should be possible to mark and copy/cut/paste and remove
multiple layers or gropus. Currently it is quite a hassle when one wants
to remove 50 of his 100 layers :D.

***Option panes:
Option panes should open in a separate window when an entry in the
layer tree is double clicked. This will optimize space in the display
control GUI. There should be "apply" and "save and close" buttons so
that an option pane can be kept open if desired.

Great.

We should add a "layer name" field to the option pane rather than
adding a layer name by typing it into the layer tree. This makes it
more "permanent" so that it is not erased when a new map is chosen to
be displayed in that layer. If it is empty, the name of the map will
go in by default; if something has been typed in it, it will stay and
not be overwritten (make this a question when opening a file?)

My POV: default the layer name to the file name, allow to edit it later.
Having to answer a question at each layer addition would slow down the
user for no purpose. Also I believe the layer name should change each
time when another file is open in the layer. I believe that a layer in
GIS Manager is rather a slot for a Grass file than something which has
it's own identity.

***Pull-down menus:
Keep menus as we have now for file, configuration, GIS function
(raster, vector, 3D), database, extensions (I'm assuming that the
GRASS Extension Manager will be default soon). Do we need a separate
menu for help or can it go into configure or something like that?

I think a separate Help menu is a good idea. As it will have submenus
according to the Grass html help structure, it will be complex enough
to deserve a separate menu.

Menus should call independent modules that can also be run from the
command line. GRASS needs to remain scriptable for complex tasks and
functions should be useable from command line for "power users".

RELATED UI ISSUES

***Attribute data management:
Now that GRASS has vectors with linked attribute data, there needs to
be a reasonably decent UI for attribute data management and queries.
Perhaps this could be developed along with the switch to a default
attribute dbms based on SQLite.

I dream of a UI for attribute management, a kind of a spreadsheet with
elements of datable management. My wish list:

1. drop column
2. change column type:
I) to numeric:
  a) integer of a given value range
  b) floating of a given value range and number of decimal points
II) to text of a given number of characters
III) to date
3. search for string, value, column name; with support for wildcards and
regexp; find next,previous; in records search horizontaly,verticaly
4. mark records and columns with:
I) mouse, mouse+ALT for multiple separate
II) keyboard:
  a) SHIFT+cursos keys
  b) SHIFT+pgup/pgdown
  c) SHIFT+CTRL+cursos keys for "jump to the next empty or end"
  d) SHIFT+end/home
  e) combination of the above with ALT for selecting multiple separate
III) mark records or colums based on search results; could be integrated
with search (3) as "find all"
6. filter colums and records in a column based on a given pattern
(wildcard and regexp)
7. drop table

***Printing:
There should be integrated WYSIWYG printing to multiple devices from
the GUI, including PDF files. ps.map functions should be integrated
into GUI and be accessible without creating complex text file scripts.

Yup. But, if it is to be possible to prepare a decent map in the display
monitor and then export the monitor content directly into a
ps/pdf/printer, there is a bug to fix in display first:
http://intevation.de/rt/webrt?serial_num=3613&display=History.
Only for the record, if somebody capable of doing it is reading this by
any chance.

***Display output:
Users should be able to save WYSIWYG display output to multiple
graphic formats without scripting through a png driver or using
gdal_translate. Formats supported should at least include tif, png,
pnm, gif, jpg, svg, and xcf.

So many formats? png for best compressed lossles indexed/RGB, jpg for
lossy and svg for vectors should do it. ps would do for hybrid. I guess
Grass team shouldn't mantain too much code in that regard, further image
processing should be up to the user. Xcf could make much sense on the
other hand, but only if layers where preserved, not as a one-layer image
dump. Is that what you mean in regard to xcf? That'd might be worthy of
the effort then I believe.

***Exiting:
It should be possible to exit GRASS from the GUI rather than having to
separately type "exit" on the command line.

Cool.

Some from me:

***MS*** Customization:
1. Font in different parts of the GUI. Font codepage.
2. Default monitor size and location on desktop. Different schemes for
different monitors could be handy to avoid overlapping.
3. Default main GUI location and dimensions.
4. Default location of terminals which pop up when queriying layers etc.
Their font size.
5. Database codepage.

--------------------
W polskim Internecie s± setki milionów stron. My przekazujemy Tobie tylko najlepsze z nich!
http://katalog.epf.pl/

Thanks for the nice reading,

1 - Working with many layers is rather painful in GRASS right now.

An idea might be that when r.in.gdal a multi-layer image, it automatically creates one multi-layer virtual access (group?) in the GUI.
Another idea might be that user may define (interactively select, or even automagically scanned for in the list) a rootname and all layers in the mapset answering to the “$rootname”+“*” would be grouped as one to the user.

2 - About screen display of large images, high-resolution images (and g.region/zoom mis-haps) may cause great frustration to users while waiting to redraw.

Maybe there is a way to fasten this. A very low resolution (about screen size, something like a fat thumbnail) layer could be accessed initially. Or even a set of pyramid layers (?).

3 - The focus on display is an important concept for users.

While running the lab sessions, newbie students only hang GRASS because they do not know that you have to right-click to quit. They close the tool dialog box, sometimes the active window too, and go to another task. This comes certainly from other software experience, maybe when the mouse goes off active display for some time, then the tool can be put in “hibernation” or inactivated, not sure how/what, so that GRASS can still do other things.

Yann

On 11/6/05, Maciek Sieczka <werchowyna@epf.pl> wrote:

The ‘active’ box idea is nice. And I think it should be set to ‘off’ by
default. Otherwise adding heavy raster layers, or vector layers with
many objects, would be slow, as each layer would have to be drawn first,
as currently Grass is not able to draw multiple layers simultanously.

hello Michael,

your ideas are very good & needed. By chance I found this page
http://crischan.net/qgrass with a Q GRASS approach, however it is in its very
first steps but it sounds pretty promising.
I asked Chrischan to present the very first version in GRASS-News vol.4 and
perhaps you both could benefit from each others skills/knowledge/experience.

regards, Martin

On Sunday 06 November 2005 05:59, Michael Barton wrote:

Colleagues

A couple months back I suggested a discussion on the specifications for the
next generation user interface for GRASS. Perhaps because it was summer--or
perhaps because everyone is just so happy with what I¹ve done so far
;-)--there were few takers. However the comments were useful. I¹ve included
all of them in the attached text file as I promised to do.

Now that we are thinking about GRASS 6.2 and 7, we need to actively
consider the way in which GRASS presents itself to users. GRASS is a great
program and current development is making it an outstanding piece of
software for managing, visualizing, analyzing, and modeling very diverse
spatial data. But this tremendous capability will go unrecognized if
potential users become frustrated in trying to make it work. Because of its
power and versatility, and because GIS is a complex subject, it is a
challenge to make GRASS accessible to users‹even ones with considerable
experience with computer graphics, CAD, and other GIS¹s. This same
challenge is faced by other high-end GIS systems. To some extent, we are
still trying to work out appropriate display and control metaphors for GIS,
and a large part of the existing UI¹s are still a lot like word processors
and drawing programs, although GIS is neither. An automobile may have a
great engine and suspension system, but if it lacks a steering wheel or
comprehensible gauges its performance will be underutilized. So the UI is
important.

In order to make discussion easier, I want to float a proposal for the next
generation UI for GRASS. This will give people a concrete target to take
shots at, say they like, or offer modifications or additions. This is
perhaps a more effective way to do this than simply asking for input, and I
think I¹ve got a thick enough skin to offer my proposal for critiquing‹of
course it is pretty close to perfect so I shouldn¹t have to worry much :wink:
In any case, it is a start on which we can begin to build.

I¹ve tried to build on what works well now, to think out of the box a bit
to envision how a GIS can be easier to use, and to be realistic about what
can be accomplished in an open source project like this one. GRASS has some
excellent features that set it apart from other GIS systems. Ones that
always impresses people I show it to are the visualization capabilities. It
is extraordinarily flexible and fast at visualizing complex spatial data. I
think we should build on that, along with GRASS¹s excellent analytical
abilities for raster data as unique and distinguishing features of the
GRASS system. (I¹d like to suggest that we think of beefing up the already
strong modeling capabilities of GRASS by adding predictive and agent
modeling, but that¹s another issue).

Some of the items in the proposal could be implemented pretty soon, using
the TclTk tools we use now. Other parts will require more sophisticated use
of TclTk or a different GUI development system. Yet other parts will
require new C-programming. Because a next generation GUI will require
skills beyond my own and team effort, your input is essential.

One thing to note is that I am not recommending a platform for implementing
this at this point. I¹m pretty sure it could be implemented in TclTk if we
get more sophisticated in using that platform. However, it might be better
to implement it in another platform like QT or GTK. As I said last summer,
however, I think it is better to decide what kind of UI we want and THEN
decide which available platform is the best way to implement it.

I guess that is enough preamble. The proposed roadmap is below. Please let
me know what you think over the next few weeks. At some point, it might be
good to send it to the larger GRASS user list for input from the people who
will have to make it work.

Thanks to all of you for your support over the past two years.

Michael
__________________________________________
Michael Barton, Professor of Anthropology
School of Human Evolution and Social Change
Arizona State University
Tempe, AZ 85287-2402

phone: 480-965-6213
fax: 480-965-7671
www: http://www.public.asu.edu/~cmbarton

==================================

PROPOSAL FOR A USER INTERFACE ROADMAP FOR GRASS 6.X AND 7

DISPLAYS

***Display windows:
Keep ability to have multiple display windows. Display should have the
potential to display both 2D and 3D graphics. Display windows should get
focus by clicking with mouse. It should be necessary to run a module like
d.mon select simply shift the focus to a different display window.

***2D and 3D visualization:
2D and nD visualization should be seamlessly integrated. The "normal" view
would be 2D like current x displays and standard GIS. Clicking a 3D (nviz)
button would open a floating window with 3D controls (like in nviz now) but
not a new display window. This would allow user to tilt, rotate, change z,
visually separate layers, etc. It would work with the same layers shown in
2D mode, but would simply display them in 2.5D or 3D. Nviz would not be a
separate module, opening a separate display window and separate layer
control panel; it would simply display any active layers in 3D "mode".

DISPLAY CONTROL GUI AKA GIS MANAGER

We should keep single display control (like current GIS Manager). distinct
from the display window(s). This allows for multiple display windows to be
controlled from single interface. Display "commands" should be integrated
into display control interface; there would be no separate d.* command
modules. That is, the display control system should be able to directly
draw graphics to a display window, without going through intermediate,
stand alone programs. We need to rethink how these would best be
implemented (e.g., should we combine thematic vector and chart display
functions?) Display functions should still be scriptable as in nviz and
d.m, just not independent "commands". It should be possible to run a
display script from the command line to automate mapping.

***Buttons:
There should be 1 row of buttons for display controls (zoom, pan, erase,
3D, query, layer management, open display window, save, print, etc). We
should change current display in region buttons to simply region setting
buttons (default, select saved region). We will no longer need a display
button (see layers specs below)

There should be a 2nd row of buttons for adding layers. This could be
space-optimized by making pull-down groups (e.g., vector group would
include vector, 3D vector, chart, thematic, etc) with last-used layer-type
showing up in the button bar.

***Layers:
Any function than can be thought of as a layer should be implemented as
one. It is a nice and pretty intuitive metaphor. It is easy to work with
conceptually and comparable to graphic and CAD programs. Layers should
include 3D vectors and volumes (see below) along with the kinds of layers
now in the GIS manager.

We should keep layer-tree metaphor. The hierarchical arrangement is
intuitive and easy to work with. Nested groups are an especially nice
touch. We may want to switch from arranging the layer in the order they
will be displayed (first at the top, last at the bottom), to a stacked
metaphor (last displayed at the "top" of the stack). This is more in line
with other GIS programs and most graphics programs, and would make GRASS
less confusing to a new user.

Adding a layer to the layer tree should automatically display it when the
'active' box is checked. There should be no need for display button.
Checking or unchecking the 'active' box should automatically display or
undisplay the layer. Should layers be added in an non-activated state by
default so that the user can choose to display the newly added layer when
ready?

There should be an independent layer tree for each display window open.
Selecting display window with the mouse displays the associated layer tree.
This permits multiple displays of different information controlled from
same interface. User should be able to copy existing layer tree to a new or
open display window.

***Option panes:
Option panes should open in a separate window when an entry in the layer
tree is double clicked. This will optimize space in the display control
GUI. There should be "apply" and "save and close" buttons so that an option
pane can be kept open if desired.

We should add a "layer name" field to the option pane rather than adding a
layer name by typing it into the layer tree. This makes it more "permanent"
so that it is not erased when a new map is chosen to be displayed in that
layer. If it is empty, the name of the map will go in by default; if
something has been typed in it, it will stay and not be overwritten (make
this a question when opening a file?)

***Pull-down menus:
Keep menus as we have now for file, configuration, GIS function (raster,
vector, 3D), database, extensions (I'm assuming that the GRASS Extension
Manager will be default soon). Do we need a separate menu for help or can
it go into configure or something like that? Menus should call independent
modules that can also be run from the command line. GRASS needs to remain
scriptable for complex tasks and functions should be useable from command
line for "power users".

RELATED UI ISSUES

***Attribute data management:
Now that GRASS has vectors with linked attribute data, there needs to be a
reasonably decent UI for attribute data management and queries. Perhaps
this could be developed along with the switch to a default attribute dbms
based on SQLite.

***Printing:
There should be integrated WYSIWYG printing to multiple devices from the
GUI, including PDF files. ps.map functions should be integrated into GUI
and be accessible without creating complex text file scripts.

***Display output:
Users should be able to save WYSIWYG display output to multiple graphic
formats without scripting through a png driver or using gdal_translate.
Formats supported should at least include tif, png, pnm, gif, jpg, svg, and
xcf.

***Exiting:
It should be possible to exit GRASS from the GUI rather than having to
separately type "exit" on the command line.

--
Martin Wegmann

DLR - German Aerospace Center
German Remote Sensing Data Center
@
Dept.of Geography
Remote Sensing and Biodiversity Unit
&&
Dept. of Animal Ecology and Tropical Biology
University of Wuerzburg
Am Hubland
97074 Würzburg

phone: +49-(0)931 - 888 4797
mobile: +49-(0)175 2091725
fax: +49-(0)931 - 888 4961
http://www.biota-africa.org
http://www.biogis.de

Thanks Martin. Rumors of this and a few other similar projects prompted me
to try this approach. Before someone (including me) invests time and effort
in developing a new or evolved UI, we need to think about what should go
into it and how it should be organized. I think that input from longtime GIS
users will be helpful in that respect. One fundamental question is whether
we follow the ArcGIS model or whether we can do something better.

Michael
__________________________________________
Michael Barton, Professor of Anthropology
School of Human Evolution and Social Change
Arizona State University
Tempe, AZ 85287-2402

phone: 480-965-6213
fax: 480-965-7671
www: http://www.public.asu.edu/~cmbarton

From: Martin Wegmann <wegmann@biozentrum.uni-wuerzburg.de>
Reply-To: <wegmann@biozentrum.uni-wuerzburg.de>
Date: Sun, 06 Nov 2005 15:36:32 +0100
To: <grass5@grass.itc.it>
Cc: Michael Barton <michael.barton@asu.edu>, Christian Wygoda
<crischan@wygoda.net>
Subject: Re: [GRASS5] Proposal for GRASS UI roadmap

hello Michael,

your ideas are very good & needed. By chance I found this page
http://crischan.net/qgrass with a Q GRASS approach, however it is in its very
first steps but it sounds pretty promising.
I asked Chrischan to present the very first version in GRASS-News vol.4 and
perhaps you both could benefit from each others skills/knowledge/experience.

regards, Martin

On Sunday 06 November 2005 05:59, Michael Barton wrote:

Colleagues

A couple months back I suggested a discussion on the specifications for the
next generation user interface for GRASS. Perhaps because it was summer--or
perhaps because everyone is just so happy with what I¹ve done so far
;-)--there were few takers. However the comments were useful. I¹ve included
all of them in the attached text file as I promised to do.

Now that we are thinking about GRASS 6.2 and 7, we need to actively
consider the way in which GRASS presents itself to users. GRASS is a great
program and current development is making it an outstanding piece of
software for managing, visualizing, analyzing, and modeling very diverse
spatial data. But this tremendous capability will go unrecognized if
potential users become frustrated in trying to make it work. Because of its
power and versatility, and because GIS is a complex subject, it is a
challenge to make GRASS accessible to users‹even ones with considerable
experience with computer graphics, CAD, and other GIS¹s. This same
challenge is faced by other high-end GIS systems. To some extent, we are
still trying to work out appropriate display and control metaphors for GIS,
and a large part of the existing UI¹s are still a lot like word processors
and drawing programs, although GIS is neither. An automobile may have a
great engine and suspension system, but if it lacks a steering wheel or
comprehensible gauges its performance will be underutilized. So the UI is
important.

In order to make discussion easier, I want to float a proposal for the next
generation UI for GRASS. This will give people a concrete target to take
shots at, say they like, or offer modifications or additions. This is
perhaps a more effective way to do this than simply asking for input, and I
think I¹ve got a thick enough skin to offer my proposal for critiquing‹of
course it is pretty close to perfect so I shouldn¹t have to worry much :wink:
In any case, it is a start on which we can begin to build.

I¹ve tried to build on what works well now, to think out of the box a bit
to envision how a GIS can be easier to use, and to be realistic about what
can be accomplished in an open source project like this one. GRASS has some
excellent features that set it apart from other GIS systems. Ones that
always impresses people I show it to are the visualization capabilities. It
is extraordinarily flexible and fast at visualizing complex spatial data. I
think we should build on that, along with GRASS¹s excellent analytical
abilities for raster data as unique and distinguishing features of the
GRASS system. (I¹d like to suggest that we think of beefing up the already
strong modeling capabilities of GRASS by adding predictive and agent
modeling, but that¹s another issue).

Some of the items in the proposal could be implemented pretty soon, using
the TclTk tools we use now. Other parts will require more sophisticated use
of TclTk or a different GUI development system. Yet other parts will
require new C-programming. Because a next generation GUI will require
skills beyond my own and team effort, your input is essential.

One thing to note is that I am not recommending a platform for implementing
this at this point. I¹m pretty sure it could be implemented in TclTk if we
get more sophisticated in using that platform. However, it might be better
to implement it in another platform like QT or GTK. As I said last summer,
however, I think it is better to decide what kind of UI we want and THEN
decide which available platform is the best way to implement it.

I guess that is enough preamble. The proposed roadmap is below. Please let
me know what you think over the next few weeks. At some point, it might be
good to send it to the larger GRASS user list for input from the people who
will have to make it work.

Thanks to all of you for your support over the past two years.

Michael
__________________________________________
Michael Barton, Professor of Anthropology
School of Human Evolution and Social Change
Arizona State University
Tempe, AZ 85287-2402

phone: 480-965-6213
fax: 480-965-7671
www: http://www.public.asu.edu/~cmbarton

==================================

PROPOSAL FOR A USER INTERFACE ROADMAP FOR GRASS 6.X AND 7

DISPLAYS

***Display windows:
Keep ability to have multiple display windows. Display should have the
potential to display both 2D and 3D graphics. Display windows should get
focus by clicking with mouse. It should be necessary to run a module like
d.mon select simply shift the focus to a different display window.

***2D and 3D visualization:
2D and nD visualization should be seamlessly integrated. The "normal" view
would be 2D like current x displays and standard GIS. Clicking a 3D (nviz)
button would open a floating window with 3D controls (like in nviz now) but
not a new display window. This would allow user to tilt, rotate, change z,
visually separate layers, etc. It would work with the same layers shown in
2D mode, but would simply display them in 2.5D or 3D. Nviz would not be a
separate module, opening a separate display window and separate layer
control panel; it would simply display any active layers in 3D "mode".

DISPLAY CONTROL GUI AKA GIS MANAGER

We should keep single display control (like current GIS Manager). distinct
from the display window(s). This allows for multiple display windows to be
controlled from single interface. Display "commands" should be integrated
into display control interface; there would be no separate d.* command
modules. That is, the display control system should be able to directly
draw graphics to a display window, without going through intermediate,
stand alone programs. We need to rethink how these would best be
implemented (e.g., should we combine thematic vector and chart display
functions?) Display functions should still be scriptable as in nviz and
d.m, just not independent "commands". It should be possible to run a
display script from the command line to automate mapping.

***Buttons:
There should be 1 row of buttons for display controls (zoom, pan, erase,
3D, query, layer management, open display window, save, print, etc). We
should change current display in region buttons to simply region setting
buttons (default, select saved region). We will no longer need a display
button (see layers specs below)

There should be a 2nd row of buttons for adding layers. This could be
space-optimized by making pull-down groups (e.g., vector group would
include vector, 3D vector, chart, thematic, etc) with last-used layer-type
showing up in the button bar.

***Layers:
Any function than can be thought of as a layer should be implemented as
one. It is a nice and pretty intuitive metaphor. It is easy to work with
conceptually and comparable to graphic and CAD programs. Layers should
include 3D vectors and volumes (see below) along with the kinds of layers
now in the GIS manager.

We should keep layer-tree metaphor. The hierarchical arrangement is
intuitive and easy to work with. Nested groups are an especially nice
touch. We may want to switch from arranging the layer in the order they
will be displayed (first at the top, last at the bottom), to a stacked
metaphor (last displayed at the "top" of the stack). This is more in line
with other GIS programs and most graphics programs, and would make GRASS
less confusing to a new user.

Adding a layer to the layer tree should automatically display it when the
'active' box is checked. There should be no need for display button.
Checking or unchecking the 'active' box should automatically display or
undisplay the layer. Should layers be added in an non-activated state by
default so that the user can choose to display the newly added layer when
ready?

There should be an independent layer tree for each display window open.
Selecting display window with the mouse displays the associated layer tree.
This permits multiple displays of different information controlled from
same interface. User should be able to copy existing layer tree to a new or
open display window.

***Option panes:
Option panes should open in a separate window when an entry in the layer
tree is double clicked. This will optimize space in the display control
GUI. There should be "apply" and "save and close" buttons so that an option
pane can be kept open if desired.

We should add a "layer name" field to the option pane rather than adding a
layer name by typing it into the layer tree. This makes it more "permanent"
so that it is not erased when a new map is chosen to be displayed in that
layer. If it is empty, the name of the map will go in by default; if
something has been typed in it, it will stay and not be overwritten (make
this a question when opening a file?)

***Pull-down menus:
Keep menus as we have now for file, configuration, GIS function (raster,
vector, 3D), database, extensions (I'm assuming that the GRASS Extension
Manager will be default soon). Do we need a separate menu for help or can
it go into configure or something like that? Menus should call independent
modules that can also be run from the command line. GRASS needs to remain
scriptable for complex tasks and functions should be useable from command
line for "power users".

RELATED UI ISSUES

***Attribute data management:
Now that GRASS has vectors with linked attribute data, there needs to be a
reasonably decent UI for attribute data management and queries. Perhaps
this could be developed along with the switch to a default attribute dbms
based on SQLite.

***Printing:
There should be integrated WYSIWYG printing to multiple devices from the
GUI, including PDF files. ps.map functions should be integrated into GUI
and be accessible without creating complex text file scripts.

***Display output:
Users should be able to save WYSIWYG display output to multiple graphic
formats without scripting through a png driver or using gdal_translate.
Formats supported should at least include tif, png, pnm, gif, jpg, svg, and
xcf.

***Exiting:
It should be possible to exit GRASS from the GUI rather than having to
separately type "exit" on the command line.

--
Martin Wegmann

DLR - German Aerospace Center
German Remote Sensing Data Center
@
Dept.of Geography
Remote Sensing and Biodiversity Unit
&&
Dept. of Animal Ecology and Tropical Biology
University of Wuerzburg
Am Hubland
97074 Würzburg

phone: +49-(0)931 - 888 4797
mobile: +49-(0)175 2091725
fax: +49-(0)931 - 888 4961
http://www.biota-africa.org
http://www.biogis.de

Maciek,

Thanks very much for the input. Your comments are just the type of thing we
need. Since this is just getting started, I want to respond to only
one--about the display windows. Here's my rationale. If any window could
have a 3D display, then you could achieve what you wanted by simply opening
a new display window with a copy of the current layer tree, and displaying
it in 3D mode. I'm worried a bit about screen clutter (one window for 2D
display and a separate one for 3D display of the same set of maps).

Michael
__________________________________________
Michael Barton, Professor of Anthropology
School of Human Evolution and Social Change
Arizona State University
Tempe, AZ 85287-2402

phone: 480-965-6213
fax: 480-965-7671
www: http://www.public.asu.edu/~cmbarton

From: Maciek Sieczka <werchowyna@epf.pl>
Date: Sun, 06 Nov 2005 13:50:05 +0100
To: Michael Barton <michael.barton@asu.edu>
Cc: GRASS Developer's List <grass5@grass.itc.it>
Subject: Re: [GRASS5] Proposal for GRASS UI roadmap

Michael,

Thanks for your initiative. I hope it will make a good start for new
Grass GUI. I think that a native, Grass dedicated GUI for is necessary.
I'm adding my point of view on several points.

On Sat, 2005-11-05 at 21:59 -0700, Michael Barton wrote:

<snip>

DISPLAYS

***Display windows:
Keep ability to have multiple display windows. Display should have the
potential to display both 2D and 3D graphics. Display windows should
get focus by clicking with mouse. It should be necessary to run a
module like d.mon select simply shift the focus to a different display
window.

***2D and 3D visualization:
2D and nD visualization should be seamlessly integrated. The "normal"
view would be 2D like current x displays and standard GIS. Clicking a
3D (nviz) button would open a floating window with 3D controls (like
in nviz now) but not a new display window.

Hmm, why not a separate window? I'd prefer:
1. display contents in the 2D window, or select a an existing window
with some layers displayed
2. press the 3D button
3. 3d window with the same layers and controls pop up
4. the 2D window is left untouched - now user can compare the 3D and 2D
view now, use the 2D display as "map", context for navigation in the 3D

This would allow user to tilt, rotate, change z, visually separate
layers, etc. It would work with the same layers shown in 2D mode, but
would simply display them in 2.5D or 3D. Nviz would not be a separate
module, opening a separate display window and separate layer control
panel; it would simply display any active layers in 3D "mode".

DISPLAY CONTROL GUI AKA GIS MANAGER

We should keep single display control (like current GIS Manager).
distinct from the display window(s). This allows for multiple display
windows to be controlled from single interface. Display "commands"
should be integrated into display control interface; there would be no
separate d.* command modules. That is, the display control system
should be able to directly draw graphics to a display window, without
going through intermediate, stand alone programs. We need to rethink
how these would best be implemented (e.g., should we combine thematic
vector and chart display functions?) Display functions should still be
scriptable as in nviz and d.m, just not independent "commands". It
should be possible to run a display script from the command line to
automate mapping.

***Buttons:
There should be 1 row of buttons for display controls (zoom, pan,
erase, 3D, query, layer management, open display window, save, print,
etc). We should change current display in region buttons to simply
region setting buttons (default, select saved region). We will no
longer need a display button (see layers specs below)

There should be a 2nd row of buttons for adding layers. This could be
space-optimized by making pull-down groups (e.g., vector group would
include vector, 3D vector, chart, thematic, etc) with last-used
layer-type showing up in the button bar.

***Layers:
Any function than can be thought of as a layer should be implemented
as one. It is a nice and pretty intuitive metaphor. It is easy to work
with conceptually and comparable to graphic and CAD programs. Layers
should include 3D vectors and volumes (see below) along with the kinds
of layers now in the GIS manager.

We should keep layer-tree metaphor. The hierarchical arrangement is
intuitive and easy to work with. Nested groups are an especially nice
touch. We may want to switch from arranging the layer in the order
they will be displayed (first at the top, last at the bottom), to a
stacked metaphor (last displayed at the "top" of the stack). This is
more in line with other GIS programs and most graphics programs, and
would make GRASS less confusing to a new user.

I like the stack-approach too, but I'd prefer a new layer/grop to be
added exactly on top of the currently highlited one. Having to move it
manually to it's destination *each time* I add a new one is a pain.

I know it would be not 100% solution - in case it is needed to put the
layer/group right at the end of the stack, one will have to move it by
hand. Anyway, still better than having to do so each time.

Adding a layer to the layer tree should automatically display it when
the 'active' box is checked. There should be no need for display
button. Checking or unchecking the 'active' box should automatically
display or undisplay the layer. Should layers be added in an
non-activated state by default so that the user can choose to display
the newly added layer when ready?

The 'active' box idea is nice. And I think it should be set to 'off' by
default. Otherwise adding heavy raster layers, or vector layers with
many objects, would be slow, as each layer would have to be drawn first,
as currently Grass is not able to draw multiple layers simultanously.

There should be an independent layer tree for each display window
open. Selecting display window with the mouse displays the associated
layer tree. This permits multiple displays of different information
controlled from same interface. User should be able to copy existing
layer tree to a new or open display window.

Also, it should be possible to mark and copy/cut/paste and remove
multiple layers or gropus. Currently it is quite a hassle when one wants
to remove 50 of his 100 layers :D.

***Option panes:
Option panes should open in a separate window when an entry in the
layer tree is double clicked. This will optimize space in the display
control GUI. There should be "apply" and "save and close" buttons so
that an option pane can be kept open if desired.

Great.

We should add a "layer name" field to the option pane rather than
adding a layer name by typing it into the layer tree. This makes it
more "permanent" so that it is not erased when a new map is chosen to
be displayed in that layer. If it is empty, the name of the map will
go in by default; if something has been typed in it, it will stay and
not be overwritten (make this a question when opening a file?)

My POV: default the layer name to the file name, allow to edit it later.
Having to answer a question at each layer addition would slow down the
user for no purpose. Also I believe the layer name should change each
time when another file is open in the layer. I believe that a layer in
GIS Manager is rather a slot for a Grass file than something which has
it's own identity.

***Pull-down menus:
Keep menus as we have now for file, configuration, GIS function
(raster, vector, 3D), database, extensions (I'm assuming that the
GRASS Extension Manager will be default soon). Do we need a separate
menu for help or can it go into configure or something like that?

I think a separate Help menu is a good idea. As it will have submenus
according to the Grass html help structure, it will be complex enough
to deserve a separate menu.

Menus should call independent modules that can also be run from the
command line. GRASS needs to remain scriptable for complex tasks and
functions should be useable from command line for "power users".

RELATED UI ISSUES

***Attribute data management:
Now that GRASS has vectors with linked attribute data, there needs to
be a reasonably decent UI for attribute data management and queries.
Perhaps this could be developed along with the switch to a default
attribute dbms based on SQLite.

I dream of a UI for attribute management, a kind of a spreadsheet with
elements of datable management. My wish list:

1. drop column
2. change column type:
I) to numeric:
a) integer of a given value range
b) floating of a given value range and number of decimal points
II) to text of a given number of characters
III) to date
3. search for string, value, column name; with support for wildcards and
regexp; find next,previous; in records search horizontaly,verticaly
4. mark records and columns with:
I) mouse, mouse+ALT for multiple separate
II) keyboard:
a) SHIFT+cursos keys
b) SHIFT+pgup/pgdown
c) SHIFT+CTRL+cursos keys for "jump to the next empty or end"
d) SHIFT+end/home
e) combination of the above with ALT for selecting multiple separate
III) mark records or colums based on search results; could be integrated
with search (3) as "find all"
6. filter colums and records in a column based on a given pattern
(wildcard and regexp)
7. drop table

***Printing:
There should be integrated WYSIWYG printing to multiple devices from
the GUI, including PDF files. ps.map functions should be integrated
into GUI and be accessible without creating complex text file scripts.

Yup. But, if it is to be possible to prepare a decent map in the display
monitor and then export the monitor content directly into a
ps/pdf/printer, there is a bug to fix in display first:
http://intevation.de/rt/webrt?serial_num=3613&display=History.
Only for the record, if somebody capable of doing it is reading this by
any chance.

***Display output:
Users should be able to save WYSIWYG display output to multiple
graphic formats without scripting through a png driver or using
gdal_translate. Formats supported should at least include tif, png,
pnm, gif, jpg, svg, and xcf.

So many formats? png for best compressed lossles indexed/RGB, jpg for
lossy and svg for vectors should do it. ps would do for hybrid. I guess
Grass team shouldn't mantain too much code in that regard, further image
processing should be up to the user. Xcf could make much sense on the
other hand, but only if layers where preserved, not as a one-layer image
dump. Is that what you mean in regard to xcf? That'd might be worthy of
the effort then I believe.

***Exiting:
It should be possible to exit GRASS from the GUI rather than having to
separately type "exit" on the command line.

Cool.

Some from me:

***MS*** Customization:
1. Font in different parts of the GUI. Font codepage.
2. Default monitor size and location on desktop. Different schemes for
different monitors could be handy to avoid overlapping.
3. Default main GUI location and dimensions.
4. Default location of terminals which pop up when queriying layers etc.
Their font size.
5. Database codepage.

--------------------
W polskim Internecie s± setki milionów stron. My przekazujemy Tobie tylko
najlepsze z nich!
http://katalog.epf.pl/

Michael,

Good timing!

These past couple of weeks I have been digging into the existing display driver and now have a working GTK based display interface. I am now working on adding internal display options, etc. The UI is still quite early in development.

Once I have the basic bones of it working I will make it available for testing and improving.

--
Bob

Michael Barton wrote:

Colleagues

A couple months back I suggested a discussion on the specifications for the next generation user interface for GRASS. Perhaps because it was summer--or perhaps because everyone is just so happy with what I’ve done so far ;-)--there were few takers. However the comments were useful. I’ve included all of them in the attached text file as I promised to do.

Now that we are thinking about GRASS 6.2 and 7, we need to actively consider the way in which GRASS presents itself to users. GRASS is a great program and current development is making it an outstanding piece of software for managing, visualizing, analyzing, and modeling very diverse spatial data. But this tremendous capability will go unrecognized if potential users become frustrated in trying to make it work. Because of its power and versatility, and because GIS is a complex subject, it is a challenge to make GRASS accessible to users—even ones with considerable experience with computer graphics, CAD, and other GIS’s. This same challenge is faced by other high-end GIS systems. To some extent, we are still trying to work out appropriate display and control metaphors for GIS, and a large part of the existing UI’s are still a lot like word processors and drawing programs, although GIS is neither. An automobile may have a great engine and suspension system, but if it lacks a steering wheel or comprehensible gauges its performance will be underutilized. So the UI is important.

In order to make discussion easier, I want to float a proposal for the next generation UI for GRASS. This will give people a concrete target to take shots at, say they like, or offer modifications or additions. This is perhaps a more effective way to do this than simply asking for input, and I think I’ve got a thick enough skin to offer my proposal for critiquing—of course it is pretty close to perfect so I shouldn’t have to worry much :wink: In any case, it is a start on which we can begin to build.

I’ve tried to build on what works well now, to think out of the box a bit to envision how a GIS can be easier to use, and to be realistic about what can be accomplished in an open source project like this one. GRASS has some excellent features that set it apart from other GIS systems. Ones that always impresses people I show it to are the visualization capabilities. It is extraordinarily flexible and fast at visualizing complex spatial data. I think we should build on that, along with GRASS’s excellent analytical abilities for raster data as unique and distinguishing features of the GRASS system. (I’d like to suggest that we think of beefing up the already strong modeling capabilities of GRASS by adding predictive and agent modeling, but that’s another issue).

Some of the items in the proposal could be implemented pretty soon, using the TclTk tools we use now. Other parts will require more sophisticated use of TclTk or a different GUI development system. Yet other parts will require new C-programming. Because a next generation GUI will require skills beyond my own and team effort, your input is essential.

One thing to note is that I am not recommending a platform for implementing this at this point. I’m pretty sure it could be implemented in TclTk if we get more sophisticated in using that platform. However, it might be better to implement it in another platform like QT or GTK. As I said last summer, however, I think it is better to decide what kind of UI we want and THEN decide which available platform is the best way to implement it.

I guess that is enough preamble. The proposed roadmap is below. Please let me know what you think over the next few weeks. At some point, it might be good to send it to the larger GRASS user list for input from the people who will have to make it work.

Thanks to all of you for your support over the past two years.

Michael
__________________________________________
Michael Barton, Professor of Anthropology
School of Human Evolution and Social Change
Arizona State University
Tempe, AZ 85287-2402

phone: 480-965-6213
fax: 480-965-7671
www: http://www.public.asu.edu/~cmbarton

==================================

PROPOSAL FOR A USER INTERFACE ROADMAP FOR GRASS 6.X AND 7

DISPLAYS

***Display windows:
Keep ability to have multiple display windows. Display should have the potential to display both 2D and 3D graphics. Display windows should get focus by clicking with mouse. It should be necessary to run a module like d.mon select simply shift the focus to a different display window.

***2D and 3D visualization:
2D and nD visualization should be seamlessly integrated. The "normal" view would be 2D like current x displays and standard GIS. Clicking a 3D (nviz) button would open a floating window with 3D controls (like in nviz now) but not a new display window. This would allow user to tilt, rotate, change z, visually separate layers, etc. It would work with the same layers shown in 2D mode, but would simply display them in 2.5D or 3D. Nviz would not be a separate module, opening a separate display window and separate layer control panel; it would simply display any active layers in 3D "mode".

DISPLAY CONTROL GUI AKA GIS MANAGER

We should keep single display control (like current GIS Manager). distinct from the display window(s). This allows for multiple display windows to be controlled from single interface. Display "commands" should be integrated into display control interface; there would be no separate d.* command modules. That is, the display control system should be able to directly draw graphics to a display window, without going through intermediate, stand alone programs. We need to rethink how these would best be implemented (e.g., should we combine thematic vector and chart display functions?) Display functions should still be scriptable as in nviz and d.m, just not independent "commands". It should be possible to run a display script from the command line to automate mapping.

***Buttons:
There should be 1 row of buttons for display controls (zoom, pan, erase, 3D, query, layer management, open display window, save, print, etc). We should change current display in region buttons to simply region setting buttons (default, select saved region). We will no longer need a display button (see layers specs below)

There should be a 2nd row of buttons for adding layers. This could be space-optimized by making pull-down groups (e.g., vector group would include vector, 3D vector, chart, thematic, etc) with last-used layer-type showing up in the button bar.

***Layers:
Any function than can be thought of as a layer should be implemented as one. It is a nice and pretty intuitive metaphor. It is easy to work with conceptually and comparable to graphic and CAD programs. Layers should include 3D vectors and volumes (see below) along with the kinds of layers now in the GIS manager.

We should keep layer-tree metaphor. The hierarchical arrangement is intuitive and easy to work with. Nested groups are an especially nice touch. We may want to switch from arranging the layer in the order they will be displayed (first at the top, last at the bottom), to a stacked metaphor (last displayed at the "top" of the stack). This is more in line with other GIS programs and most graphics programs, and would make GRASS less confusing to a new user.

Adding a layer to the layer tree should automatically display it when the 'active' box is checked. There should be no need for display button. Checking or unchecking the 'active' box should automatically display or undisplay the layer. Should layers be added in an non-activated state by default so that the user can choose to display the newly added layer when ready?

There should be an independent layer tree for each display window open. Selecting display window with the mouse displays the associated layer tree. This permits multiple displays of different information controlled from same interface. User should be able to copy existing layer tree to a new or open display window.

***Option panes:
Option panes should open in a separate window when an entry in the layer tree is double clicked. This will optimize space in the display control GUI. There should be "apply" and "save and close" buttons so that an option pane can be kept open if desired.

We should add a "layer name" field to the option pane rather than adding a layer name by typing it into the layer tree. This makes it more "permanent" so that it is not erased when a new map is chosen to be displayed in that layer. If it is empty, the name of the map will go in by default; if something has been typed in it, it will stay and not be overwritten (make this a question when opening a file?)

***Pull-down menus:
Keep menus as we have now for file, configuration, GIS function (raster, vector, 3D), database, extensions (I'm assuming that the GRASS Extension Manager will be default soon). Do we need a separate menu for help or can it go into configure or something like that? Menus should call independent modules that can also be run from the command line. GRASS needs to remain scriptable for complex tasks and functions should be useable from command line for "power users".

RELATED UI ISSUES

***Attribute data management:
Now that GRASS has vectors with linked attribute data, there needs to be a reasonably decent UI for attribute data management and queries. Perhaps this could be developed along with the switch to a default attribute dbms based on SQLite.

***Printing:
There should be integrated WYSIWYG printing to multiple devices from the GUI, including PDF files. ps.map functions should be integrated into GUI and be accessible without creating complex text file scripts.

***Display output:
Users should be able to save WYSIWYG display output to multiple graphic formats without scripting through a png driver or using gdal_translate. Formats supported should at least include tif, png, pnm, gif, jpg, svg, and xcf.

***Exiting:
It should be possible to exit GRASS from the GUI rather than having to separately type "exit" on the command line.

Bob,

This is good timing indeed. It will be helpful to see what is possible in
different platforms. Because of your work with NVIZ--which I'm proposing to
become integrated into the display and control system--I'm very happy you
are thinking seriously about this and starting to test new options.

I still think it is a good idea to spec what the UI should be before going
too far down the road toward a particular interface platform.

One question I personally would have at some point is how easy is it to
develop in potential platforms? Because it is interpreted rather than
compiled, TclTk is easy for me to work with. However, it lacks much in the
way of development environments. I've briefly looked at QT (couldn't figure
out much, but didn't take much time) and haven't looked at GTK.

Michael
__________________________________________
Michael Barton, Professor of Anthropology
School of Human Evolution and Social Change
Arizona State University
Tempe, AZ 85287-2402

phone: 480-965-6213
fax: 480-965-7671
www: http://www.public.asu.edu/~cmbarton

From: Bob Covill <bcovill@tekmap.ns.ca>
Date: Sun, 06 Nov 2005 13:17:43 -0400
To: Michael Barton <michael.barton@asu.edu>
Cc: GRASS List <grass5@grass.itc.it>
Subject: Re: [GRASS5] Proposal for GRASS UI roadmap

Michael,

Good timing!

These past couple of weeks I have been digging into the existing display
driver and now have a working GTK based display interface. I am now
working on adding internal display options, etc. The UI is still quite
early in development.

Once I have the basic bones of it working I will make it available for
testing and improving.

--
Bob

Michael Barton wrote:

Colleagues

A couple months back I suggested a discussion on the specifications for
the next generation user interface for GRASS. Perhaps because it was
summer--or perhaps because everyone is just so happy with what I¹ve done
so far ;-)--there were few takers. However the comments were useful.
I¹ve included all of them in the attached text file as I promised to do.

Now that we are thinking about GRASS 6.2 and 7, we need to actively
consider the way in which GRASS presents itself to users. GRASS is a
great program and current development is making it an outstanding piece
of software for managing, visualizing, analyzing, and modeling very
diverse spatial data. But this tremendous capability will go
unrecognized if potential users become frustrated in trying to make it
work. Because of its power and versatility, and because GIS is a complex
subject, it is a challenge to make GRASS accessible to users‹even ones
with considerable experience with computer graphics, CAD, and other
GIS¹s. This same challenge is faced by other high-end GIS systems. To
some extent, we are still trying to work out appropriate display and
control metaphors for GIS, and a large part of the existing UI¹s are
still a lot like word processors and drawing programs, although GIS is
neither. An automobile may have a great engine and suspension system,
but if it lacks a steering wheel or comprehensible gauges its
performance will be underutilized. So the UI is important.

In order to make discussion easier, I want to float a proposal for the
next generation UI for GRASS. This will give people a concrete target to
take shots at, say they like, or offer modifications or additions. This
is perhaps a more effective way to do this than simply asking for input,
and I think I¹ve got a thick enough skin to offer my proposal for
critiquing‹of course it is pretty close to perfect so I shouldn¹t have
to worry much :wink: In any case, it is a start on which we can begin to build.

I¹ve tried to build on what works well now, to think out of the box a
bit to envision how a GIS can be easier to use, and to be realistic
about what can be accomplished in an open source project like this one.
GRASS has some excellent features that set it apart from other GIS
systems. Ones that always impresses people I show it to are the
visualization capabilities. It is extraordinarily flexible and fast at
visualizing complex spatial data. I think we should build on that, along
with GRASS¹s excellent analytical abilities for raster data as unique
and distinguishing features of the GRASS system. (I¹d like to suggest
that we think of beefing up the already strong modeling capabilities of
GRASS by adding predictive and agent modeling, but that¹s another issue).

Some of the items in the proposal could be implemented pretty soon,
using the TclTk tools we use now. Other parts will require more
sophisticated use of TclTk or a different GUI development system. Yet
other parts will require new C-programming. Because a next generation
GUI will require skills beyond my own and team effort, your input is
essential.

One thing to note is that I am not recommending a platform for
implementing this at this point. I¹m pretty sure it could be implemented
in TclTk if we get more sophisticated in using that platform. However,
it might be better to implement it in another platform like QT or GTK.
As I said last summer, however, I think it is better to decide what kind
of UI we want and THEN decide which available platform is the best way
to implement it.

I guess that is enough preamble. The proposed roadmap is below. Please
let me know what you think over the next few weeks. At some point, it
might be good to send it to the larger GRASS user list for input from
the people who will have to make it work.

Thanks to all of you for your support over the past two years.

Michael
__________________________________________
Michael Barton, Professor of Anthropology
School of Human Evolution and Social Change
Arizona State University
Tempe, AZ 85287-2402

phone: 480-965-6213
fax: 480-965-7671
www: http://www.public.asu.edu/~cmbarton

==================================

PROPOSAL FOR A USER INTERFACE ROADMAP FOR GRASS 6.X AND 7

DISPLAYS

***Display windows:
Keep ability to have multiple display windows. Display should have the
potential to display both 2D and 3D graphics. Display windows should get
focus by clicking with mouse. It should be necessary to run a module
like d.mon select simply shift the focus to a different display window.

***2D and 3D visualization:
2D and nD visualization should be seamlessly integrated. The "normal"
view would be 2D like current x displays and standard GIS. Clicking a 3D
(nviz) button would open a floating window with 3D controls (like in
nviz now) but not a new display window. This would allow user to tilt,
rotate, change z, visually separate layers, etc. It would work with the
same layers shown in 2D mode, but would simply display them in 2.5D or
3D. Nviz would not be a separate module, opening a separate display
window and separate layer control panel; it would simply display any
active layers in 3D "mode".

DISPLAY CONTROL GUI AKA GIS MANAGER

We should keep single display control (like current GIS Manager).
distinct from the display window(s). This allows for multiple display
windows to be controlled from single interface. Display "commands"
should be integrated into display control interface; there would be no
separate d.* command modules. That is, the display control system should
be able to directly draw graphics to a display window, without going
through intermediate, stand alone programs. We need to rethink how these
would best be implemented (e.g., should we combine thematic vector and
chart display functions?) Display functions should still be scriptable
as in nviz and d.m, just not independent "commands". It should be
possible to run a display script from the command line to automate mapping.

***Buttons:
There should be 1 row of buttons for display controls (zoom, pan, erase,
3D, query, layer management, open display window, save, print, etc). We
should change current display in region buttons to simply region setting
buttons (default, select saved region). We will no longer need a display
button (see layers specs below)

There should be a 2nd row of buttons for adding layers. This could be
space-optimized by making pull-down groups (e.g., vector group would
include vector, 3D vector, chart, thematic, etc) with last-used
layer-type showing up in the button bar.

***Layers:
Any function than can be thought of as a layer should be implemented as
one. It is a nice and pretty intuitive metaphor. It is easy to work with
conceptually and comparable to graphic and CAD programs. Layers should
include 3D vectors and volumes (see below) along with the kinds of
layers now in the GIS manager.

We should keep layer-tree metaphor. The hierarchical arrangement is
intuitive and easy to work with. Nested groups are an especially nice
touch. We may want to switch from arranging the layer in the order they
will be displayed (first at the top, last at the bottom), to a stacked
metaphor (last displayed at the "top" of the stack). This is more in
line with other GIS programs and most graphics programs, and would make
GRASS less confusing to a new user.

Adding a layer to the layer tree should automatically display it when
the 'active' box is checked. There should be no need for display button.
Checking or unchecking the 'active' box should automatically display or
undisplay the layer. Should layers be added in an non-activated state by
default so that the user can choose to display the newly added layer
when ready?

There should be an independent layer tree for each display window open.
Selecting display window with the mouse displays the associated layer
tree. This permits multiple displays of different information controlled
from same interface. User should be able to copy existing layer tree to
a new or open display window.

***Option panes:
Option panes should open in a separate window when an entry in the layer
tree is double clicked. This will optimize space in the display control
GUI. There should be "apply" and "save and close" buttons so that an
option pane can be kept open if desired.

We should add a "layer name" field to the option pane rather than adding
a layer name by typing it into the layer tree. This makes it more
"permanent" so that it is not erased when a new map is chosen to be
displayed in that layer. If it is empty, the name of the map will go in
by default; if something has been typed in it, it will stay and not be
overwritten (make this a question when opening a file?)

***Pull-down menus:
Keep menus as we have now for file, configuration, GIS function (raster,
vector, 3D), database, extensions (I'm assuming that the GRASS Extension
Manager will be default soon). Do we need a separate menu for help or
can it go into configure or something like that? Menus should call
independent modules that can also be run from the command line. GRASS
needs to remain scriptable for complex tasks and functions should be
useable from command line for "power users".

RELATED UI ISSUES

***Attribute data management:
Now that GRASS has vectors with linked attribute data, there needs to be
a reasonably decent UI for attribute data management and queries.
Perhaps this could be developed along with the switch to a default
attribute dbms based on SQLite.

***Printing:
There should be integrated WYSIWYG printing to multiple devices from the
GUI, including PDF files. ps.map functions should be integrated into GUI
and be accessible without creating complex text file scripts.

***Display output:
Users should be able to save WYSIWYG display output to multiple graphic
formats without scripting through a png driver or using gdal_translate.
Formats supported should at least include tif, png, pnm, gif, jpg, svg,
and xcf.

***Exiting:
It should be possible to exit GRASS from the GUI rather than having to
separately type "exit" on the command line.

Just a short note (hope nobody will get offended by it): I think Michael and
others have done a great job improving the tctk interface (every time I
compile grass, I have pleasant surprises!), but it is a reality that "normal"
people sees its look&feel as rather primitive. What we (grass and freeGIS
users and developers) need is enlarging our user base, far too small compared
to grass potential.
Our experience teaching FreeGIS is that integrating grass with qgis gives an
easy way of approaching gis problems, without a steep learning curve. Of
course issues remain; in my view:
- integrating NVIZ (the work from ACS is a good first step in this direction)
- putting most/all grass modules in the qgis-grass dialog (not difficult, but
may be boring)
- multiple monitors: I got used to them, and I agree they are very useful, but
most people stopped using in most applications anyway
Moreover, we have the advantage of working with the live and thriving qgis
community, which is an extremely positive factor.
I am worried about the duplication of efforts I have seen recently; we have
limited forces, and we would better concentrate on a common line; for
instance, I do not think a printing interface can be much better than the one
currently available in qgis.
In short my suggestion is: let's concentrate on qgis as a frontend, and
strengthening grass as backend (eg fixing functionality bugs, making new
modules, releasing new versions more often).
All the best, and thanks to all for your work.
pc

At 05:59, domenica 06 novembre 2005, Michael Barton has probably written:

Colleagues

A couple months back I suggested a discussion on the specifications for the
next generation user interface for GRASS. Perhaps because it was summer--or
perhaps because everyone is just so happy with what I¹ve done so far
;-)--there were few takers. However the comments were useful. I¹ve included
all of them in the attached text file as I promised to do.

...
--
Paolo Cavallini
email+jabber: cavallini@faunalia.it
www.faunalia.it
Piazza Garibaldi 5 - 56025 Pontedera (PI), Italy Tel: (+39)348-3801953

On Monday 07 November 2005 10:23, Paolo Cavallini wrote:

Just a short note (hope nobody will get offended by it):

I hope so as well ,-)

I think Michael
and others have done a great job improving the tctk interface (every time I
compile grass, I have pleasant surprises!), but it is a reality that
"normal" people sees its look&feel as rather primitive. What we (grass and
freeGIS users and developers) need is enlarging our user base, far too
small compared to grass potential.
Our experience teaching FreeGIS is that integrating grass with qgis gives
an easy way of approaching gis problems, without a steep learning curve. Of
course issues remain; in my view:
- integrating NVIZ (the work from ACS is a good first step in this
direction) - putting most/all grass modules in the qgis-grass dialog (not
difficult, but may be boring)
- multiple monitors: I got used to them, and I agree they are very useful,
but most people stopped using in most applications anyway

very important point. All raster manipulation programs (from GIMP to
ERDAS/ENVI) work with multi-monitor setups and I got used to them very much.
Perhaps the user should be able to decide if he/she wants a multi- or
single-window workspace.

Moreover, we have the advantage of working with the live and thriving qgis
community, which is an extremely positive factor.
I am worried about the duplication of efforts I have seen recently; we have
limited forces, and we would better concentrate on a common line; for
instance, I do not think a printing interface can be much better than the
one currently available in qgis.
In short my suggestion is: let's concentrate on qgis as a frontend, and
strengthening grass as backend (eg fixing functionality bugs, making new
modules, releasing new versions more often).

well, as I agree with you that "usual" users think that the tcltk UI is
primitive however I doubt that GRASS-d.m shall/can fully merge with QGIS and
fullfill all user interests which Michael is currently inquiring.

I use QGIS frequently to view raster data/vector data (and hopefully soon)
modify vector data -- in general: doing "low-level" GIS work which can be
achieved using QGIS very easily.
For this kind of work I don't need a fully-blown GIS/Raster manipulation
software like GRASS. I want QGIS to start quickly, do my work and exit again
unlike GRASS which is running nearly permanently and which I favour because
of the enormous amount of functionalities.
Perhaps the comparison between ArcView and ArcInfo is best. The first one is
for low-level GIS work, the second is for all the other work. I don't want to
start ArcInfo functionality when I just want to do some quick modification.

With GRASS and QGIS we have the same problem (in my opinion) plus the problem
that GRASS is not only a GIS but a raster manipulation program as well which
needs a CLI too.

This does not contradict your idea of using GRASS commands inside QGIS but
using GRASS solely via QGIS.

Concerning the man-power for GRASS C coding; I am not sure about it but I
think that C programmers and QT/GTK programmer are different kind of persons
or at least their interests are different. At QT/GTK programmer is keen to
develop a UI but not to code C, therefore I think the amount of
C-programmer-man-power would not be diminished.

regards, Martin

pc

At 05:59, domenica 06 novembre 2005, Michael Barton has probably written:
> Colleagues
>
> A couple months back I suggested a discussion on the specifications for
> the next generation user interface for GRASS. Perhaps because it was
> summer--or perhaps because everyone is just so happy with what I¹ve done
> so far ;-)--there were few takers. However the comments were useful. I¹ve
> included all of them in the attached text file as I promised to do.

...

--
Martin Wegmann

DLR - German Aerospace Center
German Remote Sensing Data Center
@
Dept.of Geography
Remote Sensing and Biodiversity Unit
&&
Dept. of Animal Ecology and Tropical Biology
University of Wuerzburg
Am Hubland
97074 Würzburg

phone: +49-(0)931 - 888 4797
mobile: +49-(0)175 2091725
fax: +49-(0)931 - 888 4961
http://www.biota-africa.org
http://www.biogis.de

Hello Michael,

On Sunday 06 November 2005 16:56, Michael Barton wrote:

Thanks Martin. Rumors of this and a few other similar projects prompted me
to try this approach. Before someone (including me) invests time and effort
in developing a new or evolved UI, we need to think about what should go
into it and how it should be organized.

fully agree

I think that input from longtime
GIS users will be helpful in that respect. One fundamental question is
whether we follow the ArcGIS model or whether we can do something better.

I assume you mean with "follow the ArcGIS model" the UI Design (e.g.
http://www.esri.com/software/arcgis/extensions/streetmap/graphics/sm_local-map.gif)
with consists of one map window and not the multi-window UI like
ERDAS/ENVI/GIMP etc. For GRASS you would need at least a shell window perhaps
like kile incorporated it (http://kile.sourceforge.net/screenshots.php) but
personally I prefer the multi-window model.

Just an idea: Comparing Windows and KDE, I have one desktop when using MS
Windows with lots of application running (might be grouped) and I have KDE
with several desktops and the application distributed across them to keep
them clear. Of course people have different preferences but I think of a
arrangement to be able to select buttons to swap the visible GRASS components
e.g. previously customised buttons like "analysis X", "analysis Y",
"visualisation Z" (equivalent to KDE Desktops) - this would not change to
whole GRASS session but only the monitors/toolbars which are relevant for the
respective analysis.
Using this function would make swapping between 'analysis' - 'map layout' -
'NVIZ' using the same UI pretty easy and straightforward and not too much
cluttered.

However in the end it depends on the user and perhaps a choice how to arrange
the UI (mulit vs. single window) would be the best solution.

regards, Martin

__________________________________________
Michael Barton, Professor of Anthropology
School of Human Evolution and Social Change
Arizona State University
Tempe, AZ 85287-2402

phone: 480-965-6213
fax: 480-965-7671
www: http://www.public.asu.edu/~cmbarton

> From: Martin Wegmann <wegmann@biozentrum.uni-wuerzburg.de>
> Reply-To: <wegmann@biozentrum.uni-wuerzburg.de>
> Date: Sun, 06 Nov 2005 15:36:32 +0100
> To: <grass5@grass.itc.it>
> Cc: Michael Barton <michael.barton@asu.edu>, Christian Wygoda
> <crischan@wygoda.net>
> Subject: Re: [GRASS5] Proposal for GRASS UI roadmap
>
> hello Michael,
>
> your ideas are very good & needed. By chance I found this page
> http://crischan.net/qgrass with a Q GRASS approach, however it is in its
> very first steps but it sounds pretty promising.
> I asked Chrischan to present the very first version in GRASS-News vol.4
> and perhaps you both could benefit from each others
> skills/knowledge/experience.
>
> regards, Martin
>
> On Sunday 06 November 2005 05:59, Michael Barton wrote:
>> Colleagues
>>
>> A couple months back I suggested a discussion on the specifications for
>> the next generation user interface for GRASS. Perhaps because it was
>> summer--or perhaps because everyone is just so happy with what I¹ve done
>> so far ;-)--there were few takers. However the comments were useful.
>> I¹ve included all of them in the attached text file as I promised to do.
>>
>> Now that we are thinking about GRASS 6.2 and 7, we need to actively
>> consider the way in which GRASS presents itself to users. GRASS is a
>> great program and current development is making it an outstanding piece
>> of software for managing, visualizing, analyzing, and modeling very
>> diverse spatial data. But this tremendous capability will go
>> unrecognized if potential users become frustrated in trying to make it
>> work. Because of its power and versatility, and because GIS is a complex
>> subject, it is a challenge to make GRASS accessible to users‹even ones
>> with considerable experience with computer graphics, CAD, and other
>> GIS¹s. This same challenge is faced by other high-end GIS systems. To
>> some extent, we are still trying to work out appropriate display and
>> control metaphors for GIS, and a large part of the existing UI¹s are
>> still a lot like word processors and drawing programs, although GIS is
>> neither. An automobile may have a great engine and suspension system,
>> but if it lacks a steering wheel or comprehensible gauges its
>> performance will be underutilized. So the UI is important.
>>
>> In order to make discussion easier, I want to float a proposal for the
>> next generation UI for GRASS. This will give people a concrete target to
>> take shots at, say they like, or offer modifications or additions. This
>> is perhaps a more effective way to do this than simply asking for input,
>> and I think I¹ve got a thick enough skin to offer my proposal for
>> critiquing‹of course it is pretty close to perfect so I shouldn¹t have
>> to worry much :wink: In any case, it is a start on which we can begin to
>> build.
>>
>> I¹ve tried to build on what works well now, to think out of the box a
>> bit to envision how a GIS can be easier to use, and to be realistic
>> about what can be accomplished in an open source project like this one.
>> GRASS has some excellent features that set it apart from other GIS
>> systems. Ones that always impresses people I show it to are the
>> visualization capabilities. It is extraordinarily flexible and fast at
>> visualizing complex spatial data. I think we should build on that, along
>> with GRASS¹s excellent analytical abilities for raster data as unique
>> and distinguishing features of the GRASS system. (I¹d like to suggest
>> that we think of beefing up the already strong modeling capabilities of
>> GRASS by adding predictive and agent modeling, but that¹s another
>> issue).
>>
>> Some of the items in the proposal could be implemented pretty soon,
>> using the TclTk tools we use now. Other parts will require more
>> sophisticated use of TclTk or a different GUI development system. Yet
>> other parts will require new C-programming. Because a next generation
>> GUI will require skills beyond my own and team effort, your input is
>> essential.
>>
>> One thing to note is that I am not recommending a platform for
>> implementing this at this point. I¹m pretty sure it could be implemented
>> in TclTk if we get more sophisticated in using that platform. However,
>> it might be better to implement it in another platform like QT or GTK.
>> As I said last summer, however, I think it is better to decide what kind
>> of UI we want and THEN decide which available platform is the best way
>> to implement it.
>>
>> I guess that is enough preamble. The proposed roadmap is below. Please
>> let me know what you think over the next few weeks. At some point, it
>> might be good to send it to the larger GRASS user list for input from
>> the people who will have to make it work.
>>
>> Thanks to all of you for your support over the past two years.
>>
>> Michael
>> __________________________________________
>> Michael Barton, Professor of Anthropology
>> School of Human Evolution and Social Change
>> Arizona State University
>> Tempe, AZ 85287-2402
>>
>> phone: 480-965-6213
>> fax: 480-965-7671
>> www: http://www.public.asu.edu/~cmbarton
>>
>>
>> ==================================
>>
>>
>> PROPOSAL FOR A USER INTERFACE ROADMAP FOR GRASS 6.X AND 7
>>
>> DISPLAYS
>>
>> ***Display windows:
>> Keep ability to have multiple display windows. Display should have the
>> potential to display both 2D and 3D graphics. Display windows should get
>> focus by clicking with mouse. It should be necessary to run a module
>> like d.mon select simply shift the focus to a different display window.
>>
>> ***2D and 3D visualization:
>> 2D and nD visualization should be seamlessly integrated. The "normal"
>> view would be 2D like current x displays and standard GIS. Clicking a 3D
>> (nviz) button would open a floating window with 3D controls (like in
>> nviz now) but not a new display window. This would allow user to tilt,
>> rotate, change z, visually separate layers, etc. It would work with the
>> same layers shown in 2D mode, but would simply display them in 2.5D or
>> 3D. Nviz would not be a separate module, opening a separate display
>> window and separate layer control panel; it would simply display any
>> active layers in 3D "mode".
>>
>> DISPLAY CONTROL GUI AKA GIS MANAGER
>>
>> We should keep single display control (like current GIS Manager).
>> distinct from the display window(s). This allows for multiple display
>> windows to be controlled from single interface. Display "commands"
>> should be integrated into display control interface; there would be no
>> separate d.* command modules. That is, the display control system should
>> be able to directly draw graphics to a display window, without going
>> through intermediate, stand alone programs. We need to rethink how these
>> would best be implemented (e.g., should we combine thematic vector and
>> chart display functions?) Display functions should still be scriptable
>> as in nviz and d.m, just not independent "commands". It should be
>> possible to run a display script from the command line to automate
>> mapping.
>>
>> ***Buttons:
>> There should be 1 row of buttons for display controls (zoom, pan, erase,
>> 3D, query, layer management, open display window, save, print, etc). We
>> should change current display in region buttons to simply region setting
>> buttons (default, select saved region). We will no longer need a display
>> button (see layers specs below)
>>
>> There should be a 2nd row of buttons for adding layers. This could be
>> space-optimized by making pull-down groups (e.g., vector group would
>> include vector, 3D vector, chart, thematic, etc) with last-used
>> layer-type showing up in the button bar.
>>
>> ***Layers:
>> Any function than can be thought of as a layer should be implemented as
>> one. It is a nice and pretty intuitive metaphor. It is easy to work with
>> conceptually and comparable to graphic and CAD programs. Layers should
>> include 3D vectors and volumes (see below) along with the kinds of
>> layers now in the GIS manager.
>>
>> We should keep layer-tree metaphor. The hierarchical arrangement is
>> intuitive and easy to work with. Nested groups are an especially nice
>> touch. We may want to switch from arranging the layer in the order they
>> will be displayed (first at the top, last at the bottom), to a stacked
>> metaphor (last displayed at the "top" of the stack). This is more in
>> line with other GIS programs and most graphics programs, and would make
>> GRASS less confusing to a new user.
>>
>> Adding a layer to the layer tree should automatically display it when
>> the 'active' box is checked. There should be no need for display button.
>> Checking or unchecking the 'active' box should automatically display or
>> undisplay the layer. Should layers be added in an non-activated state by
>> default so that the user can choose to display the newly added layer
>> when ready?
>>
>> There should be an independent layer tree for each display window open.
>> Selecting display window with the mouse displays the associated layer
>> tree. This permits multiple displays of different information controlled
>> from same interface. User should be able to copy existing layer tree to
>> a new or open display window.
>>
>> ***Option panes:
>> Option panes should open in a separate window when an entry in the layer
>> tree is double clicked. This will optimize space in the display control
>> GUI. There should be "apply" and "save and close" buttons so that an
>> option pane can be kept open if desired.
>>
>> We should add a "layer name" field to the option pane rather than adding
>> a layer name by typing it into the layer tree. This makes it more
>> "permanent" so that it is not erased when a new map is chosen to be
>> displayed in that layer. If it is empty, the name of the map will go in
>> by default; if something has been typed in it, it will stay and not be
>> overwritten (make this a question when opening a file?)
>>
>> ***Pull-down menus:
>> Keep menus as we have now for file, configuration, GIS function (raster,
>> vector, 3D), database, extensions (I'm assuming that the GRASS Extension
>> Manager will be default soon). Do we need a separate menu for help or
>> can it go into configure or something like that? Menus should call
>> independent modules that can also be run from the command line. GRASS
>> needs to remain scriptable for complex tasks and functions should be
>> useable from command line for "power users".
>>
>> RELATED UI ISSUES
>>
>> ***Attribute data management:
>> Now that GRASS has vectors with linked attribute data, there needs to be
>> a reasonably decent UI for attribute data management and queries.
>> Perhaps this could be developed along with the switch to a default
>> attribute dbms based on SQLite.
>>
>> ***Printing:
>> There should be integrated WYSIWYG printing to multiple devices from the
>> GUI, including PDF files. ps.map functions should be integrated into GUI
>> and be accessible without creating complex text file scripts.
>>
>> ***Display output:
>> Users should be able to save WYSIWYG display output to multiple graphic
>> formats without scripting through a png driver or using gdal_translate.
>> Formats supported should at least include tif, png, pnm, gif, jpg, svg,
>> and xcf.
>>
>> ***Exiting:
>> It should be possible to exit GRASS from the GUI rather than having to
>> separately type "exit" on the command line.
>
> --
> Martin Wegmann
>
> DLR - German Aerospace Center
> German Remote Sensing Data Center
> @
> Dept.of Geography
> Remote Sensing and Biodiversity Unit
> &&
> Dept. of Animal Ecology and Tropical Biology
> University of Wuerzburg
> Am Hubland
> 97074 Würzburg
>
> phone: +49-(0)931 - 888 4797
> mobile: +49-(0)175 2091725
> fax: +49-(0)931 - 888 4961
> http://www.biota-africa.org
> http://www.biogis.de

--
Martin Wegmann

DLR - German Aerospace Center
German Remote Sensing Data Center
@
Dept.of Geography
Remote Sensing and Biodiversity Unit
&&
Dept. of Animal Ecology and Tropical Biology
University of Wuerzburg
Am Hubland
97074 Würzburg

phone: +49-(0)931 - 888 4797
mobile: +49-(0)175 2091725
fax: +49-(0)931 - 888 4961
http://www.biota-africa.org
http://www.biogis.de

Michael Barton wrote:

***2D and 3D visualization:
2D and nD visualization should be seamlessly integrated. The "normal" view
would be 2D like current x displays and standard GIS. Clicking a 3D (nviz)
button would open a floating window with 3D controls (like in nviz now) but
not a new display window. This would allow user to tilt, rotate, change z,
visually separate layers, etc. It would work with the same layers shown in
2D mode, but would simply display them in 2.5D or 3D. Nviz would not be a
separate module, opening a separate display window and separate layer
control panel; it would simply display any active layers in 3D "mode".

Making OpenGL a mandatory requirement could be problematic, i.e. it
could result in a significant proportion of potential users being
unable to use GRASS.

DISPLAY CONTROL GUI AKA GIS MANAGER

We should keep single display control (like current GIS Manager). distinct
from the display window(s). This allows for multiple display windows to be
controlled from single interface. Display "commands" should be integrated
into display control interface; there would be no separate d.* command
modules. That is, the display control system should be able to directly draw
graphics to a display window, without going through intermediate, stand
alone programs. We need to rethink how these would best be implemented
(e.g., should we combine thematic vector and chart display functions?)
Display functions should still be scriptable as in nviz and d.m, just not
independent "commands". It should be possible to run a display script from
the command line to automate mapping.

The main problems with monolithic applications are reliability and
memory leaks. Having d.rast crash is less serious than having your
monolithic application crash.

--
Glynn Clements <glynn@gclements.plus.com>

Yann Chemin wrote:

2 - About screen display of large images, high-resolution images (and
g.region/zoom mis-haps) may cause great frustration to users while waiting
to redraw.

Maybe there is a way to fasten this. A very low resolution (about screen
size, something like a fat thumbnail) layer could be accessed initially. Or
even a set of pyramid layers (?).

It would be useful to be able to have a separate resolution (and
possibly bounds) for redrawing.

--
Glynn Clements <glynn@gclements.plus.com>

Glynn,

Thanks for the input.

From: Glynn Clements <glynn@gclements.plus.com>
Date: Mon, 07 Nov 2005 21:21:24 +0000
To: Michael Barton <michael.barton@asu.edu>
Cc: GRASS Developer's List <grass5@grass.itc.it>
Subject: Re: [GRASS5] Proposal for GRASS UI roadmap

Michael Barton wrote:

***2D and 3D visualization:
2D and nD visualization should be seamlessly integrated. The "normal" view
would be 2D like current x displays and standard GIS. Clicking a 3D (nviz)
button would open a floating window with 3D controls (like in nviz now) but
not a new display window. This would allow user to tilt, rotate, change z,
visually separate layers, etc. It would work with the same layers shown in
2D mode, but would simply display them in 2.5D or 3D. Nviz would not be a
separate module, opening a separate display window and separate layer
control panel; it would simply display any active layers in 3D "mode".

Making OpenGL a mandatory requirement could be problematic, i.e. it
could result in a significant proportion of potential users being
unable to use GRASS.

OpenGL seems to be becoming increasingly crucial for complex
visualization--including 3D--and such visualization is becoming increasingly
important for GIS and related spatial technologies. It also seems to be
better supported both in hardware and software.

Nevertheless, it is a good idea to keep GRASS as useable as possible for the
broadest possible user base--especially given its popularity
internationally.

This raises 2 questions to me:

1. Could a display window function without OpenGL in 2D mode, then call
OpenGL IF the 3D mode was invoked? That way, people without OpenGL could use
all the display functions except the 3D mode (much like now when running
NVIZ is not required for standard display).

2. Is there an alternative to OpenGL for rendering 2.5D and 3D imagery that
would work as well but be useable for a wider group of users?

DISPLAY CONTROL GUI AKA GIS MANAGER

We should keep single display control (like current GIS Manager). distinct
from the display window(s). This allows for multiple display windows to be
controlled from single interface. Display "commands" should be integrated
into display control interface; there would be no separate d.* command
modules. That is, the display control system should be able to directly draw
graphics to a display window, without going through intermediate, stand
alone programs. We need to rethink how these would best be implemented
(e.g., should we combine thematic vector and chart display functions?)
Display functions should still be scriptable as in nviz and d.m, just not
independent "commands". It should be possible to run a display script from
the command line to automate mapping.

The main problems with monolithic applications are reliability and
memory leaks. Having d.rast crash is less serious than having your
monolithic application crash.

It also depends on how 'monolithic' the application is. I think most people
want most of GRASS to stay modular. However, there seem to be important
advantages to building display functions into the UI. As you pointed out
this past summer, there are equally problems in making the UI simply call a
series of independent display modules for all functions.

The big question is where is the best balance between building better
functionality into the UI and keeping GRASS modular? From my probably biased
perspective, I'd suggest...

Definitely fold into UI: d.mon, d.zoom (including pan), d.erase (separate
background color from erase)

Probably fold into UI: d.measure, d.where, d.what.vect, d.what.rast,
equivalent functions for volumes and 3D vectors, nviz (I think this would be
a great feature if we can do it), xganim.

Maybe fold into the UI: any of the commands that currently create layers in
the GIS Manager (i.e, d.rast, d.vect, d.text [merge with d.text.freetype and
make placement better], etc.), d.frame, and v.digit. Some of these might
better as independent modules while others might function better as part of
an integrated UI/display control. For example, if d.frame were incorporated
into the UI, it might become a much nicer layout manager.

Do not fold into UI: all analysis and file management commands.

As a programmer, which functions do you think work best integrated in the UI
and which are better off kept separate and simply called as commands by the
UI?

--
Glynn Clements <glynn@gclements.plus.com>

__________________________________________
Michael Barton, Professor of Anthropology
School of Human Evolution and Social Change
Arizona State University
Tempe, AZ 85287-2402

phone: 480-965-6213
fax: 480-965-7671
www: http://www.public.asu.edu/~cmbarton

I tend to agree with Martin on this. If QGIS were to embed all the
functionality and flexibility as GRASS, it would no longer be the fairly
slick, quick program it is now. The button bar is already getting pretty
busy (40 buttons with GRASS plugin installed, including 3 pull-downs, vs.
GRASS's 34).

I actually like the GRASS interface in many respects (but of course I would
wouldn't I?), and am most annoyed by the need to call programs like d.mon
and d.zoom for manipulating the display. Like Martin, I also like having
multiple windows to work with.

There need to be programs like QGIS that are efficient viewers coupled with
basic GIS capabilities. I like QGIS a lot and I hope QGIS can come to view
GRASS files on a Windows platform and without having to open it from within
GRASS. This would make it excellent for classroom use as well as for a broad
spectrum of users.

However, QGIS and other similar programs like JumpGIS and Thuban differ from
programs like GRASS (and ArcInfo or Idrisi) that are focused more on
research and analysis. I asked about the possibility of merging QGIS and
GRASS projects some time back. It sounds like that is not in the cards for
the near future at least, as QGIS has a somewhat different, but equally
important, set of goals from GRASS.

It would be nice if we could have one program that could meet all these
needs, but I'm not optimistic about whether we can (or even should) do that
at present. Nevertheless, I think it IS important to try to make even
complex programs like GRASS more accessible to a wider audience. This is an
important reason that we need to start planning the GRASS UI and not just
let it happen. QGIS has many nice features and great functionality for some
things. When improving the GRASS UI, we should look at QGIS closely--and at
other GIS projects. QT may be a great platform for the future GRASS UI. Or
it may be GTK, or even a beefed up TclTk. We may even decide on UI that
looks so much like QGIS that we want to build directly from that platform.

But before we make these decisions, I think we need to think about what a
21st century GIS package ought to look like and do. This will help us plan
how to carry this out better.

Cheers
Michael
__________________________________________
Michael Barton, Professor of Anthropology
School of Human Evolution and Social Change
Arizona State University
Tempe, AZ 85287-2402

phone: 480-965-6213
fax: 480-965-7671
www: http://www.public.asu.edu/~cmbarton

From: Martin Wegmann <wegmann@biozentrum.uni-wuerzburg.de>
Reply-To: <wegmann@biozentrum.uni-wuerzburg.de>
Date: Mon, 07 Nov 2005 15:17:41 +0100
To: <grass5@grass.itc.it>
Subject: Re: [GRASS5] Proposal for GRASS UI roadmap

On Monday 07 November 2005 10:23, Paolo Cavallini wrote:

Just a short note (hope nobody will get offended by it):

I hope so as well ,-)

I think Michael
and others have done a great job improving the tctk interface (every time I
compile grass, I have pleasant surprises!), but it is a reality that
"normal" people sees its look&feel as rather primitive. What we (grass and
freeGIS users and developers) need is enlarging our user base, far too
small compared to grass potential.
Our experience teaching FreeGIS is that integrating grass with qgis gives
an easy way of approaching gis problems, without a steep learning curve. Of
course issues remain; in my view:
- integrating NVIZ (the work from ACS is a good first step in this
direction) - putting most/all grass modules in the qgis-grass dialog (not
difficult, but may be boring)
- multiple monitors: I got used to them, and I agree they are very useful,
but most people stopped using in most applications anyway

very important point. All raster manipulation programs (from GIMP to
ERDAS/ENVI) work with multi-monitor setups and I got used to them very much.
Perhaps the user should be able to decide if he/she wants a multi- or
single-window workspace.

Moreover, we have the advantage of working with the live and thriving qgis
community, which is an extremely positive factor.
I am worried about the duplication of efforts I have seen recently; we have
limited forces, and we would better concentrate on a common line; for
instance, I do not think a printing interface can be much better than the
one currently available in qgis.
In short my suggestion is: let's concentrate on qgis as a frontend, and
strengthening grass as backend (eg fixing functionality bugs, making new
modules, releasing new versions more often).

well, as I agree with you that "usual" users think that the tcltk UI is
primitive however I doubt that GRASS-d.m shall/can fully merge with QGIS and
fullfill all user interests which Michael is currently inquiring.

I use QGIS frequently to view raster data/vector data (and hopefully soon)
modify vector data -- in general: doing "low-level" GIS work which can be
achieved using QGIS very easily.
For this kind of work I don't need a fully-blown GIS/Raster manipulation
software like GRASS. I want QGIS to start quickly, do my work and exit again
unlike GRASS which is running nearly permanently and which I favour because
of the enormous amount of functionalities.
Perhaps the comparison between ArcView and ArcInfo is best. The first one is
for low-level GIS work, the second is for all the other work. I don't want to
start ArcInfo functionality when I just want to do some quick modification.

With GRASS and QGIS we have the same problem (in my opinion) plus the problem
that GRASS is not only a GIS but a raster manipulation program as well which
needs a CLI too.

This does not contradict your idea of using GRASS commands inside QGIS but
using GRASS solely via QGIS.

Concerning the man-power for GRASS C coding; I am not sure about it but I
think that C programmers and QT/GTK programmer are different kind of persons
or at least their interests are different. At QT/GTK programmer is keen to
develop a UI but not to code C, therefore I think the amount of
C-programmer-man-power would not be diminished.

regards, Martin

pc

At 05:59, domenica 06 novembre 2005, Michael Barton has probably written:

Colleagues

A couple months back I suggested a discussion on the specifications for
the next generation user interface for GRASS. Perhaps because it was
summer--or perhaps because everyone is just so happy with what I¹ve done
so far ;-)--there were few takers. However the comments were useful. I¹ve
included all of them in the attached text file as I promised to do.

...

--
Martin Wegmann

DLR - German Aerospace Center
German Remote Sensing Data Center
@
Dept.of Geography
Remote Sensing and Biodiversity Unit
&&
Dept. of Animal Ecology and Tropical Biology
University of Wuerzburg
Am Hubland
97074 Würzburg

phone: +49-(0)931 - 888 4797
mobile: +49-(0)175 2091725
fax: +49-(0)931 - 888 4961
http://www.biota-africa.org
http://www.biogis.de

At 05:49, martedì 08 novembre 2005, Michael Barton has probably written:

I tend to agree with Martin on this. If QGIS were to embed all the
functionality and flexibility as GRASS, it would no longer be the fairly
slick, quick program it is now. The button bar is already getting pretty
busy (40 buttons with GRASS plugin installed, including 3 pull-downs, vs.
GRASS's 34).

That's not necessarily true. The plugin mechanism is meant to keep the core
program sleek, and use the additional functions only when/if needed.
The cluttering of menus is always a problem with such a large program as
grass, but that can be solved.

However, QGIS and other similar programs like JumpGIS and Thuban differ
from programs like GRASS (and ArcInfo or Idrisi) that are focused more on
research and analysis. I asked about the possibility of merging QGIS and
GRASS projects some time back. It sounds like that is not in the cards for
the near future at least, as QGIS has a somewhat different, but equally
important, set of goals from GRASS.

I do not understand this. We use qgis a lot here. Some of us use it as a
frontend to qgis, some for grass (especially editing, much more convenient),
some as a side help for mapserver.
Of course, for heavy analytical work we still use straight grass, mainly from
the CLI, but that's going to change soon, as the grass shell is already
available in qgis-cvs.

It would be nice if we could have one program that could meet all these
needs, but I'm not optimistic about whether we can (or even should) do that
at present. Nevertheless, I think it IS important to try to make even
complex programs like GRASS more accessible to a wider audience. This is an
important reason that we need to start planning the GRASS UI and not just
let it happen. QGIS has many nice features and great functionality for some
things. When improving the GRASS UI, we should look at QGIS closely--and at
other GIS projects. QT may be a great platform for the future GRASS UI. Or
it may be GTK, or even a beefed up TclTk. We may even decide on UI that
looks so much like QGIS that we want to build directly from that platform.

I do not think qgis is a future, it is *present*. I suggest (for what is
worth) to join the efforts in this direction. E.g., with just a few days of
work most (if not all) grass modules could be ported.

All the best.
pc
--
Paolo Cavallini
email+jabber: cavallini@faunalia.it
www.faunalia.it
Piazza Garibaldi 5 - 56025 Pontedera (PI), Italy Tel: (+39)348-3801953

Michael Barton wrote:

> Making OpenGL a mandatory requirement could be problematic, i.e. it
> could result in a significant proportion of potential users being
> unable to use GRASS.

OpenGL seems to be becoming increasingly crucial for complex
visualization--including 3D--and such visualization is becoming increasingly
important for GIS and related spatial technologies. It also seems to be
better supported both in hardware and software.

Nevertheless, it is a good idea to keep GRASS as useable as possible for the
broadest possible user base--especially given its popularity
internationally.

This raises 2 questions to me:

1. Could a display window function without OpenGL in 2D mode, then call
OpenGL IF the 3D mode was invoked? That way, people without OpenGL could use
all the display functions except the 3D mode (much like now when running
NVIZ is not required for standard display).

Yes; however:

First, there's the issue of being able to compile the application in
the first place on a system which lacks a working OpenGL library and
headers.

It's not uncommon for systems to end up with a broken OpenGL
installation due to conflicts between an OpenGL implementation
supplied by the hardware vendor (ATI, nVidia) and the base operating
system or X11, or conflicts between native and X versions of OpenGL on
Cygwin or MacOS X.

Second, once the application is compiled, any given X server may or
may not implement the GLX extension. Just because an application was
compiled with OpenGL support, it doesn't mean that it will work at run
time.

My point is that OpenGL needs to be treated as an optional feature.
Someone who can't compile or run OpenGL apps should still be able to
use any functionality which doesn't inherently require OpenGL.

2. Is there an alternative to OpenGL for rendering 2.5D and 3D imagery that
would work as well but be useable for a wider group of users?

No. For anything beyond 2D graphics, OpenGL is the most portable
option.

>> DISPLAY CONTROL GUI AKA GIS MANAGER
>>
>> We should keep single display control (like current GIS Manager). distinct
>> from the display window(s). This allows for multiple display windows to be
>> controlled from single interface. Display "commands" should be integrated
>> into display control interface; there would be no separate d.* command
>> modules. That is, the display control system should be able to directly draw
>> graphics to a display window, without going through intermediate, stand
>> alone programs. We need to rethink how these would best be implemented
>> (e.g., should we combine thematic vector and chart display functions?)
>> Display functions should still be scriptable as in nviz and d.m, just not
>> independent "commands". It should be possible to run a display script from
>> the command line to automate mapping.
>
> The main problems with monolithic applications are reliability and
> memory leaks. Having d.rast crash is less serious than having your
> monolithic application crash.

It also depends on how 'monolithic' the application is. I think most people
want most of GRASS to stay modular. However, there seem to be important
advantages to building display functions into the UI.

Such as?

There are advantages to building interactive functions (e.g. d.what.*
and similar) into a monolithic UI, but I'm unaware of any reasons to
build in output-only modules such as d.rast.

That doesn't meant that there definitely aren't reasons, just that I
haven't heard any.

--
Glynn Clements <glynn@gclements.plus.com>